aboutsummaryrefslogtreecommitdiff
path: root/guix/utils.scm
Commit message (Collapse)AuthorAge
* Use 'mlambda' instead of 'memoize'.Ludovic Courtès2017-01-28
| | | | | | | | | | | | | | | | | * gnu/packages.scm (find-newest-available-packages): Use 'mlambda' instead of (memoize (lambda ...) ...). * gnu/packages/bootstrap.scm (package-with-bootstrap-guile): Likewise. * guix/build-system/gnu.scm (package-with-explicit-inputs)[rewritten-input]: Likewise. * guix/build-system/python.scm (package-with-explicit-python)[transform]: Likewise. * guix/derivations.scm (derivation->string): Likewise. * guix/gnu-maintenance.scm (gnu-package?): Likewise. * guix/modules.scm (module-file-dependencies): Likewise. * guix/scripts/graph.scm (standard-package-set): Likewise. * guix/scripts/lint.scm (official-gnu-packages*): Likewise. * guix/store.scm (store-regexp*): Likewise. * guix/utils.scm (location): Likewise.
* Add (guix memoization).Ludovic Courtès2017-01-28
| | | | | | | | | | | | | * guix/combinators.scm (memoize): Remove. * guix/memoization.scm: New file. * Makefile.am (MODULES): Add it. * gnu/packages.scm, gnu/packages/bootstrap.scm, guix/build-system/gnu.scm, guix/build-system/python.scm, guix/derivations.scm, guix/gnu-maintenance.scm, guix/import/cran.scm, guix/import/elpa.scm, guix/modules.scm, guix/scripts/build.scm, guix/scripts/graph.scm, guix/scripts/lint.scm, guix/store.scm, guix/utils.scm: Adjust imports accordingly.
* guix package: Fix version and output for 'guix package -i /gnu/store/…'.Ludovic Courtès2017-01-11
| | | | | | | | | * guix/utils.scm (package-name->name+version): Add optional 'delimiter' parameter. * guix/scripts/package.scm (store-item->manifest-entry): Pass #\- as the delimiter for 'package-name->name+version'. Use "out" instead of #f for the 'output' field. * tests/guix-package.sh: Add test.
* gnu: cross-base: Add i686-w64-mingw32 target.Jan Nieuwenhuizen2016-12-07
| | | | | | | | | | * guix/utils.scm (mingw-target?): New function. * gnu/packages/cross-base.scm (cross-gcc-snippet): New procedure (cross-gcc): Use it. (cross-gcc-arguments, cross-gcc-patches, cross-gcc): Support MinGW. (native-libc, cross-newlib?): New functions. (cross-libc): Use cross-newlib? to support MinGW. (%gcc-include-paths, %gcc-cross-include-paths): New variables.
* Use (ice-9 binary-ports) instead of (rnrs io ports).Ludovic Courtès2016-10-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reduces the closure of (guix ui) from 123 to 106 modules. * guix/derivations.scm: Use (ice-9 binary-ports) instead of (rnrs io ports). (map-derivation)[substitute-file]: Use 'read-string' instead of 'get-string-all'. * guix/ftp-client.scm: Likewise. * guix/hash.scm: Likewise. * guix/http-client.scm: Likewise. * guix/pki.scm (ensure-acl, current-acl): Likewise. * guix/scripts/archive.scm (authorize-key)[read-key]: Likewise. * guix/scripts/authenticate.scm (read-canonical-sexp) (read-hash-data): Likewise. * guix/scripts/download.scm: Likewise. * guix/scripts/offload.scm (register-gc-root, remove-gc-roots) (send-files): Likewise. * guix/scripts/publish.scm (lazy-read-file-sexp): Likewise. * guix/scripts/refresh.scm: Likewise. * guix/scripts/substitute.scm (check-acl-initialized): Likewise. * guix/serialization.scm (read-maybe-utf8-string): Likewise. * guix/scripts/hash.scm (guix-hash): Use 'force-output' instead of 'flush-output-port'. * guix/store.scm (process-stderr): Likewise. * guix/tests.scm: Likewise. * guix/utils.scm: Use (ice-9 binary-ports) and autoload (rnrs io ports) for 'make-custom-binary-input-port'.
* utils: Support defaults in substitute-keyword-arguments.Eric Bavier2016-10-07
| | | | | | | * guix/utils.scm (collect-default-args, expand-default-args): New syntax. (substitute-keyword-arguments): Allow default value declarations. * tests/utils.scm (substitute-keyword-arguments): New test.
* utils: Fix default-keyword-arguments.Eric Bavier2016-10-07
| | | | | | * guix/utils.scm (default-keyword-arguments): Properly test for present keywords. * tests/utils.scm (default-keyword-arguments): New test.
* publish: Do not compress already-compressed files.Ludovic Courtès2016-08-01
| | | | | | | * guix/scripts/publish.scm (narinfo-string): Force %NO-COMPRESSION when STORE-PATH matches 'compressed-file?'. * guix/utils.scm (compressed-file?): New procedure. * tests/publish.scm ("/*.narinfo for a compressed file"): New test.
* utils: 'cache-directory' always appends "/guix".Ludovic Courtès2016-06-25
| | | | | | | | Fixes <http://bugs.gnu.org/23836>. Fixes a regression introduced in f10dcbf1a92c147a2fedba6f774afa6a7013fcdf. Reported by myglc2 <myglc2@gmail.com>. * guix/utils.scm (cache-directory): Always append "/guix".
* utils: 'cache-directory' honors 'XDG_CACHE_HOME'.Ludovic Courtès2016-06-22
| | | | | * guix/utils.scm (cache-directory): Honor 'XDG_CACHE_HOME', not 'XDG_CONFIG_HOME'.
* utils: 'current-source-directory' gracefully handles lack of source info.Ludovic Courtès2016-06-20
| | | | | * guix/utils.scm (current-source-directory): Add case for when FILE-NAME is #f.
* utils: 'current-source-directory' resolves relative file names at run time.Ludovic Courtès2016-06-20
| | | | | | * guix/utils.scm (absolute-dirname): New procedure. (current-source-directory): Emit code to use it instead of calling 'search-path'.
* utils: 'current-source-directory' returns the absolute directory name.Ludovic Courtès2016-06-16
| | | | | * guix/utils.scm (current-source-directory): When FILE-NAME is relative, use 'search-path' to determine the absolute file name.
* utils: 'current-source-directory' is now purely an expansion-time thing.Ludovic Courtès2016-06-16
| | | | | * guix/utils.scm (extract-directory): Remove. (current-source-directory): Rewrite as a 'syntax-case' macro.
* gexp: Move 'current-source-directory' to (guix utils).Ludovic Courtès2016-06-16
| | | | | | * guix/gexp.scm (extract-directory, current-source-directory): Move to... * guix/utils.scm (extract-directory, current-source-directory): ... here. New procedures.
* utils: 'with-atomic-file-output' closes the port upon exception.Ludovic Courtès2016-06-13
| | | | | | Previously it could have left the file descriptor open. * guix/utils.scm (with-atomic-file-output): Call 'close-port' in handler.
* utils: 'with-atomic-file-output' calls 'fdatasync'.Ludovic Courtès2016-06-13
| | | | | | | | | Suggested by Danny Milosavljevic <dannym@scratchpost.org> at <https://lists.gnu.org/archive/html/guix-devel/2016-06/msg00456.html>. * guix/build/syscalls.scm (fdatasync): New procedure. * guix/utils.scm (with-atomic-file-output): Use it. Use 'close-port' instead of 'close'.
* guix: utils: Re-export 'memoize'.Alex Kost2016-05-09
| | | | | | | | | Suggested by Ludovic Courtès <ludo@gnu.org>. * guix/utils.scm: Re-export 'memoize' to avoid a potential breakage of emacs interface. See <http://lists.gnu.org/archive/html/guix-devel/2016-05/msg00146.html> for details.
* utils: Move 'fcntl-flock' to (guix build syscalls).Ludovic Courtès2016-05-06
| | | | | | | | | | | * guix/utils.scm (%struct-flock, F_SETLKW, F_SETLK, F_xxLCK) (fcntl-flock): Move to... * guix/build/syscalls.scm: ... here. New variables. * guix/nar.scm: Adjust imports accordingly. * tests/utils.scm ("fcntl-flock wait", "fcntl-flock non-blocking"): Move to... * tests/syscalls.scm: ... here. New tests. (temp-file): New variable.
* utils: Move combinators to (guix combinators).Ludovic Courtès2016-05-04
| | | | | | | | | | | | | | | | | | | * guix/utils.scm (compile-time-value, memoize, fold2) (fold-tree, fold-tree-leaves): Move to... * guix/combinators: ... here. New file. * tests/utils.scm ("fold2, 1 list", "fold2, 2 lists") (fold-tree tests): Move to... * tests/combinators.scm: ... here. New file. * Makefile.am (MODULES, SCM_TESTS): Add them. * gnu/packages.scm, gnu/packages/bootstrap.scm, gnu/services/herd.scm, guix/build-system/gnu.scm, guix/build-system/python.scm, guix/derivations.scm, guix/gnu-maintenance.scm, guix/import/elpa.scm, guix/scripts/archive.scm, guix/scripts/build.scm, guix/scripts/graph.scm, guix/scripts/lint.scm, guix/scripts/size.scm, guix/scripts/substitute.scm, guix/serialization.scm, guix/store.scm, guix/ui.scm: Adjust imports accordingly.
* utils: Remove 'split'.Ludovic Courtès2016-05-04
| | | | | | | | This procedure was redundant with SRFI-1's 'break'. * guix/utils.scm (split): Remove. * tests/utils.scm ("split, element is in list") ("split, element is not in list"): Remove.
* utils: 'cache-directory' gracefully deals with unset 'HOME'.Ludovic Courtès2016-04-18
| | | | | | Fixes <http://bugs.gnu.org/23165>. * guix/utils.scm (cache-directory): Use 'getpwuid' when 'HOME' is unset.
* utils: Add 'location->source-properties'.宋文武2016-04-13
| | | | * guix/utils (location-source->properties): New procedure.
* utils: Add 'edit-expression'.宋文武2016-04-13
| | | | | * guix/utils.scm (edit-expression): New procedure. * tests/utils.scm (edit-expression): New test.
* utils: Use '@' for separating package names and version numbers.Mathieu Lirzin2016-03-02
| | | | | | | | | | | | | | | | | | | | | This provides the ability to use numbers in package names. Fixes <http://bugs.gnu.org/19219>. * guix/utils.scm (package-name->name+version): New procedure. * gnu/packages.scm (%find-package): Add a FALLBACK? keyword argument. Use the previous method when no package is found. (specification->package+output, specification->package): Adapt documentation to new syntax. * doc/guix.texi (Invoking guix package, Invoking guix import): Likewise. * guix/ui.scm (package-specification->name+version+output): Likewise. * guix/scripts/import/hackage.scm (show-help): Likewise. * tests/guix-build.sh: Adapt to new syntax. * tests/guix-lint.sh: Likewise. * tests/guix-package.sh: Likewise. * tests/ui.scm ("package-specification->name+version+output"): Likewise. * tests/utils.scm ("package-name->name+version"): Likewise. * NEWS: Mention new syntax.
* utils: Add 'ensure-keyword-arguments'.Ludovic Courtès2016-01-06
| | | | | * guix/utils.scm (delkw, ensure-keyword-arguments): New procedures. * tests/utils.scm ("ensure-keyword-arguments"): New test.
* utils: Add 'canonical-newline-port'.Federico Beffa2015-11-26
| | | | | * guix/utils.scm (canonical-newline-port): New procedure. * tests/utils.scm ("canonical-newline-port"): New test.
* utils: Add 'switch-symlinks', moved from (guix ui).Ludovic Courtès2015-10-27
| | | | | | * guix/ui.scm (switch-symlinks): Move to... * guix/utils.scm: ... here. New procedure. * guix/scripts/pull.scm: Use it.
* utils: Add 'readlink*'.Ludovic Courtès2015-10-27
| | | | | * guix/scripts/package.scm (readlink*): Move to... * guix/utils.scm (readlink*): ... here. New procedure.
* http-client: Add 'http-fetch/cached'.Ludovic Courtès2015-10-17
| | | | | | * guix/utils.scm (cache-directory): New procedure. * guix/http-client.scm (%http-cache-ttl): New variable. (http-fetch/cached): New procedure.
* utils: Add split procedure.David Thompson2015-10-09
| | | | | * guix/utils.scm (split): New procedure. * tests/utils.scm: Add tests.
* utils: Remove Nixpkgs helpers.Ludovic Courtès2015-10-06
| | | | | | | | | | | * guix/config.scm.in (%nixpkgs): Remove. * guix/utils.scm (%nixpkgs-directory, nixpkgs-derivation, nixpkgs-derivation*): Remove. * test-env.in: Export 'NIXPKGS'. * tests/derivations.scm (%coreutils): Remove use of 'nixpkgs-derivation'. * tests/snix.scm (%nixpkgs-directory): New variable. Adjust users accordingly.
* Merge branch 'core-updates'Ludovic Courtès2015-09-26
|\
| * utils: Move 'package-name->name+version' to (guix build utils).Ludovic Courtès2015-08-30
| | | | | | | | | | | | | | | | * guix/utils.scm (package-name->name+version): Move to... * guix/build/utils.scm (package-name->name+version): ... here. New procedure. * guix/build/emacs-build-system.scm (package-name->name+version): Remove.
* | utils: Add #:options parameter for compression output ports.Ludovic Courtès2015-09-25
|/ | | | | | * guix/utils.scm (compressed-output-port, call-with-compressed-output-port): Add #:options parameter and honor it.
* utils: Add call-with-temporary-directory.David Thompson2015-07-07
| | | | * guix/utils.scm (call-with-temporary-directory): New procedure.
* search-paths: Add 'evaluate-search-paths', from (guix scripts package).Ludovic Courtès2015-05-04
| | | | | | | | | * guix/scripts/package.scm (with-null-error-port, evaluate-search-paths): Move to... * guix/search-paths.scm: ... here. * guix/utils.scm (string-tokenize*): Move to... * guix/search-paths.scm: ... here. * tests/utils.scm ("string-tokenize*"): Adjust accordingly.
* utils: Add 'version>=?'.Ludovic Courtès2015-02-09
| | | | | * guix/utils.scm (version>?): Clarify docstring. (version>=?): New procedure.
* gnu: Add toolchain support for 'armhf-linux'.Mark H Weaver2015-01-07
| | | | | | | | | | | | Based on preliminary work by John Darrington <john@darrington.wattle.id.au>. * gnu/packages/cross-base.scm (xgcc-armhf): New variable. * gnu/packages/gcc.scm (gcc-configure-flags-for-triplet): Add armhf case. (gcc-4.7)[pre-configure]: Add gcc/config/*/linux-eabi.h to the list of files in which to patch GLIBC_DYNAMIC_LINKER. * gnu/packages/bootstrap.scm (glibc-dynamic-linker): Add armhf case. * guix/utils.scm (gnu-triplet->nix-system, nix-system->gnu-triplet): Add armhf cases.
* Move 'nix-system->gnu-triplet' to (guix utils) and export it.Mark H Weaver2015-01-07
| | | | | * gnu/packages/commencement.scm (nix-system->gnu-triplet): Move to... * guix/utils.scm (nix-system->gnu-triplet): ... here. Fix docstring typo.
* guix: scripts: Add GUIX_BUILD_OPTIONS environment handling.nebuli2014-11-30
| | | | | | | | | | | | | | | * doc/guix.texi (Invoking guix build): Mention 'GUIX_BUILD_OPTIONS'. * guix/scripts/archive.scm: (append args (environment-build-options)). * guix/scripts/build.scm: Ditto. * guix/scripts/environment.scm: Ditto. * guix/scripts/package.scm: Ditto. * guix/scripts/system.scm: Ditto. * guix/ui.scm (environment-build-options): New function. * guix/utils.scm (arguments-from-environment-variable): New function. * tests/guix-build.sh: Add tests. * test-env.in: Unset GUIX_BUILD_OPTIONS. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
* gnu: Add 'version-prefix' and 'version-major+minor'; use them.Ian Denhardt2014-10-20
| | | | | | | | | | | | | | | | | | The procedure version-prefix truncates a version string to a certain number of components. version-major+minor is a special case of this, which extracts the "major.minor" part of the string. Previously this was handled by an expression common to several packages. * guix/utils.scm (version-prefix, version-major+minor): New procedures * gnu/packages/backup.scm (duplicity): Use version-major+minor. * gnu/packages/cmake.scm (cmake): Likewise. * gnu/packages/gnome.scm (libbonobo, libbonoboui): Likewise. * gnu/packages/gnutls.scm (gnutls): Likewise. * gnu/packages/mail.scm (gmime): Likewise. * gnu/packages/mpd.scm (mpd): Likewise. * gnu/packages/mpi.scm (openmpi): Likewise. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* utils: Micro-optimize 'bytevector->base16-string'.Ludovic Courtès2014-10-13
| | | | | | | | This reduces run time of (package-derivation s emacs) by ~1.5%. * guix/utils.scm (bytevector->base16-string): Traverse BV from the end so as to use 'string-concatenate' instead of 'string-concatenate-reverse'.
* utils: Add 'strip-keyword-arguments'.Ludovic Courtès2014-10-05
| | | | | * guix/utils.scm (strip-keyword-arguments): New procedure. * tests/utils.scm ("strip-keyword-arguments"): New test.
* utils: Create temporary files in $TMPDIR or /tmp.Ludovic Courtès2014-09-17
| | | | | | | Reported by Federico Beffa <beffa@ieee.org>. * guix/utils.scm (call-with-temporary-output-file): Prepend $TMPDIR or /tmp to TEMPLATE.
* guix: utils: Add fold-tree and fold-tree-leaves.Eric Bavier2014-07-20
| | | | | * guix/utils.scm (fold-tree, fold-tree-leaves): New functions. * tests/utils.scm: Add tests for them.
* Add (guix build syscalls).Ludovic Courtès2014-05-10
| | | | | | | | * guix/build/syscalls.scm, tests/syscalls.scm: New files. * Makefile.am (MODULES): Add guix/build/syscalls.scm. (SCM_TESTS): Add tests/syscalls.scm. * guix/utils.scm (%libc-errno-pointer, errno): Remove; take from (guix build syscalls).
* offload: '{send,receive}-files' wait for completion of the transfer.Ludovic Courtès2014-04-14
| | | | | | | | | | | | | | | | | | Fixes situations where the remote 'guix build' is invoked before the .drv has been completely copied, as reported at <https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00174.html>. In some cases 'send-files' would return before the other end is done importing the files, and so the subsequent 'guix build' invocation would just miss the .drv file it refers to. * guix/utils.scm (call-with-decompressed-port): Don't close PORT. (call-with-compressed-output-port): Likewise. * tests/utils.scm ("compressed-output-port + decompressed-port"): Adjust accordingly. * guix/scripts/offload.scm (send-files): Add explicit (close-pipe pipe) call. (retrieve-files): Likewise.
* utils: Make 'errno' procedure more robust.Ludovic Courtès2014-04-07
| | | | | | | | Partially fixes <http://bugs.gnu.org/17212>. * guix/utils.scm (errno): Move definition of 'bv' outside of the procedure. Use 'bytevector-s32-native-ref' or 'bytevector-s64-native-ref' instead of 'bytevector-sint-ref'.
* utils: Add 'call-with-decompressed-port' and 'call-with-compressed-output-port'.Ludovic Courtès2014-03-24
| | | | | | | * guix/utils.scm (call-with-decompressed-port, call-with-compressed-output-port): New procedures. * tests/utils.scm ("compressed-output-port + decompressed-port"): Rewrite to use them.