summaryrefslogtreecommitdiff
path: root/guix
Commit message (Collapse)AuthorAge
* services: guix-publish: Allow for multi-compression.Ludovic Courtès2019-06-03
| | | | | | | | | | | | | | | | This is a followup to b8fa86adfc01205f1d942af8cb57515eb3726c52. * guix/deprecation.scm (warn-about-deprecation): Make public. * gnu/services/base.scm (<guix-publish-configuration>)[compression]: New field. [compression-level]: Default to #f. Add '%' to getter name. (guix-publish-configuration-compression-level): Define as deprecated. (default-compression): New procedure. (guix-publish-shepherd-service)[config->compression-options]: New procedure. Use 'match-record' instead of 'match'. * doc/guix.texi (Base Services): Remove 'compression-level' and document 'compression'.
* guix: import: simplify recursive importRobert Vollmert2019-06-03
| | | | | | | | | | | This simplifies the logic of recursive-import, intending no major functional changes. The package import function is no longer called twice per package. Failed imports now make it to the package stream as '() instead of #f. * guix/import/utils.scm (recursive-import): Simplify. Signed-off-by: Oleg Pykhalov <go.wigust@gmail.com>
* import: hackage: Parse braced properties.Robert Vollmert2019-06-02
| | | | | | | | | | | | | | | | | | | | | | | This adds partial support for Cabal properties that use curly braces instead of the layout rule. See for example https://hackage.haskell.org/package/cassava/ * guix/import/cabal.scm (read-braced-value): New procedure. (is-property): Remove. (is-layout-property, is-braced-property): New variables. (lex-property): Rename to... (lex-layout-property): ... this. (lex-braced-property, lex-property): New procedures. (lex-token): Add call to 'lex-property'. * guix/tests/hackage.scm: Test braced description import. * tests/hackage.scm (test-cabal-multiline-desc): Rename to... (test-cabal-multiline-layout): ... this. ("hackage->guix-package test multiline desc"): Rename to... ("hackage->guix-package test multiline desc (layout)"): ... this. (test-cabal-multiline-braced): New variable. ("hackage->guix-package test multiline desc (braced)"): New test. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* substitute: Select the best compression methods.Ludovic Courtès2019-06-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a server publishes several URLs with different compression methods, 'guix substitute' can now choose the best one among the compression methods that it supports. * guix/scripts/substitute.scm (<narinfo>)[uri]: Replace with... [uris]: ... this. [compression]: Replace with... [compressions]: ... this. [file-size]: Replace with... [file-sizes]: ... this. [file-hash]: Replace with... [file-hashes]: ... this. (narinfo-maker): Adjust accordingly. Ensure 'file-sizes' and 'file-hashes' have the right length. (assert-valid-signature, valid-narinfo?): Use the first element of 'narinfo-uris' in error messages. (read-narinfo): Expect "URL", "Compression", "FileSize", and "FileHash" to occur multiple times. (display-narinfo-data): Call 'select-uri' to determine the file size. (%compression-methods): New variable. (supported-compression?, compresses-better?, select-uri): New procedures. (process-substitution): Call 'select-uri' to select the URI and compression. * guix/scripts/weather.scm (report-server-coverage): Account for all the values returned by 'narinfo-file-sizes'. * tests/substitute.scm ("substitute, narinfo with several URLs"): New test.
* publish: '--compression' can be repeated.Ludovic Courtès2019-06-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows 'guix publish' to compress and advertise multiple compression methods from which users can choose. * guix/scripts/publish.scm (actual-compression): Rename to... (actual-compressions): ... this. Expect REQUESTED to be a list, and always return a list. (%default-options): Remove 'compression. (store-item->recutils): New procedure. (narinfo-string): Change #:compression to #:compressions (plural). Adjust accordingly. (render-narinfo, render-narinfo/cached): Likewise. (bake-narinfo+nar): Change #:compression to #:compressions. [compressed-nar-size]: New procedure. Call 'compress-nar' for each item returned by 'actual-compressions'. Create a narinfo for each compression. (effective-compression): New procedure. (make-request-handler): Change #:compression to #:compressions. Use 'effective-compression' to determine the applicable compression. (guix-publish): Adjust handling of '--compression'. Print a message for each compression that is enabled. * tests/publish.scm ("/*.narinfo"): Adjust to new narinfo field ordering. ("/*.narinfo with properly encoded '+' sign"): Likewise. ("/*.narinfo with lzip + gzip"): New test. ("with cache, lzip + gzip"): New test. * doc/guix.texi (Invoking guix publish): Document it.
* build-system/guile: Display progress report as expected by (guix status).Ludovic Courtès2019-06-02
| | | | | * guix/build/guile-build-system.scm (report-build-progress): Use a format string suitable for (guix status).
* build-system/guile: Add #:not-compiled-file-regexp.Ludovic Courtès2019-06-02
| | | | | | | * guix/build/guile-build-system.scm (build): Add #:not-compiled-file-regexp and honor it. * guix/build-system/guile.scm (guile-build): Likewise. (guile-cross-build): Likewise.
* build-system/guile: Improve reporting of 'guild compile' failures.Ludovic Courtès2019-06-02
| | | | | | | * guix/build/guile-build-system.scm (invoke-each)[processes]: New variable. [wait-for-one-process]: Check PROCESSES and update it. [fork-and-run-command]: Update PROCESSES.
* compile: Adjust for Guile 3.Ludovic Courtès2019-06-02
| | | | | * guix/build/compile.scm (%default-optimizations): Adjust to the new names in Guile 2.9.2.
* progress: Provide the proper type for %PROGRESS-INTERVAL.Ludovic Courtès2019-06-02
| | | | | | The (srfi srfi-19) module of Guile 2.9.2 catches the wrong type. * guix/progress.scm (%progress-interval): Change type to TIME-DURATION.
* lzlib: 'make-lzip-input-port' better handles end of decompression.Ludovic Courtès2019-06-01
| | | | | | | | Suggested by Pierre Neidhardt <mail@ambrevar.xyz>. * guix/lzlib.scm (lzread!): Call 'lz-decompress-finish' when 'feed-decoder!' returns EOF. Call 'lz-decompress-finished?' to determine end of compression.
* import: hackage: Update list of ghc-included packages.Robert Vollmert2019-06-01
| | | | | | | | | | | | | | Update the list of excepted dependencies for current ghc-8.4, based on the release notes at https://downloads.haskell.org/~ghc/8.4.3/docs/html/users_guide/8.4.3-notes.html Particularly, this adds `text` to the list, which is a dependency of `parsec` which was already on the list before, causing build failures with updated versions of the `text` package. * guix/import/hackage.scm (ghc-standard-libraries): Update list. Signed-off-by: Ricardo Wurmus <rekado@elephly.net>
* publish: Factorize 'compress-nar'.Ludovic Courtès2019-05-29
| | | | | * guix/scripts/publish.scm (compress-nar): New procedure. (bake-narinfo+nar): Use it.
* publish: Remove outdated comment.Ludovic Courtès2019-05-29
| | | | * guix/scripts/publish.scm (make-request-handler): Remove outdated TODO.
* import: cran: Ignore invalid packages from the system requirements.Ricardo Wurmus2019-05-28
| | | | | * guix/import/cran.scm (description->package): Filter invalid packages from the list of system requirements.
* self: Fix unquoting.Ricardo Wurmus2019-05-28
| | | | | | This is a follow-up to commit dfc69e4b6d4bbc41a4d37b3cc6ea12adb34aaafa. * guix/self.scm (whole-package): Unquote %storedir in the daemon wrapper.
* publish: Display the compression method and level in use.Ludovic Courtès2019-05-27
| | | | | | * guix/scripts/publish.scm (guix-publish): Use 'info' instead of 'format' for the initial message. When COMPRESSION is true, display the method and level in use.
* lzlib: 'lzread!' never returns more than it was asked for.Ludovic Courtès2019-05-27
| | | | | | Fixes a bug whereby 'lzread!' could return more than COUNT. * guix/lzlib.scm (lzread!): Rewrite in a semi-functional style.
* self: Add dependency on lzlib.Ludovic Courtès2019-05-27
| | | | | | * guix/self.scm (compiled-guix): Pass #:lzlib to 'make-config.scm'. (make-config.scm): Add #:lzlib and honor it. (specification->package): Add "lzlib".
* publish: Add support for lzip.Ludovic Courtès2019-05-27
| | | | | | | | | | | | | | | * guix/scripts/publish.scm (show-help, %options): Support '-C METHOD' and '-C METHOD:LEVEL'. (default-compression): New procedure. (bake-narinfo+nar): Add lzip. (nar-response-port): Likewise. (string->compression-type): New procedure. (make-request-handler): Generalize /nar/gzip handler to handle /nar/lzip as well. * tests/publish.scm ("/nar/lzip/*"): New test. ("/*.narinfo with lzip compression"): New test. * doc/guix.texi (Invoking guix publish): Document it. (Requirements): Mention lzlib.
* utils: Support compression and decompression with lzip.Ludovic Courtès2019-05-27
| | | | | | | | * guix/utils.scm (lzip-port): New procedure. (decompressed-port, compressed-port, compressed-output-port): Add 'lzip case. * tests/utils.scm <top level>: Call 'test-compression/decompression' for 'lzip as well.
* lzlib: Add 'make-lzip-input-port/compressed'.Ludovic Courtès2019-05-27
| | | | | | | * guix/lzlib.scm (lzwrite!, make-lzip-input-port/compressed): New procedures. * tests/lzlib.scm ("make-lzip-input-port/compressed"): New test. * guix/tests.scm (%seed): Export.
* lzlib: Adjust 'lz-compress-read' docstring.Ludovic Courtès2019-05-27
| | | | | * guix/lzlib.scm (lz-compress-read): The integer return can be zero; adjust docstring accordingly.
* import: hackage: Fix Cabal test.Ludovic Courtès2019-05-26
| | | | | | | | | * guix/import/hackage.scm (hackage->guix-package): Remove call to 'memoize'. (hackage->guix-package/m): New procedure. (hackage-recursive-import): Use it. * tests/hackage.scm ("hackage->guix-package test 6"): Adjust. Co-authored-by: Robert Vollmert <rob@vllmrt.net>
* discovery: 'all-modules' returns modules in path order.Robert Vollmert2019-05-26
| | | | | | | | | | | | | A particular effect of this is that if there are ambiguous packages in a directory specified with `-L module_dir` and the distribution, the version from `module_dir` will be loaded, which is usually what would be expected. (E.g. for `guix build` or `guix package -i`.) * guix/discovery.scm (all-modules): Return modules in path order. * tests/guix-package.sh: Test local definitions take precedence. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* self: 'guix-daemon' honors %localstatedir, %sysconfdir, and %storedir.Ludovic Courtès2019-05-26
| | | | | | | | | | | Fixes <https://bugs.gnu.org/35874>. Reported by Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>. Previously, the 'guix-daemon' program provided by 'guix pull' would systematically use default directory locations for these. * guix/self.scm (whole-package)[wrap]: Set GUIX_STATE_DIRECTORY, GUIX_CONFIGURATION_DIRECTORY, and NIX_STORE_DIR.
* import: hackage: Recognize "BSD-3-Clause" and "PublicDomain".Robert Vollmert2019-05-26
| | | | | | * guix/import/hackage.scm (string->license): Add two licenses. Signed-off-by: Marius Bakke <mbakke@fastmail.com>
* store: Fix 'hash-part->path' docstring.Ludovic Courtès2019-05-26
| | | | * guix/store.scm (hash-part->path): Adjust docstring to match reality.
* publish: Maintain a hash-part-to-store-item mapping in cache.Ludovic Courtès2019-05-26
| | | | | | | | | | | Fixes <https://bugs.gnu.org/33897>. * guix/scripts/publish.scm (hash-part-mapping-cache-file) (hash-part->path*): New procedures. * guix/scripts/publish.scm (render-narinfo/cached)[delete-entry]: Delete the 'hash-part-mapping-cache-file'. Use 'hash-part->path*' instead of 'hash-part->path'. * tests/publish.scm ("with cache, vanishing item"): New test.
* import: cran: Ignore invalid packages.Ricardo Wurmus2019-05-23
| | | | | * guix/import/cran.scm (invalid-packages): New variable. (description->package): Use it.
* weather: Accept package specs on the command line.Ludovic Courtès2019-05-22
| | | | | | | | | Previously, non-option arguments would be ignored. Now it puts them to good use. * guix/scripts/weather.scm (guix-weather)[package-list]: New procedure. Use it. * doc/guix.texi (Invoking guix weather): Adjust accordingly.
* pack: Warn when building an empty pack.Ludovic Courtès2019-05-22
| | | | | * guix/scripts/pack.scm (guix-pack): Warn when MANIFEST has zero entries.
* pack: Add '--root'.Ludovic Courtès2019-05-22
| | | | | | | * guix/scripts/pack.scm (%options, show-help): Add "--root". (guix-pack): Honor it. * tests/guix-pack.sh: Test it. * doc/guix.texi (Invoking guix pack): Document it.
* self: Remove unused variables.Ludovic Courtès2019-05-20
| | | | * guix/self.scm (info-manual)[po4a, gettext]: Remove.
* guix system: Type-check the file or expression.Ludovic Courtès2019-05-16
| | | | | | | | | Previously, users would get a wrong-type-arg exception down the road with an intimidating backtrace. * guix/scripts/system.scm (process-action)[ensure-operating-system]: New procedure. Use it.
* docker: 'build-docker-image' accepts an optional #:entry-point.Ludovic Courtès2019-05-15
| | | | | * guix/docker.scm (config): Add #:entry-point and honor it. (build-docker-image): Likewise.
* import: github: Sort releases before picking the latest one.Arun Isaac2019-05-15
| | | | | * guix/import/github.scm (latest-released-version): Sort releases before picking the first one as the latest.
* import: github: Improve readability.Arun Isaac2019-05-15
| | | | | * guix/import/github.scm (latest-released-version)[release->version]: Separate out release->version as a new function.
* guix build: Gracefully handle invalid '--with-git-url' specs.Ludovic Courtès2019-05-14
| | | | | * guix/scripts/build.scm (transform-package-source-git-url): Add case for when 'string-split' does not return exactly two elements.
* vm: Auto-detect if inputs should be registered.Maxim Cournoyer2019-05-13
| | | | | | | | | | | | | | | | | | | | | The default value of the argument REGISTER-CLOSURE? of the ISO9660-IMAGE, QEMU-IMAGE and SYSTEM-DOCKER-IMAGE procedures can be computed automatically, since the operating-system definition is available in its context. When the operating-system definition does not contain the GUIX-SERVICE-TYPE, do not register the closure in the database of Guix, as it takes time and doesn't serve a purpose. * gnu/system/vm.scm (has-guix-service-type): Add predicate. (iso9660-image)[register-closures?]: Use it to compute the argument's default value. (qemu-image)[register-closures?]: Likewise, and update docstring. (system-docker-image)[register-closures?]: Likewise. (system-disk-image): Do not explicit a value for the REGISTER-CLOSURES? argument of the ISO9660-IMAGE and QEMU-IMAGE procedure calls, so that its default value is used instead. * guix/scripts/system.scm (system-derivation-for-action): Do not explicit a value for the REGISTER-CLOSURES? argument of the SYSTEM-DOCKER-IMAGE procedure call, so that its default value is used instead.
* linux-container: Support container network sharing.Arun Isaac2019-05-14
| | | | | | | | | | | | | | | | | | | * gnu/system/linux-container.scm (container-essential-services): If network is to be shared with the host, remove network configuration files from etc service. (containerized-operating-system): If network is to be shared with the host, remove nscd service and map host's /var/run/nscd if it exists. (container-script): If network is to be shared with the host, do not create network namespace. * guix/scripts/system.scm (system-derivation-for-action): Add #:container-shared-network? argument. (perform-action): Add #:container-shared-network? argument. (show-help): Add "-N, --network" help information. (%options): Add network option. (process-action): Call perform-action with #container-shared-network? argument. * doc/guix.texi (Invoking guix system): Document the "-N, --network" option. Co-authored-by: Christopher Baines <mail@cbaines.net>
* download: Support 'https_proxy'.宋文武2019-05-13
| | | | | * guix/build/download.scm (setup-http-tunnel): New procedure. (open-connection-for-uri): Honor the 'https_proxy' environment variable.
* gnu-maintenance: Update URL for package databases.Ludovic Courtès2019-05-12
| | | | | | The databases migrated away from the Womb a couple of days ago. * guix/gnu-maintenance.scm (%gnumaint-base-url): Update URL.
* build/cargo-utils: Remove "src-name" parameter.Ivan Petkov2019-05-10
| | | | | | | | | | | | * gnu/packages/gnuzilla.scm (icecat)[arguments]<#:phases> [patch-cargo-checksums]: Delete "null-file" variable. * gnu/packages/rust.scm (%cargo-reference-project-file): Delete variable. * gnu/packages/rust.scm (rust-1.19): Remove reference to "%cargo-reference-project-file". * guix/build/cargo-utils.scm (generate-checksums): Remove "src-name" parameter. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
* syscalls: Add 'arp-network-interface?'.Marius Bakke2019-05-09
| | | | | * guix/build/syscalls.scm (IFF_NOARP): New variable. (arp-network-interface?): New public procedure.
* pull: Display 'hash guix' hint when the new and old 'guix' are different.Ludovic Courtès2019-05-09
| | | | | | | | | | | | Fixes <https://bugs.gnu.org/35601>. Reported by Diego Nicola Barbato <dnbarbato@posteo.de>. Previously we were calling (which "guix") after the new profile had been built and symlinked, so in most cases the hint would not be triggered, even though it should have been triggered. * guix/scripts/pull.scm (build-and-install)[guix-command]: New variable. Compare PROFILE/bin/guix against GUIX-COMMAND.
* ui: Make package outputs searchable.Chris Marusich2019-05-09
| | | | | | | | | | | | * guix/ui.scm (relevance): Allow the "field" procedure of a metric to return a list, and handle that case appropriately. Update docstring. (%package-metrics): Add a metric for package outputs. * guix/scripts/package.scm (find-packages-by-description): Update docstring. * tests/guix-package.sh: Add a test case to verify that package outputs are included in search results. Co-authored-by: Tobias Geerinckx-Rice <me@tobias.gr>
* Add (guix bzr-download).Maxim Cournoyer2019-05-09
| | | | | | | * guix/bzr-download.scm, guix/build/bzr.scm, etc/snippets/scheme-mode/guix-bzr-reference: New files. * Makefile.am (MODULES): Add them. * etc/snippets/scheme-mode/guix-origin: Add "bzr-fetch" to the origin choices.
* guix: Simplify and robustify lzread!.Pierre Neidhardt2019-05-07
| | | | | | | | | * guix/lzlib.scm (lzread!): Do it. Previously lzread! would fail if COUNT was bigger than (lz-decompress-write-size). This is possible if a previous call to lzread! didn't empty the LZ_decompress input buffer (e.g. BV was too small to fit all the data).
* environment: Non ad-hoc mode also honors transformation options.Ludovic Courtès2019-05-07
| | | | | | | | | Fixes <https://bugs.gnu.org/35618>. Reported by Florent Pruvost <florent.pruvost@inria.fr>. * guix/scripts/environment.scm (options/resolve-packages): Add call to TRANSFORM in non "ad-hoc" case. * tests/guix-environment.sh: Add test.