summaryrefslogtreecommitdiff
path: root/guix
Commit message (Collapse)AuthorAge
* image: Add a new API.Mathieu Othacehe2020-05-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | Raw disk-images and ISO9660 images are created in a Qemu virtual machine. This is quite fragile, very slow, and almost unusable without KVM. For all these reasons, add support for host image generation. This implies the use new image generation mechanisms. - Raw disk images: images of partitions are created using tools such as mke2fs and mkdosfs depending on the partition file-system type. The partition images are then assembled into a final image using genimage. - ISO9660 images: the ISO root directory is populated within the store. GNU xorriso is then called on that directory, in the exact same way as this is done in (gnu build vm) module. Those mechanisms are built upon the new (gnu image) module. * gnu/image.scm: New file. * gnu/system/image.scm: New file. * gnu/build/image: New file. * gnu/local.mk: Add them. * gnu/system/vm.scm (system-disk-image): Rename to system-disk-image-in-vm. * gnu/ci.scm (qemu-jobs): Adapt to new API. * gnu/tests/install.scm (run-install): Ditto. * guix/scripts/system.scm (system-derivation-for-action): Ditto.
* build: store-copy: Export file-size procedure.Mathieu Othacehe2020-05-05
| | | | * guix/build/store-copy.scm (file-size): Export it.
* openpgp: Add missing type predicate for '&openpgp-invalid-signature-error'.Ludovic Courtès2020-05-04
| | | | | | | | Reported by brendyyn on #guix. The mistake led to a macro expansion error on Guile 2.2 but not on 3.0.2. * guix/openpgp.scm (&openpgp-invalid-signature-error): Add missing type predicate.
* openpgp: Raise error conditions instead of calling 'error'.Ludovic Courtès2020-05-04
| | | | | | | | | | | * guix/openpgp.scm (&openpgp-error, &openpgp-unrecognized-packet-error) (&openpgp-invalid-signature-error): New error conditions. (openpgp-hash-algorithm): Add 'signature-port' parameter. Raise an error condition instead of calling 'error'. (parse-subpackets): Likewise. (get-data): Raise instead of calling 'error'. (get-openpgp-detached-signature/ascii): Likewise. (get-signature): Likewise.
* openpgp: Add 'string->openpgp-packet'.Ludovic Courtès2020-05-04
| | | | | | | * guix/openpgp.scm (string->openpgp-packet): New procedure. * tests/openpgp.scm ("verify-openpgp-signature, missing key") ("verify-openpgp-signature, good signatures") ("verify-openpgp-signature, bad signature"): Use it.
* openpgp: 'lookup-key-by-{id,fingerprint}' return the key first.Ludovic Courtès2020-05-04
| | | | | | | | | | | | Previously, 'lookup-key-by-{id,fingerprint}' would always return the list of packets where the primary key is first. Thus, the caller would need to use 'find' to actually find the requested key. * guix/openpgp.scm (keyring-insert): Always add KEY to PACKETS. (lookup-key-by-id, lookup-key-by-fingerprint): Change to return the key as the first value. (verify-openpgp-signature): Remove now unneeded call to 'find'. * tests/openpgp.scm ("get-openpgp-keyring"): Adjust accordingly.
* openpgp: 'verify-openpgp-signature' looks up by fingerprint when possible.Ludovic Courtès2020-05-04
| | | | | | | | | * guix/openpgp.scm (verify-openpgp-signature): Use 'lookup-key-by-fingerprint' when SIG contains a fingerprint. Honor FINGERPRINT in the 'find' predicate. Upon missing-key, return FINGERPRINT if available. * tests/openpgp.scm ("verify-openpgp-signature, missing key"): Adjust expected value accordingly.
* openpgp: Add 'lookup-key-by-fingerprint'.Ludovic Courtès2020-05-04
| | | | | | | | | | | | * guix/openpgp.scm (<openpgp-keyring>)[table]: Rename to... [ids]: ... this. [fingerprints]: New field. (keyring-insert, lookup-key-by-fingerprint): New procedures. (%empty-keyring): Adjust. (get-openpgp-keyring): Manipulate KEYRING instead of its vhash, use 'keyring-insert'. * tests/openpgp.scm ("get-openpgp-keyring"): Test 'lookup-key-by-fingerprint'.
* openpgp: Store the issuer key id and fingerprint in <openpgp-signature>.Ludovic Courtès2020-05-04
| | | | | | | | | | * guix/openpgp.scm (<openpgp-signature>)[issuer, issuer-fingerprint]: New fields. (openpgp-signature-issuer, openpgp-signature-issuer-fingerprint): Remove. (verify-openpgp-signature): Use 'openpgp-signature-issuer-key-id'. (get-signature): Initialize 'issuer' and 'issuer-fingerprint'. * tests/openpgp.scm ("get-openpgp-detached-signature/ascii"): Adjust accordingly.
* openpgp: Decode the issuer-fingerprint signature subpacket.Ludovic Courtès2020-05-04
| | | | | | | | | | | | | | * guix/openpgp.scm (SUBPACKET-ISSUER-FINGERPRINT): New variable. (openpgp-signature-issuer-fingerprint): New procedure. (key-id-matches-fingerprint?): New procedure. (get-signature): Look for the 'issuer and 'issuer-fingerprint subpackets. Ensure the issuer key ID matches the fingerprint when both are available. (parse-subpackets): Handle SUBPACKET-ISSUER-FINGERPRINT. * tests/openpgp.scm (%rsa-key-fingerprint) (%dsa-key-fingerprint, %ed25519-key-fingerprint): New variables. * tests/openpgp.scm ("get-openpgp-detached-signature/ascii"): Check the result of 'openpgp-signature-issuer-fingerprint'.
* Add (guix openpgp).Ludovic Courtès2020-05-04
| | | | | | | | | * guix/openpgp.scm, tests/openpgp.scm, tests/civodul.key, tests/dsa.key, tests/ed25519.key, tests/rsa.key, tests/ed25519.sec: New files. * Makefile.am (MODULES): Add guix/openpgp.scm. (SCM_TESTS): Add tests/openpgp.scm. (EXTRA_DIST): Add tests/*.key and tests/ed25519.sec.
* profiles: Mark manual database as non-substitutable.Ludovic Courtès2020-05-01
| | | | | | | Fixes <https://bugs.gnu.org/40381>. Reported by pkill9 <pkill9@runbox.com>. * guix/profiles.scm (manual-database): Pass #:substitutable? #f.
* guix: edit: Make nano the default editor.Raghav Gururajan2020-04-27
| | | | | | | | | * guix/scripts/edit.scm: Make nano the default editor. Nano is sensible default, as it is installed by base system. For development, user can set custom value for $EDITOR. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* import: crate: Gracefully handle non-existent crates.Ludovic Courtès2020-04-27
| | | | | | | | Fixes <https://bugs.gnu.org/40891>. Reported by Hartmut Goebel <h.goebel@crazy-compilers.com>. * guix/import/crate.scm (crate->guix-package): Wrap value of 'version-number' and 'version*' in (and crate ...).
* channels: Use a declarative profile.Ludovic Courtès2020-04-26
| | | | | * guix/channels.scm (package-cache-file): Use 'profile' instead of 'profile-derivation'.
* pack: Use a declarative profile.Ludovic Courtès2020-04-26
| | | | | * guix/scripts/pack.scm (guix-pack): Use a declarative profile instead of 'profile-derivation'.
* profiles: Add lowerable <profile> record type.Ludovic Courtès2020-04-26
| | | | | * guix/profiles.scm (<profile>): New record type. * tests/profiles.scm ("<profile>"): New test.
* substitute: Close port at the end of http-multiple-get.Christopher Baines2020-04-26
| | | | * guix/scripts/substitute.scm (http-multiple-get): Add close-port call.
* substitute: Make http-multiple-get batch size configurable.Christopher Baines2020-04-26
| | | | * guix/scripts/substitute.scm (http-multiple-get): Add batch-size parameter.
* substitute: Use the same port for multiple request batches.Christopher Baines2020-04-26
| | | | | | | In http-multiple-get. * guix/scripts/substitute.scm (http-multiple-get): Switch port to p in one occurrence.
* guix package: Export 'search-path-environment-variables'.Marius Bakke2020-04-24
| | | | | | ...because Emacs-Guix uses it. * guix/scripts/package.scm (search-path-environment-variables): Export.
* Revert "licenses: Export license record."Mathieu Othacehe2020-04-24
| | | | | | This reverts commit f0779922ff260df2404c90504986aa59553154fb. We do not want to export the license record, see: https://lists.gnu.org/archive/html/guix-commits/2020-04/msg01923.html.
* compile: Pre-load the compiler outside 'with-target'.Ludovic Courtès2020-04-23
| | | | | | | | | | * guix/build/compile.scm (compile-files): Move call to 'compile' before 'with-target'. Failing to do that, if the target has a different word size than the host, the first call to 'compile-file' fails with: ice-9/eval.scm:293:34: In procedure load-thunk-from-memory: ELF file does not have native word size while attempting loading 'language/spec.go'.
* licenses: Export license record.zimoun2020-04-23
| | | | | | * guix/licenses.scm (<license>): Export it. Signed-off-by: Mathieu Othacehe <m.othacehe@gmail.com>
* git-version: Raise a condition instead of an error.Jakub Kądziołka2020-04-23
| | | | | | | * guix/git-download.scm (git-version): Replace ERROR with RAISE and CONDITION. This is a follow-up to commit bbf6bc1acc9bbdebf7ee7b68c0fa091733a5f6e1.
* git-version: Handle invalid arguments gracefullyJakub Kądziołka2020-04-23
| | | | * guix/git-download.scm (git-version): Add a check for commit ID length.
* profiles: Add #:name parameter to 'profile-derivation'.Ludovic Courtès2020-04-22
| | | | | * guix/profiles.scm (profile-derivation): Add #:name and pass it to 'gexp->derivation'.
* gexp: Add 'load-path?' field to <scheme-file>.Ludovic Courtès2020-04-22
| | | | | | | * guix/gexp.scm (<scheme-file>)[load-path?]: New field. (scheme-file): Add #:set-load-path? and honor it. (scheme-file-compiler): Pass #:set-load-path? to 'gexp->file'. * doc/guix.texi (G-Expressions): Document it.
* self: Build and install 'guix-cookbook.info' and its translations.Ludovic Courtès2020-04-21
| | | | | | * guix/self.scm (translate-texi-manuals)[build]: Translate and install guix-cookbook.texi. (info-manual)[build]: Handle "guix-cookbook*.texi".
* self: translate-texi-manuals: Add 'available-translations'.Ludovic Courtès2020-04-21
| | | | | | * guix/self.scm (translate-texi-manuals)[build](available-translations): New procedure. Use it rather than directly calling 'find-files' & co.
* self: translate-texi-manuals: Don't hardcode "guix.texi".Ludovic Courtès2020-04-21
| | | | | * guix/self.scm (translate-texi-manuals)[build](translate-texi): Add 'prefix' and #:extras parameters and honor them. Adjust callers.
* packages: Recommend against the use of 'package-file'.Ludovic Courtès2020-04-21
| | | | | | * guix/packages.scm (package-file): Recommend against its use in the docstring. * doc/guix.texi (The Store Monad): Likewise.
* syscalls: Fix Linux detection in 'readdir*'.Julien Lepiller2020-04-20
| | | | | * guix/build/syscalls.scm (readdir*): Fix Linux detection for `arm-unknown-linux-gnueabihf'.
* tests: Invoke 'git' with a custom '.gitconfig' and ignore the system config.Ludovic Courtès2020-04-19
| | | | | | | | | | Fixes <https://bugs.gnu.org/37679>. Reported by Gábor Boskovits <boskovits@gmail.com>. * guix/tests/git.scm (call-with-environment-variables): New procedure. (with-environment-variables): New macro. (populate-git-repository)[git]: Wrap (git-command) invocation in 'call-with-temporary-directory' and 'with-environment-variables'.
* status: Remove extra space before ellipsis.Ludovic Courtès2020-04-19
| | | | | | | Extra space was introduced in 8fa4ac5be4d5f8a1e62635842b16486832ff49f1. * guix/status.scm (print-build-event): Remove extra space before ellipsis.
* gnupg: Accept revoked keys.Tobias Geerinckx-Rice2020-04-17
| | | | | | | | | | | | | | I (nckx) have revoked all RSA subkeys, in favour of my older and freshly-refreshed ECDSA ones. This was merely a precaution: to my knowledge all my RSA private keys have been carefully destroyed and were never compromised. This commit keeps ‘make authenticate’ happy. * guix/gnupg.scm (revkeysig-rx): New variable for revoked keys. (gnupg-verify): Parse it. (gnupg-status-good-signature?): Accept it as ‘good’ for our purposes. * build-aux/git-authenticate.scm (%committers): Clarify nckx's subkeys. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* ui: Fix typos, 80-col & grammar in comments & docstrings.Vincent Legoll2020-04-17
| | | | | | | | | | | * guix/ui.scm (load*): Fix comment line length. (leave-on-EPIPE): Fix typo in docstring. (substitutable-info): Fix typo in comment. (indented-string): Fix typo in docstring. (%package-metrics): Fix typo in comment. (run-guix): Fix grammar in docstring. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* status: Allow double-click select of URLs.TomZ2020-04-17
| | | | | | | | Various places while downloading or compiling guix prints the source URL. This change makes the URL easier to use by placing a space between the URL and the trailing dots. Signed-off-by: Marius Bakke <mbakke@fastmail.com>
* import/print: Don't factorize URI if there's no version match.Ricardo Wurmus2020-04-16
| | | | | * guix/import/print.scm (package->code): If FACTORIZE-URI returns just the unmodified string use that as the URI.
* import/utils: alist->package: Include arguments.Ricardo Wurmus2020-04-16
| | | | | * guix/import/utils.scm (alist->package): Process arguments field in input data and include it in the generated package.
* import/json: json->code: Handle files with more than one definition.Ricardo Wurmus2020-04-16
| | | | | | * guix/import/json.scm (json->code): Convert JSON arrays to lists of package definitions. (json->scheme-file): Write all expressions to the target file.
* import/utils: alist->package: Ignore known inputs.Ricardo Wurmus2020-04-16
| | | | | | | * guix/import/utils.scm (alist->package): Accept optional list of known inputs, which are excluded from the specification lookup. * guix/import/print.scm (package->code)[package-lists->code]: Handle inputs which are just symbols.
* import/print: package->code: Wrap S-expression in definition.Ricardo Wurmus2020-04-16
| | | | | * guix/import/print.scm (package->code): Return a definition, not just a package expression.
* import/json: Use json->code.Ricardo Wurmus2020-04-16
| | | | | * guix/import/json.scm (json->code): Export procedure. * guix/scripts/import/json.scm (guix-import-json): Use json->code.
* scripts/package: Handle JSON files.Ricardo Wurmus2020-04-16
| | | | | * guix/scripts/package.scm (%options): Support loading from JSON files when "install-from-file" is used.
* scripts/build: options->things-to-build: Handle .json files.Ricardo Wurmus2020-04-16
| | | | | * guix/scripts/build.scm (options->things-to-build): Handle files that end on .json.
* import/json: Add json->scheme-file.Ricardo Wurmus2020-04-16
| | | | * guix/import/json.scm (json->code, json->scheme-file): New procedures.
* import/print: package->code: Wrap build system value in module reference.Ricardo Wurmus2020-04-16
| | | | | * guix/import/print.scm (package->code): Return build system value with corresponding module.
* import/print: Return license with prefix.Ricardo Wurmus2020-04-16
| | | | * guix/import/print.scm (license->code): Prepend license: prefix.
* syscalls: 'readdir*' chooses between the Linux and Hurd code at run time.Ludovic Courtès2020-04-16
| | | | | | | | | | | | | | | | | | | | Partly fixes <https://bugs.gnu.org/40574>. Reported by Jan Nieuwenhuizen <janneke@gnu.org>. Previously, we'd choose at expansion time whether to use the Hurd or the Linux variant, taking the cross-compilation target into account. This would lead to the wrong decision when (guix build syscalls) is evaluated while we're cross-compiling to GNU/Hurd. This is a followup to 1ab9e483391f8b62b873833ea71cb0074efa03e7. * guix/build/syscalls.scm (define-generic-identifier) (read-dirent-header, %struct-dirent-header, sizeof-dirent-header): Remove. (readdir*): Rename to... (readdir-procedure): ... this, and add parameters. (readdir*): Define as a call to 'readdir-procedure' as a function of %HOST-TYPE.