summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Expand)Author
2015-07-19Merge branch 'core-updates'Mark H Weaver
2015-07-20publish: Do not load archive content in memory....Previously, before replying to a /nar/* request, 'guix publish' would first build up the whole nar into memory (as a consequence of <http://bugs.gnu.org/21093>), which obviously doesn't scale. * guix/scripts/publish.scm (render-nar): Return STORE-PATH instead of a procedure that calls 'write-file'. (sans-content-length): New procedure. (http-write): For 'x-nix-archive', don't call '%http-write'. Instead, call 'write-file' right from here, using BODY as the file name. Ludovic Courtès
2015-07-19Merge branch 'master' into core-updatesMark H Weaver
2015-07-19publish: Serve /nar requests in a separate thread....* guix/scripts/publish.scm (%http-write): New variable. (http-write): New procedure. (concurrent-http-server): New variable. (run-publish-server): Use it. Ludovic Courtès
2015-07-18build-system/ruby: Add #:gem-flags parameter....* guix/build-system/ruby.scm (build): add 'gem-flags' key * guix/build/ruby-build-system.scm (build): use 'gem-flags' key * doc/guix.texi (Build Systems): Mention #:gem-flags. Co-authored-by: Ludovic Courtès <ludo@gnu.org> pjotrp
2015-07-18publish: Write hashes in nix-base32 format....* guix/scripts/publish.scm (narinfo-string): Use 'bytevector->nix-base32-string', not 'bytevector->base32-string'. Ludovic Courtès
2015-07-17syscalls: Struct deserializer can now return arbitrary objects....* guix/build/syscalls.scm (read-types): Add RETURN and VALUES parameters. (define-c-struct): Add WRAP-FIELDS parameter and pass it to 'read-types'. (sockaddr-in, sockaddr-in6): Add first argument that uses 'make-socket-address'. (read-socket-address): Remove 'match' on the result of 'read-sockaddr-in' and 'read-sockaddr-in6'. Ludovic Courtès
2015-07-17download: Remove spurious warning about 'https_proxy'....* guix/build/download.scm (open-connection-for-uri)[with-https-proxy]: Warn about 'https_proxy' only when 'getenv' returns a non-empty string. Ludovic Courtès
2015-07-17licenses: Add Fontana's copyleft-next....* guix/licenses.scm (copyleft-next): New variable. Ludovic Courtès
2015-07-17system: Add 'kernel-arguments' field....* gnu/system.scm (<operating-system>)[kernel-arguments]: New field. (operating-system-grub.cfg): Honor it. (operating-system-parameters-file): Add 'kernel-arguments' to the parameters file. * guix/scripts/system.scm (previous-grub-entries)[system->grub-entry]: Read the 'kernel-arguments' field of the parameters file, when available. * gnu/system/vm.scm (system-qemu-image/shared-store-script): Use (operating-system-kernel-arguments os) in '-append'. * doc/guix.texi (operating-system Reference): Document it. Ludovic Courtès
2015-07-16python-build-system: Add 'ensure-no-mtimes-pre-1980' phase....* guix/build/python-build-system.scm (ensure-no-mtimes-pre-1980): New phase. (%standard-phases): Add it after 'unpack'. Mark H Weaver
2015-07-15size: Gracefully handle EPIPE....* guix/scripts/size.scm (guix-size): Wrap body in 'leave-on-EPIPE'. Ludovic Courtès
2015-07-15ui: Add 'leave-on-EPIPE'....* guix/scripts/package.scm (leave-on-EPIPE): Move to... * guix/ui.scm (leave-on-EPIPE): ... here. Ludovic Courtès
2015-07-15Merge branch 'master' into core-updatesMark H Weaver
2015-07-14packages: patch-and-repack: Build tarballs deterministically....* guix/packages.scm (patch-and-repack)[build]: When invoking 'tar' to repack the archive, pass "--mtime=@0", "--owner=root:0", and "--group=root:0". Mark H Weaver
2015-07-13build-system/gnu: Pass --build=<triplet> to configure by default....* guix/build-system/gnu.scm (gnu-build, gnu-cross-build): Accept #:build keyword argument. Pass it to 'gnu-build' on the build side. * guix/build/gnu-build-system.scm (configure): Accept #:build keyword argument. Unless it is false, pass --build to configure. Mark H Weaver
2015-07-13substitute: Improve functional decomposition....* guix/scripts/substitute.scm (display-narinfo-data, process-query, process-substitution): New procedures. Code moved from... (guix-substitute): ... here. Use them. Ludovic Courtès
2015-07-13guix build: Add '--substitute-urls' client option....* guix/scripts/build.scm (%standard-build-options, show-build-options-help): Add --substitute-urls=URLS. (set-build-options-from-command-line): Honor it. * guix/store.scm (%default-substitute-urls): Make public. * doc/guix.texi (Substitutes): Add xref to the client --substitute-urls option. (Invoking guix build): Document it. (Invoking guix-daemon): Add 'daemon-substitute-urls' anchor. Ludovic Courtès
2015-07-13substitute: Honor "substitute-urls" option passed by "untrusted" clients....* guix/scripts/substitute.scm (or*): New macro. (%cache-url): Honor "untrusted-substitute-urls". * guix/tests.scm (%test-substitute-urls): New variable. (open-connection-for-tests): Use it. * tests/derivations.scm ("derivation-prerequisites-to-build and substitutes", "derivation-prerequisites-to-build and substitutes, non-substitutable build", "derivation-prerequisites-to-build and substitutes, local build"): Pass it to 'set-build-options'. * tests/guix-daemon.sh: Likewise. * tests/store.scm ("substitute query, alternating URLs"): New test. ("substitute query", "substitute", "substitute + build-things with output path", "substitute, corrupt output hash", "substitute --fallback"): Pass #:substitute-urls to 'set-build-options'. Ludovic Courtès
2015-07-13substitute: Store cached narinfo in cache-specific sub-directories....This ensures that switching between different substitute servers doesn't lead to a polluted narinfo cache. * guix/scripts/substitute.scm (narinfo-cache-file): Add 'cache-url' parameter. Add the base32 of CACHE-URL as a sub-directory under %NARINFO-CACHE-DIRECTORY. Update callers. (cached-narinfo): Likewise. Call 'mkdir-p' on the dirname of the cache file. Update callers. (remove-expired-cached-narinfos): Add 'directory' parameter and use it instead of %NARINFO-CACHE-DIRECTORY. (narinfo-cache-directories): New procedure. (maybe-remove-expired-cached-narinfo): Call 'remove-expired-cached-narinfos' for each item returned by 'narinfo-cache-directories'. Ludovic Courtès
2015-07-13substitute: Pass the cache URL instead of <cache> objects....* guix/scripts/substitute.scm (<cache>): Rename to... (<cache-info>): ... this. (open-cache): Rename to... (download-cache-info): ... this. Return a <cache-info> or #f. (open-cache*): Remove. (cache-narinfo!): Take a URL instead of a <cache> as the first parameter. (fetch-narinfos): Likewise. Call 'download-cache-info'. Remove use of 'force'. (guix-substitute): Replace calls to 'open-cache*' with %CACHE-URL. Ludovic Courtès
2015-07-13substitute: Remove unneeded conditionals....* guix/scripts/substitute.scm (guix-substitute): Remove unneeded (if cache ...) forms since CACHE is always true (it's a promise.) Ludovic Courtès
2015-07-13guix lint: Remove duplicated module lines....* guix/scripts/lint.scm (guix): Remove duplicated lines for using 'srfi-34' and 'srfi-35' modules. These lines were introduced twice by commits b210b35 and 002c57c. Alex Kost
2015-07-12packages: Rewrite 'transitive-inputs' to be linear and remove duplicates....There were two issues: 1. Use of 'delete-duplicates', which is quadratic, was a serious problem for closures with lots of propagated inputs, such as that of the 'hydra' package (several minutes for 'guix build hydra -n'!). 2. The 'delete-duplicates' call essentially had no effect since duplicate inputs typically had a different label and were thus kept. For instance, (bag-transitive-inputs (package->bag inkscape)) would return 216 items whereas (delete-duplicates (map cdr THAT)) contains only 67 items. The new implementation returns 67 items in this case. For 'hydra', we're down from 42211 items to 361, and roughly 13s for 'guix build hydra'. * guix/packages.scm (transitive-inputs): Rewrite as a breadth-first traversal. Remove duplicate propagated inputs. * tests/packages.scm ("package-transitive-inputs", "package->bag, propagated inputs"): Adjust to use simple labels for propagated inputs, without "/". ("package-transitive-inputs, no duplicates"): New test. Ludovic Courtès
2015-07-09offload: Add 'ssh-options' field to <build-machine>....* guix/scripts/offload.scm (<build-machine>)[ssh-options]: New field. (remote-pipe): Use it. (send-files): Likewise. Ludovic Courtès
2015-07-08import: cabal: Make token recognition case-insensitive....* guix/import/cabal.scm (make-rx-matcher): Add optional parameter FLAG. (is-property, is-flag, is-src-repo, is-exec, is-test-suite, is-benchmark, is-lib, is-else, is-if): Make test case-insensitive. Federico Beffa
2015-07-08build: Add 'emacs-build-system'....* Makefile.am (MODULES): Add 'guix/build-system/emacs.scm' and 'guix/build/emacs-build-system.scm'. * guix/build-system/emacs.scm: New file. * guix/build/emacs-build-system.scm: New file. * doc/guix.texi (Build Systems): Document it. Federico Beffa
2015-07-08build: emacs-utils: Add 'emacs-byte-compile-directory'....* guix/build/emacs-utils.scm (emacs-byte-compile-directory): New procedure. Federico Beffa
2015-07-08import: Add 'elpa' importer....* guix/import/elpa.scm: New file. * guix/scripts/import.scm: Add "elpa" to 'importers'. * guix/scripts/import/elpa.scm: New file. * Makefile.am (MODULES): Add 'guix/import/elpa.scm' and 'guix/scripts/import/elpa.scm'. (SCM_TESTS): Add 'tests/elpa.scm'. * doc/guix.texi (Invoking guix import): Document it. * tests/elpa.scm: New file. * po/guix/POTFILES.in: Add 'guix/scripts/import/elpa.scm'. Federico Beffa
2015-07-07gnu: system: Move <file-system-mapping> into (gnu system file-systems)....* gnu/system/vm.scm (<file-system-mapping>, %store-mapping): Move from here... * gnu/system/file-systems.scm: ...to here. * guix/scripts/system.scm: Import (gnu system file-systems). David Thompson
2015-07-07build: syscalls: Add pivot-root....* guix/build/syscalls.scm (pivot-root): New procedure. * tests/syscalls.scm ("pivot-root"): New test. David Thompson
2015-07-07build: syscalls: Add setns....* guix/build/syscalls.scm (setns): New procedure. * tests/syscalls.scm ("setns"): New test. squash: setns David Thompson
2015-07-07build: syscalls: Add clone....* guix/build/syscalls.scm (clone): New procedure. (CLONE_NEWNS, CLONE_NEWUTS, CLONE_NEWIPC, CLONE_NEWUSER, CLONE_NEWPID, CLONE_NEWNET): New variables. * tests/syscalls.scm ("clone"): New test. David Thompson
2015-07-07utils: Add call-with-temporary-directory....* guix/utils.scm (call-with-temporary-directory): New procedure. David Thompson
2015-07-07build: syscalls: Add mkdtemp!...* guix/build/syscalls.scm (mkdtemp!): New procedure. * tests/syscalls.scm ("mkdtemp!"): New test. David Thompson
2015-07-07build: syscalls: Add unmount flags....* guix/build/syscalls.scm (MNT_FORCE, MNT_DETACH, MNT_EXPIRE) (UMOUNT_NOFOLLOW): New variables. David Thompson
2015-07-07build: syscalls: Add additional mount flags....* guix/build/syscalls.scm (MS_NOSUID, MS_NODEV, MS_NOEXEC, MS_STRICTATIME): New variables. David Thompson
2015-07-08store: 'run-with-store' initializes %CURRENT-TARGET-SYSTEM to #f....* guix/store.scm (run-with-store): Set %CURRENT-TARGET-SYSTEM to #f. * tests/gexp.scm ("gexp->derivation vs. %current-target-system"): New test. Ludovic Courtès
2015-07-07build: ruby: Run 'rake gem' when gemspec is missing....* guix/build/ruby-build-system.scm (build): Run 'rake gem' when there is no gemspec in the source tree. Co-Authored-By: David Thompson <davet@gnu.org> pjotrp
2015-07-07substitute: Avoid infinite loop when updating the substitute list....Reported at <http://lists.gnu.org/archive/html/guix-devel/2015-07/msg00119.html>. * guix/scripts/substitute.scm (http-multiple-get): When RESP has "Connection: close", consume HEAD anyway; always call PROC to read from BODY. Co-authored-by: Ludovic Courtès <ludo@gnu.org> Andy Patterson
2015-07-05download: Reference tls instead of renamed gnutls module....* guix/download.scm (gnutls-package): Use new module name tls instead of gnutls. Andreas Enge
2015-07-03derivations: Add #:substitutable?, distinguished from #:local-build?....Fixes <http://bugs.gnu.org/18747>. * guix/derivations.scm (substitutable-derivation?): Rewrite to check for "allowSubstitutes". (derivation): Add #:substitutable? parameter. [user+system-env-vars]: Honor it. (build-expression->derivation): Add #:substitutable? and honor it. * guix/gexp.scm (gexp->derivation): Likewise. * tests/derivations.scm ("derivation-prerequisites-to-build and substitutes, non-substitutable build"): Use #:substitutable? instead of #:local-build?. ("substitutable-derivation?", "derivation-prerequisites-to-build and substitutes, local build"): New tests. * guix/download.scm (url-fetch): Adjust comment. * guix/git-download.scm (git-fetch): Likewise. * guix/build-system/gnu.scm (gnu-build, gnu-cross-build): Use #:substitutable? instead of #:local-build?. * doc/guix.texi (Derivations, G-Expressions): Adjust accordingly. Ludovic Courtès
2015-07-02scripts: environment: Return the exit status of the command....* guix/scripts/environment.scm (guix-environment): Return the exit status of the command. Cyril Roelandt
2015-07-01environment: Define 'GUIX_ENVIRONMENT'....* guix/scripts/environment.scm (create-environment): Define 'GUIX_ENVIRONMENT'. * doc/guix.texi (Invoking guix environment): Document it. * gnu/system/shadow.scm (default-skeletons): Adjust 'PS1' depending on whether 'GUIX_ENVIRONMENT' is defined. Ludovic Courtès
2015-07-01environment: Improve error reporting for '-l'....This fixes two problems: 1. Load errors would print an ugly backtrace. 2. When FILE was an absolute name, 'load' was passed an incorrect file name. * guix/scripts/environment.scm (options/resolve-packages): Use 'load*' instead of 'load'. Ludovic Courtès
2015-07-01environment: For --ad-hoc, allow users to specify an output....* guix/scripts/environment.scm (package+propagated-inputs): Add 'output' parameter. Use it in return value. (options/resolve-packages): Use 'append-map' instead of 'map'. For 'load' and 'expression', return all the outputs of the resulting package. For 'package', use 'specification->package+output' instead of 'specification->package'. (guix-environment): Adjust uses of PACKAGES accordingly. * doc/guix.texi (Invoking guix environment): Document it. * tests/guix-environment.sh: Add test for --ad-hoc guile-bootstrap:out. Ludovic Courtès
2015-07-01environment: Add --system....* guix/scripts/environment.scm (show-help, %options): Add -s/--system. (%default-options): Add 'system' pair. (guix-environment): Pass 'system' value from OPTS to 'lower-inputs'. * doc/guix.texi (Invoking guix environment): Document it. Ludovic Courtès
2015-07-01environment: Add only the specified outputs of the dependencies....Before that, 'guix environment guile' (for instance) would define environment variables that would refer to the "include" output of Bash, the "debug" output of libgc, etc., even though these are not listed as inputs in the recipe of 'guile'. * guix/gexp.scm (lower-inputs): Export. * guix/scripts/environment.scm (evaluate-input-search-paths): Remove 'derivations' parameter; add 'search-paths'. Expect 'inputs' to be a list of tuples. Adjust callers. (create-environment): Remove 'derivations' parameter; add 'search-paths'. (show-search-paths): Likewise. (package+propagated-inputs): New procedure. (packages->transitive-inputs, packages+propagated-inputs): Remove. (build-inputs): Expect INPUTS to be a list of derivation tuples. (guix-environment): Compute INPUTS using 'package+propagated-inputs', 'package->bag', and 'bag-transitive-inputs'. Move 'run-with-store' higher. * tests/guix-environment.sh: Add test with FINDUTILS-BOOT0. Ludovic Courtès
2015-06-24import: pypi: Detect inputs....* guix/import/pypi.scm (python->package-name, maybe-inputs, compute-inputs, guess-requirements): New procedures. * guix/import/pypi.scm (guix-hash-url): Now takes a filename instead of an URL as input. * guix/import/pypi.scm (make-pypi-sexp): Now tries to generate the inputs automagically. * tests/pypi.scm: Update the test. Cyril Roelandt
2015-06-24linux-initrd: Produce cpio archives with zeroed timestamps, etc....* guix/cpio.scm (file->cpio-header*): New procedure. * gnu/build/linux-initrd.scm (write-cpio-archive): Add #:file->header argument to 'cpio:write-cpio-archive'. Ludovic Courtès