summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Collapse)Author
2016-12-07gnu: cross-base: Add i686-w64-mingw32 target.Jan Nieuwenhuizen
* 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.
2016-12-06offload: Increase the connection timeout.Ludovic Courtès
* guix/scripts/offload.scm (open-ssh-session): Set #:timeout to 10.
2016-12-06offload: Send the build log to the right file descriptor.Ludovic Courtès
This fixes a regression introduced in 21531add3205e400707c8fbfd841845f9a71863a whereby the build log would no longer be sent to FD 4, thereby leading the daemon to not see the build log. * guix/scripts/offload.scm (transfer-and-offload): Parameterize CURRENT-BUILD-OUTPUT-PORT.
2016-12-05offload: Fix plural of some messages.Ludovic Courtès
* guix/scripts/offload.scm (send-files): Use 'N_' for possibly plural message. Write "store item" instead of "store file". (retrieve-files): Likewise.
2016-12-05offload: Make the compression methods configurable.Ludovic Courtès
* guix/scripts/offload.scm (<build-machine>)[compression] [compression-level]: New fields. (open-ssh-session): Honor them. * doc/guix.texi (Daemon Offload Setup): Document them.
2016-12-05guix system: If the new system generation already exists, overwrite it.Chris Marusich
Fixes <http://bugs.gnu.org/25100>. Before that, 'guix system reconfigure' would fail if the next generation already existed. * guix/scripts/system.scm (switch-to-system): Use 'switch-symlink' instead of 'symlink'. * doc/guix.texi (Using the Configuration System, Invoking guix system): Document the behavior. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2016-12-05refresh: Indicate that PACKAGE... is optional.Tobias Geerinckx-Rice
* guix/scripts/refresh.scm (show-help): Add brackets around PACKAGE.
2016-12-05offload: Add "test" sub-command.Ludovic Courtès
* guix/scripts/offload.scm (assert-node-repl, assert-node-has-guix) (nonce, assert-node-can-import, assert-node-can-export) (check-machine-availability): New procedures. (%random-state): New variable. (guix-offload): Add case for "test". * doc/guix.texi (Daemon Offload Setup): Document it. Remove obsolete bit about remote invocation of 'guix build'.
2016-12-04publish: Factorize 'content-length' addition.Ludovic Courtès
* guix/scripts/publish.scm (with-content-length): New procedure. (http-write) <application/octet-stream>: Use it.
2016-12-01offload: Do not abort when a machine is unreachable.Ludovic Courtès
* guix/scripts/offload.scm (machine-load): Wrap 'open-ssh-session' call in 'false-if-exception'; return +inf.0 if it returns #f.
2016-12-01offload: Gracefully report connection failures.Ludovic Courtès
* guix/scripts/offload.scm (open-ssh-session): Check the return value of 'connect!'. Call 'leave' when it's not 'ok.
2016-12-01store: Increase buffering for the '%stderr-write' upcall.Ludovic Courtès
* guix/store.scm (process-stderr) <%stderr-write>: Pass #:buffer-size to 'dump-port'.
2016-12-01offload: Warn about the lack of zlib support.Ludovic Courtès
* guix/scripts/offload.scm (guix-offload): Print a warning when 'zlib-support?' returns false.
2016-12-01offload: Remove redundant call to 'topologically-sorted' in 'send-file'.Ludovic Courtès
* guix/scripts/offload.scm (send-files): Remove call to 'topologically-sorted'.
2016-11-30refresh: '--list-updaters' shows updater coverage.Ludovic Courtès
* guix/scripts/refresh.scm (list-updaters-and-exit): Compute the coverage ratio of each updater and print it. Print the coverage ratio for all the updaters. * doc/guix.texi (Invoking guix refresh): Document it.
2016-11-30gnu-maintenance: Add kernel.org updater.Ludovic Courtès
* guix/gnu-maintenance.scm (latest-kernel.org-release): New procedure. (%kernel.org-updater): New variable. * guix/scripts/refresh.scm (%updaters): Add it.
2016-11-30upstream: Properly verify signatures of uncompressed tarballs.Ludovic Courtès
* guix/upstream.scm (uncompressed-tarball): New procedure. (download-tarball): Use it when the basename of SIGNATURE-URL doesn't contain the basename of URL.
2016-11-30refresh: Honor the selected updaters when '-u' isn't given.Ludovic Courtès
Fixes a regression introduced in e9c72306fdfd6a60158918850cb25d0ff3837d16. * guix/scripts/refresh.scm (check-for-package-update): Add 'updaters' parameter and honor it. (guix-refresh): Pass UPDATERS to 'check-for-package-update'.
2016-11-30gnu-maintenance: Factorize URL prefix predicates.Ludovic Courtès
* guix/gnu-maintenance.scm (url-prefix-predicate): New procedure. (gnome-package?): Rewrite in terms of 'url-prefix-predicate'. (kde-package?, xorg-package?): Remove. (%kde-updater, %xorg-updater): Use 'url-prefix-predicate'.
2016-11-29Merge branch 'master' into python-build-systemHartmut Goebel
2016-11-29gnu-maintenance: 'latest-kde-release' honors 'upstream-name' properties.Ludovic Courtès
* guix/gnu-maintenance.scm (latest-kde-release): Honor the 'upstream-name' property of PACKAGE.
2016-11-29refresh: Warn about packages that lack an updater.Ludovic Courtès
* guix/upstream.scm (package-update-path): Rename to... (package-latest-release): ... this. Remove 'version>?' check. (package-latest-release*): New procedure. (package-update): Use it. * guix/scripts/refresh.scm (lookup-updater): Rename to... (lookup-updater-by-name): ... this. (warn-no-updater): New procedure. (update-package): Add #:warn? parameter and honor it. (check-for-package-update): New procedure. (guix-refresh)[warn?]: New variable. Replace inline code when UPDATE? is false with a call to 'check-for-package-update'. Pass WARN? to 'check-for-package-update' and 'update-package'. * doc/guix.texi (Invoking guix refresh): Document it. Fix a couple of typos.
2016-11-28pull: Set '%nix-instantiate' to a sensible value.Ludovic Courtès
Reported by ng0 <ng0@libertad.pw>. Fixes <http://bugs.gnu.org/25053>. * guix/build/pull.scm (build-guix): Replace "@NIX_INSTANTIATE@" in guix/config.scm with "nix-instantiate".
2016-11-26offload: Call 'machine-load' only once per machine.Ludovic Courtès
This fixes a longstanding issue where 'choose-build-machine' would make on average O(N log(N)) calls to 'machine-load', plus an extra call for the selected machine, instead of N calls. * guix/scripts/offload.scm (machine-load): Add comment. (machine-power-factor, machine-less-loaded-or-faster?): Remove. (choose-build-machine)[machines+slots]: Rename to... [machines+slots+loads]: ... this. [undecorate]: Adjust accordingly. [machine-less-loaded-or-faster?]: New procedure. Remove extra 'machine-load' call in body.
2016-11-25offload: Drop 'remote-pipe'.Ludovic Courtès
* guix/scripts/offload.scm (remote-pipe): Remove. (machine-load): Use 'open-remote-pipe*' instead of 'remote-pipe'.
2016-11-25offload: Rewrite to make direct RPCs to the remote daemon.Ludovic Courtès
* guix/scripts/offload.scm (<build-machine>)[daemon-socket]: New field. (connect-to-remote-daemon): New procedure. (%gc-root-file, register-gc-root, remove-gc-roots, offload): Remove. (transfer-and-offload): Rewrite using 'connect-to-remote-daemon' and RPCs over SSH. (store-import-channel, store-export-channel): New procedures. (send-files, retrieve-files): Rewrite using these.
2016-11-25offload: Remove 'with-nar-error-handling' macro.Ludovic Courtès
* guix/scripts/offload.scm (with-nar-error-handling): Remove. (guix-offload): Use 'with-error-handling' instead.
2016-11-25store: 'open-connection' can taken an open port.Ludovic Courtès
* guix/store.scm (open-unix-domain-socket): New procedure. (open-connection): Add #:port parameter and honor it.
2016-11-25offload: Reuse SSH session during 'transfer-and-offload'.Ludovic Courtès
* guix/scripts/offload.scm (remote-pipe): Replace 'machine' parameter with 'session'. Remove 'open-ssh-session' call. (register-gc-root): Replace 'machine' with 'session'. Use ' session-get' instead of 'build-machine-name'. (remove-gc-roots, offload, send-files, retrieve-files): Likewise. (transfer-and-offload): Add 'open-ssh-session' call. Handle 'offload' errors here. (machine-load): Add call to 'open-ssh-session'.
2016-11-25offload: Use Guile-SSH instead of GNU lsh.Ludovic Courtès
* guix/scripts/offload.scm (<build-machine>)[ssh-options]: Remove. [host-key, host-key-type]: New fields. (%lsh-command, %lshg-command, user-lsh-private-key): Remove. (user-openssh-private-key, private-key-from-file*): New procedures. (host-key->type+key, open-ssh-session): New procedures. (remote-pipe): Remove 'mode' parameter. Rewrite in terms of 'open-ssh-session' etc. Update users. (send-files)[missing-files]: Rewrite using the bidirectional channel port. Remove call to 'call-with-compressed-output-port'. (retrieve-files): Remove call to 'call-with-decompressed-port'. (machine-load): Remove exit status logic. * doc/guix.texi (Requirements): Mention Guile-SSH. (Daemon Offload Setup): Document 'host-key' and 'private-key'. Show the default value on each @item line. * m4/guix.m4 (GUIX_CHECK_GUILE_SSH): New macro. * config-daemon.ac: Use 'GUIX_CHECK_GUILE_SSH'. Set 'HAVE_DAEMON_OFFLOAD_HOOK' as a function of that.
2016-11-25Merge branch 'master' into python-build-systemLeo Famulari
2016-11-21syscalls: Add 'add-network-route/gateway' and 'delete-network-route'.Ludovic Courtès
* guix/build/syscalls.scm (SIOCADDRT, SIOCDELRT): New variables. (%rtentry): New C struct. (RTF_UP, RTF_GATEWAY, %sockaddr-any): New variables. (add-network-route/gateway, delete-network-route): New procedures. * tests/syscalls.scm ("add-network-route/gateway") ("delete-network-route"): New tests.
2016-11-21syscalls: Add 'c-struct-field-offset'.Ludovic Courtès
* guix/build/syscalls.scm (define-c-struct-macro): New macro. (define-c-struct): Use it. (c-struct-field-offset): New macro.
2016-11-19lint: Add 'mirror-url' checker.Ludovic Courtès
* guix/scripts/lint.scm (origin-uris): New procedure. (check-source): Use it. (check-mirror-url): New procedure. (%checkers): Add 'mirror-url' checker. * tests/lint.scm ("mirror-url") ("mirror-url: one suggestion"): New tests. * doc/guix.texi (Invoking guix lint): Document it.
2016-11-19store: Add 'references*'.Ludovic Courtès
* guix/store.scm (references*): New procedure. * guix/profiles.scm (manifest-lookup-package)[references*]: Remove. * guix/scripts/system.scm (references*): Remove. * tests/gexp.scm ("gexp->file", "gexp->file + file-append") ("gexp->derivation", "gexp->derivation, cross-compilation") ("gexp->derivation, ungexp + ungexp-native") ("scheme-file", "text-file*", "mixed-text-file"): Remove 'references*' instead of (store-lift references).
2016-11-19derivations: Add 'raw-derivation'.Ludovic Courtès
* guix/derivations.scm (raw-derivation): New procedure. * guix/download.scm (raw-derivation): Remove. * guix/gexp.scm (raw-derivation): Remove.
2016-11-18download: Do not offload 'builtin:download' derivations.Ludovic Courtès
* guix/download.scm (built-in-download): Pass #:local-build? #t.
2016-11-17guix package: Display newline after generation diffs.Roel Janssen
* guix/ui.scm (display-profile-content-diff): Display an extra newline.
2016-11-17syscalls: 'configure-network-interface' has a #:netmask parameter.Ludovic Courtès
* guix/build/syscalls.scm (configure-network-interface): Add #:netmask keyword parameter and honor it.
2016-11-16syscalls: Add bindings for SIOCGIFNETMASK and SIOCSIFNETMASK.Ludovic Courtès
* guix/build/syscalls.scm (SIOCGIFNETMASK, SIOCSIFNETMASK): New variables. (set-network-interface-netmask, network-interface-netmask): New procedures. * tests/syscalls.scm ("network-interface-netmask lo") ("set-network-interface-netmask"): New tests.
2016-11-16syscalls: Use 'define-c-struct' for 'struct ifconf'.Ludovic Courtès
* guix/build/syscalls.scm (ifconf-struct): Remove. (%ifconf-struct): New C struct. (network-interface-names): Use 'make-bytevector' and 'write-ifconf!' instead of 'make-c-struct', and 'read-ifconf' instead of 'parse-c-struct'.
2016-11-16syscalls: C struct writer correctly handles pointer fields.Ludovic Courtès
* guix/build/syscalls.scm (write-type): Add case for '*.
2016-11-16download: Use the built-in 'download' builder when available.Ludovic Courtès
Fixes <http://bugs.gnu.org/22774>. Reported by Christopher W Carpenter. * guix/download.scm (built-in-builders*, raw-derivation) (built-in-download): New procedures. (in-band-download): New procedure, with code formerly in 'url-fetch'. (url-fetch): Call 'built-in-builders*' and dispatch between 'built-in-download' and 'in-band-download'.
2016-11-16daemon: Add 'built-in-builders' RPC.Ludovic Courtès
* nix/libstore/builtins.cc (builtinBuilderNames): New function. * nix/libstore/builtins.hh (builtinBuilderNames): New declaration. * nix/libstore/worker-protocol.hh (PROTOCOL_VERSION): Bump to 0x160. (WorkerOp)[wopBuiltinBuilders]: New value. * nix/nix-daemon/nix-daemon.cc (performOp): Handle it. * guix/store.scm (operation-id)[built-in-builders]: New value. * guix/store.scm (read-arg): Add 'string-list'. (built-in-builders): New procedure. * tests/derivations.scm ("built-in-builders"): New test.
2016-11-16daemon: Add "builtin:download" derivation builder.Ludovic Courtès
This ensures that 1) the derivation doesn't change when Guix changes; 2) the derivation closure doesn't contain Guix and its dependencies; 3) we don't have to rely on ugly chroot hacks. Adapted from Nix commit 0a2bee307b20411f5b0dda0c662b1f9bb9e0e131. * nix/libstore/build.cc (DerivationGoal::runChild): Add special case for 'isBuiltin(drv)'. Disable chroot when 'isBuiltin(drv)'. * nix/libstore/builtins.cc, nix/libstore/builtins.hh, nix/scripts/download.in, guix/scripts/perform-download.scm: New files. * guix/ui.scm (show-guix-help)[internal?]: Add 'perform-download'. * nix/local.mk (libstore_a_SOURCES): Add builtins.cc. (libstore_headers): Add builtins.hh. (nodist_pkglibexec_SCRIPTS): Add 'scripts/download'. * config-daemon.ac: Emit 'scripts/download'. * Makefile.am (MODULES): Add 'guix/scripts/perform-download.scm'. * tests/derivations.scm ("unknown built-in builder") ("'download' built-in builder") ("'download' built-in builder, invalid hash") ("'download' built-in builder, not found") ("'download' built-in builder, not fixed-output"): New tests. Co-authored-by: Eelco Dolstra <eelco.dolstra@logicblox.com>
2016-11-16tests: Move HTTP server to (guix tests http).Ludovic Courtès
* tests/lint.scm (%http-server-port, %local-url) (%http-server-socket, http-write, %http-server-lock) (%http-server-ready, http-open, stub-http-server) (call-with-http-server, with-http-server): Move to (guix tests http). Adjust tests for %HTTP-SERVER-SOCKET as a promise and %LOCAL-URL as a parameter. * guix/tests/http.scm: New file. * Makefile.am (dist_noinst_DATA): Add it. (GOBJECTS): Add .go files for all of $(dist_noinst_DATA). (make-go): Depend on $(dist_noinst_DATA).
2016-11-16guix download: Add '-o' option.Ludovic Courtès
* guix/scripts/download.scm (download-to-file, download-to-store*): New procedures. (%default-options): Add 'download-proc'. (show-help): Adjust description and document '-o'. (%options): Add '-o'. (guix-download): Remove 'store' variable. Add 'fetch' and define 'path' to as its result. * tests/guix-download.sh: Add test.
2016-11-15lint: more packages to probably be a native input.Hartmut Goebel
* guix/scripts/lint.scm (check-inputs-should-be-native package): Add python packages which are typically used for testing or for building the documentation.
2016-11-15guix: Add lint-checker for packages which should be no inputs at all.Hartmut Goebel
Also refactor some common code into a new function. Examples for these pacakges are python(2)-setuptools and python(2)-pip, which are installed together with python itself. * guix/scripts/lint.scm (warn-if-package-has-input): New procedure. (check-inputs-should-be-native package): Use it; rename and clean-up variables. (check-inputs-should-not-be-an-input-at-all): New procedure. (%checkers) Add it. * doc/guix.texi (Python Modules): Document it. * tests/lint.scm: ("inputs: python-setuptools should not be an input at all (input)", "inputs: python-setuptools should not be an input at all (native-input)" "inputs: python-setuptools should not be an input at all (propagated-input)"): Add tests.
2016-11-15guix: python-build-system: Add background about Python installation methods.Hartmut Goebel