summaryrefslogtreecommitdiff
path: root/guix
Commit message (Collapse)AuthorAge
...
* status: Always print the daemon's "waiting for locks" messages.Ludovic Courtès2018-09-30
| | | | | | | Reported by Ricardo Wurmus <rekado@elephly.net>. * guix/status.scm (print-build-event) <build-log>: Let "waiting for locks" messages through.
* status: Tweak colorization.Ludovic Courtès2018-09-28
| | | | | | * guix/status.scm (colorize-log-line): Add "\<" before "FAIL" (to distinguish from "XFAIL". Use MAGENTA instead of ORANGE, which doesn't exist.
* status: Be more defensive when looking for a log file.Ludovic Courtès2018-09-28
| | | | | | | * 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.
* perform-download: Optionally report a "download-progress" trace.Ludovic Courtès2018-09-27
| | | | | | | | | | | | * 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.
* Add (guix status) and use it for pretty colored output.Ludovic Courtès2018-09-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* progress: Add 'display-download-progress'.Ludovic Courtès2018-09-27
| | | | | | * guix/progress.scm (display-download-progress): New procedure. (progress-reporter/file)[render]: Rewrite in terms of 'display-download-progress'.
* guix system: Load all services on reconfigure, not just stopped ones.Carlo Zancanaro2018-09-26
| | | | | | | | | | | | | | | | | 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>
* git-download: Don't assume the working directory is the parent of ".git".Marius Bakke2018-09-26
| | | | | | | 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".
* pull: Try harder to use the host's X.509 certificates.Ludovic Courtès2018-09-25
| | | | | * guix/scripts/pull.scm (honor-x509-certificates): Use commonly-found certificate bundles.
* substitute: Progress port really closes underlying port.Ludovic Courtès2018-09-25
| | | | | * guix/scripts/substitute.scm (progress-report-port): Use 'close-port' instead of 'close-connection'. Move 'stop' call first.
* progress: 'progress-reporter-report!' takes any number of arguments.Ludovic Courtès2018-09-25
| | | | | * guix/progress.scm (progress-reporter-report!): Accept an arbitrary number of arguments and pass them to REPORT.
* gnupg: Change default keyserver.Ludovic Courtès2018-09-25
| | | | | * guix/gnupg.scm (%openpgp-key-server): Change default to "pool.sks-keyservers.net".
* database: Register each store item only once.Ludovic Courtès2018-09-23
| | | | | | | | | 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.
* database: 'register-items' shows a progress bar.Ludovic Courtès2018-09-23
| | | | | | * 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'.
* store-copy: Display a progress bar when copying store items.Ludovic Courtès2018-09-23
| | | | | * guix/build/store-copy.scm (populate-store): Add #:log-port parameter. Use 'progress-reporter/bar' to report progress.
* serialization: Remove redundancy in 'write-file'.Ludovic Courtès2018-09-23
| | | | * guix/serialization.scm (write-file): Remove redundant 'member' call.
* inferior: Add 'inferior-for-channels'.Ludovic Courtès2018-09-21
| | | | | * guix/inferior.scm (%inferior-cache-directory): New variable. (inferior-for-channels): New procedure.
* channels: Add 'channel-instances->derivation'.Ludovic Courtès2018-09-21
| | | | | | * guix/channels.scm (channel-instances->derivation): New procedure. (latest-channel-derivation): Use it. (channel-instance-derivations): Make private.
* profiles: 'packages->manifest' now accepts inferior packages.Ludovic Courtès2018-09-21
| | | | | | | | | * 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.
* inferior: Add 'inferior-package->manifest-entry'.Ludovic Courtès2018-09-21
| | | | | | * guix/inferior.scm (inferior-package->manifest-entry): New procedure. * tests/inferior.scm (manifest-entry->list): New procedure. ("inferior-package->manifest-entry"): New test.
* inferior: Add 'inferior-package-search-paths' & co.Ludovic Courtès2018-09-21
| | | | | | | | * 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.
* inferior: Add 'inferior-package-inputs' & co.Ludovic Courtès2018-09-21
| | | | | | | | | | | * 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
* inferior: Add 'lookup-inferior-packages'.Ludovic Courtès2018-09-21
| | | | | | | | | | | * 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.
* inferior: Add 'inferior-package-derivation'.Ludovic Courtès2018-09-21
| | | | | | | | | * 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.
* build-system/asdf: Adopt asdf conventions.Andy Patterson2018-09-19
| | | | | | | | | | | 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>
* build-system/asdf: Use invoke.Andy Patterson2018-09-19
| | | | | | | * guix/build/lisp-utils.scm (lisp-eval-program): Replace system* and error handling with invoke. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* build-system/asdf: Log lisp system invocations.Andy Patterson2018-09-19
| | | | | | | * guix/build/lisp-system.scm: (lisp-eval-program): Log the arguments to system*. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* build-system/asdf: Handle all asdf dependency specifications.Andy Patterson2018-09-19
| | | | | | | | | | | | | | | 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>
* pull: Use /etc/ssl/certs by default if it exists and is non-empty.Ludovic Courtès2018-09-18
| | | | | | | | | | | | | | | | 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!'.
* pull: Assume 'set-tls-certificate-locations!' is available.Ludovic Courtès2018-09-18
| | | | | * guix/scripts/pull.scm (honor-lets-encrypt-certificates!): Call 'set-tls-certificate-locations!' unconditionally.
* describe: Work correctly on generation-less profiles.Ludovic Courtès2018-09-18
| | | | | | | | | | | | 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.
* store: Add another missing buffer flush.Ludovic Courtès2018-09-18
| | | | | | | This is a followup to 3809824199cdd52446176c9cd4761dd09f732542. * guix/store.scm (add-file-tree-to-store): Add 'write-buffered-output' call.
* git: Choose a saner default for '%repository-cache-directory'.Ludovic Courtès2018-09-17
| | | | | * guix/git.scm (%repository-cache-directory): Use 'cache-directory' by default unless running as root.
* store: Add missing buffer flushes.Ludovic Courtès2018-09-17
| | | | | | | | | 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'.
* gnupg: Use 'gpgv' and keybox files; adjust 'guix refresh' accordingly.Ludovic Courtès2018-09-16
| | | | | | | | | | | | * 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.
* channels: Add Guile-Git as a dependency of external channels.Ludovic Courtès2018-09-16
| | | | | | | | | | | | | 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'.
* graph: Add '--system'.Ludovic Courtès2018-09-16
| | | | | | * guix/scripts/graph.scm (%options, show-help): Add '--system'. (%default-options): Add 'system'. (guix-graph): Pass #:system to 'run-with-store'.
* git-download: 'git-predicate' returns #f on Git errors.Ludovic Courtès2018-09-14
| | | | | | | | 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'.
* git-download: Rewrite 'git-predicate' using Guile-Git.Ludovic Courtès2018-09-13
| | | | | | | | | | 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.
* guix: Do not close current-error-port.Ricardo Wurmus2018-09-11
| | | | | | | | 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.
* ui: Do not filter hash mismatch lines.Ricardo Wurmus2018-09-11
| | | | | | | Reported by Pjotr Prins <pjotr.public12@thebird.nl>. * guix/ui.scm (build-output-port): Add pattern for hash mismatch error; be more careful with error messages in verbose mode.
* profiles: Correctly deal with etc/ being a relative symlink.Ludovic Courtès2018-09-11
| | | | | | | | | | | | Fixes <https://bugs.gnu.org/32686>. Reported by Oleg Pykhalov <go.wigust@gmail.com>. * guix/build/profiles.scm (ensure-writable-directory): Add #:symlink. [absolute?]: New procedure. [unsymlink]: Use it to determine how to resolve readlink's result. (build-profile): Pass SYMLINK to 'ensure-writable-directory'. * tests/profiles.scm ("profile-derivation when etc/ is a relative symlink"): New test.
* Adjust all users of (gnu packages ldc) to use (gnu packages dlang).Leo Famulari2018-09-10
| | | | | | | This is a followup to commit 98d6543f86d01486c2f6e808eedd97c601ba3e7a. * gnu/packages/bioinformatics.scm, guix/build-system/dub.scm: Adjust accordingly.
* substitute: Ignore exceptions thrown by 'set-thread-name'.Ludovic Courtès2018-09-10
| | | | | | | | Fixes <https://bugs.gnu.org/32669>. Reported by Ricardo Wurmus <rekado@elephly.net>. * guix/scripts/substitute.scm (guix-substitute): Swallow 'system-error' exceptions around 'set-thread-name' call.
* syscalls: Report lack of a libc symbol as ENOSYS.Ludovic Courtès2018-09-10
| | | | | * guix/build/syscalls.scm (syscall->procedure): Throw to 'system-error with ENOSYS when NAME cannot be found.
* ui: Add soft port for styling and filtering build output.Ricardo Wurmus2018-09-09
| | | | | | | | | * guix/ui.scm (build-output-port): New procedure. * guix/scripts/package.scm (%default-options): Print build trace. (guix-package): Use build-output-port. * guix/scripts/build.scm (guix-build): Use build-output-port. Co-authored-by: Sahithi Yarlagadda <sahi@swecha.net>
* ui: Add support for colorization.Sahithi Yarlagadda2018-09-09
| | | | | | | * guix/ui.scm (ansi-color-tables): New variable. (color, colorize-string): New procedures. Signed-off-by: Ricardo Wurmus <rekado@elephly.net>
* gexp: 'file-union' accepts directory names.Ludovic Courtès2018-09-08
| | | | | | * guix/gexp.scm (file-union): Import (guix build utils). Make the parent directories of TARGET. * tests/gexp.scm ("file-union"): New test.
* guix describe: Display information about the current generation.Ludovic Courtès2018-09-07
| | | | | * guix/scripts/describe.scm (display-profile-info)[number]: Use the current generation number instead of the last generation number.
* guix package: Record package provenance in manifest entries.Ludovic Courtès2018-09-07
| | | | | | | | | * guix/profiles.scm (package->manifest-entry): Add #:properties and honor it. * guix/scripts/package.scm (package-provenance) (package->manifest-entry*): New procedures. (transaction-upgrade-entry, options->installable): Use 'package->manifest-entry*' instead of 'package->manifest-entry'.