summaryrefslogtreecommitdiff
path: root/gnu/build
Commit message (Collapse)AuthorAgeFilesLines
* linux-container: Mount a new /dev/pts instance in the container.Ludovic Courtès2019-07-061-1/+6
| | | | | | | | | Fixes <https://bugs.gnu.org/36463>. Reported by Steffen Rytter Postas <nc@scalehost.eu>. * gnu/build/linux-container.scm (mount-file-systems): When /dev/ptmx exists on the host, explicitly mount a new instance of devpts and make /dev/ptmx a symlink to /dev/pts/ptmx.
* accounts: Use 'fsync' instead of 'fdatasync'.Ludovic Courtès2019-06-271-13/+1
| | | | | * gnu/build/accounts.scm (catch-ENOSYS): Remove. (database-writer): Use 'fsync' instead of 'fdatasync'.
* linux-container: Remove dependency on (guix utils).Ludovic Courtès2019-06-231-1/+15
| | | | | | | | | | Fixes a bug whereby derivations importing (gnu build linux-container), such as the 'bitlbee' and 'tor' services, would depend on the user's (guix config) file, which was pulled as a dependency of (guix utils). As a result, those derivations would vary from user to user. * gnu/build/linux-container.scm (call-with-temporary-directory): New procedure.
* gnu: glibc-locales: Install symlinks using the normalized codeset.Ludovic Courtès2019-06-071-0/+9
| | | | | | | | | | Fixes <https://bugs.gnu.org/36076>. Reported by Jack Hill <jackhill@jackhill.us> and Giovanni Biscuolo <g@xelera.eu> * gnu/build/locale.scm (locale->name+codeset): New file. * gnu/packages/base.scm (make-glibc-locales): Add #:modules and #:imported-modules. Add a 'symlink-normalized-codesets' phase.
* Add (gnu build locale).Ludovic Courtès2019-06-071-0/+86
| | | | | | | | | | * gnu/build/locale.scm: New file. * gnu/local.mk (MODULES_NOT_COMPILED): Add it. * gnu/installer/locale.scm (normalize-codeset): Remove. * gnu/system/locale.scm (localedef-command): Remove. (single-locale-directory): Use (gnu build locale). (glibc-supported-locales)[build]: Likewise, and remove 'read-supported-locales'.
* accounts: Call 'fdatasync' when writing databases.Ludovic Courtès2019-06-051-0/+14
| | | | | * gnu/build/accounts.scm (catch-ENOSYS): New macro. (database-writer): Call 'fdatasync'.
* accounts: Close database before renaming it.Ludovic Courtès2019-06-051-1/+3
| | | | | | | | Fixes <https://bugs.gnu.org/35996>. Reported by Florian Pelz <pelzflorian@pelzflorian.de>. * gnu/build/accounts.scm (database-writer): Move 'close-port' call before 'rename-file'.
* activation: Lock /etc/.pwd.lock before accessing databases.Ludovic Courtès2019-06-052-16/+27
| | | | | | | | | Suggested by Florian Pelz <pelzflorian@pelzflorian.de> in <http://bugs.gnu.org/35996>. * gnu/build/accounts.scm (%password-lock-file): New variable. * gnu/build/activation.scm (activate-users+groups): Wrap calls to 'user+group-databases', 'write-group', etc. into 'with-file-lock'.
* linux-boot: Fix e2fsck warning.Danny Milosavljevic2019-06-031-0/+4
| | | | * gnu/build/linux-boot.scm (boot-system): Fix e2fsck warning.
* vm: Create installation media with MBR and HFS only, no GPT.Danny Milosavljevic2019-05-181-2/+16
| | | | | | | | | | | | | | | * gnu/build/vm.scm (make-iso9660-image): Accept XORRISO, GRUB-MKRESCUE-ENVIRONMENT. * gnu/system/vm.scm (iso9660-image): Pass XORRISO; accept GRUB-MKRESCUE-ENVIRONMENT. (system-disk-image): Pass GRUB-MKRESCUE-ENVIRONMENT. * gnu/packages/patches/xorriso-no-mbr-in-inner-efi.patch: New file. * gnu/packages/patches/xorriso-no-partition-table-in-inner-efi.patch: New file. * gnu/local.mk (dist_patch_DATA): Add them. * gnu/packages/cdrom.scm (xorriso)[source]: Add patches. [arguments]<#:phases>[install-frontends]: Add phase.
* marionette: Add braces to the keystrokes.Ludovic Courtès2019-05-151-1/+3
| | | | * gnu/build/marionette.scm (%qwerty-us-keystrokes): Add braces.
* shepherd: Include /etc/localtime in service containers.Ludovic Courtès2019-05-031-1/+9
| | | | | | | | Fixes a bug whereby Tor (for example) would emit syslog messages with a UTC timestamp instead of local time. * gnu/build/shepherd.scm (default-mounts): Add /etc/localtime to MAPPINGS.
* vm: Pass -smp to QEMU to allow use of multiple cores.Christopher Baines2019-04-291-0/+1
| | | | | * gnu/build/vm.scm (load-in-linux-vm): Pass (parallel-job-count) to QEMU with -smp to allow using multiple cores.
* file-systems: Support the 'no-atime' flag.rendaw2019-04-291-0/+2
| | | | | | | | | * guix/build/syscalls.scm (MS_NOATIME): New variable. * gnu/build/file-systems.scm (mount-flags->bit-mask): Support it. * doc/guix.texi (File Systems): Document it and add cross-references to the relevant documentation. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
* accounts: Always honor the configured user account shell.Ludovic Courtès2019-04-261-3/+6
| | | | | | | | | | | | Starting from commit 0ae735bcc8ff7fdc89d67b492bdee9091ee19e86, Guix System would preserve the user shell across reconfigure and reboot. This was done so as to allow for the use of 'chsh'. This proved to be a misguided decision. This commit goes back to considering user shells as config and not "state." * gnu/build/accounts.scm (allocate-passwd): Do not use shell from PREVIOUS.
* vm: Adjust FAT serial number code to 32-bit Guile.Ludovic Courtès2019-04-251-1/+5
| | | | | | | On 32-bit systems, 'string-hash' would raise an out-of-range exception when the second argument was 2^32. * gnu/build/vm.scm (make-iso9660-image): Pass 2^32 - 1 to 'string-hash'.
* vm: Use a fixed FAT serial number for 'efi.img' in ISO images.Ludovic Courtès2019-04-211-0/+10
| | | | | | | Partly fixes <https://bugs.gnu.org/35283>. * gnu/build/vm.scm (make-iso9660-image): Set the 'GRUB_FAT_SERIAL_NUMBER' environment variable.
* vm: Reset file timestamps of the EFI image in ISO images.Ludovic Courtès2019-04-211-0/+10
| | | | | | | Partly fixes <https://bugs.gnu.org/35283>. * gnu/build/vm.scm (make-iso9660-image): Set the 'SOURCE_DATE_EPOCH' environment variable.
* vm: Reset file timestamps in ISO images.Ludovic Courtès2019-04-211-0/+4
| | | | | | | | Partly fixes <https://bugs.gnu.org/35283>. Reported by Florian Pelz <pelzflorian@pelzflorian.de>. * gnu/build/vm.scm (make-iso9660-image): Pass "-volume_date all_file_dates =1".
* vm: Remove Xorriso "-padding" option.Ludovic Courtès2019-04-141-5/+0
| | | | | | | | This is a followup to 66ec389580d4f1e4b81e1c72afe2749a547a0e7c. This reverts 178be030c0e4fdeac5e1c968b5c99d84bb4691db, which is no longer needed. * gnu/build/vm.scm (make-iso9660-image): Remove "-padding" option.
* linux-container: Make the guest UID and GID a parameter.Ludovic Courtès2019-04-021-16/+32
| | | | | | | | | * 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.
* system: Initialize console keyboard layout in the initrd.Ludovic Courtès2019-03-241-2/+13
| | | | | | | | | | | | | | | | | 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.
* booloader: Add 'invoke/quiet'.Ludovic Courtès2019-03-161-1/+62
| | | | | | | | | * 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.
* linux-modules: Factorize 'missing-modules'.Ludovic Courtès2019-03-131-2/+25
| | | | | * gnu/build/linux-modules.scm (missing-modules): New procedure. * gnu/system/mapped-devices.scm (check-device-initrd-modules): Use it.
* Remove traces of "GuixSD".Ludovic Courtès2019-03-131-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* activation: Shared system home directories are now 555 and root-owned.Ludovic Courtès2019-03-081-5/+34
| | | | | | | | | | | | | | | | | | | | 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.
* activation: Build account databases with (gnu build accounts).Ludovic Courtès2019-03-072-190/+22
| | | | | | | | | | | * 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.
* Add (gnu build accounts).Ludovic Courtès2019-03-071-0/+561
| | | | | | * 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.
* activation: Operate on <user-account> and <user-group> records.Ludovic Courtès2019-03-071-59/+63
| | | | | | | | | | | | * 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.
* linux-modules: module-soft-dependencies: Partition the result and return it ↵Danny Milosavljevic2019-03-051-8/+21
| | | | | | | as two lists. * gnu/build/linux-modules.scm (module-soft-dependencies): Partition the result and return it as two lists.
* activation: Make home directories #o700 by default.Ludovic Courtès2019-03-041-3/+3
| | | | | | | | 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?'.
* linux-modules: module-soft-dependencies: Remove colon from section names.Danny Milosavljevic2019-01-251-1/+1
| | | | | | | Follow-up to 1a5f46621b44aa1458ad7acd4eca5fe1d4574f92. * gnu/build/linux-modules.scm (module-soft-dependencies): Remove colon from section names.
* linux-modules: Add module-soft-dependencies.Danny Milosavljevic2019-01-251-0/+28
| | | | | * gnu/build/linux-modules.scm (not-softdep-whitespace): New variable. (module-soft-dependencies): New procedure.
* file-systems: Add read-luks-partition-uuid.Mathieu Othacehe2019-01-171-3/+8
| | | | | | | | 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.
* file-systems: Export read-partition-label and read-partition-uuid.Mathieu Othacehe2019-01-171-0/+3
| | | | | * gnu/build/file-systems.scm (read-partition-label): Export it, (read-partition-uuid): ditto.
* vm: Re-enable KVM on i386.Ludovic Courtès2018-12-191-7/+1
| | | | | | | | 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.
* file-systems: Have the emergency REPL output to /dev/console.Ludovic Courtès2018-12-181-1/+7
| | | | | | | | 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'.
* file-systems: Spawn a REPL only when interaction is possible.Ludovic Courtès2018-12-181-3/+6
| | | | | | | | | | | 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.
* vm: Add padding in the ISO image.Ludovic Courtès2018-12-061-0/+5
| | | | | | | | 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.
* linux-initrd: 'expression->initrd' returns the complete file name.Ludovic Courtès2018-11-211-5/+17
| | | | | | | | | | | | | | | | 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.
* activation: Aways pass '-d HOME' to 'useradd'.Ludovic Courtès2018-11-181-8/+9
| | | | | | | | | | | | | 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.
* linux-initrd: Make sure 'build-initrd' can delete files.Ludovic Courtès2018-11-071-1/+7
| | | | | | | | | | | 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/.
* install: Add 'install-database-and-gc-roots'.Ludovic Courtès2018-11-061-16/+32
| | | | | | | * 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'.
* pack: Import (guix store database) only when '--localstatedir' is passed.Ludovic Courtès2018-11-062-19/+18
| | | | | | | | | | | | | 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.
* pack: Move store database creation to a separate derivation.Ludovic Courtès2018-11-061-10/+7
| | | | | | | | | | | | | * 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.
* install: Parameterize the profile name for 'populate-single-profile-directory'.Ludovic Courtès2018-11-051-7/+19
| | | | | | | * 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.
* install: Make /var/guix/…/guix-profile a relative symlink.Ludovic Courtès2018-10-211-1/+1
| | | | | * gnu/build/install.scm (populate-single-profile-directory): Make /var/guix/profiles/per-user/root/guix-profile a relative symlink.
* linux-modules: Raise an error when a kernel module cannot be found.Ludovic Courtès2018-08-291-2/+2
| | | | | | | | | | | | | | | | | | | | | 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.
* marionette: Add wait-for-unix-socket.Chris Marusich2018-08-281-0/+25
| | | | * gnu/build/marionette.scm (wait-for-unix-socket): New variable.
* marionette: Add support for QEMU's "quit" command.Chris Marusich2018-08-281-1/+2
| | | | | * gnu/build/marionette.scm (marionette-control): Don't wait for the monitor prompt when the command was "quit".