summaryrefslogtreecommitdiff
path: root/guix
Commit message (Collapse)AuthorAge
* git: Always use the system certificates by default.Ludovic Courtès2019-02-08
| | | | | | | | | | | | 'guix pull' was always doing it, and now '--with-branch' & co. will do it as well. * guix/git.scm (honor-system-x509-certificates!): New procedure. (%certificates-initialized?): New variable. (with-libgit2): Add call to 'honor-system-x509-certificates!'. * guix/scripts/pull.scm (honor-x509-certificates): Call 'honor-system-x509-certificates!' and fall back to 'honor-lets-encrypt-certificates!'.
* guix build: '--with-branch' & co. fetch submodules.Ludovic Courtès2019-02-08
| | | | | * guix/scripts/build.scm (transform-package-source-branch)[replace]: Add 'recursive?' field to the new package.
* git: Add a 'recursive?' field to <git-checkout> records.Ludovic Courtès2019-02-08
| | | | | | * guix/git.scm (<git-checkout>)[recursive?]: New field. (latest-repository-commit*): Add #:recursive? and honor it. (git-checkout-compiler): Honor the 'recursive?' field of CHECKOUT.
* git: Support recursive updates of submodules.Ludovic Courtès2019-02-08
| | | | | | | | | | | | * guix/git.scm: Autoload (git submodule). (url-cache-directory): Add #:recursive? and honor it. (call-with-repository): New procedure. (with-repository): New macro. (update-submodules): New procedure. (update-cached-checkout): Add #:recursive? and #:log-port and honor them. (latest-repository-commit): Add #:recursive? and honor it. [dot-git?]: Recognize ".git" regular files when RECURSIVE? is true.
* status: Do not systematically erase the previous line.Ludovic Courtès2019-02-07
| | | | | | | | | | | | | | After a successful download, we'd erase the download-progress line, and the end result would be two empty lines following the "downloading …" line. Reported by Ricardo Wurmus <rekado@elephly.net> at <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=33470#27>. * guix/status.scm (print-build-event)[erase-current-line*]: Set to a no-op when PRINT-LOG? is true. Move calls to 'erase-current-line*' to the 'build-succeeded' and 'build-failed' events.
* profiles: Raise an error for unmatched patterns.Ludovic Courtès2019-02-07
| | | | | | | | | | | | | | | Previously, "guix package -r something-not-installed" would silently complete. Now an error is raised. * guix/profiles.scm (&unmatched-pattern-error): New condition type. (manifest-matching-entries): Rewrite to raise an error when one of PATTERNS is not matched. * guix/ui.scm (call-with-error-handling): Handle 'unmatched-pattern-error?'. * tests/guix-package.sh: Add test. * tests/profiles.scm ("manifest-matching-entries"): Don't try to remove unmatched pattern. ("manifest-matching-entries, no match"): New test. ("manifest-transaction-effects"): Remove 'remove' field.
* monads, gexp: Prevent redefinition of syntax parameters.Ludovic Courtès2019-02-06
| | | | | | | | | | | | | Fixes <https://bugs.gnu.org/27476>. This fixes multi-threaded compilation of this code where syntax parameters could end up being redefined and where a race condition could lead a thread to see the "wrong" value of the syntax parameter. * guix/monads.scm (define-syntax-parameter-once): New macro. (>>=, return): Use it. * guix/gexp.scm (define-syntax-parameter-once): New macro. (current-imported-modules, current-imported-extensions): Use it.
* import: opam: Work around janestreet version numbers.Julien Lepiller2019-02-05
| | | | | | | | | janestreet reversionned its packages and prefixed them with "v". Let the importer know about that and choose "v" versions first. * guix/import/opam.scm (find-latest-version): Work around version rewrite from janestreet. (opam->guix-package): Do not pass "v" to version number.
* import: opam: Replace "_" with "-" in imported names.Julien Lepiller2019-02-05
| | | | | | * guix/import/opam.scm (ocaml-name->guix-name): Replace "_" with "-". (opam->guix-packages): Add upstream name when we cannot guess it properly.
* import: opam: Fix conditions.Julien Lepiller2019-02-05
| | | | | | * guix/import/opam.scm (condition-eq, condition-neq): The first argument can be empty. * tests/opam.scm: Add test case.
* status: Display the current build phase.Ludovic Courtès2019-02-05
| | | | | | * guix/status.scm (spin!): Add 'phase' parameter and honor it. Callers updated. (print-build-event)[report-progress]: Likewise.
* status: Keep track of the current build phase.Ludovic Courtès2019-02-05
| | | | | | | | * guix/status.scm (<build>)[phase]: New field. (%phase-start-rx): New variable. (update-build): Add clause to match %PHASE-START-RX and adjust the 'phase' field accordingly. * tests/status.scm ("compute-status, build phase"): Add test
* status: Use 'define-immutable-record-type' and its functional setters.Ludovic Courtès2019-02-05
| | | | | | | * guix/status.scm (<build>): Define using 'define-immutable-record-type', and add 'set-build-completion' binding. (update-build)[set-completion]: Remove. Use 'set-build-completion' instead.
* gnu: dune: Update to 1.6.3.Gabriel Hondet2019-02-04
| | | | | | | * gnu/packages/ocaml.scm (dune): Update to 1.6.3. * guix/build/dune-build-system.scm (build): Use --libdir. Signed-off-by: Julien Lepiller <julien@lepiller.eu>
* status: Erase the progress bar or spinner.Ludovic Courtès2019-02-04
| | | | | | | | | Previously the progress bar wouldn't be erased by the time the next "building foo" line would be printed. * guix/status.scm (print-build-event)[erase-current-line*]: New procedure. Call it instead of (display "\r").
* store: 'log-file' honors 'GUIX_LOG_DIRECTORY'.Ludovic Courtès2019-02-04
| | | | | * guix/store.scm (derivation-log-file): Use %LOCALSTATEDIR or "GUIX_LOG_DIRECTORY" instead of (dirname %STATE-DIRECTORY).
* self: Ensure the daemon refers to the right 'guix' command.Ludovic Courtès2019-02-04
| | | | | | | | | | | | | Previously it would refer to /var/guix/profiles/per-user/root/current-guix/bin/guix, which would fail when that profile does not exist. This is notably the case when using 'channel-instance->package' as done in commit 7e6d8d366a61f951936ed83371877ce006f679f6. * gnu/packages/package-management.scm (guix-daemon)[arguments]: In 'install phase, honor environment variable 'GUIX'. * guix/self.scm (whole-package)[wrap]: New procedure. Use it.
* daemon: Rename 'NIX_STATE_DIR' and 'NIX_DB_DIR' environment variables.Ludovic Courtès2019-02-04
| | | | | | | | | | | | | | | | | Fixes <https://bugs.gnu.org/22459>. Reported by Jeff Mickey <j@codemac.net>. * guix/config.scm.in (%state-directory): Change NIX_STATE_DIR to GUIX_STATE_DIRECTORY. (%store-database-directory): Change NIX_DB_DIR to GUIX_DATABASE_DIRECTORY. * nix/libstore/globals.cc (Settings::processEnvironment): Likewise. * guix/self.scm (make-config.scm): Likewise. * build-aux/build-self.scm (make-config.scm): Likewise. * build-aux/test-env.in: Likewise. * tests/derivations.scm ("derivation #:leaked-env-vars"): Likewise. * tests/guix-build.sh (GUIX_DAEMON_SOCKET): Likewise. * tests/guix-daemon.sh (socket): Likewise.
* profiles: 'manual-database' hook reports progress.Ludovic Courtès2019-02-01
| | | | | * guix/profiles.scm (manual-database)[build](compute-entries): Write a progress report.
* guix package: '-A' no longer lists deprecated packages.Ludovic Courtès2019-02-01
| | | | | | | | | Fixes a regression introduced in 0ea939fb796fdd4f0d46d3534b2ec6135e0f3dc7. * guix/scripts/package.scm (process-query) <'list-available>: Change #:superseded? to #:deprecated? since that's what 'fold-available-packages' passes.
* pull: Default to verbosity level 1.Ludovic Courtès2019-01-29
| | | | * guix/scripts/pull.scm (%default-options): Change 'verbosity to 1.
* self: Produce progress reports compatible with (guix status).Ludovic Courtès2019-01-29
| | | | | | * guix/self.scm (compiled-modules)[build](report-load) (report-compilation): Write "[M/N]" progress reports. Use line-buffering.
* status: Print a progress bar for on-going builds when possible.Ludovic Courtès2019-01-29
| | | | | | | | * guix/status.scm (print-build-event)[report-build-progress]: New procedure. [print-log-line]: Add ID parameter. Call 'report-build-progress' when appropriate. Adjust callers.
* status: Keep track of build completion as reported by build tools.Ludovic Courtès2019-01-29
| | | | | | | | | * guix/status.scm (<build>)[completion]: New field. (build): Add #:completion parameter. (%percentage-line-rx, %fraction-line-rx): New variables. (update-build): New procedure. (compute-status): Add 'build-log' case. * tests/status.scm ("compute-status, build completion"): New test.
* status: Record more information about builds.Ludovic Courtès2019-01-29
| | | | | | | | | | | | | | | * guix/status.scm (<build>): New record type. (build, matching-build): New procedures. (compute-status): Adjust to manipulate <build> records instead of derivation file names in 'build-status-builds-completed' and 'build-status-building'. (build-event-output-port)[process-line]: Use 'string-split' to preserve spaces. * tests/status.scm ("compute-status, builds + substitutes") ("compute-status, missing events"): Adjust to expect <build> records. Produce complete "build-started" events. ("compute-status, multiplexed build output"): Likewise, and remove "bar.drv" from 'builds-completed'.
* channels: Do not offload package cache derivation.Ludovic Courtès2019-01-29
| | | | | * guix/channels.scm (package-cache-file): Pass #:local-build? to 'gexp->derivation-in-inferior'.
* pull: Don't trigger 'hash guix' hint needlessly.Ludovic Courtès2019-01-28
| | | | | | | | | Previously if ~/.config/guix/current/bin was in $PATH, we'd still suggest to run 'hash guix' because we'd compare (which "guix") against /var/guix/profiles/per-user/…. * guix/scripts/pull.scm (build-and-install): Check whether (which "guix") matches PROFILE or its user-friendly variant.
* channels: Turn off deprecation warnings when loading 'build-self.scm'.Ludovic Courtès2019-01-28
| | | | | * guix/channels.scm (build-from-source): Parameterize DEPRECATION-WARNING-PORT when loading SCRIPT.
* packages: 'package-input-rewriting' can take a promise.Ludovic Courtès2019-01-28
| | | | | | | * guix/packages.scm (package-input-rewriting): Allow REPLACEMENTS to be a promise. * gnu/packages/guile.scm (package-for-guile-2.0): Delay the first argument to 'package-input-rewriting'.
* weather: Add '--coverage'.Ludovic Courtès2019-01-25
| | | | | | | | | * guix/scripts/weather.scm (show-help, %options): Add '--coverage'. (package-partition-boundary, package->output-mapping) (substitute-oracle, report-package-coverage-per-system) (report-package-coverage): New procedures. (guix-weather): Honor '--coverage'. * doc/guix.texi (Invoking guix weather): Document it.
* refresh: Better account for private and generated packages.Ludovic Courtès2019-01-25
| | | | | | | | | | | | | | | | | | | Until now, private and generated packages (e.g., those created by 'texlive-union') we missing from the list passed to 'node-back-edges', which would lead to inaccurate dependent counts. Previously we'd get: $ guix refresh -l texlive-fonts-cm Building the following 80 packages would ensure 116 dependent packages are rebuilt: … Now we have: $ Building the following 240 packages would ensure 597 dependent packages are rebuilt: … * guix/scripts/refresh.scm (list-dependents): Call 'package-closure'.
* refresh: Fix format string that would lead '-l' to print incorrect numbers.Ludovic Courtès2019-01-25
| | | | | | | | | | | | | | | | The skip "~*" argument was misplaced, leading the number of dependents to be skipped (instead of the number of covering packages.) Thus, we'd get: $ guix refresh -l ocaml4.02-ppx-deriving@4.1 Building the following package would ensure 1 dependent packages are rebuilt: bap@1.3.0 instead of: Building the following package would ensure 26 dependent packages are rebuilt: bap@1.3.0 * guix/scripts/refresh.scm (list-dependents): Move "~*" in the right place, to skip (length covering) rather than (length dependents).
* weather: Ignore deprecated packages but not hidden packages.Ludovic Courtès2019-01-25
| | | | | * guix/scripts/weather.scm (all-packages): Pass #:select? to 'fold-packages'.
* packages: Add 'package-closure'.Ludovic Courtès2019-01-25
| | | | | * guix/packages.scm (package-closure): New procedure. * tests/packages.scm ("package-closure"): New test.
* records: Make 'report-duplicate-field-specifier' available at expansion-time.Ludovic Courtès2019-01-24
| | | | | | | | | | | | Fixes a regression in 'guix pack -R' introduced with commit c2dcff41c2e47f5f978f467864d5ed7829939884. The imported modules of 'c-compiler' would be compiled in this order: first (guix records), then (guix search-paths). Consequently, 'report-duplicate-field-specifier' would be reported as unbound while compiling (guix search-paths), leading to a build failure. * guix/records.scm (report-invalid-field-specifier) (report-duplicate-field-specifier): Move within 'eval-expand'.
* tests: Remove duplicate field initializers.Ludovic Courtès2019-01-24
| | | | | | | | | | | | | | | Fixes a regression introduced in c2dcff41c2e47f5f978f467864d5ed7829939884, whereby many tests in 'tests/packages.scm' would trigger a syntax error due to duplicate field intializers in forms like: (dummy-package "foo" (version "0")) * guix/tests.scm (dummy-package, dummy-origin): Rewrite to inherit from a base record. This restores the semantics from before c2dcff41c2e47f5f978f467864d5ed7829939884. * tests/services.scm ("instantiate-missing-services, indirect"): Remove duplicate 'extensions' field.
* licenses: Add lppl1.1+.Ricardo Wurmus2019-01-24
| | | | * guix/licenses.scm (lppl1.1+): New variable.
* ui: Don't report "build failed:" for daemon error messages.Ludovic Courtès2019-01-23
| | | | | | | | | | | | | | | | Until now we'd get things like: guix build: error: build failed: build of `/gnu/store/….drv' failed or: $ guix gc -d /sdf guix gc: error: build failed: path `/sdf' is not in the store which is kinda ridiculous. * guix/ui.scm (call-with-error-handling): Remove "build failed:" prefix for 'store-protocol-error?'.
* deduplication: Ignore EMLINK.Ludovic Courtès2019-01-23
| | | | | | | Until now 'guix offload' would fail (transient failure) upon EMLINK. * guix/store/deduplication.scm (replace-with-link) (deduplicate): Ignore EMLINK.
* self: System tests depend on CLI modules.Ludovic Courtès2019-01-22
| | | | | | | This is because (gnu tests docker) depends on (guix scripts pack). * guix/self.scm (compiled-guix)[*system-test-modules*]: Add dependency on *CLI-MODULES*.
* offload: 'status' reports the time difference.Ludovic Courtès2019-01-22
| | | | | * guix/scripts/offload.scm (check-machine-status): Report the time difference for each MACHINE.
* records: Detect duplicate field initializers.Ludovic Courtès2019-01-22
| | | | | | | | | * guix/records.scm (report-duplicate-field-specifier): New procedure. (make-syntactic-constructor): Call it. * tests/records.scm ("define-record-type* & duplicate initializers"): New test. Co-authored-by: Mark H Weaver <mhw@netris.org>
* compile: Let compiler warnings through during the load phase.Ludovic Courtès2019-01-22
| | | | | | | | | | | Previous warnings and errors such as those raised by (guix records) would not be displayed during the load phase. * guix/build/compile.scm (load-files): Remove 'parameterize' around 'resolve-interface' call. (compile-files)[build]: Move 'with-fluids' for *CURRENT-WARNING-PREFIX* to... <top level>: ... here.
* self: Remove leftover export.Ludovic Courtès2019-01-22
| | | | * guix/self.scm: Remove 'reload-guix' export.
* store: Rename '&nix-error' to '&store-error'.Ludovic Courtès2019-01-21
| | | | | | | | | | | | | | | | | | | * guix/store.scm (&nix-error): Rename to... (&store-error): ... this, and adjust users. (&nix-connection-error): Rename to... (&store-connection-error): ... this, and adjust users. (&nix-protocol-error): Rename to... (&store-protocol-error): ... this, adjust users. (&nix-error, &nix-connection-error, &nix-protocol-error): Define these condition types and their getters as deprecrated aliases. * build-aux/run-system-tests.scm, guix/derivations.scm, guix/grafts.scm, guix/scripts/challenge.scm, guix/scripts/graph.scm, guix/scripts/lint.scm, guix/scripts/offload.scm, guix/serialization.scm, guix/ssh.scm, guix/tests.scm, guix/ui.scm, tests/derivations.scm, tests/gexp.scm, tests/guix-daemon.sh, tests/packages.scm, tests/store.scm, doc/guix.texi: Adjust to use the new names.
* store: Rename <nix-server> to <store-connection>.Ludovic Courtès2019-01-21
| | | | | | | | | | * guix/store.scm (<nix-server>): Rename to... (<store-connection>): ... this. Adjust users accordingly. (nix-server?, nix-server-major-version) (nix-server-minor-version, nix-server-socket) (nix-server-version): Define as deprecated aliases. * guix/inferior.scm: Adjust accordingly. * guix/ssh.scm: Likewise.
* deprecation: Send warnings to (current-error-port) by default.Ludovic Courtès2019-01-21
| | | | | * guix/deprecation.scm (deprecation-warning-port): Default to (current-error-port).
* deprecation: Add 'define-deprecated/alias'.Ludovic Courtès2019-01-21
| | | | * guix/deprecation.scm (define-deprecated/alias): New macro.
* import: github: Improve readability.Arun Isaac2019-01-21
| | | | | * guix/import/github.scm (latest-released-version): Use any and cond instead of a recursive loop and an if-else ladder respectively.
* import: github: Use prereleases when package has no releases.Arun Isaac2019-01-21
| | | | | * guix/import/github.scm (latest-released-version): Use preleases when package has no releases.