summary refs log tree commit diff
path: root/gnu/build
AgeCommit message (Collapse)Author
2019-04-02linux-container: Make the guest UID and GID a parameter.Ludovic Courtès
* gnu/build/linux-container.scm (initialize-user-namespace): Add #:guest-uid and #:guest-gid parameters and honor them. (run-container): Likewise. (call-with-container): Likewise. * tests/containers.scm ("call-with-container, user namespace, guest UID/GID"): New test.
2019-03-24system: Initialize console keyboard layout in the initrd.Ludovic Courtès
Partially fixes <https://bugs.gnu.org/25453>. * gnu/system.scm (<operating-system>)[keyboard-layout]: New field. (operating-system-initrd-file): Pass #:keyboard-layout to MAKE-INITRD. * gnu/system/linux-initrd.scm (raw-initrd): Add #:keyboard-layout. Pass #:keymap-file to 'boot-system'. (base-initrd): Add #:keyboard-layout. [helper-packages]: Add LOADKEYS-STATIC when KEYBOARD-LAYOUT is true. Pass #:keyboard-layout to 'raw-initrd'. * gnu/build/linux-boot.scm (boot-system): Add #:keymap-file and honor it. * doc/guix.texi (operating-system Reference): Document the 'keyboard-layout' field. (Initial RAM Disk): Update 'raw-initrd' and 'base-initrd' documentation.
2019-03-16booloader: Add 'invoke/quiet'.Ludovic Courtès
* gnu/build/bootloader.scm (G_): New macro. (open-pipe-with-stderr, invoke/quiet): New procedures. * tests/build-utils.scm ("invoke/quiet, success") ("invoke/quiet, failure") ("invoke/quiet, failure, message on stderr"): New tests. * po/guix/POTFILES.in: Add bootloader.scm.
2019-03-13linux-modules: Factorize 'missing-modules'.Ludovic Courtès
* gnu/build/linux-modules.scm (missing-modules): New procedure. * gnu/system/mapped-devices.scm (check-device-initrd-modules): Use it.
2019-03-13Remove traces of "GuixSD".Ludovic Courtès
* gnu/bootloader/extlinux.scm (extlinux-configuration-file): Remove mentions of "GuixSD". * gnu/bootloader/grub.scm (install-grub-efi): Likewise. * gnu/build/vm.scm (make-iso9660-image): Change default #:volume-id to "Guix_image". (initialize-hard-disk): Search for the "Guix_image" label. * gnu/ci.scm (system-test-jobs, tarball-jobs): Remove "GuixSD". * gnu/installer/newt/welcome.scm (run-welcome-page): Likewise. * gnu/packages/audio.scm (supercollider)[description]: Likewise. * gnu/packages/curl.scm (curl): Likewise. * gnu/packages/emacs.scm (emacs): Likewise. * gnu/packages/gnome.scm (network-manager): Likewise. * gnu/packages/julia.scm (julia): Likewise. * gnu/packages/linux.scm (alsa-plugins): Likewise. (powertop, wireless-regdb): Likewise. * gnu/packages/package-management.scm (guix): Likewise. * gnu/packages/polkit.scm (polkit): Likewise. * gnu/packages/tex.scm (texlive-bin): Likewise. * gnu/services/base.scm (file-systems->fstab): Likewise. * gnu/services/cups.scm (%cups-activation): Likewise. * gnu/services/mail.scm (%dovecot-activation): Likewise. * gnu/services/messaging.scm (prosody-configuration)[log]: Likewise. * gnu/system/examples/vm-image.tmpl (vm-image-motd): Likewise. * gnu/system/install.scm (installation-os)[file-systems]: Change root file system label to "Guix_image". * gnu/system/mapped-devices.scm (check-device-initrd-modules): Remove "GuixSD". * gnu/system/vm.scm (system-docker-image): Likewise. (system-disk-image)[root-label]: Change to "Guix_image". * gnu/tests/install.scm (run-install): Remove "GuixSD". * guix/modules.scm (guix-module-name?): Likewise. * nix/libstore/optimise-store.cc: Likewise.
2019-03-08activation: Shared system home directories are now 555 and root-owned.Ludovic Courtès
Fixes <https://bugs.gnu.org/34788>. Reported by Jack Hill <jackhill@jackhill.us>. Regression introduced by the combination of 8bb76f3d44c1f5ffec8011819494db306a51d801 and 0ae735bcc8ff7fdc89d67b492bdee9091ee19e86: /var/empty would be 700 and owned by one of the system accounts (thus inaccessible to others), and /var/run/dbus would be 700 as well, thereby preventing D-Bus clients from connecting to the daemon. * gnu/build/activation.scm (duplicates): New procedure. (activate-users+groups)[system-accounts]: New variable. Use it. Make shared system account home directories #o555 and root-owned. * gnu/services/dbus.scm (dbus-activation): Make /var/run/dbus #o755. * gnu/tests/base.scm (run-basic-test): Test the ownership and permissions of /var/empty.
2019-03-07activation: Build account databases with (gnu build accounts).Ludovic Courtès
* gnu/build/activation.scm (enumerate, current-users, current-groups) (add-group, add-user, modify-user, ensure-user): Remove. (activate-users+groups)[touch, activate-user]: Remove. [make-home-directory]: New procedure. Rewrite in terms of 'user+group-databases', 'write-group', etc. * gnu/build/install.scm (directives): Remove "/root". * gnu/system/shadow.scm (account-activation): Remove (setenv "PATH" ...) expression, which is now unneeded.
2019-03-07Add (gnu build accounts).Ludovic Courtès
* gnu/build/accounts.scm, tests/accounts.scm: New files. * Makefile.am (SCM_TESTS): Add tests/accounts.scm. * gnu/local.mk (GNU_SYSTEM_MODULES): Add build/accounts.scm.
2019-03-07activation: Operate on <user-account> and <user-group> records.Ludovic Courtès
* gnu/system/accounts.scm (sexp->user-group, sexp->user-account): New procedures. * gnu/system/shadow.scm (account-activation): Call them in the arguments to 'activate-users+groups'. (account-shepherd-service): Likewise. * gnu/build/activation.scm (activate-users+groups): Expect a list of <user-account> and a list of <user-group>. Replace uses of 'match' on tuples with calls to record accessors. (activate-user-home): Likewise.
2019-03-05linux-modules: module-soft-dependencies: Partition the result and return it ↵Danny Milosavljevic
as two lists. * gnu/build/linux-modules.scm (module-soft-dependencies): Partition the result and return it as two lists.
2019-03-04activation: Make home directories #o700 by default.Ludovic Courtès
Until now they'd be #o755, except for /root, which is treated specially in (gnu build install). * gnu/build/activation.scm (activate-user-home): Chmod HOME to #o700. Remove redundant 'unless system?'.
2019-01-25linux-modules: module-soft-dependencies: Remove colon from section names.Danny Milosavljevic
Follow-up to 1a5f46621b44aa1458ad7acd4eca5fe1d4574f92. * gnu/build/linux-modules.scm (module-soft-dependencies): Remove colon from section names.
2019-01-25linux-modules: Add module-soft-dependencies.Danny Milosavljevic
* gnu/build/linux-modules.scm (not-softdep-whitespace): New variable. (module-soft-dependencies): New procedure.
2019-01-17file-systems: Add read-luks-partition-uuid.Mathieu Othacehe
Add a specific procedure to read luks partition uuid. * gnu/build/file-systems.scm (luks-partition-field-reader): New procedure ... (luks-partition-uuid-predicate): ... used here, (read-luks-partition-uuid): new exported procedure.
2019-01-17file-systems: Export read-partition-label and read-partition-uuid.Mathieu Othacehe
* gnu/build/file-systems.scm (read-partition-label): Export it, (read-partition-uuid): ditto.
2018-12-19vm: Re-enable KVM on i386.Ludovic Courtès
The workaround is apparently no longer needed with Linux-libre 4.19.2 in the host. * gnu/build/vm.scm (load-in-linux-vm): Remove special case for "qemu-system-i386", thereby re-enabling KVM.
2018-12-18file-systems: Have the emergency REPL output to /dev/console.Ludovic Courtès
This fixes a bug whereby all emergency REPL output would go to /dev/klog and thus, each line would be prefixed by "[12324.432] shepherd[1]: ". * gnu/build/file-systems.scm (check-file-system): Wrap 'start-repl' call in 'with-output-to-file'.
2018-12-18file-systems: Spawn a REPL only when interaction is possible.Ludovic Courtès
Fixes <https://bugs.gnu.org/23697>. Reported by Jan Nieuwenhuizen <janneke@gnu.org>. * gnu/build/file-systems.scm (check-file-system): Call 'start-repl' only if current-input-port passes 'isatty?'. * gnu/services/shepherd.scm (shepherd-configuration-file): After 'for-each' expression, call 'redirect-port'. * gnu/tests/base.scm (run-basic-test)["stdin is /dev/null"]: New test.
2018-12-06vm: Add padding in the ISO image.Ludovic Courtès
Fixes <https://bugs.gnu.org/33639>. Thanks to Ricardo Wurmus and Thomas Schmitt for their suggestions! * gnu/build/vm.scm (make-iso9660-image): Pass "-padding 10m" to xorriso.
2018-11-21linux-initrd: 'expression->initrd' returns the complete file name.Ludovic Courtès
Previously 'expression->initrd' would return the directory that contains the 'initrd' file; now it returns the complete file name for that file. * gnu/system/linux-initrd.scm (expression->initrd)[builder]: Change output file name to "initrd.cpio.gz". Tail-call 'file-append' to return the complete file name. * gnu/system.scm (operating-system-initrd-file): Remove 'file-append' call. * gnu/build/linux-initrd.scm (write-cpio-archive): Check whether OUTPUT already has the ".gz" suffix; rename if before invoking GZIP if it does, and otherwise after. * gnu/system/vm.scm (expression->derivation-in-linux-vm)[builder]: Do not append "/initrd" to #$initrd.
2018-11-18activation: Aways pass '-d HOME' to 'useradd'.Ludovic Courtès
Fixes <https://bugs.gnu.org/33422>. Reported by fps. * gnu/build/activation.scm (add-user): Always pass "-d HOME" when HOME is true. Pass "--create-home" only when HOME, CREATE-HOME?, and SYSTEM? are true. (activate-users+groups): Pass #:create-home? create-home? to 'ensure-user'. * gnu/tests/base.scm (run-basic-test)["accounts"]: Test 'passwd:dir' as well.
2018-11-07linux-initrd: Make sure 'build-initrd' can delete files.Ludovic Courtès
Fixes <https://bugs.gnu.org/33297>. Reported by Mark H Weaver <mhw@netris.org>. This fixes a regression introduced in 72dc64f8f720268930eed448abfc15d2a0eca3cf, which made files read-only. * gnu/build/linux-initrd.scm (build-initrd): Call 'make-file-writable' on all the files under contents/.
2018-11-06install: Add 'install-database-and-gc-roots'.Ludovic Courtès
* gnu/build/install.scm (%root-profile): New variable. (install-database-and-gc-roots): New procedure. (populate-single-profile-directory): Replace inline code with a call to 'install-database-and-gc-roots'.
2018-11-06pack: Import (guix store database) only when '--localstatedir' is passed.Ludovic Courtès
This is another way to address <https://bugs.gnu.org/32184>, which was previously addressed in commit 19c924af4f3726688ca155a905ebf1cb9acdfca2. * gnu/build/install.scm (register-closure): Move to... * gnu/build/vm.scm (register-closure): ... here. New procedure. * guix/scripts/pack.scm (self-contained-tarball)[build]: Remove now unneeded 'with-extensions' form and custom (guix config) module. * tests/guix-pack.sh: Revert the strategy from commit 19c924af4f3726688ca155a905ebf1cb9acdfca2. * tests/pack.scm ("self-contained-tarball"): Likewise.
2018-11-06pack: Move store database creation to a separate derivation.Ludovic Courtès
* guix/scripts/pack.scm (store-database): New procedure. (self-contained-tarball): Use it when LOCALSTATEDIR? is true. Remove 'schema' and add 'database'. [build]: Pass DATABASE to 'populate-single-profile-directory'. (squashfs-image): Remove #:deduplicate? parameter. [build]: Remove (gnu build install) and (guix config) from the imported modules. Remove 'with-extensions'. * gnu/build/install.scm (populate-single-profile-directory): Remove #:deduplicate?, #:register?, and #:schema; add #:database. Remove call to 'register-closure' and simply copy DATABASE instead.
2018-11-05install: Parameterize the profile name for 'populate-single-profile-directory'.Ludovic Courtès
* gnu/build/install.scm (populate-single-profile-directory): Add #:profile-name. Replace hard-coded occurrences of "guix-profile" with PROFILE-NAME. Make the symlink part under /root a function of PROFILE-NAME.
2018-10-21install: Make /var/guix/…/guix-profile a relative symlink.Ludovic Courtès
* gnu/build/install.scm (populate-single-profile-directory): Make /var/guix/profiles/per-user/root/guix-profile a relative symlink.
2018-08-29linux-modules: Raise an error when a kernel module cannot be found.Ludovic Courtès
Previously we'd get an unhelpful backtrace like this: In gnu/build/linux-modules.scm: 184:47 4 (recursive-module-dependencies _ #:lookup-module _) 98:14 3 (module-dependencies _) 85:18 2 (modinfo-section-contents _) In ice-9/ports.scm: 439:11 1 (call-with-input-file #f #<procedure get-bytevector-al?> ?) In unknown file: 0 (open-file #f "r" #:encoding #f #:guess-encoding #f) ERROR: In procedure open-file: Wrong type (expecting string): #f builder for `/gnu/store/…-linux-modules.drv' failed with exit code 1 * gnu/build/linux-modules.scm (find-module-file): When MODULE cannot be found, raise an error instead of returning #f. This is more useful to the user.
2018-08-28marionette: Add wait-for-unix-socket.Chris Marusich
* gnu/build/marionette.scm (wait-for-unix-socket): New variable.
2018-08-28marionette: Add support for QEMU's "quit" command.Chris Marusich
* gnu/build/marionette.scm (marionette-control): Don't wait for the monitor prompt when the command was "quit".
2018-08-21linux-modules: Adjust 'section-contents' procedure.Ludovic Courtès
* gnu/build/linux-modules.scm (section-contents): Honor SECTION as was intended. (modinfo-section-contents): Pass 'section-contents' a section, not a section name.
2018-07-29linux-initrd: Try several file names when looking up modules.Ludovic Courtès
Fixes <https://bugs.gnu.org/31714>. Reported by Tonton <tonton@riseup.net>. * gnu/build/linux-modules.scm (find-module-file): New procedure. * gnu/system/linux-initrd.scm (flat-linux-module-directory)[build-exp]: Remove 'lookup' procedure and use 'find-module-file' instead. * gnu/system/mapped-devices.scm (check-device-initrd-modules): Add comment.
2018-07-29linux-initrd: Improve check of initrd modules.Ludovic Courtès
Previously we would not strip the ".ko" suffix if present. * gnu/build/linux-modules.scm (file-name->module-name): Export. * gnu/system/mapped-devices.scm (check-device-initrd-modules): Use 'file-name->module-name' instead of 'normalize-module-name'.
2018-07-04vm: Disable KVM on i386.Ludovic Courtès
* gnu/build/vm.scm (load-in-linux-vm): Disable KVM on i386.
2018-06-26vm: 'make-iso9660-image' makes 'grub.cfg' a GC root.Ludovic Courtès
* gnu/build/vm.scm (make-iso9660-image): Add call to 'register-bootcfg-root'.
2018-06-26vm: 'make-iso9660-image' no longer includes unreferenced store items.Ludovic Courtès
Fixes <https://bugs.gnu.org/31757>. * gnu/build/vm.scm (make-iso9660-image): Invoke 'grub-mkrescue' in 'open-pipe*'. Use '-path-list -' instead of passing "gnu/store=…".
2018-06-26vm: Don't try to modify the bind-mounted store.Ludovic Courtès
Previously 'guix system disk-image --file-system-type=iso9660' would fail because 'register-closure' would try to reset timestamps/ownership on the bind-mounted store, which fails with EPERM. * gnu/build/vm.scm (make-iso9660-image): Pass #:reset-timestamps? to 'register-closure'.
2018-06-14linux-initrd: Module check correctly handles hyphen vs. underscore.Ludovic Courtès
Fixes <https://bugs.gnu.org/31714>. Reported by Vagrant Cascadian <vagrant@debian.org> and Florian Pelz <pelzflorian@pelzflorian.de>. * gnu/system/mapped-devices.scm (check-device-initrd-modules): Pass LINUX-MODULES through 'normalize-module-name'. * gnu/build/linux-modules.scm (normalize-module-name): Export.
2018-06-14Remove 'guix-register' and its traces.Ludovic Courtès
* Makefile.am (SH_TESTS): Remove tests/guix-register.sh. * build-aux/pre-inst-env.in (GUIX_REGISTER): Remove. * gnu/build/install.scm (directives): Remove outdated comment. * gnu/build/vm.scm (root-partition-initializer): Update comment. * gnu/packages/package-management.scm (guix-register): Remove. * guix/config.scm.in (%sbindir, %guix-register-program): Remove. * guix/scripts/system.scm (install): Adjust docstring. * guix/self.scm (make-config.scm): Remove #:guix. Do not generate %sbindir and %guix-register-program. (specification->package): Remove "guix". * nix/guix-register/guix-register.cc: Remove. * nix/libstore/store-api.cc (decodeValidPathInfo): Remove. * nix/libstore/store-api.hh (decodeValidPathInfo): Remove declaration. * nix/local.mk (sbin_PROGRAMS, guix_register_SOURCES) (guix_register_CPPFLAGS, guix_register_LDFLAGS): Remove. * tests/guix-register.sh: Remove.
2018-06-14database: Allow for deterministic database construction.Ludovic Courtès
Fixes <https://bugs.gnu.org/21073>. * guix/store/database.scm (sqlite-register): Add #:time. (%epoch): New variable. (register-items): Add #:registration-time. Pass #:time to 'sqlite-register'. * gnu/build/install.scm (register-closure): Pass #:registration-time.
2018-06-14install: Use 'reset-timestamps' from (guix store database).Ludovic Courtès
* gnu/build/install.scm (reset-timestamps): Remove. * gnu/build/vm.scm: Use 'reset-timestamps' from (guix store database).
2018-06-14database: Add 'register-items'.Ludovic Courtès
* guix/build/store-copy.scm (store-info): Export. * guix/store/database.scm (register-items): New procedure. (register-path): Implement in terms of 'register-items'. * gnu/build/install.scm (register-closure): Use 'register-items' instead of 'for-each' and 'register-path'.
2018-06-14install: Use (guix store database) instead of 'guix-register'.Ludovic Courtès
* gnu/build/install.scm (register-closure): Add #:reset-timestamps? and and #:schema; honor them. Rewrite in terms of 'register-path'. (populate-single-profile-directory): Add #:schema and honor it. Make /var/guix/profiles and /var/guix/gcroots. * gnu/build/vm.scm (root-partition-initializer): Pass #:reset-timestamps? to 'register-closure'. * gnu/system/vm.scm (not-config?): New procedure. (guile-sqlite3&co): New variable. (expression->derivation-in-linux-vm)[config]: New variable. [builder]: Use 'with-extensions'. (iso9660-image)[schema, config]: New variables. Wrap build expression in 'with-extensions'; add 'sql-schema' call. Remove GUIX from INPUTS. (qemu-image)[schema, config]: New variables. Wrap body in 'with-extensions'. (system-docker-image)[not-config?]: Remove. [config]: Use 'make-config.scm'. [schema]: New variable. [build]: Use 'with-extensions'. Add call to 'sql-schema'. Remove GUIX from INPUTS. * gnu/system/file-systems.scm (%store-prefix): Check whether '%store-prefix' is defined. * guix/scripts/pack.scm (self-contained-tarball)[not-config?] [libgcrypt, schema]: New variables. [build]: Wrap in 'with-extensions'. Adjust imported module list to use 'make-config.scm' for (guix config).
2018-06-01Merge branch 'master' into core-updatesLudovic Courtès
2018-06-01bootloader: grub: Use 'with-extensions'.Ludovic Courtès
* gnu/bootloader/grub.scm (svg->png): Use 'with-extensions'. Remove 'add-to-load-path' calls. * gnu/build/svg.scm: Use (rsvg) and (cairo) the normal way. Remove 'module-autoload!' calls.
2018-06-01marionette: Add 'wait-for-tcp-port'.Ludovic Courtès
* gnu/build/marionette.scm (wait-for-tcp-port): New procedure. * gnu/tests/dict.scm (run-dicod-test)["connect inside"]: Use it instead of the inline loop.
2018-05-31file-systems: Always wait for devices to show up.Ludovic Courtès
Previously, 'canonicalize-device-spec' would wait for devices when they were specified as a label or UUID, but would not wait when the user passed a "/dev" file name directly. This could cause problems when the /dev node takes a while to show up. * gnu/build/file-systems.scm (canonicalize-device-spec): Add 'resolve' call in the 'string?' case.
2018-05-28Merge branch 'master' into core-updatesMark H Weaver
2018-05-28system: Remove uses of the 'title' field of <file-system>.Ludovic Courtès
* gnu/system/install.scm (installation-os): Remove uses of the 'title' field of 'file-system'; use 'file-system-label' as appropriate. * gnu/system/vm.scm (system-disk-image, system-qemu-image): Likewise. * gnu/tests.scm (%simple-os): Likewise. * gnu/tests/install.scm (%minimal-os, %minimal-extlinux-os) (%minimal-os-on-vda, %separate-home-os, %separate-store-os) (%raid-root-os, %encrypted-root-os, %btrfs-root-os): Likewise. * gnu/build/shepherd.scm (default-mounts)[tmpfs]: Likewise. * tests/guix-system.sh: Likewise. * tests/system.scm (%root-fs): Likewise. ("operating-system-boot-mapped-devices, implicit dependency"): Likewise.
2018-05-28file-systems: Remove 'title' field and add <file-system-label>.Ludovic Courtès
The 'title' field was easily overlooked and was an endless source of confusion. Now, the value of the 'device' field is self-contained. * gnu/system/file-systems.scm (<file-system>): Change constructor name to '%file-system'. [title]: Remove. (<file-system-label>): New record type with printer. (report-deprecation, device-expression) (process-file-system-declaration, file-system): New macros. (file-system-title): New procedure. (file-system->spec, spec->file-system): Adjust to handle <file-system-label>. * gnu/system.scm (bootable-kernel-arguments): Add case for 'file-system-label?'. (read-boot-parameters): Likewise. (mapped-device-user): Avoid 'file-system-title'. (fs->boot-device): Remove. (operating-system-boot-parameters): Use 'file-system-device' instead of 'fs->boot-device'. (device->sexp): Add case for 'file-system-label?'. * gnu/bootloader/grub.scm (grub-root-search): Add case for 'file-system-label?'. * gnu/system/examples/bare-bones.tmpl, gnu/system/examples/beaglebone-black.tmpl, gnu/system/examples/lightweight-desktop.tmpl, gnu/system/examples/vm-image.tmpl: Remove uses of 'title'. * gnu/system/vm.scm (virtualized-operating-system): Remove uses of 'file-system-title'. * guix/scripts/system.scm (check-file-system-availability): Likewise, and adjust fix-it hint. (check-initrd-modules)[file-system-/dev]: Likewise. * gnu/build/file-systems.scm (canonicalize-device-spec): Remove 'title' parameter. [canonical-title]: Remove. Match on SPEC's type rather than on CANONICAL-TITLE. (mount-file-system): Adjust caller. * gnu/build/linux-boot.scm (boot-system): Interpret ROOT here. * gnu/services/base.scm (file-system->fstab-entry): Remove use of 'file-system-title'. * doc/guix.texi (File Systems): Remove documentation of the 'title' field. Rewrite documentation of 'device' and document 'file-system-label'.