summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Collapse)Author
2017-09-16build-system: Add 'meson-build-system'.Peter Mikkelsen
* Makefile.am (MODULES): Add 'guix/build-system/meson.scm' and 'guix/build/meson-build-system.scm'. * guix/build-system/meson.scm: New file. * guix/build/meson-build-system.scm: New file. * doc/guix.texi (Build Systems): Add 'meson-build-system'. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-09-16guix system: Add 'search' command.Ludovic Courtès
* guix/scripts/system.scm (resolve-subcommand): New procedure. (process-command): Handle 'search'. (guix-system): Likewise. (show-help): Augment. * guix/scripts/system/search.scm: New file. * po/guix/POTFILES.in: Add it. * Makefile.am (MODULES): Add it. * guix/ui.scm (%text-width): Export. * doc/guix.texi (Invoking guix system): Document it. (Service Types and Services): Mention 'guix system search'. * tests/guix-system.sh: Test it.
2017-09-16ui: Generalize relevance computation.Ludovic Courtès
* guix/ui.scm (relevance, package-relevance): New procedures. (%package-metrics): New variable. * guix/scripts/package.scm (find-packages-by-description)[score] [package-score]: Remove. Use 'package-relevance' instead.
2017-09-14guix download: Honor mirrors when using '-o'.Ludovic Courtès
Previously "guix download -o x mirror://gnu/…" would fail. * guix/scripts/download.scm (download-to-file): Pass #:mirrors to 'url-fetch'.
2017-09-12import: cpan: Replace '(package-license perl) with 'perl-license.Christopher Baines
The perl-license definition is intended to avoid circular dependencies, so use this as a default when importing packages from CPAN. * guix/import/cpan.scm (string->license): Replace '(package-license perl) with 'perl-license.
2017-09-12store: 'run-with-store' has a #:target parameter.Ludovic Courtès
* guix/store.scm (run-with-store): Add #:target and honor it.
2017-09-12guix system: Pretty-print device UUIDs.Ludovic Courtès
* guix/scripts/system.scm (display-system-generation): Check if ROOT-DEVICE is a UUID and pretty-print it if it is.
2017-09-11download: Adjust main ftp.gnu.org mirror.Ludovic Courtès
* guix/download.scm (%mirrors): Add missing "/gnu" in first mirror, although that mirror would work even without it. Use https instead of http.
2017-09-11gnu-maintenance: Return all the latest tarballs, not just one.Ludovic Courtès
* guix/gnu-maintenance.scm (latest-gnu-release): Return a list of matching tarballs instead of just the first one. This gives us .tar.gz, .tar.xz, etc.
2017-09-11gnu-maintenance: Correctly compare versions.Ludovic Courtès
* guix/gnu-maintenance.scm (latest-gnu-release): Add calls to 'sans-extension'. This fixes version comparison, which could be fooled with the ".tar.gz" extension.
2017-09-11substitute: Download from unauthorized sources that provide the right content.Ludovic Courtès
This allows substitutes to be downloaded from unauthorized servers, as long as they advertise the same hash and references as one of the authorized servers. * guix/scripts/substitute.scm (assert-valid-narinfo): Remove. (valid-narinfo?): Add #:verbose?. Handle each case of 'signature-case'. (equivalent-narinfo?): New procedure. (lookup-narinfos/diverse): Add 'authorized?' parameter and honor it. [select-hit]: New procedure. (lookup-narinfo): Add 'authorized?' parameter and pass it. (process-query): Adjust callers accordingly. (process-substitution): Remove call to 'assert-valid-narinfo'. Check whether 'lookup-narinfo' returns true and call 'leave' if not. * tests/substitute.scm (%main-substitute-directory) (%alternate-substitute-directory): New variables. (call-with-narinfo): Make 'narinfo-directory' a parameter. Call 'mkdir-p' to create it. Change unwind handler to check whether CACHE-DIRECTORY exists before deleting it. (with-narinfo*): New macro. ("substitute, no signature") ("substitute, invalid hash") ("substitute, unauthorized key"): Change expected error message to "no valid substitute". ("substitute, unauthorized narinfo comes first") ("substitute, unsigned narinfo comes first") ("substitute, first narinfo is unsigned and has wrong hash") ("substitute, first narinfo is unsigned and has wrong refs") ("substitute, unsigned narinfo comes first") ("substitute, two invalid narinfos"): New tests. * doc/guix.texi (Substitutes): Explain the new behavior.
2017-09-11substitute: Make substitute URLs a SRFI-39 parameter.Ludovic Courtès
* guix/scripts/substitute.scm (%cache-urls): Rename to... (%default-substitute-urls): ... this. (substitute-urls): New variable. (guix-substitute): Use it instead of %CACHE-URLS. * tests/substitute.scm: Likewise.
2017-09-07size: Default to '--sort=self'.Ludovic Courtès
* guix/scripts/size.scm (%default-options): Change default value for 'profile<?. * doc/guix.texi (Invoking guix size): Adjust accordingly.
2017-09-05Handle the same HTTP redirects everywhere.Tobias Geerinckx-Rice
* guix/build/download.scm (http-fetch): Complete the hard-coded list of HTTP redirection status codes. * guix/http-client.scm (http-fetch): Likewise. * guix/scripts/lint.scm (probe-uri): Likewise.
2017-09-05guix: Fix Guile current-processor-count deprecation warnings.Mathieu Othacehe
When current-processor-count is used without (ice-9 threads) being used, Guile complains with the following warning: Import (ice-9 threads) to have access to `current-processor-count'. * guix/store.scm: Use (ice-9 threads).
2017-09-03gnu-maintenance: GNU updater no longer relies on FTP access.Ludovic Courtès
Partly fixes <https://bugs.gnu.org/28159>. Suggested by Hartmut Goebel <h.goebel@crazy-compilers.com>. * guix/gnu-maintenance.scm (%gnu-file-list-uri): New variable. (ftp.gnu.org-files, latest-gnu-release): New procedures. (%gnu-updater)[pred]: Change to GNU-HOSTED?. [latest]: Change to LATEST-GNU-RELEASE. (%gnu-ftp-updater): New variable.
2017-09-03memoization: (mlambda () ...) allows for inner 'define'.Ludovic Courtès
Previously (mlambda () (define foo 2) bar) would trigger a syntax error. * guix/memoization.scm (%mlambda): In the zero-argument case, move BODY... to a lambda to allow for inner 'define' and such.
2017-09-03build: Fix helpful output for emacs-build-system install phase.Christopher Baines
Detecting when no files were installed was broken when switching to use cond. Test with (not (null? ...)) to fix this. * guix/build/emacs-build-system.scm (install): Fix detecting when no files were installed.
2017-09-01build: emacs-build-system: Make the install phase more helpful.Christopher Baines
Modify the install phase to detect when nothing has been installed, and error if this happens. This is preferable to continuing, and allowing the next phase to fail. Also, when nothing can be found to be installed, print out each file that was considered, along with the regular expressions that were used to include and exclude it. * gnu/build/emacs-build-system.scm (install-file?): Add additional error checking and logging.
2017-09-01scripts: Remove 'max-silent-time' from the default options.Maxim Cournoyer
Fixes <http://bugs.gnu.org/27157>. Having a finite default `max-silent-time' value for scripts such as 'guix environment' could lead to timeouts when building subtitutes; this was undesirable. This change also fixes client behavior to match the documentation, which is that by default the daemon's settings are honored. * guix/scripts/archive.scm (%default-options): Remove max-silent-time entry. * guix/scripts/copy.scm (%default-options): Likewise. * guix/scripts/environment.scm (%default-options): Likewise. * guix/scripts/pack.scm (%default-options): Likewise. * guix/scripts/package.scm (%default-options): Likewise. * guix/scripts/pull.scm (%default-options): Likewise. * guix/scripts/system.scm (%default-options): Likewise. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-08-26Merge branch 'core-updates'Marius Bakke
2017-08-25download: Remove a SourceForge mirror that never returns 404.Mark H Weaver
* guix/download.scm (%mirrors)[sourceforge]: Remove nbtelecom.dl.sourceforge.net, which never returns 404 responses. This causes download failures due to hash mismatch, effectively preventing secondary source URLs from being queried.
2017-08-24graft: Correctly replace references near the end of the scan buffer.Ludovic Courtès
Fixes <http://bugs.gnu.org/28212>. Reported by Leo Famulari <leo@famulari.name>. * guix/build/graft.scm (replace-store-references): When I >= END, check whether WRITTEN > END and call 'get-bytevector-n!' when it is. * tests/grafts.scm (buffer-size): New variable. ("replace-store-references, <http://bugs.gnu.org/28212>"): New test.
2017-08-24Revert "graph: Provide access to the package record in the emit functions."Ludovic Courtès
This reverts commit 5d7e8543659874682b618bba799ba7cd6ffce554, which broke 'tests/graph.scm' and broke node types not related to <package> objects, such as '%reference-node-type'.
2017-08-24packages: Use Guile 2.0 for grafting.Ludovic Courtès
Works around <https://bugs.gnu.org/28211>. Reported by Marius Bakke <mbakke@fastmail.com>. * guix/packages.scm (guile-2.0): New procedure. (package-derivation, package-cross-derivation): Use it when computing the #:guile argument to 'graft-derivation'.
2017-08-23gnu: bootloader: Deprecate "device" field in favor of "target".Andy Wingo
* gnu/bootloader.scm (<bootloader-configuration>): Deprecate "device" field in favor of "target" field. This is mostly a renaming but also a generalization to support UEFI targets being paths to a mounted partition instead of a device name. * gnu/system/examples/bare-bones.tmpl: * gnu/system/examples/desktop.tmpl: * gnu/system/examples/lightweight-desktop.tmpl: * gnu/system/examples/vm-image.tmpl: * gnu/system/install.scm: * gnu/tests.scm: * gnu/tests/install.scm: * gnu/tests/nfs.scm: * tests/system.scm: Adapt all invocations of bootloader-configuration. * guix/scripts/system.scm (perform-action): Rename device argument to bootloader-target. (process-action): Adapt caller. * doc/guix.texi (Proceeding with the Installation): * doc/guix.texi (Bootloader Configuration): Update documentation.
2017-08-23gnu: scripts: Cleanup regarding "gnu system" bootloader devices.Andy Wingo
* guix/scripts/system.scm (install-bootloader, install): Remove unused "device" argument. (reinstall-bootloader, perform-action): Adapt callers.
2017-08-21Merge branch 'master' into core-updatesMarius Bakke
2017-08-20guix download: Support retrieving local file without the URI scheme.宋文武
* guix/scripts/download.scm (guix-download): Treat the URL argument as a local file path when it fails on 'string->uri'. Call 'fetch' with the processed 'uri' instead of the original URL argument. * tests/guix-download.sh: Adjust accordingly.
2017-08-19pack: Add "none" compressor.Ricardo Wurmus
* guix/scripts/pack.scm (%compressors): Add compressor "none"; prepend extension with ".". (self-contained-tarball, docker-image): Assume compressor extensions start with period. * doc/guix.texi (Invoking guix pack): Document it.
2017-08-09Merge branch 'master' into core-updatesMark H Weaver
2017-08-09download: Add the canonical GnuPG download site.Leo Famulari
* guix/download.scm (%mirrors)<gnupg>: Add https://gnupg.org.
2017-08-09profiles: Only check file contents if the file exists.Ricardo Wurmus
* guix/profiles.scm (fonts-dir-file): Check that files exist before using "empty-file?".
2017-08-06Merge branch 'master' into core-updatesMark H Weaver
2017-08-04build: Add minify build system.Ricardo Wurmus
* guix/build-system/minify.scm: New file. * guix/build/minify-build-system: New file. * Makefile.am (MODULES): Add new files. * doc/guix.texi (Build Systems): Document minify-build-system.
2017-08-02pull: Honor '--no-grafts'.Ludovic Courtès
* guix/scripts/pull.scm (guix-pull): Parameterize %GRAFT? as a function of OPTS.
2017-08-02pull: Use the commit ID as the version string.Ludovic Courtès
* guix/scripts/pull.scm (build-from-source): Add #:commit parameter. Pass it to BUILD. (build-and-install): Add #:commit and pass it to 'build-from-source'. (guix-pull): Pass #:commit to 'build-and-install'.
2017-08-02pull: Fetch source code from Git.Ludovic Courtès
* guix/scripts/pull.scm (%snapshot-url, with-environment-variable) (with-PATH): Remove. (ensure-guile-git!): New procedure. (%repository-url): New variable. (%default-options): Add 'repository-url' and 'ref'. (show-help, %options): Add '--commit' and '--url'. (temporary-directory, first-directory, interned-then-deleted) (unpack): Remove. (build-from-source): Rename 'tarball' to 'source'. Remove call to 'unpack'. (build-and-install): Rename 'tarball' to 'source'. (honor-lets-encrypt-certificates!, report-git-error): New procedures. (with-git-error-handling): New macro. (guix-pull)[fetch-tarball]: Remove. Wrap body in 'with-git-error-handling'. Rewrite to use 'latest-repository-commit'. * build-aux/build-self.scm (build): Print an error message and exit when GUILE-GIT is #f. * doc/guix.texi (Invoking guix pull): Mention Git. Document '--commit' and '--branch'.
2017-08-01Merge branch 'master' into core-updatesMarius Bakke
2017-08-01graph: Provide access to the package record in the emit functions.Roel Janssen
* guix/graph.scm (export-graph): Pass the node to the emit functions, instead of the node's label.
2017-08-01guix package: Allow `guix package -u' to fuction as before.Efraim Flashner
This is a follow up to 6ddf97f81bb99a73f00e30ad5fc19577872b5b49 * guix/scripts/package.scm (%options) <"-u">: Only check for a flag when there is an ARG after '-u'.
2017-08-01lint: formatting: Detect sexp boundaries.Ludovic Courtès
* guix/scripts/lint.scm (report-formatting-issues)[last-line]: Remove. [sexp-last-line]: New procedure. Use it.
2017-07-31guix package: Warn when invoked with '-u -something'.Ludovic Courtès
Fixes <https://bugs.gnu.org/27820>. Reported by Hartmut Goebel <h.goebel@crazy-compilers.com>. * guix/scripts/package.scm (%options) <"-u">: Emit a warning when ARG starts with "-".
2017-07-30git-download: Remove call to 'canonicalize-path'.Ludovic Courtès
* guix/git-download.scm (git-predicate): Remove call to 'canonicalize-path' since this could lead to discrepancies. For instance it broke 'make update-guix-package' since it passes a non-canonical directory name.
2017-07-28bootloader: Use <menu-entry> for the bootloader side.Danny Milosavljevic
* gnu/bootloader.scm (menu-entry-device-mount-point): New variable. Export it. (<menu-entry>: New field "device". * gnu/bootloader/grub.scm (grub-confgiuration-file): Handle <menu-entry> entries. * gnu/bootloader/extlinux.scm (extlinux-configuration-file): Handle <menu-entry> entries. * gnu/system.scm (menu->entry->boot-parameters): Delete variable. (boot-parameters->menu-entry): New variable. Export it. (operating-system-bootcfg): Make OLD-ENTRIES a list of <menu-entry>. * guix/script/system.scm (reinstall-bootloader): Fix bootcfg usage. (perform-action): Fix bootcfg usage.
2017-07-28utils: Factorize XDG directory handling.Ludovic Courtès
* guix/ui.scm (config-directory): Remove. * guix/utils.scm (xdg-directory, config-directory): New procedures. (cache-directory): Rewrite in terms of 'xdg-directory'. * guix/scripts/substitute.scm (%narinfo-cache-directory): Pass #:ensure? #f to 'cache-directory'.
2017-07-28Merge branch 'master' into core-updatesMarius Bakke
2017-07-27weather: Show "-m" option in help message.Ludovic Courtès
Reported by Alex Kost <alezost@gmail.com>. * guix/scripts/weather.scm (show-help): Show "-m".
2017-07-25git-download: Speed up 'git-predicate'.Christopher Baines
Adjust 'git-predicate' to use data structures that perform better when used with git repositories with a large number of files. Previously when matching either a regular file or directory, 'git-predicate' would search a list with a length equal to the number of files in the repository. As a search operation happens for roughly every file in the repository, this meant that the time taken to use 'git-predicate' to traverse all the files in a repository was roughly exponential with respect to the number of files in the repository. Now, for matching regular files or symlinks, 'git-predicate' uses a vhash using the inode value as the key. This should perform roughly in constant amount of time, instead of linear with respect to the number of files in the repository. For matching directories, 'git-predicate' now uses a tree structure stored in association lists. To check if a directory is in the tree, the tree is traversed from the root. The time complexity of this depends on the shape of the tree, but it should be an improvement on searching through the list of all files. * guix/git-download.scm (files->directory-tree, directory-in-tree?): New procedures. (git-predicate): Compute DIRECTORY-TREE. Turn INODES into a vhash. Adjust body of lambda accordingly. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2017-07-25offload: Fix potential file descriptor and memory leak.Ludovic Courtès
The '%slots' list could grow indefinitely; in practice though, guix-daemon is likely to restart 'guix offload' often enough. * guix/scripts/offload.scm (%slots): Remove. (choose-build-machine): Don't 'set!' %SLOTS. Return the acquired slot as a second value. (process-request): Adjust accordingly. Release the returned slot after 'transfer-and-offload'.