summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Collapse)Author
2018-10-09guix build: '-f' accepts file-like objects.Ludovic Courtès
* guix/scripts/build.scm (options->things-to-build)[validate-type]: Check for 'file-like?'. (options->derivations): Accept 'file-like?'. * tests/guix-build.sh: Add a test with 'computed-file'. * doc/guix.texi (Additional Build Options): Mention file-like objects.
2018-10-09profiles: Make Geiser happy.Ludovic Courtès
* guix/profiles.scm (manual-database)[config.scm]: Use ungexp/quote trick to placate Geiser, which otherwise thinks it's in (guix config).
2018-10-09pull: '-l' now honors '-p'.Ludovic Courtès
* guix/scripts/pull.scm (process-query): Add 'profile' parameter and remove 'profile' local variable. (guix-pull): Adjust caller.
2018-10-09status: Gracefully handle invalid UTF-8 in build logs.Ludovic Courtès
* guix/status.scm (maybe-utf8->string): New procedure. (build-event-output-port): Use it in lieu of 'utf8->string'. * tests/status.scm ("build-output-port, UTF-8") ("current-build-output-port, UTF-8 + garbage"): New tests.
2018-10-07build-system/glib-or-gtk: Build 'in-source' by default.Leo Famulari
* guix/build-system/glib-or-gtk.scm (glib-or-gtk-build): Change to 'out-of-source? #f'. * gnu/packages/audio.scm (audacity)[arguments]: Use the default 'out-of-source?' setting. * gnu/packages/libreoffice.scm (libreoffice): Likewise.
2018-10-05progress: Fix total size in "@ download-succeeded" traces.Ludovic Courtès
Fixes a regression introduced in 1d0be47ab680db938ac8da1ee65e1de91e198f67 whereby the total size for directories (coming from substitutes) would be 4KiB. This led the progress bar to go back to the start, typically. * guix/progress.scm (progress-reporter/trace): Add 'total'. In 'start', initialize it. Adjust 'report' to update it. Adjust 'stop' to prefer SIZE as the actual size and then TOTAL. Do not use the size of FILE as the total since that could be 4KiB when FILE is a directory.
2018-10-04progress: Generate valid 'download-progress' traces when the size is unknown.Ludovic Courtès
Fixes <https://bugs.gnu.org/32895>. Reported by Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>. * guix/progress.scm (progress-reporter/trace): In 'stop', make sure SIZE is an integer. Previously we'd generate a "@ download-progress" trace with #f for the 'transferred' number when downloading files whose size is not known in advance.
2018-10-02build-system/asdf: Properly handle dependency specification casing.Andy Patterson
* guix/build/lisp-utils.scm (normalize-dependency): Modify match clauses to match the upper-case symbols that lisp produces. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-10-01guix: import: stackage: Fix JSON accessors.Timothy Sample
* guix/import/stackage.scm (lts-info-ghc-version, lst-info-packages): Use assoc-ref for accessing parsed JSON.
2018-10-01build-system: haskell: Add #:cabal-revision argument.Timothy Sample
Add a #:cabal-revision argument for specifying which Cabal file revision from Hackage should be used. * guix/build-system/haskell.scm (source-url->revision-url): New function. (lower): Accept a cabal-revision keyword argument, convert it to an origin record, and add it to the resulting bag's host-inputs. (haskell-build): Pass the cabal-revision input to the builder as an argument. * guix/build/haskell-build-system.scm (patch-cabal-file): New phase. (%standard-phases): Add it.
2018-09-30status: Always print the daemon's "waiting for locks" messages.Ludovic Courtès
Reported by Ricardo Wurmus <rekado@elephly.net>. * guix/status.scm (print-build-event) <build-log>: Let "waiting for locks" messages through.
2018-09-28status: Tweak colorization.Ludovic Courtès
* guix/status.scm (colorize-log-line): Add "\<" before "FAIL" (to distinguish from "XFAIL". Use MAGENTA instead of ORANGE, which doesn't exist.
2018-09-28status: Be more defensive when looking for a log file.Ludovic Courtès
* guix/store.scm (derivation-log-file): New procedure.o (log-file): Use it. * guix/status.scm (print-build-event): Use 'derivation-log-file' instead of 'log-file'. Check wheter the return value is #f.
2018-09-27perform-download: Optionally report a "download-progress" trace.Ludovic Courtès
* guix/scripts/perform-download.scm (perform-download): Add #:print-build-trace? and pass it to 'url-fetch'. (guix-perform-download): Define 'print-build-trace?' and pass it to 'perform-download'. * guix/build/download.scm (ftp-fetch): Add #:print-build-trace? and honor it. (url-fetch): Likewise. * nix/libstore/builtins.cc (builtinDownload): Set _NIX_OPTIONS environment variable.
2018-09-27Add (guix status) and use it for pretty colored output.Ludovic Courtès
* guix/progress.scm (progress-reporter/trace): New procedure. (%progress-interval): New variable. (progress-reporter/file): Use it. * guix/scripts/build.scm (set-build-options-from-command-line): Pass #:print-extended-build-trace?. (%default-options): Add 'print-extended-build-trace?'. (guix-build): Parameterize CURRENT-TERMINAL-COLUMNS. Use 'build-status-updater'. * guix/scripts/environment.scm (%default-options): Add 'print-extended-build-trace?'. (guix-environment): Wrap body in 'with-status-report'. * guix/scripts/pack.scm (%default-options): Add 'print-build-trace?' and 'print-extended-build-trace?'. (guix-pack): Wrap body in 'with-status-report'. * guix/scripts/package.scm (%default-options, guix-package): Likewise. * guix/scripts/system.scm (%default-options, guix-system): Likewise. * guix/scripts/pull.scm (%default-options, guix-pull): Likewise. * guix/scripts/substitute.scm (progress-report-port): Don't call STOP when TOTAL is zero. (process-substitution): Add #:print-build-trace? and honor it. (guix-substitute)[print-build-trace?]: New variable. Pass #:print-build-trace? to 'process-substitution'. * guix/status.scm: New file. * guix/store.scm (set-build-options): Add #:print-extended-build-trace?; pass it into PAIRS. (%protocol-version): Bump. (protocol-version, nix-server-version): New procedures. (current-store-protocol-version): New variable. (with-store, build-things): Parameterize it. * guix/ui.scm (build-output-port): Remove. (colorize-string): Export. * po/guix/POTFILES.in: Add guix/status.scm. * tests/status.scm: New file. * Makefile.am (SCM_TESTS): Add it. * nix/libstore/worker-protocol.hh (PROTOCOL_VERSION): Bump to 0x162. * nix/libstore/build.cc (DerivationGoal::registerOutputs) (SubstitutionGoal::finished): Print a "@ hash-mismatch" trace before throwing.
2018-09-27progress: Add 'display-download-progress'.Ludovic Courtès
* guix/progress.scm (display-download-progress): New procedure. (progress-reporter/file)[render]: Rewrite in terms of 'display-download-progress'.
2018-09-26guix system: Load all services on reconfigure, not just stopped ones.Carlo Zancanaro
This uses the 'replacement' service slot introduced in the Shepherd version 0.5.0. * gnu/services/shepherd.scm (shepherd-service-upgrade): Return a list of services that need to be restarted to complete their upgrade. * guix/scripts/system.scm (call-with-service-upgrade-info): Rename an internal variable to reflect the change to shepherd-service-upgrade. (upgrade-shepherd-services): Call 'load-services/safe' instead of 'load-services'. Print a message about services that need to be manually restarted. * gnu/services/herd.scm (load-services/safe): New procedure. * doc/guix.texi (Invoking guix system): Document the new behaviour. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2018-09-26git-download: Don't assume the working directory is the parent of ".git".Marius Bakke
This makes it do the right thing w.r.t. git worktrees. * guix/git-download.scm (git-file-list): Use REPOSITORY-WORKING-DIRECTORY to locate checkout. Rename from "top" to "workdir".
2018-09-25pull: Try harder to use the host's X.509 certificates.Ludovic Courtès
* guix/scripts/pull.scm (honor-x509-certificates): Use commonly-found certificate bundles.
2018-09-25substitute: Progress port really closes underlying port.Ludovic Courtès
* guix/scripts/substitute.scm (progress-report-port): Use 'close-port' instead of 'close-connection'. Move 'stop' call first.
2018-09-25progress: 'progress-reporter-report!' takes any number of arguments.Ludovic Courtès
* guix/progress.scm (progress-reporter-report!): Accept an arbitrary number of arguments and pass them to REPORT.
2018-09-25gnupg: Change default keyserver.Ludovic Courtès
* guix/gnupg.scm (%openpgp-key-server): Change default to "pool.sks-keyservers.net".
2018-09-23database: Register each store item only once.Ludovic Courtès
Fixes <https://bugs.gnu.org/32600>. Reported by Leo Famulari. * guix/store/database.scm (register-items): Check whether TO-REGISTER is in DB by calling 'path-id', and skip the reset-timestamps, registration, and deduplication phases when it is.
2018-09-23database: 'register-items' shows a progress bar.Ludovic Courtès
* guix/store/database.scm (register-items): Add #:log-port. Use 'progress-reporter/bar' to show a progress report. (register-path): Pass #:log-port to 'register-items'.
2018-09-23store-copy: Display a progress bar when copying store items.Ludovic Courtès
* guix/build/store-copy.scm (populate-store): Add #:log-port parameter. Use 'progress-reporter/bar' to report progress.
2018-09-23serialization: Remove redundancy in 'write-file'.Ludovic Courtès
* guix/serialization.scm (write-file): Remove redundant 'member' call.
2018-09-21inferior: Add 'inferior-for-channels'.Ludovic Courtès
* guix/inferior.scm (%inferior-cache-directory): New variable. (inferior-for-channels): New procedure.
2018-09-21channels: Add 'channel-instances->derivation'.Ludovic Courtès
* guix/channels.scm (channel-instances->derivation): New procedure. (latest-channel-derivation): Use it. (channel-instance-derivations): Make private.
2018-09-21profiles: 'packages->manifest' now accepts inferior packages.Ludovic Courtès
* guix/profiles.scm (packages->manifest)[inferiors-loaded?]: New variable. [inferior->entry]: New procedure. Accept inferior packages when INFERIORS-LOADED? is true. * tests/guix-package.sh: Add test using a manifest with an inferior. * tests/inferior.scm ("packages->manifest"): New test.
2018-09-21inferior: Add 'inferior-package->manifest-entry'.Ludovic Courtès
* guix/inferior.scm (inferior-package->manifest-entry): New procedure. * tests/inferior.scm (manifest-entry->list): New procedure. ("inferior-package->manifest-entry"): New test.
2018-09-21inferior: Add 'inferior-package-search-paths' & co.Ludovic Courtès
* guix/inferior.scm (%inferior-package-search-paths) (inferior-package-native-search-paths) (inferior-package-search-paths) (inferior-package-transitive-native-search-paths): New procedures. * tests/inferior.scm ("inferior-package-search-paths"): New test.
2018-09-21inferior: Add 'inferior-package-inputs' & co.Ludovic Courtès
* guix/inferior.scm (open-inferior): Use (ice-9 match). (inferior-package-input-field, inferior-package-inputs): (inferior-package-native-inputs) (inferior-package-propagated-inputs) (inferior-package-transitive-propagated-inputs): New procedures. * tests/inferior.scm ("inferior-package-inputs"): New test. inputs fixlet
2018-09-21inferior: Add 'lookup-inferior-packages'.Ludovic Courtès
* guix/inferior.scm (<inferior>)[packages, table]: New fields. (open-inferior): Initialize these new fields. (inferior-packages): Rename to... (%inferior-packages): ... this. (inferior-packages): New procedure; force the promise. (%inferior-package-table, lookup-inferior-packages): New procedures. * tests/inferior.scm ("lookup-inferior-packages") ("lookup-inferior-packages and eq?-ness"): New tests.
2018-09-21inferior: Add 'inferior-package-derivation'.Ludovic Courtès
* guix/inferior.scm (read-inferior-response) (send-inferior-request): New procedures. (inferior-eval): Rewrite in terms of these. (proxy, inferior-package-derivation, inferior-package->derivation) (package-compiler): New procedures. * tests/inferior.scm ("inferior-package-derivation"): New test.
2018-09-19build-system/asdf: Adopt asdf conventions.Andy Patterson
The asdf documentation specifies that asdf:load-asd should be preferred to calling load on a system definition file. * guix/build/lisp-utils.scm (compile-system): Replace load with asdf:load-asd. (system-dependencies): Likewise. (test-system): Likewise. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-09-19build-system/asdf: Use invoke.Andy Patterson
* guix/build/lisp-utils.scm (lisp-eval-program): Replace system* and error handling with invoke. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-09-19build-system/asdf: Log lisp system invocations.Andy Patterson
* guix/build/lisp-system.scm: (lisp-eval-program): Log the arguments to system*. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-09-19build-system/asdf: Handle all asdf dependency specifications.Andy Patterson
Add support for dependencies of the form (:version <name> <version>), (:feature <feature> <dependency-specification>) and (:require <module-name>), as defined by <https://common-lisp.net/project/asdf/asdf.html#The-defsystem-grammar>. * guix/build/lisp-utils.scm (normalize-dependency): New variable. (make-asd-file)[dependencies]: Use it to generate dependencies with normalized names. [dependency-name]: New variable. [registry]: Use it to flatten the normalized dependencies. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-09-18pull: Use /etc/ssl/certs by default if it exists and is non-empty.Ludovic Courtès
Previously, on machines where /etc/ssl/certs did exist, we'd have this: $ unset SSL_CERT_DIR $ unset SSL_CERT_FILE $ guix pull Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'... guix pull: error: Git error: the SSL certificate is invalid This is because we'd let OpenSSL look for certificates in its default location, which is an empty directory in its own prefix. * guix/scripts/pull.scm (honor-x509-certificates): New procedure. (guix-pull): Use it instead of calling 'honor-lets-encrypt-certificates!'.
2018-09-18pull: Assume 'set-tls-certificate-locations!' is available.Ludovic Courtès
* guix/scripts/pull.scm (honor-lets-encrypt-certificates!): Call 'set-tls-certificate-locations!' unconditionally.
2018-09-18describe: Work correctly on generation-less profiles.Ludovic Courtès
Previously a command like: $(readlink -f ~/.config/guix/current)/bin/guix describe would succeed without printing anything. * guix/scripts/describe.scm (display-profile-info): Don't call 'generation-file-name' when NUMBER is zero. * guix/scripts/pull.scm (display-profile-content): Likewise.
2018-09-18store: Add another missing buffer flush.Ludovic Courtès
This is a followup to 3809824199cdd52446176c9cd4761dd09f732542. * guix/store.scm (add-file-tree-to-store): Add 'write-buffered-output' call.
2018-09-17git: Choose a saner default for '%repository-cache-directory'.Ludovic Courtès
* guix/git.scm (%repository-cache-directory): Use 'cache-directory' by default unless running as root.
2018-09-17store: Add missing buffer flushes.Ludovic Courtès
This could result in deadlock in unusual situations, whereby we'd start waiting for a reply while the query hasn't been flushed to the socket. * guix/store.scm (buffering-output-port)[flush]: Add call to 'force-output'. (add-to-store): Add call to 'write-buffered-output'.
2018-09-16gnupg: Use 'gpgv' and keybox files; adjust 'guix refresh' accordingly.Ludovic Courtès
* guix/gnupg.scm (%gpgv-command, current-keyring): New variables (gnupg-verify): Add optional 'keyring' parameter. Use 'gpgv' instead of 'gpg' and pass it '--keyring'. (gnupg-receive-keys): Add optional 'keyring' parameter and honor it. (gnupg-verify*): Add #:keyring and honor it. * guix/scripts/refresh.scm (%options, show-help): Add '--keyring'. (guix-refresh): Parameterize CURRENT-KEYRING. * doc/guix.texi (Invoking guix refresh): Document '--keyring' and the keybox format.
2018-09-16channels: Add Guile-Git as a dependency of external channels.Ludovic Courtès
Fixes a regression introduced in aed0a594058a59bc3bb1d2686391dc0e8a181b1f whereby external channels would fail to build due to the lack of a (git) module. Reported by Alex ter Weele on #guix. * guix/channels.scm (channel-instance-derivations)[guile-gcrypt]: Remove. [dependencies]: New variable. Use it in the 2nd argument to 'build-channel-instance'.
2018-09-16graph: Add '--system'.Ludovic Courtès
* guix/scripts/graph.scm (%options, show-help): Add '--system'. (%default-options): Add 'system'. (guix-graph): Pass #:system to 'run-with-store'.
2018-09-14git-download: 'git-predicate' returns #f on Git errors.Ludovic Courtès
Fixes a regression introduced in aed0a594058a59bc3bb1d2686391dc0e8a181b1f whereby 'git-predicate' would throw to 'git-error instead of returning #f as the docstring says. * guix/git-download.scm (git-predicate): Return #f upon 'git-error'.
2018-09-13git-download: Rewrite 'git-predicate' using Guile-Git.Ludovic Courtès
Fixes <https://bugs.gnu.org/27925>. * guix/git-download.scm (files->directory-tree) (directory-in-tree?): Remove. (git-file-list): New procedures. (git-predicate): Use it instead of opening a pipe to 'git'. Remove directory tree hack and rely exclusively on inode/device numbers.
2018-09-11guix: Do not close current-error-port.Ricardo Wurmus
Reported-by: Ludovic Courtès <ludo@gnu.org>. * guix/scripts/build.scm (guix-build), guix/scripts/package.scm (guix-package): Duplicate port before handing it to build-output-port.