summaryrefslogtreecommitdiff
path: root/guix/utils.scm
AgeCommit message (Expand)Author
2016-05-04utils: Remove 'split'....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. Ludovic Courtès
2016-04-18utils: 'cache-directory' gracefully deals with unset 'HOME'....Fixes <http://bugs.gnu.org/23165>. * guix/utils.scm (cache-directory): Use 'getpwuid' when 'HOME' is unset. Ludovic Courtès
2016-04-13utils: Add 'location->source-properties'....* guix/utils (location-source->properties): New procedure. 宋文武
2016-04-13utils: Add 'edit-expression'....* guix/utils.scm (edit-expression): New procedure. * tests/utils.scm (edit-expression): New test. 宋文武
2016-03-02utils: Use '@' for separating package names and version numbers....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. Mathieu Lirzin
2016-01-06utils: Add 'ensure-keyword-arguments'....* guix/utils.scm (delkw, ensure-keyword-arguments): New procedures. * tests/utils.scm ("ensure-keyword-arguments"): New test. Ludovic Courtès
2015-11-26utils: Add 'canonical-newline-port'....* guix/utils.scm (canonical-newline-port): New procedure. * tests/utils.scm ("canonical-newline-port"): New test. Federico Beffa
2015-10-27utils: Add 'switch-symlinks', moved from (guix ui)....* guix/ui.scm (switch-symlinks): Move to... * guix/utils.scm: ... here. New procedure. * guix/scripts/pull.scm: Use it. Ludovic Courtès
2015-10-27utils: Add 'readlink*'....* guix/scripts/package.scm (readlink*): Move to... * guix/utils.scm (readlink*): ... here. New procedure. Ludovic Courtès
2015-10-17http-client: Add 'http-fetch/cached'....* guix/utils.scm (cache-directory): New procedure. * guix/http-client.scm (%http-cache-ttl): New variable. (http-fetch/cached): New procedure. Ludovic Courtès
2015-10-09utils: Add split procedure....* guix/utils.scm (split): New procedure. * tests/utils.scm: Add tests. David Thompson
2015-10-06utils: Remove Nixpkgs helpers....* 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. Ludovic Courtès
2015-09-26Merge branch 'core-updates'Ludovic Courtès
2015-09-25utils: Add #:options parameter for compression output ports....* guix/utils.scm (compressed-output-port, call-with-compressed-output-port): Add #:options parameter and honor it. Ludovic Courtès
2015-08-30utils: Move 'package-name->name+version' to (guix build utils)....* 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. Ludovic Courtès
2015-07-07utils: Add call-with-temporary-directory....* guix/utils.scm (call-with-temporary-directory): New procedure. David Thompson
2015-05-04search-paths: Add 'evaluate-search-paths', from (guix scripts package)....* 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. Ludovic Courtès
2015-02-09utils: Add 'version>=?'....* guix/utils.scm (version>?): Clarify docstring. (version>=?): New procedure. Ludovic Courtès
2015-01-07gnu: Add toolchain support for 'armhf-linux'....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. Mark H Weaver
2015-01-07Move 'nix-system->gnu-triplet' to (guix utils) and export it....* gnu/packages/commencement.scm (nix-system->gnu-triplet): Move to... * guix/utils.scm (nix-system->gnu-triplet): ... here. Fix docstring typo. Mark H Weaver
2014-11-30guix: scripts: Add GUIX_BUILD_OPTIONS environment handling....* 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> nebuli
2014-10-20gnu: Add 'version-prefix' and 'version-major+minor'; use them....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> Ian Denhardt
2014-10-13utils: Micro-optimize 'bytevector->base16-string'....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'. Ludovic Courtès
2014-10-05utils: Add 'strip-keyword-arguments'....* guix/utils.scm (strip-keyword-arguments): New procedure. * tests/utils.scm ("strip-keyword-arguments"): New test. Ludovic Courtès
2014-09-17utils: Create temporary files in $TMPDIR or /tmp....Reported by Federico Beffa <beffa@ieee.org>. * guix/utils.scm (call-with-temporary-output-file): Prepend $TMPDIR or /tmp to TEMPLATE. Ludovic Courtès
2014-07-20guix: utils: Add fold-tree and fold-tree-leaves....* guix/utils.scm (fold-tree, fold-tree-leaves): New functions. * tests/utils.scm: Add tests for them. Eric Bavier
2014-05-10Add (guix build syscalls)....* 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). Ludovic Courtès
2014-04-14offload: '{send,receive}-files' wait for completion of the transfer....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. Ludovic Courtès
2014-04-07utils: Make 'errno' procedure more robust....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'. Ludovic Courtès
2014-03-24utils: Add 'call-with-decompressed-port' and 'call-with-compressed-output-port'....* 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. Ludovic Courtès
2014-03-24utils: Add 'filtered-output-port' and 'compressed-output-port'....* guix/utils.scm (filtered-output-port, compressed-output-port): New procedures. * tests/utils.scm ("compressed-output-port + decompressed-port"): New test. Ludovic Courtès
2014-03-22utils: Add 'decompressed-port' and 'compressed-port'....* guix/utils.scm (decompressed-port, compressed-port): New procedures. * guix/scripts/substitute-binary.scm (decompressed-port): Remove. (guix-substitute-binary): Pass a symbol or #f as the first argument to 'decompress-port'. * tests/utils.scm ("compressed-port, decompressed-port, non-file"): New test. Ludovic Courtès
2014-03-22utils: 'filtered-port' doesn't leave dangling processes behind....* guix/utils.scm (filtered-port): Make sure the 'execl' child process always exits, and does (primitive-_exit 1) upon execution failure. Use 'primitive-_exit' in the 'dump-port' child process. * tests/utils.scm ("filtered-port, does not exist"): New test. Ludovic Courtès
2014-03-08utils: Add a non-blocking option for 'fcntl-flock'....* guix/utils.scm (F_SETLK): New variable. (fcntl-flock): Add 'wait?' keyword parameter; honor it. * tests/utils.scm ("fcntl-flock non-blocking"): New test. Ludovic Courtès
2014-03-06utils: 'fcntl-flock' passes an errno when throwing an exception....* guix/utils.scm (%libc-errno-pointer, errno): New procedures. (fcntl-flock): Use it as the exception's argument. Ludovic Courtès
2014-01-24utils: Add 'fcntl-flock'....* guix/utils.scm (%struct-flock, F_SETLKW, F_xxLCK): New variables. (fcntl-flock): New procedure. * tests/utils.scm ("fcntl-flock"): New test. Ludovic Courtès
2013-12-29Move 'with-atomic-file-output' to (guix utils)....* guix/scripts/substitute-binary.scm (with-atomic-file-output): Move to... * guix/utils.scm (with-atomic-file-output): ... here. Ludovic Courtès
2013-11-13utils: Add 'string-replace-substring'....* guix/utils.scm (string-replace-substring): New procedure. Based on code by Mark H. Weaver. * tests/utils.scm ("string-replace-substring"): New test. Ludovic Courtès
2013-10-09packages: Add 'patches' and related fields to <origin>....See <https://lists.gnu.org/archive/html/guix-devel/2013-09/msg00137.html> for the rationale. * guix/packages.scm (<origin>)[patches, patch-flags, patch-inputs, patch-guile]: New fields. (%standard-patch-inputs, default-guile, patch-and-repack): New procedures. (package-source-derivation): When 'patches' is non-empty, call 'patch-and-repack'. * guix/utils.scm (file-sans-extension): New procedure. Ludovic Courtès
2013-08-23utils: Add `guile-version>?', and use it....This fixes Guile version comparisons when (version) has a vendor-specific suffix. Reported by Andreas Enge <andreas@enge.fr>. * guix/utils.scm (guile-version>?): New procedure. * tests/utils.scm ("guile-version>? 1.8", "guile-version>? 10.5"): New tests. * guix/scripts/substitute-binary.scm (fetch, progress-report-port): Use `guile-version>?' instead of `version>?'. * guix/http-client.scm (when-guile<=2.0.5, http-fetch): Likewise. Ludovic Courtès
2013-07-01Move `sha256' to (guix hash)....* guix/utils.scm (sha256): Move to... * guix/hash.scm: ... here. New file. * Makefile.am (MODULES): Add it. * guix/derivations.scm, guix/scripts/download.scm, guix/scripts/hash.scm, guix/scripts/refresh.scm, tests/base32.scm, tests/derivations.scm, tests/store.scm: Use (guix hash). Ludovic Courtès
2013-05-24packages: Implement `package-cross-derivation'....* guix/packages.scm (package-transitive-target-inputs, package-transitive-native-inputs): New procedures. (package-derivation): Parametrize `%current-target-system'. (package-cross-derivation): Implement. * guix/utils.scm (%current-target-system): New variable. * tests/packages.scm ("package-cross-derivation"): New test. * doc/guix.texi (Defining Packages): Document `package-cross-derivation'. Ludovic Courtès
2013-05-15substitute-binary: Pass `filtered-port' an unbuffered port....This fixes a bug whereby `read-response' would read more than just the response, with the extra data going into the port's buffer; the "bzip2 -dc" process spawned by `filtered-port' would not see the those buffered data, which are definitely lost, and would bail out with "bzip2: (stdin) is not a bzip2 file." * guix/utils.scm (filtered-port): Document that INPUT must be unbuffered. * guix/web.scm (http-fetch): Add `buffered?' parameter. Call `open-socket-for-uri' explicitly, and call `setvbuf' when BUFFERED? is false. Pass the port to `http-get'. Close it upon 301/302. * guix/scripts/substitute-binary.scm (fetch): Add `buffered?' parameter. Pass it to `http-fetch'; honor it for `file' URIs. (guix-substitute-binary): Call `fetch' with #:buffered? #f for port RAW. * tests/utils.scm ("filtered-port, file"): Open FILE as unbuffered. Ludovic Courtès
2013-05-12Move record utilities to (guix records)....* guix/utils.scm (define-record-type*): Move to... * guix/records.scm: ... here. New file. * guix/build-system.scm, guix/packages.scm: Use it. * guix/gnu-maintenance.scm: Likewise. (official-gnu-packages)[alist->record]: Remove. * guix/scripts/substitute-binary.scm: Likewise. (alist->record, object->fields): Remove. * tests/utils.scm ("define-record-type*", "define-record-type* with letrec* behavior", "define-record-type* & inherit", "define-record-type* & inherit & letrec* behavior", "define-record-type* & thunked", "define-record-type* & thunked & default", "define-record-type* & thunked & inherited"): Move to... * tests/records.scm: ... here. New file. Ludovic Courtès
2013-04-30Merge branch 'core-updates'Ludovic Courtès
2013-04-29substitute-binary: Support decompression from non-file ports....* guix/scripts/substitute-binary.scm (filtered-port): Move to utils.scm. (decompressed-port): Upon "none", return '() as the second value. (guix-substitute-binary): Expect `decompressed-port' to return a list of PIDs as its second value. * guix/utils.scm (filtered-port): New procedure. Add case for when INPUT is not `file-port?'. * tests/utils.scm ("filtered-port, file", "filtered-port, non-file"): New tests. Ludovic Courtès
2013-04-28utils: Add `string-tokenize*'....* guix/utils.scm (string-tokenize*): New procedure. * tests/utils.scm ("string-tokenize*"): New test. Ludovic Courtès
2013-04-25Add `guix refresh' and related auto-update tools....* guix/gnu-maintenance.scm (ftp-server/directory)[quirks]: Add glib. (package-update-path, download-tarball, package-update, update-package-source): New procedures. * guix/gnupg.scm, guix/scripts/refresh.scm: New files. * Makefile.am (MODULES): Add them. * guix/utils.scm (file-extension): New procedure. Ludovic Courtès
2013-04-25utils: Fix column number returned by `source-properties->location'....* guix/utils.scm (source-properties->location): Use COL, not COL + 1. Ludovic Courtès
2013-04-21Factorize `download-and-store'....* guix/download.scm (download-to-store): New procedure. * guix/scripts/download.scm (fetch-and-store): Remove. (guix-download): Use `download-to-store' instead. * guix/ui.scm (call-with-temporary-output-file): Move to... * guix/utils.scm (call-with-temporary-output-file): ... here. Ludovic Courtès