From 93c3de921ad5ce5eeb52b0f0f1643e6c4158574f Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Wed, 28 May 2014 16:04:08 +0200 Subject: gnu: hdf5: Fix source download location. * gnu/packages/maths.scm (hdf5): Use "release" directory and not the "current" directory for the source, which does not break on new upstream releases. --- gnu/packages/maths.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 8ef4f44f5a..d1860dfa97 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -253,7 +253,8 @@ plotting engine by third-party applications like Octave.") (source (origin (method url-fetch) - (uri (string-append "http://www.hdfgroup.org/ftp/HDF5/current/src/hdf5-" + (uri (string-append "http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-" + version "/src/hdf5-" version ".tar.bz2")) (sha256 (base32 "0f9n0v3p3lwc7564791a39c6cn1d3dbrn7d1j3ikqsi27a8hy23d")))) -- cgit v1.2.3 From 25f76ef0bae59fc7da6f1e0d4f62ec9e5f75ee94 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Tue, 27 May 2014 21:38:47 +0200 Subject: gnu: Add cssc. * gnu/packages/version-control.scm (cssc): New variable. * gnu/packages/patches/cssc-gets-undeclared.patch: New file * gnu/packages/patches/cssc-missing-include.patch: New file * gnu-system.am: Add gnu/packages/patches/cssc-gets-undeclared.patch and gnu/packages/patches/cssc-missing-include.patch --- gnu-system.am | 2 ++ gnu/packages/patches/cssc-gets-undeclared.patch | 17 +++++++++ gnu/packages/patches/cssc-missing-include.patch | 12 +++++++ gnu/packages/version-control.scm | 46 ++++++++++++++++++++++++- 4 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/cssc-gets-undeclared.patch create mode 100644 gnu/packages/patches/cssc-missing-include.patch (limited to 'gnu') diff --git a/gnu-system.am b/gnu-system.am index 6cd98c6aea..844b277d17 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -279,6 +279,8 @@ dist_patch_DATA = \ gnu/packages/patches/coreutils-dummy-man.patch \ gnu/packages/patches/coreutils-skip-nohup.patch \ gnu/packages/patches/cpio-gets-undeclared.patch \ + gnu/packages/patches/cssc-gets-undeclared.patch \ + gnu/packages/patches/cssc-missing-include.patch \ gnu/packages/patches/curl-fix-test172.patch \ gnu/packages/patches/dbus-localstatedir.patch \ gnu/packages/patches/diffutils-gets-undeclared.patch \ diff --git a/gnu/packages/patches/cssc-gets-undeclared.patch b/gnu/packages/patches/cssc-gets-undeclared.patch new file mode 100644 index 0000000000..68c607cf58 --- /dev/null +++ b/gnu/packages/patches/cssc-gets-undeclared.patch @@ -0,0 +1,17 @@ +CSSC uses a gets in a couple of places. For security reasons, modern gnulib +does not allow this. This patch allows it again. +--- CSSC-1.3.0/gl/lib/stdio.in.h 2010-05-15 00:15:35.000000000 +0200 ++++ CSSC-1.3.0/gl/lib/stdio.in.h 2014-02-03 21:27:10.000000000 +0100 +@@ -135,12 +135,6 @@ + "use gnulib module fflush for portable POSIX compliance"); + #endif + +-/* It is very rare that the developer ever has full control of stdin, +- so any use of gets warrants an unconditional warning. Assume it is +- always declared, since it is required by C89. */ +-#undef gets +-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); +- + #if @GNULIB_FOPEN@ + # if @REPLACE_FOPEN@ + # if !(defined __cplusplus && defined GNULIB_NAMESPACE) diff --git a/gnu/packages/patches/cssc-missing-include.patch b/gnu/packages/patches/cssc-missing-include.patch new file mode 100644 index 0000000000..3cef9c15f1 --- /dev/null +++ b/gnu/packages/patches/cssc-missing-include.patch @@ -0,0 +1,12 @@ +Added a missing include file (necessary for gid_t and others). +So far as I am aware, this has not been added upstream yet. +--- CSSC-1.3.0/src/file.h 2010-05-16 19:31:33.000000000 +0200 ++++ CSSC-1.3.0/src/file.h 2014-02-03 21:48:30.000000000 +0100 +@@ -30,6 +30,7 @@ + #ifndef CSSC__FILE_H__ + #define CSSC__FILE_H__ + ++#include + #include "filelock.h" + + enum create_mode { diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index ed7d6f61ad..3903b971ad 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -44,7 +44,8 @@ #:use-module (gnu packages emacs) #:use-module (gnu packages compression) #:use-module (gnu packages swig) - #:use-module (gnu packages tcl)) + #:use-module (gnu packages tcl) + #:use-module (gnu packages)) (define-public bazaar (package @@ -435,3 +436,46 @@ standards-compliant ChangeLog entries based on the changes that it detects.") insertions, deletions, and modifications per-file. It is useful for reviewing large, complex patch files.") (license (x11-style "file://COPYING")))) + + +(define-public cssc + (package + (name "cssc") + (version "1.3.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/" name "/CSSC-" + version ".tar.gz")) + (sha256 + (base32 + "0bkw6fjh20ppvn54smv05461lm1vcwvn02avx941c4acafmkl1cm")) + (patches (list (search-patch "cssc-gets-undeclared.patch") + (search-patch "cssc-missing-include.patch"))))) + (build-system gnu-build-system) + (arguments + `(#:phases (alist-cons-before + 'check 'precheck + (lambda _ + (begin + (substitute* "tests/common/test-common" + (("/bin/pwd") (which "pwd"))) + + (substitute* "tests/prt/all-512.sh" + (("/bin/sh") (which "sh"))) + + ;; XXX: This test has no hope of passing until there is a "nogroup" + ;; entry (or at least some group to which the guix builder does + ;; not belong) in the /etc/group file of the build environment. + ;; Currently we do not have such a group. Disable this test for now. + (substitute* "tests/Makefile" + (("test-delta ") "")))) + %standard-phases))) + ;; These are needed for the tests + (native-inputs `(("git" ,git) + ("cvs" ,cvs))) + (home-page "http://www.gnu.org/software/cssc/") + (synopsis "File-based version control like SCCS") + (description "GNU CSSC provides a replacement for the legacy Unix source +code control system SCCS. This allows old code still under that system to be +accessed and migrated on modern systems.") + (license gpl3+))) -- cgit v1.2.3 From a83b6a06b79d680f3799cc4b9653facac82a49cc Mon Sep 17 00:00:00 2001 From: John Darrington Date: Wed, 28 May 2014 08:44:18 +0200 Subject: gnu: Make gtk-glext depend on pangox-compat and remove workaround patch * gnu/packages/gnome.scm (gtk-glext): Add new dependency and remove patch * gnu/packages/patches/gtkglext-remove-pangox-dependency.patch: Delete file * gnu-system.am: Delete gnu/packages/patches/gtkglext-remove-pangox-dependency.patch --- gnu-system.am | 1 - gnu/packages/gnome.scm | 2 +- .../gtkglext-remove-pangox-dependency.patch | 132 --------------------- 3 files changed, 1 insertion(+), 134 deletions(-) delete mode 100644 gnu/packages/patches/gtkglext-remove-pangox-dependency.patch (limited to 'gnu') diff --git a/gnu-system.am b/gnu-system.am index 844b277d17..ee00a7ab3c 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -313,7 +313,6 @@ dist_patch_DATA = \ gnu/packages/patches/guile-relocatable.patch \ gnu/packages/patches/guix-test-networking.patch \ gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \ - gnu/packages/patches/gtkglext-remove-pangox-dependency.patch \ gnu/packages/patches/hop-bigloo-4.0b.patch \ gnu/packages/patches/inkscape-stray-comma.patch \ gnu/packages/patches/libevent-dns-tests.patch \ diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 232afc6e44..61ff6f891d 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -460,7 +460,6 @@ the API") (sha256 (base32 "1ya4d2j2aacr9ii5zj4ac95fjpdvlm2rg79mgnk7yvl1dcy3y1z5")) (patches (list - (search-patch "gtkglext-remove-pangox-dependency.patch") (search-patch "gtkglext-disable-disable-deprecated.patch"))))) (build-system gnu-build-system) (inputs `(("gtk+" ,gtk+-2) @@ -468,6 +467,7 @@ the API") ("libx11" ,libx11) ("libxt" ,libxt))) (native-inputs `(("pkg-config" ,pkg-config))) + (propagated-inputs `(("pangox-compat" ,pangox-compat))) (home-page "https://projects.gnome.org/gtkglext") (synopsis "OpenGL extension to GTK+.") (description "GtkGLExt is an OpenGL extension to GTK+. It provides diff --git a/gnu/packages/patches/gtkglext-remove-pangox-dependency.patch b/gnu/packages/patches/gtkglext-remove-pangox-dependency.patch deleted file mode 100644 index 4f03785322..0000000000 --- a/gnu/packages/patches/gtkglext-remove-pangox-dependency.patch +++ /dev/null @@ -1,132 +0,0 @@ -This patch removes the dependency on pangox which has been deprecated. It -achieves the same result as the upstream patch at -https://git.gnome.org/browse/gtkglext/commit/?id=df7a7b35b80b395d7ba411c7f727970a46fb0588 -Like the upstream patch, it removes the functions gdk_gl_font_use_pango_font, -and gdk_gl_font_use_pango_font_for_display from the API. - -diff -r -U 3 a/configure b/configure ---- a/configure 2006-02-05 04:17:47.000000000 +0100 -+++ b/configure 2013-12-26 12:55:21.000000000 +0100 -@@ -19880,14 +19880,12 @@ - gtk+-2.0 >= 2.0.0 \\ - gdk-2.0 >= 2.0.0 \\ - pango >= 1.0.0 \\ --pangox >= 1.0.0 \\ - gmodule-2.0 >= 2.0.0 \\ - \"") >&5 - ($PKG_CONFIG --exists --print-errors "\ - gtk+-2.0 >= 2.0.0 \ - gdk-2.0 >= 2.0.0 \ - pango >= 1.0.0 \ --pangox >= 1.0.0 \ - gmodule-2.0 >= 2.0.0 \ - ") 2>&5 - ac_status=$? -@@ -19897,7 +19895,6 @@ - gtk+-2.0 >= 2.0.0 \ - gdk-2.0 >= 2.0.0 \ - pango >= 1.0.0 \ --pangox >= 1.0.0 \ - gmodule-2.0 >= 2.0.0 \ - " 2>/dev/null` - else -@@ -19916,14 +19913,12 @@ - gtk+-2.0 >= 2.0.0 \\ - gdk-2.0 >= 2.0.0 \\ - pango >= 1.0.0 \\ --pangox >= 1.0.0 \\ - gmodule-2.0 >= 2.0.0 \\ - \"") >&5 - ($PKG_CONFIG --exists --print-errors "\ - gtk+-2.0 >= 2.0.0 \ - gdk-2.0 >= 2.0.0 \ - pango >= 1.0.0 \ --pangox >= 1.0.0 \ - gmodule-2.0 >= 2.0.0 \ - ") 2>&5 - ac_status=$? -@@ -19933,7 +19928,6 @@ - gtk+-2.0 >= 2.0.0 \ - gdk-2.0 >= 2.0.0 \ - pango >= 1.0.0 \ --pangox >= 1.0.0 \ - gmodule-2.0 >= 2.0.0 \ - " 2>/dev/null` - else -@@ -19958,7 +19952,6 @@ - gtk+-2.0 >= 2.0.0 \ - gdk-2.0 >= 2.0.0 \ - pango >= 1.0.0 \ --pangox >= 1.0.0 \ - gmodule-2.0 >= 2.0.0 \ - "` - else -@@ -19966,7 +19959,6 @@ - gtk+-2.0 >= 2.0.0 \ - gdk-2.0 >= 2.0.0 \ - pango >= 1.0.0 \ --pangox >= 1.0.0 \ - gmodule-2.0 >= 2.0.0 \ - "` - fi -@@ -19977,7 +19969,6 @@ - gtk+-2.0 >= 2.0.0 \ - gdk-2.0 >= 2.0.0 \ - pango >= 1.0.0 \ --pangox >= 1.0.0 \ - gmodule-2.0 >= 2.0.0 \ - ) were not met: - -@@ -19994,7 +19985,6 @@ - gtk+-2.0 >= 2.0.0 \ - gdk-2.0 >= 2.0.0 \ - pango >= 1.0.0 \ --pangox >= 1.0.0 \ - gmodule-2.0 >= 2.0.0 \ - ) were not met: - -@@ -25420,7 +25410,7 @@ - # CFLAGS and LIBS - ################################################## - --GDKGLEXT_PACKAGES="gdk-2.0 pango pangox gmodule-2.0" -+GDKGLEXT_PACKAGES="gdk-2.0 pango gmodule-2.0" - GDKGLEXT_EXTRA_CFLAGS="$GL_CFLAGS $GDKGLEXT_WIN_CFLAGS" - GDKGLEXT_EXTRA_LIBS="$GL_LIBS $GDKGLEXT_WIN_LIBS" - GDKGLEXT_DEP_CFLAGS="$GDKGLEXT_EXTRA_CFLAGS `$PKG_CONFIG --cflags $GDKGLEXT_PACKAGES`" -diff -r -U 3 a/gdk/x11/Makefile.in b/gdk/x11/Makefile.in ---- a/gdk/x11/Makefile.in 2006-02-05 04:17:42.000000000 +0100 -+++ b/gdk/x11/Makefile.in 2013-12-26 13:12:04.000000000 +0100 -@@ -257,7 +257,6 @@ - gdkgldrawable-x11.c \ - gdkglpixmap-x11.c \ - gdkglwindow-x11.c \ -- gdkglfont-x11.c \ - gdkglglxext.c - - -@@ -288,7 +287,7 @@ - am__objects_1 = - am__objects_2 = gdkglquery-x11.lo gdkglconfig-x11.lo gdkgloverlay-x11.lo \ - gdkglcontext-x11.lo gdkgldrawable-x11.lo gdkglpixmap-x11.lo \ -- gdkglwindow-x11.lo gdkglfont-x11.lo gdkglglxext.lo -+ gdkglwindow-x11.lo gdkglglxext.lo - am__objects_3 = $(am__objects_1) $(am__objects_2) - am_libgdkglext_x11_la_OBJECTS = $(am__objects_3) - libgdkglext_x11_la_OBJECTS = $(am_libgdkglext_x11_la_OBJECTS) -@@ -299,7 +298,6 @@ - @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gdkglconfig-x11.Plo \ - @AMDEP_TRUE@ ./$(DEPDIR)/gdkglcontext-x11.Plo \ - @AMDEP_TRUE@ ./$(DEPDIR)/gdkgldrawable-x11.Plo \ --@AMDEP_TRUE@ ./$(DEPDIR)/gdkglfont-x11.Plo \ - @AMDEP_TRUE@ ./$(DEPDIR)/gdkglglxext.Plo \ - @AMDEP_TRUE@ ./$(DEPDIR)/gdkgloverlay-x11.Plo \ - @AMDEP_TRUE@ ./$(DEPDIR)/gdkglpixmap-x11.Plo \ -@@ -349,7 +347,6 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdkglconfig-x11.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdkglcontext-x11.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdkgldrawable-x11.Plo@am__quote@ --@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdkglfont-x11.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdkglglxext.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdkgloverlay-x11.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdkglpixmap-x11.Plo@am__quote@ -- cgit v1.2.3 From db288efafb181f82184627eb53f1d1e244eba6c7 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 28 May 2014 12:31:06 +0200 Subject: gnu: Add sshfs-fuse. * gnu/packages/linux.scm (sshfs-fuse): New variable. --- gnu/packages/linux.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 130a0f2a9a..e4d9b67a45 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -34,6 +34,7 @@ #:use-module (gnu packages python) #:use-module (gnu packages algebra) #:use-module (gnu packages gettext) + #:use-module (gnu packages glib) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages attr) #:use-module (gnu packages xml) @@ -1033,6 +1034,32 @@ UnionFS-FUSE additionally supports copy-on-write.") #:configure-flags '("-DCMAKE_EXE_LINKER_FLAGS=-static"))) (inputs `(("fuse" ,fuse-static))))) +(define-public sshfs-fuse + (package + (name "sshfs-fuse") + (version "2.5") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/fuse/sshfs-fuse-" + version ".tar.gz")) + (sha256 + (base32 + "0gp6qr33l2p0964j0kds0dfmvyyf5lpgsn11daf0n5fhwm9185z9")))) + (build-system gnu-build-system) + (inputs + `(("fuse" ,fuse) + ("glib" ,glib))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://fuse.sourceforge.net/sshfs.html") + (synopsis "Mount remote file systems over SSH") + (description + "This is a file system client based on the SSH File Transfer Protocol. +Since most SSH servers already support this protocol it is very easy to set +up: on the server side there's nothing to do; on the client side mounting the +file system is as easy as logging into the server with an SSH client.") + (license gpl2+))) + (define-public numactl (package (name "numactl") -- cgit v1.2.3 From bd6639026bc04c9461545d199253ca64e1cb3467 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 28 May 2014 15:40:53 +0200 Subject: gnu: fuse: Allow use of 'fusermount' taken from $PATH. * gnu/packages/linux.scm (fuse) : Set FUSERMOUNT_DIR in lib/Makefile. --- gnu/packages/linux.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index e4d9b67a45..7b46190d79 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -962,7 +962,15 @@ processes currently causing I/O.") "/bin/" maybe-u "mount"))) (substitute* '("util/mount.fuse.c") (("/bin/sh") - (which "sh")))) + (which "sh"))) + + ;; This hack leads libfuse to search for 'fusermount' in + ;; $PATH, where it may find a setuid-root binary, instead of + ;; trying solely $out/sbin/fusermount and failing because + ;; it's not setuid. + (substitute* "lib/Makefile" + (("-DFUSERMOUNT_DIR=[[:graph:]]+") + "-DFUSERMOUNT_DIR=\\\"/var/empty\\\""))) %standard-phases))) (home-page "http://fuse.sourceforge.net/") (synopsis "Support file systems implemented in user space") -- cgit v1.2.3 From ff0bf0aca579555400faad3814c2a635dd00caf0 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Thu, 29 May 2014 17:08:52 +0200 Subject: gnu: libgnome: Correct source file name. * gnu/packages/gnome.scm (libgnome): Correct source file name. --- gnu/packages/gnome.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 61ff6f891d..b10f2a6646 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -837,7 +837,8 @@ allows applications to access local and remote files with a single consistent AP (source (origin (method url-fetch) (uri (string-append - "mirror://gnome/sources/" name "/" (string-take version 3) "/" name "-" + "mirror://gnome/sources/" name "/" + (string-take version 4) "/" name "-" version ".tar.bz2")) (sha256 -- cgit v1.2.3 From ef9fc40dda0f14366d0612bcb940f4fe7285e786 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 29 May 2014 23:07:43 +0200 Subject: vm: Allow a volume name to be specified for the root partition. * guix/build/vm.scm (format-partition): Add #:label parameter, and honor it. (initialize-hard-disk): Add #:file-system-label parameter, and pass it to 'format-partition'. * gnu/system/vm.scm (qemu-image): Add #:file-system-label parameter and pass it to 'initialize-hard-disk'. --- gnu/system/vm.scm | 13 ++++++++----- guix/build/vm.scm | 25 +++++++++++++++++-------- 2 files changed, 25 insertions(+), 13 deletions(-) (limited to 'gnu') diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index a15c4c358b..ddc13468cc 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -196,15 +196,17 @@ made available under the /xchg CIFS share." (disk-image-size (* 100 (expt 2 20))) (disk-image-format "qcow2") (file-system-type "ext4") + file-system-label grub-configuration (register-closures? #t) (inputs '()) copy-inputs?) "Return a bootable, stand-alone QEMU image of type DISK-IMAGE-FORMAT (e.g., -'qcow2' or 'raw'), with a root partition of type FILE-SYSTEM-TYPE. The -returned image is a full disk image, with a GRUB installation that uses -GRUB-CONFIGURATION as its configuration file (GRUB-CONFIGURATION must be the -name of a file in the VM.) +'qcow2' or 'raw'), with a root partition of type FILE-SYSTEM-TYPE. +Optionally, FILE-SYSTEM-LABEL can be specified as the volume name for the root +partition. The returned image is a full disk image, with a GRUB installation +that uses GRUB-CONFIGURATION as its configuration file (GRUB-CONFIGURATION +must be the name of a file in the VM.) INPUTS is a list of inputs (as for packages). When COPY-INPUTS? is true, copy all of INPUTS into the image being built. When REGISTER-CLOSURES? is true, @@ -243,7 +245,8 @@ the image." #:copy-closures? #$copy-inputs? #:register-closures? #$register-closures? #:disk-image-size #$disk-image-size - #:file-system-type #$file-system-type) + #:file-system-type #$file-system-type + #:file-system-label #$file-system-label) (reboot)))) #:system system #:make-disk-image? #t diff --git a/guix/build/vm.scm b/guix/build/vm.scm index e559542f0a..c1deb35664 100644 --- a/guix/build/vm.scm +++ b/guix/build/vm.scm @@ -158,10 +158,16 @@ REFERENCE-GRAPHS, a list of reference-graph files." (define MS_BIND 4096) ; again! -(define (format-partition partition type) - "Create a file system TYPE on PARTITION." +(define* (format-partition partition type + #:key label) + "Create a file system TYPE on PARTITION. If LABEL is true, use that as the +volume name." (format #t "creating ~a partition...\n" type) - (unless (zero? (system* (string-append "mkfs." type) "-F" partition)) + (unless (zero? (apply system* (string-append "mkfs." type) + "-F" partition + (if label + `("-L" ,label) + '()))) (error "failed to create partition"))) (define* (initialize-root-partition target-directory @@ -204,13 +210,15 @@ REFERENCE-GRAPHS, a list of reference-graph files." grub.cfg disk-image-size (file-system-type "ext4") + file-system-label (closures '()) copy-closures? (register-closures? #t)) - "Initialize DEVICE, a disk of DISK-IMAGE-SIZE bytes, with a -FILE-SYSTEM-TYPE partition, and with GRUB installed. If REGISTER-CLOSURES? is -true, register all of CLOSURES is the partition's store. If COPY-CLOSURES? is -true, copy all of CLOSURES to the partition." + "Initialize DEVICE, a disk of DISK-IMAGE-SIZE bytes, with a FILE-SYSTEM-TYPE +partition with (optionally) FILE-SYSTEM-LABEL as its volume name, and with +GRUB installed. If REGISTER-CLOSURES? is true, register all of CLOSURES is +the partition's store. If COPY-CLOSURES? is true, copy all of CLOSURES to the +partition." (define target-directory "/fs") @@ -220,7 +228,8 @@ true, copy all of CLOSURES to the partition." (initialize-partition-table device (- disk-image-size (* 5 (expt 2 20)))) - (format-partition partition file-system-type) + (format-partition partition file-system-type + #:label file-system-label) (display "mounting partition...\n") (mkdir target-directory) -- cgit v1.2.3 From 8a07c28960d36557ee64a0b15240869fcadfaa7d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 29 May 2014 23:13:11 +0200 Subject: system: Add 'fusermount' to the default setuid programs. * gnu/system.scm (%setuid-programs): Add 'fusermount'. --- gnu/system.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/system.scm b/gnu/system.scm index 06bec40cef..48946af7d9 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -26,6 +26,7 @@ #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages admin) + #:use-module (gnu packages linux) #:use-module (gnu packages package-management) #:use-module (gnu services) #:use-module (gnu services dmd) @@ -319,7 +320,8 @@ alias ll='ls -l' (list #~(string-append #$shadow "/bin/passwd") #~(string-append #$shadow "/bin/su") #~(string-append #$inetutils "/bin/ping") - #~(string-append #$sudo "/bin/sudo")))) + #~(string-append #$sudo "/bin/sudo") + #~(string-append #$fuse "/bin/fusermount")))) (define %sudoers-specification ;; Default /etc/sudoers contents: 'root' and all members of the 'wheel' -- cgit v1.2.3 From 2d762953ba25fd2515df65cf9ad8fb1fb5876d73 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Thu, 29 May 2014 16:35:12 -0500 Subject: gnu: Add hdup. * gnu/packages/backup.scm (hdup): New variable. --- gnu/packages/backup.scm | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index 574bb11816..1013737b4a 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -20,11 +20,18 @@ #:use-module (guix packages) #:use-module (guix licenses) #:use-module (guix download) + #:use-module (guix build-system gnu) #:use-module (guix build-system python) #:use-module (gnu packages) - #:use-module (gnu packages python) + #:use-module (gnu packages base) + #:use-module (gnu packages compression) + #:use-module (gnu packages glib) #:use-module (gnu packages gnupg) + #:use-module (gnu packages mcrypt) + #:use-module (gnu packages python) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages rsync) + #:use-module (gnu packages ssh) #:use-module (srfi srfi-1)) (define-public duplicity @@ -69,3 +76,37 @@ parts of files that have changed since the last backup. Because duplicity uses GnuPG to encrypt and/or sign these archives, they will be safe from spying and/or modification by the server.") (license gpl2+))) + +(define-public hdup + (package + (name "hdup") + (version "2.0.14") + (source + (origin + (method url-fetch) + ;; Source tarballs are not versioned + (uri "http://archive.miek.nl/projects/hdup2/hdup.tar.bz2") + (sha256 + (base32 + "02bnczg01cyhajmm4rhbnc0ja0dd9ikv9fwv28asxh1rlx9yr0b7")))) + (build-system gnu-build-system) + (native-inputs `(("pkg-config" ,pkg-config))) + (inputs + `(("glib" ,glib) + ("tar" ,tar) + ("lzop" ,lzop) + ("mcrypt" ,mcrypt) + ("openssh" ,openssh) + ("gnupg" ,gnupg-1))) + (arguments + `(#:configure-flags + `(,(string-append "--sbindir=" (assoc-ref %outputs "out") "/bin")) + #:tests? #f)) + (home-page "http://archive.miek.nl/projects/hdup/index.html") + (synopsis "Simple incremental backup tool") + (description + "Hdup2 is a backup utilty, its aim is to make backup really simple. The +backup scheduling is done by means of a cron job. It supports an +include/exclude mechanism, remote backups, encrypted backups and split +backups (called chunks) to allow easy burning to CD/DVD.") + (license gpl2))) -- cgit v1.2.3 From 28469ab0eca35dee5b7068074986c576ebc4fd81 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Thu, 29 May 2014 16:35:45 -0500 Subject: gnu: Add libarchive. * gnu/packages/compression.scm (libarchive): New variable. --- gnu/packages/compression.scm | 57 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index c8328076cf..31b04302e6 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2012, 2013 Ludovic Courtès ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2014 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,6 +25,8 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) + #:use-module (gnu packages nettle) + #:use-module (gnu packages xml) #:use-module (gnu packages which)) (define-public zlib @@ -315,3 +318,57 @@ archives that can be readily emailed. A shell archive is a file that can be processed by a Bourne-type shell to unpack the original collection of files. This package is mostly for compatibility and historical interest.") (license license:gpl3+))) + +(define-public libarchive + (package + (name "libarchive") + (version "3.1.2") + (source + (origin + (method url-fetch) + (uri (string-append "http://libarchive.org/downloads/libarchive-" + version ".tar.gz")) + (sha256 + (base32 + "0pixqnrcf35dnqgv0lp7qlcw7k13620qkhgxr288v7p4iz6ym1zb")))) + (build-system gnu-build-system) + (inputs + `(("zlib" ,zlib) + ("nettle" ,nettle) + ("lzo" ,lzo) + ("bzip2" ,bzip2) + ("libxml2" ,libxml2) + ("xz" ,xz))) + (arguments + `(#:phases + (alist-cons-before + 'build 'patch-pwd + (lambda _ + (substitute* "Makefile" + (("/bin/pwd") (which "pwd")))) + (alist-replace + 'check + (lambda _ + ;; XXX: The test_owner_parse, test_read_disk, and + ;; test_write_disk_lookup tests expect user 'root' to exist, but + ;; the chroot's /etc/passwd doesn't have it. Turn off those tests. + ;; + ;; The tests allow one to disable tests matching a globbing pattern. + (and (zero? (system* "make" + "libarchive_test" "bsdcpio_test" "bsdtar_test")) + ;; XXX: This glob disables too much. + (zero? (system* "./libarchive_test" "^test_*_disk*")) + (zero? (system* "./bsdcpio_test" "^test_owner_parse")) + (zero? (system* "./bsdtar_test")))) + %standard-phases)))) + (home-page "http://libarchive.org/") + (synopsis "Multi-format archive and compression library") + (description + "Libarchive provides a flexible interface for reading and writing +archives in various formats such as tar and cpio. Libarchive also supports +reading and writing archives compressed using various compression filters such +as gzip and bzip2. The library is inherently stream-oriented; readers +serially iterate through the archive, writers serially add things to the +archive. In particular, note that there is currently no built-in support for +random access nor for in-place modification.") + (license license:bsd-2))) -- cgit v1.2.3 From d42e61224e731c7c8f5d67d4d5f7468f67588632 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Thu, 29 May 2014 16:36:42 -0500 Subject: gnu: Add rdup. * gnu/packages/backup.scm (rdup): New variable. --- gnu/packages/backup.scm | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index 1013737b4a..747c3f026c 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -25,9 +25,12 @@ #:use-module (gnu packages) #:use-module (gnu packages base) #:use-module (gnu packages compression) + #:use-module (gnu packages dejagnu) #:use-module (gnu packages glib) #:use-module (gnu packages gnupg) #:use-module (gnu packages mcrypt) + #:use-module (gnu packages nettle) + #:use-module (gnu packages pcre) #:use-module (gnu packages python) #:use-module (gnu packages pkg-config) #:use-module (gnu packages rsync) @@ -110,3 +113,42 @@ backup scheduling is done by means of a cron job. It supports an include/exclude mechanism, remote backups, encrypted backups and split backups (called chunks) to allow easy burning to CD/DVD.") (license gpl2))) + +(define-public rdup + (package + (name "rdup") + (version "1.1.14") + (source + (origin + (method url-fetch) + (uri (string-append "http://archive.miek.nl/projects/rdup/rdup-" + version ".tar.bz2")) + (sha256 + (base32 + "0aklwd9v7ix0m4ayl762sil685f42cwljzx3jz5skrnjaq32npmj")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("dejagnu" ,dejagnu))) + (inputs + `(("glib" ,glib) + ("pcre" ,pcre) + ("libarchive" ,libarchive) + ("nettle" ,nettle))) + (arguments + `(#:parallel-build? #f ;race conditions + #:phases (alist-cons-before + 'build 'remove-Werror + ;; rdup uses a deprecated function from libarchive + (lambda _ + (substitute* "GNUmakefile" + (("^(CFLAGS=.*)-Werror" _ front) front))) + %standard-phases))) + (home-page "http://archive.miek.nl/projects/rdup/index.html") + (synopsis "Provide a list of files to backup") + (description + "Rdup is a utility inspired by rsync and the plan9 way of doing backups. +Rdup itself does not backup anything, it only print a list of absolute +filenames to standard output. Auxiliary scripts are needed that act on this +list and implement the backup strategy.") + (license gpl3+))) -- cgit v1.2.3 From 22c246211237934b38e9d4524b1daef0e144ddd1 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Thu, 29 May 2014 16:37:28 -0500 Subject: gnu: Add btar. * gnu/packages/backup.scm (btar): New variable. --- gnu/packages/backup.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index 747c3f026c..e5ff2373e1 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -152,3 +152,35 @@ Rdup itself does not backup anything, it only print a list of absolute filenames to standard output. Auxiliary scripts are needed that act on this list and implement the backup strategy.") (license gpl3+))) + +(define-public btar + (package + (name "btar") + (version "1.1.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://vicerveza.homeunix.net/~viric/soft/btar/" + "btar-" version ".tar.gz")) + (sha256 + (base32 + "0miklk4bqblpyzh1bni4x6lqn88fa8fjn15x1k1n8bxkx60nlymd")))) + (build-system gnu-build-system) + (inputs + `(("librsync" ,librsync))) + (arguments + `(#:make-flags `(,(string-append "PREFIX=" (assoc-ref %outputs "out")) + "CC=gcc") + #:tests? #f ;test input not distributed + #:phases + (alist-delete + 'configure ;no configure phase + %standard-phases))) + (home-page "http://viric.name/cgi-bin/btar/doc/trunk/doc/home.wiki") + (synopsis "Tar-compatible archiver") + (description + "Btar is a tar-compatible archiver which allows arbitrary compression and +ciphering, redundancy, differential backup, indexed extraction, multicore +compression, input and output serialisation, and tolerance to partial archive +errors.") + (license gpl3+))) -- cgit v1.2.3 From bd3fc08c4dc718bb76c1a45b875c97d67bfdc3fa Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 30 May 2014 14:29:42 -0500 Subject: gnu: Add rdiff-backup. * gnu/packages/backup.scm (rdiff-backup): New variable. --- gnu/packages/backup.scm | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index e5ff2373e1..4cbeec5b3b 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -184,3 +184,40 @@ ciphering, redundancy, differential backup, indexed extraction, multicore compression, input and output serialisation, and tolerance to partial archive errors.") (license gpl3+))) + +(define-public rdiff-backup + (package + (name "rdiff-backup") + (version "1.2.8") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://savannah/rdiff-backup/rdiff-backup-" + version ".tar.gz")) + (sha256 + (base32 + "1nwmmh816f96h0ff1jxk95ad38ilbhbdl5dgibx1d4cl81dsi48d")))) + (build-system python-build-system) + (native-inputs + `(("python2-setuptools" ,python2-setuptools))) + (inputs + `(("python" ,python-2) + ("librsync" ,librsync))) + (arguments + `(#:python ,python-2 + #:tests? #f)) + (home-page "http://www.nongnu.org/rdiff-backup/") + (synopsis "Local/remote mirroring+incremental backup") + (description + "Rdiff-backup backs up one directory to another, possibly over a network. +The target directory ends up a copy of the source directory, but extra reverse +diffs are stored in a special subdirectory of that target directory, so you +can still recover files lost some time ago. The idea is to combine the best +features of a mirror and an incremental backup. Rdiff-backup also preserves +subdirectories, hard links, dev files, permissions, uid/gid ownership, +modification times, extended attributes, acls, and resource forks. Also, +rdiff-backup can operate in a bandwidth efficient manner over a pipe, like +rsync. Thus you can use rdiff-backup and ssh to securely back a hard drive up +to a remote location, and only the differences will be transmitted. Finally, +rdiff-backup is easy to use and settings have sensical defaults.") + (license gpl2+))) -- cgit v1.2.3 From 10ace2c49eb68b55f8ef0d79d8a408798d99c207 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 30 May 2014 23:45:42 +0200 Subject: vm: disk-image: Specify the root file system using a label. * gnu/system/vm.scm (system-disk-image)[root-label]: New variable. Use it for the root file system, and pass it as #:file-system-label to 'qemu-image'. --- gnu/system/vm.scm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index ddc13468cc..184f2512f1 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -268,6 +268,12 @@ the image." system described by OS. Said image can be copied on a USB stick as is. When VOLATILE? is true, the root file system is made volatile; this is useful to USB sticks meant to be read-only." + (define root-label + ;; Volume name of the root file system. Since we don't know which device + ;; will hold it, we use the volume name to find it (using the UUID would + ;; be even better, but somewhat less convenient.) + "gnu-disk-image") + (define file-systems-to-keep (remove (lambda (fs) (string=? (file-system-mount-point fs) "/")) @@ -283,7 +289,7 @@ to USB sticks meant to be read-only." ;; Force our own root file system. (file-systems (cons (file-system (mount-point "/") - (device "/dev/sda1") + (device root-label) (type file-system-type)) file-systems-to-keep))))) @@ -293,6 +299,7 @@ to USB sticks meant to be read-only." #:disk-image-size disk-image-size #:disk-image-format "raw" #:file-system-type file-system-type + #:file-system-label root-label #:copy-inputs? #t #:register-closures? #t #:inputs `(("system" ,os-drv) -- cgit v1.2.3 From b0e3635e0a4fbc605ecbcf2afc76f3111a1afe42 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 31 May 2014 15:25:49 +0200 Subject: gnu: Move libarchive to (gnu packages backup). * gnu/packages/compression.scm (libarchive): Move to... * gnu/packages/backup.scm (libarchive): ... here. Import (guix licenses) with #:renamer to avoid conflicting 'zlib' bindings. --- gnu/packages/backup.scm | 68 ++++++++++++++++++++++++++++++++++++++++---- gnu/packages/compression.scm | 56 ------------------------------------ 2 files changed, 62 insertions(+), 62 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index 4cbeec5b3b..069baa88da 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -18,7 +18,8 @@ (define-module (gnu packages backup) #:use-module (guix packages) - #:use-module (guix licenses) + #:use-module ((guix licenses) + #:renamer (symbol-prefix-proc 'license:)) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix build-system python) @@ -35,6 +36,7 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages rsync) #:use-module (gnu packages ssh) + #:use-module (gnu packages xml) #:use-module (srfi srfi-1)) (define-public duplicity @@ -78,7 +80,7 @@ librsync, the incremental archives are space efficient and only record the parts of files that have changed since the last backup. Because duplicity uses GnuPG to encrypt and/or sign these archives, they will be safe from spying and/or modification by the server.") - (license gpl2+))) + (license license:gpl2+))) (define-public hdup (package @@ -112,7 +114,61 @@ spying and/or modification by the server.") backup scheduling is done by means of a cron job. It supports an include/exclude mechanism, remote backups, encrypted backups and split backups (called chunks) to allow easy burning to CD/DVD.") - (license gpl2))) + (license license:gpl2))) + +(define-public libarchive + (package + (name "libarchive") + (version "3.1.2") + (source + (origin + (method url-fetch) + (uri (string-append "http://libarchive.org/downloads/libarchive-" + version ".tar.gz")) + (sha256 + (base32 + "0pixqnrcf35dnqgv0lp7qlcw7k13620qkhgxr288v7p4iz6ym1zb")))) + (build-system gnu-build-system) + (inputs + `(("zlib" ,zlib) + ("nettle" ,nettle) + ("lzo" ,lzo) + ("bzip2" ,bzip2) + ("libxml2" ,libxml2) + ("xz" ,xz))) + (arguments + `(#:phases + (alist-cons-before + 'build 'patch-pwd + (lambda _ + (substitute* "Makefile" + (("/bin/pwd") (which "pwd")))) + (alist-replace + 'check + (lambda _ + ;; XXX: The test_owner_parse, test_read_disk, and + ;; test_write_disk_lookup tests expect user 'root' to exist, but + ;; the chroot's /etc/passwd doesn't have it. Turn off those tests. + ;; + ;; The tests allow one to disable tests matching a globbing pattern. + (and (zero? (system* "make" + "libarchive_test" "bsdcpio_test" "bsdtar_test")) + ;; XXX: This glob disables too much. + (zero? (system* "./libarchive_test" "^test_*_disk*")) + (zero? (system* "./bsdcpio_test" "^test_owner_parse")) + (zero? (system* "./bsdtar_test")))) + %standard-phases)))) + (home-page "http://libarchive.org/") + (synopsis "Multi-format archive and compression library") + (description + "Libarchive provides a flexible interface for reading and writing +archives in various formats such as tar and cpio. Libarchive also supports +reading and writing archives compressed using various compression filters such +as gzip and bzip2. The library is inherently stream-oriented; readers +serially iterate through the archive, writers serially add things to the +archive. In particular, note that there is currently no built-in support for +random access nor for in-place modification.") + (license license:bsd-2))) (define-public rdup (package @@ -151,7 +207,7 @@ backups (called chunks) to allow easy burning to CD/DVD.") Rdup itself does not backup anything, it only print a list of absolute filenames to standard output. Auxiliary scripts are needed that act on this list and implement the backup strategy.") - (license gpl3+))) + (license license:gpl3+))) (define-public btar (package @@ -183,7 +239,7 @@ list and implement the backup strategy.") ciphering, redundancy, differential backup, indexed extraction, multicore compression, input and output serialisation, and tolerance to partial archive errors.") - (license gpl3+))) + (license license:gpl3+))) (define-public rdiff-backup (package @@ -220,4 +276,4 @@ rdiff-backup can operate in a bandwidth efficient manner over a pipe, like rsync. Thus you can use rdiff-backup and ssh to securely back a hard drive up to a remote location, and only the differences will be transmitted. Finally, rdiff-backup is easy to use and settings have sensical defaults.") - (license gpl2+))) + (license license:gpl2+))) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 31b04302e6..6887ba6167 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -2,7 +2,6 @@ ;;; Copyright © 2012, 2013 Ludovic Courtès ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2014 Mark H Weaver -;;; Copyright © 2014 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,8 +24,6 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) - #:use-module (gnu packages nettle) - #:use-module (gnu packages xml) #:use-module (gnu packages which)) (define-public zlib @@ -319,56 +316,3 @@ processed by a Bourne-type shell to unpack the original collection of files. This package is mostly for compatibility and historical interest.") (license license:gpl3+))) -(define-public libarchive - (package - (name "libarchive") - (version "3.1.2") - (source - (origin - (method url-fetch) - (uri (string-append "http://libarchive.org/downloads/libarchive-" - version ".tar.gz")) - (sha256 - (base32 - "0pixqnrcf35dnqgv0lp7qlcw7k13620qkhgxr288v7p4iz6ym1zb")))) - (build-system gnu-build-system) - (inputs - `(("zlib" ,zlib) - ("nettle" ,nettle) - ("lzo" ,lzo) - ("bzip2" ,bzip2) - ("libxml2" ,libxml2) - ("xz" ,xz))) - (arguments - `(#:phases - (alist-cons-before - 'build 'patch-pwd - (lambda _ - (substitute* "Makefile" - (("/bin/pwd") (which "pwd")))) - (alist-replace - 'check - (lambda _ - ;; XXX: The test_owner_parse, test_read_disk, and - ;; test_write_disk_lookup tests expect user 'root' to exist, but - ;; the chroot's /etc/passwd doesn't have it. Turn off those tests. - ;; - ;; The tests allow one to disable tests matching a globbing pattern. - (and (zero? (system* "make" - "libarchive_test" "bsdcpio_test" "bsdtar_test")) - ;; XXX: This glob disables too much. - (zero? (system* "./libarchive_test" "^test_*_disk*")) - (zero? (system* "./bsdcpio_test" "^test_owner_parse")) - (zero? (system* "./bsdtar_test")))) - %standard-phases)))) - (home-page "http://libarchive.org/") - (synopsis "Multi-format archive and compression library") - (description - "Libarchive provides a flexible interface for reading and writing -archives in various formats such as tar and cpio. Libarchive also supports -reading and writing archives compressed using various compression filters such -as gzip and bzip2. The library is inherently stream-oriented; readers -serially iterate through the archive, writers serially add things to the -archive. In particular, note that there is currently no built-in support for -random access nor for in-place modification.") - (license license:bsd-2))) -- cgit v1.2.3 From 52322163ac4b730a62af67549583d89ee496aeff Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 31 May 2014 19:16:50 +0200 Subject: system: Add more options for 'mingetty-service'. * gnu/services/base.scm (mingetty-service): Add #:auto-login, #:login-program, and #:login-pause? parameters and honor them. --- gnu/services/base.scm | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/services/base.scm b/gnu/services/base.scm index dc0161408b..102363819c 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -193,9 +193,31 @@ stopped before 'kill' is called." (define* (mingetty-service tty #:key (motd (text-file "motd" "Welcome.\n")) + auto-login + login-program + login-pause? (allow-empty-passwords? #t)) - "Return a service to run mingetty on TTY." - (mlet %store-monad ((motd motd)) + "Return a service to run mingetty on @var{tty}. + +When @var{allow-empty-passwords?} is true, allow empty log-in password. When +@var{auto-login} is true, it must be a user name under which to log-in +automatically. @var{login-pause?} can be set to @code{#t} in conjunction with +@var{auto-login}, in which case the user will have to press a key before the +login shell is launched. + +When true, @var{login-program} is a gexp or a monadic gexp denoting the name +of the log-in program (the default is the @code{login} program from the Shadow +tool suite.) + +@var{motd} is a monadic value containing a text file to use as +the \"message of the day\"." + (mlet %store-monad ((motd motd) + (login-program (cond ((gexp? login-program) + (return login-program)) + ((not login-program) + (return #f)) + (else + login-program)))) (return (service (documentation (string-append "Run mingetty on " tty ".")) @@ -207,7 +229,16 @@ stopped before 'kill' is called." (start #~(make-forkexec-constructor (string-append #$mingetty "/sbin/mingetty") - "--noclear" #$tty)) + "--noclear" #$tty + #$@(if auto-login + #~("--autologin" #$auto-login) + #~()) + #$@(if login-program + #~("--loginprog" #$login-program) + #~()) + #$@(if login-pause? + #~("--loginpause") + #~()))) (stop #~(make-kill-destructor)) (pam-services -- cgit v1.2.3 From 548d4c139561b2da769561905f3f8134a11bb2d4 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 31 May 2014 22:01:05 +0200 Subject: system: Add 'issue' field. * gnu/system.scm ()[issue]: New field. (%default-issue): New variable. (etc-directory): Add #:issue parameter and honor it. (operating-system-etc-directory): Adjust call accordingly. * build-aux/hydra/demo-os.scm: Add 'issue' field. --- build-aux/hydra/demo-os.scm | 13 +++++++++++++ gnu/system.scm | 20 +++++++++++--------- 2 files changed, 24 insertions(+), 9 deletions(-) (limited to 'gnu') diff --git a/build-aux/hydra/demo-os.scm b/build-aux/hydra/demo-os.scm index 863371291e..30601556ac 100644 --- a/build-aux/hydra/demo-os.scm +++ b/build-aux/hydra/demo-os.scm @@ -41,6 +41,7 @@ (host-name "gnu") (timezone "Europe/Paris") (locale "en_US.UTF-8") + (bootloader (grub-configuration (device "/dev/sda"))) (file-systems @@ -52,6 +53,7 @@ (type "dummy")) ;; %fuse-control-file-system ; needs fuse.ko %binary-format-file-system)) + (users (list (user-account (name "guest") (group "wheel") @@ -67,6 +69,17 @@ (name "users") (id 100) (members '("guest"))))) + + (issue " +This is an alpha preview of the GNU system. Welcome. + +This image features the GNU Guix package manager, which was used to +build it (http://www.gnu.org/software/guix/). The init system is +GNU dmd (http://www.gnu.org/software/dmd/). + +You can log in as 'guest' or 'root' with no password. +") + (services (cons* (slim-service #:auto-login? #t #:default-user "guest") diff --git a/gnu/system.scm b/gnu/system.scm index 48946af7d9..d05ec60b29 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -51,6 +51,7 @@ operating-system-initrd operating-system-users operating-system-groups + operating-system-issue operating-system-packages operating-system-timezone operating-system-locale @@ -92,6 +93,8 @@ (skeletons operating-system-skeletons ; list of name/monadic value (default (default-skeletons))) + (issue operating-system-issue ; string + (default %default-issue)) (packages operating-system-packages ; list of (PACKAGE OUTPUT...) (default (list coreutils ; or just PACKAGE @@ -211,8 +214,14 @@ explicitly appear in OS." ;;; /etc. ;;; +(define %default-issue + ;; Default contents for /etc/issue. + " +This is the GNU system. Welcome.\n") + (define* (etc-directory #:key (locale "C") (timezone "Europe/Paris") + (issue "Hello!\n") (skeletons '()) (pam-services '()) (profile "/run/current-system/profile") @@ -227,15 +236,7 @@ explicitly appear in OS." /bin/sh /run/current-system/profile/bin/sh /run/current-system/profile/bin/bash\n")) - (issue (text-file "issue" " -This is an alpha preview of the GNU system. Welcome. - -This image features the GNU Guix package manager, which was used to -build it (http://www.gnu.org/software/guix/). The init system is -GNU dmd (http://www.gnu.org/software/dmd/). - -You can log in as 'guest' or 'root' with no password. -")) + (issue (text-file "issue" issue)) ;; TODO: Generate bashrc from packages' search-paths. (bashrc (text-file* "bashrc" " @@ -309,6 +310,7 @@ alias ll='ls -l' (skeletons (operating-system-skeletons os))) (etc-directory #:pam-services pam-services #:skeletons skeletons + #:issue (operating-system-issue os) #:locale (operating-system-locale os) #:timezone (operating-system-timezone os) #:sudoers (operating-system-sudoers os) -- cgit v1.2.3 From fc91c17aa8046feeed0cce9fbac1d2ffbc723331 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 31 May 2014 22:13:33 +0200 Subject: Add (gnu system install). * gnu/system/install.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/system/install.scm | 150 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 151 insertions(+) create mode 100644 gnu/system/install.scm (limited to 'gnu') diff --git a/gnu-system.am b/gnu-system.am index ee00a7ab3c..6525bbfee7 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -256,6 +256,7 @@ GNU_SYSTEM_MODULES = \ gnu/system.scm \ gnu/system/file-systems.scm \ gnu/system/grub.scm \ + gnu/system/install.scm \ gnu/system/linux.scm \ gnu/system/linux-initrd.scm \ gnu/system/shadow.scm \ diff --git a/gnu/system/install.scm b/gnu/system/install.scm new file mode 100644 index 0000000000..3dbce0e3b8 --- /dev/null +++ b/gnu/system/install.scm @@ -0,0 +1,150 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu system install) + #:use-module (gnu) + #:use-module (guix gexp) + #:use-module (guix monads) + #:use-module (gnu packages bash) + #:use-module (gnu packages less) + #:use-module (gnu packages linux) + #:use-module (gnu packages guile) + #:use-module (gnu packages admin) + #:use-module (gnu packages package-management) + #:use-module (gnu packages zile) + #:use-module (gnu packages parted) + #:use-module (gnu packages fdisk) + #:use-module (gnu packages texinfo) + #:export (installation-os)) + +;;; Commentary: +;;; +;;; This module provides an 'operating-system' definition for use on images +;;; for USB sticks etc., for the installation of the GNU system. +;;; +;;; Code: + +(define (log-to-info) + "Return a script that spawns the Info reader on the right section of the +manual." + (gexp->script "log-to-info" + #~(execl (string-append #$texinfo-4 "/bin/info") + "-d" "/run/current-system/profile/share/info" + "-f" (string-append #$guix "/share/info/guix.info") + "-n" "System Configuration"))) + +(define (installation-services) + "Return the list services for the installation image." + (let ((motd (text-file "motd" " +Welcome to the installation of the GNU operating system! + +There is NO WARRANTY, to the extent permitted by law. In particular, you may +LOSE ALL YOUR DATA as a side effect of the installation process. Furthermore, +it is alpha software, so it may BREAK IN UNEXPECTED WAYS. + +You have been warned. Thanks for being so brave. +"))) + (define (normal-tty tty) + (mingetty-service tty + #:motd motd + #:auto-login "root" + #:login-pause? #t)) + + (list (mingetty-service "tty1" + #:motd motd + #:auto-login "root") + + ;; Documentation. + (mingetty-service "tty2" + #:motd motd + #:auto-login "guest" + #:login-program (log-to-info)) + + ;; A bunch of 'root' ttys. + (normal-tty "tty3") + (normal-tty "tty4") + (normal-tty "tty5") + (normal-tty "tty6") + + ;; The usual services. + (syslog-service) + (guix-service) + (nscd-service)))) + +(define %issue + ;; Greeting. + " +This is an installation image of the GNU system. Welcome. + +Use Alt-F2 for documentation. +") + +(define installation-os + ;; The operating system used on installation images for USB sticks etc. + (operating-system + (host-name "gnu") + (timezone "Europe/Paris") + (locale "en_US.UTF-8") + (bootloader (grub-configuration + (device "/dev/sda"))) + (file-systems + ;; Note: the disk image build code overrides this root file system with + ;; the appropriate one. + (list (file-system + (mount-point "/") + (device "gnu-disk-image") + (type "ext4")))) + + (users (list (user-account + (name "guest") + (group "wheel") + (password "") + (comment "Guest of GNU") + (home-directory "/home/guest")))) + (groups (list (user-group (name "root") (id 0)) + (user-group + (name "wheel") + (id 1) + (members '("guest"))) ; allow 'guest' to use sudo + (user-group + (name "users") + (id 100) + (members '("guest"))))) + + (issue %issue) + + (services (installation-services)) + + ;; We don't need setuid programs so pass the empty list so we don't pull + ;; additional programs here. + (setuid-programs '()) + + (pam-services + ;; Explicitly allow for empty passwords. + (base-pam-services #:allow-empty-passwords? #t)) + + (packages (list bash coreutils findutils grep sed + procps psmisc less + guile-2.0 dmd guix util-linux inetutils + parted fdisk module-init-tools + zile)))) + +;; Return it here so 'guix system' can consume it directly. +installation-os + +;;; install.scm ends here -- cgit v1.2.3 From 5a6a3ba43a1830c712e29d09e341e3cf14aea507 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 1 Jun 2014 22:53:16 +0200 Subject: gnu: util-linux: Remove dependency on Perl. * gnu/packages/linux.scm (util-linux)[source](patches): New field. * gnu/packages/patches/util-linux-perl.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + gnu/packages/linux.scm | 18 +++++++++--------- gnu/packages/patches/util-linux-perl.patch | 15 +++++++++++++++ 3 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 gnu/packages/patches/util-linux-perl.patch (limited to 'gnu') diff --git a/gnu-system.am b/gnu-system.am index 6525bbfee7..52548dadbc 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -361,6 +361,7 @@ dist_patch_DATA = \ gnu/packages/patches/superlu-dist-scotchmetis.patch \ gnu/packages/patches/tcsh-fix-autotest.patch \ gnu/packages/patches/teckit-cstdio.patch \ + gnu/packages/patches/util-linux-perl.patch \ gnu/packages/patches/valgrind-glibc.patch \ gnu/packages/patches/vpnc-script.patch \ gnu/packages/patches/w3m-fix-compile.patch \ diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 7b46190d79..1690cd8805 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -317,15 +317,15 @@ providing the system administrator with some help in common tasks.") (package (name "util-linux") (version "2.21") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://kernel.org/linux/utils/" - name "/v" version "/" - name "-" version ".2" ".tar.xz")) - (sha256 - (base32 - "1rpgghf7n0zx0cdy8hibr41wvkm2qp1yvd8ab1rxr193l1jmgcir")))) + (source (origin + (method url-fetch) + (uri (string-append "mirror://kernel.org/linux/utils/" + name "/v" version "/" + name "-" version ".2" ".tar.xz")) + (sha256 + (base32 + "1rpgghf7n0zx0cdy8hibr41wvkm2qp1yvd8ab1rxr193l1jmgcir")) + (patches (list (search-patch "util-linux-perl.patch"))))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--disable-use-tty-group" diff --git a/gnu/packages/patches/util-linux-perl.patch b/gnu/packages/patches/util-linux-perl.patch new file mode 100644 index 0000000000..c657a1b5ae --- /dev/null +++ b/gnu/packages/patches/util-linux-perl.patch @@ -0,0 +1,15 @@ +Use this common trick that exploits similarities between sh and Perl syntax +to avoid a hard dependency on Perl. Instead, this script will work only +when 'perl' is available in $PATH. + +--- util-linux-2.21.2/misc-utils/chkdupexe.pl 2012-05-15 13:51:45.000000000 +0200 ++++ util-linux-2.21.2/misc-utils/chkdupexe.pl 2014-06-01 22:46:06.000000000 +0200 +@@ -1,5 +1,6 @@ +-#!@PERL@ -w +-# ++eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}' ++ & eval 'exec perl -wS "$0" $argv:q' ++ if 0; + # chkdupexe version 2.1.1 + # + # Simple script to look for and list duplicate executables and dangling -- cgit v1.2.3 From 1f3fc60da529207187fcb0930a06525b6d5b38c9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 1 Jun 2014 23:51:59 +0200 Subject: services: syslogd: Write fewer messages to /dev/console. * gnu/services/base.scm (syslog-service)[contents]: Remove "kern.*" from /dev/console. --- gnu/services/base.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 102363819c..3643f7cfc1 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -274,11 +274,11 @@ the \"message of the day\"." ;; Snippet adapted from the GNU inetutils manual. (define contents " - # Log all kernel messages, authentication messages of + # Log all error messages, authentication messages of # level notice or higher and anything of level err or # higher to the console. # Don't log private authentication messages! - *.err;kern.*;auth.notice;authpriv.none /dev/console + *.err;auth.notice;authpriv.none /dev/console # Log anything (except mail) of level info or higher. # Don't log private authentication messages! -- cgit v1.2.3 From bc046a94dec2afadbc1ee3957f13098a8d8b393c Mon Sep 17 00:00:00 2001 From: Manolis Ragkousis Date: Sun, 1 Jun 2014 18:17:03 +0000 Subject: gnu: hurd: Add Hurd Minimal. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/hurd.scm (hurd-minimal): New variable. * gnu/packages/patches/hurd-minimal.patch: New patch. * gnu-system.am (dist_patch_DATA): Add it. Signed-off-by: Ludovic Courtès --- gnu-system.am | 1 + gnu/packages/hurd.scm | 67 ++++++++++++++++++++++++++++++++- gnu/packages/patches/hurd-minimal.patch | 21 +++++++++++ 3 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/hurd-minimal.patch (limited to 'gnu') diff --git a/gnu-system.am b/gnu-system.am index 52548dadbc..38e886b00c 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -315,6 +315,7 @@ dist_patch_DATA = \ gnu/packages/patches/guix-test-networking.patch \ gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \ gnu/packages/patches/hop-bigloo-4.0b.patch \ + gnu/packages/patches/hurd-minimal.patch \ gnu/packages/patches/inkscape-stray-comma.patch \ gnu/packages/patches/libevent-dns-tests.patch \ gnu/packages/patches/libffi-mips-n32-fix.patch \ diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm index f1e7dbc9dc..346a37bf3e 100644 --- a/gnu/packages/hurd.scm +++ b/gnu/packages/hurd.scm @@ -20,11 +20,14 @@ #:use-module (guix licenses) #:use-module (guix download) #:use-module (guix packages) + #:use-module (gnu packages) #:use-module (guix build-system gnu) #:use-module (gnu packages flex) #:use-module (gnu packages bison) #:use-module (gnu packages perl) - #:use-module (gnu packages autotools)) + #:use-module (gnu packages autotools) + #:use-module (gnu packages base) + #:use-module (guix git-download)) (define-public gnumach-headers (package @@ -128,3 +131,65 @@ communication.") "This package provides C headers of the GNU Hurd, used to build the GNU C Library and other user programs.") (license gpl2+))) + +(define-public hurd-minimal + (package + (name "hurd-minimal") + (version "0.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "git://git.savannah.gnu.org/hurd/hurd") + (commit "a5ca1de1eb575294dbc865a2c4ff643efc117ef4"))) + (sha256 + (base32 + "17vqdlpy1ifw4ijhc3ydkp8p5d406c7aq4ghpmg4a1h1wlwy32kr")) + (file-name (string-append name "-" version)) + (patches (list (search-patch "hurd-minimal.patch"))))) + (build-system gnu-build-system) + (inputs `(("glibc-hurd-headers" ,glibc/hurd-headers))) + (native-inputs + `(("autoconf" ,autoconf-wrapper) + ("mig" ,mig))) + + (arguments + `(#:phases (alist-replace + 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; We need to copy libihash.a to the output directory manually, + ;; since there is no target for that in the makefile. + (mkdir-p (string-append out "/include")) + (copy-file "libihash/ihash.h" + (string-append out "/include/ihash.h")) + (mkdir-p (string-append out "/lib")) + (copy-file "libihash/libihash.a" + (string-append out "/lib/libihash.a")) + #t)) + (alist-replace + 'build + (lambda _ + (zero? (system* "make" "-Clibihash" "libihash.a"))) + (alist-cons-before + 'configure 'bootstrap + (lambda _ + (zero? (system* "autoreconf" "-vfi"))) + %standard-phases))) + #:configure-flags '(;; Pretend we're on GNU/Hurd; 'configure' wants + ;; that. + "--host=i686-pc-gnu" + + ;; Reduce set of dependencies. + "--disable-ncursesw" + "--disable-test" + "--without-libbz2" + "--without-libz" + "--without-parted") + #:tests? #f)) + (home-page "http://www.gnu.org/software/hurd/hurd.html") + (synopsis "GNU Hurd libraries") + (description + "This package provides libihash, needed to build the GNU C +Library for GNU/Hurd") + (license gpl2+))) diff --git a/gnu/packages/patches/hurd-minimal.patch b/gnu/packages/patches/hurd-minimal.patch new file mode 100644 index 0000000000..72322fff97 --- /dev/null +++ b/gnu/packages/patches/hurd-minimal.patch @@ -0,0 +1,21 @@ +We need to disable linking with glibc in order to build +libihash, which is a dependency of glibc. +After the flag AC_NO_EXECUTABLES is passed, linking is +not allowed so we disable those tests. + +diff --git a/configure.ac b/configure.ac +index f8856db..a381219 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -297,9 +297,9 @@ AC_SUBST([XKB_BASE]) + AC_DEFINE_UNQUOTED([X11_PREFIX], "$X11_PREFIX") + AC_SUBST([X11_KEYSYMDEF_H]) + +-# Check for Sun RPC headers and library. ++# Check only for Sun RPC headers. We do not need the library yet. + AC_CHECK_HEADER([rpc/types.h], [HAVE_SUN_RPC=yes], [HAVE_SUN_RPC=no]) +-AC_SEARCH_LIBS([clnt_create], [], [:], [HAVE_SUN_RPC=no]) ++# AC_SEARCH_LIBS([clnt_create], [], [:], [HAVE_SUN_RPC=no]) + AC_SUBST([HAVE_SUN_RPC]) + + if test -f ./$ac_unique_file; then -- cgit v1.2.3 From 0497ba3b260527d4184a0fcb22d6ab30e5e11a63 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 2 Jun 2014 23:28:07 +0200 Subject: Revert "gnu: hurd: Add Hurd Minimal." This reverts commit bc046a94dec2afadbc1ee3957f13098a8d8b393c, which referred to uncommitted things ('glibc/hurd-headers'.) --- gnu-system.am | 1 - gnu/packages/hurd.scm | 67 +-------------------------------- gnu/packages/patches/hurd-minimal.patch | 21 ----------- 3 files changed, 1 insertion(+), 88 deletions(-) delete mode 100644 gnu/packages/patches/hurd-minimal.patch (limited to 'gnu') diff --git a/gnu-system.am b/gnu-system.am index 38e886b00c..52548dadbc 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -315,7 +315,6 @@ dist_patch_DATA = \ gnu/packages/patches/guix-test-networking.patch \ gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \ gnu/packages/patches/hop-bigloo-4.0b.patch \ - gnu/packages/patches/hurd-minimal.patch \ gnu/packages/patches/inkscape-stray-comma.patch \ gnu/packages/patches/libevent-dns-tests.patch \ gnu/packages/patches/libffi-mips-n32-fix.patch \ diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm index 346a37bf3e..f1e7dbc9dc 100644 --- a/gnu/packages/hurd.scm +++ b/gnu/packages/hurd.scm @@ -20,14 +20,11 @@ #:use-module (guix licenses) #:use-module (guix download) #:use-module (guix packages) - #:use-module (gnu packages) #:use-module (guix build-system gnu) #:use-module (gnu packages flex) #:use-module (gnu packages bison) #:use-module (gnu packages perl) - #:use-module (gnu packages autotools) - #:use-module (gnu packages base) - #:use-module (guix git-download)) + #:use-module (gnu packages autotools)) (define-public gnumach-headers (package @@ -131,65 +128,3 @@ communication.") "This package provides C headers of the GNU Hurd, used to build the GNU C Library and other user programs.") (license gpl2+))) - -(define-public hurd-minimal - (package - (name "hurd-minimal") - (version "0.5") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "git://git.savannah.gnu.org/hurd/hurd") - (commit "a5ca1de1eb575294dbc865a2c4ff643efc117ef4"))) - (sha256 - (base32 - "17vqdlpy1ifw4ijhc3ydkp8p5d406c7aq4ghpmg4a1h1wlwy32kr")) - (file-name (string-append name "-" version)) - (patches (list (search-patch "hurd-minimal.patch"))))) - (build-system gnu-build-system) - (inputs `(("glibc-hurd-headers" ,glibc/hurd-headers))) - (native-inputs - `(("autoconf" ,autoconf-wrapper) - ("mig" ,mig))) - - (arguments - `(#:phases (alist-replace - 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - ;; We need to copy libihash.a to the output directory manually, - ;; since there is no target for that in the makefile. - (mkdir-p (string-append out "/include")) - (copy-file "libihash/ihash.h" - (string-append out "/include/ihash.h")) - (mkdir-p (string-append out "/lib")) - (copy-file "libihash/libihash.a" - (string-append out "/lib/libihash.a")) - #t)) - (alist-replace - 'build - (lambda _ - (zero? (system* "make" "-Clibihash" "libihash.a"))) - (alist-cons-before - 'configure 'bootstrap - (lambda _ - (zero? (system* "autoreconf" "-vfi"))) - %standard-phases))) - #:configure-flags '(;; Pretend we're on GNU/Hurd; 'configure' wants - ;; that. - "--host=i686-pc-gnu" - - ;; Reduce set of dependencies. - "--disable-ncursesw" - "--disable-test" - "--without-libbz2" - "--without-libz" - "--without-parted") - #:tests? #f)) - (home-page "http://www.gnu.org/software/hurd/hurd.html") - (synopsis "GNU Hurd libraries") - (description - "This package provides libihash, needed to build the GNU C -Library for GNU/Hurd") - (license gpl2+))) diff --git a/gnu/packages/patches/hurd-minimal.patch b/gnu/packages/patches/hurd-minimal.patch deleted file mode 100644 index 72322fff97..0000000000 --- a/gnu/packages/patches/hurd-minimal.patch +++ /dev/null @@ -1,21 +0,0 @@ -We need to disable linking with glibc in order to build -libihash, which is a dependency of glibc. -After the flag AC_NO_EXECUTABLES is passed, linking is -not allowed so we disable those tests. - -diff --git a/configure.ac b/configure.ac -index f8856db..a381219 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -297,9 +297,9 @@ AC_SUBST([XKB_BASE]) - AC_DEFINE_UNQUOTED([X11_PREFIX], "$X11_PREFIX") - AC_SUBST([X11_KEYSYMDEF_H]) - --# Check for Sun RPC headers and library. -+# Check only for Sun RPC headers. We do not need the library yet. - AC_CHECK_HEADER([rpc/types.h], [HAVE_SUN_RPC=yes], [HAVE_SUN_RPC=no]) --AC_SEARCH_LIBS([clnt_create], [], [:], [HAVE_SUN_RPC=no]) -+# AC_SEARCH_LIBS([clnt_create], [], [:], [HAVE_SUN_RPC=no]) - AC_SUBST([HAVE_SUN_RPC]) - - if test -f ./$ac_unique_file; then -- cgit v1.2.3 From d4c87617e5c0c50573019e4621ed318489cf209a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 2 Jun 2014 23:58:50 +0200 Subject: system: File system sources can be marked as labels or devices. * gnu/system/file-systems.scm ()[title]: New field. * gnu/services/base.scm (file-system-service): Add #:title parameter. In 'start' gexp, use 'canonicalize-device-spec' and honor TITLE. * gnu/system.scm (other-file-system-services, operating-system-root-file-system, operating-system-initrd-file): Adjust accordingly. * gnu/system/linux-initrd.scm (file-system->spec): Likewise. * gnu/system/vm.scm (system-disk-image): Add 'title' field for the root file system. * guix/build/linux-initrd.scm (mount-file-system): Expect the second element of SPEC to be the title. (boot-system)[root-mount-point?, root-fs-type]: Likewise. * gnu/services/dmd.scm (dmd-configuration-file): Select 'canonicalize-device-spec'. --- gnu/services/base.scm | 15 +++++++++------ gnu/services/dmd.scm | 2 +- gnu/system.scm | 11 +++++++---- gnu/system/file-systems.scm | 3 +++ gnu/system/linux-initrd.scm | 4 ++-- gnu/system/vm.scm | 1 + guix/build/linux-initrd.scm | 11 ++++++----- 7 files changed, 29 insertions(+), 18 deletions(-) (limited to 'gnu') diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 3643f7cfc1..4442203524 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -89,9 +89,11 @@ This service must be the root of the service dependency graph so that its (respawn? #f))))) (define* (file-system-service device target type - #:key (check? #t) options) + #:key (check? #t) options (title 'any)) "Return a service that mounts DEVICE on TARGET as a file system TYPE with -OPTIONS. When CHECK? is true, check the file system before mounting it." +OPTIONS. TITLE is a symbol specifying what kind of name DEVICE is: 'label for +a partition label, 'device for a device file name, or 'any. When CHECK? is +true, check the file system before mounting it." (with-monad %store-monad (return (service @@ -99,10 +101,11 @@ OPTIONS. When CHECK? is true, check the file system before mounting it." (requirement '(root-file-system)) (documentation "Check, mount, and unmount the given file system.") (start #~(lambda args - #$(if check? - #~(check-file-system #$device #$type) - #~#t) - (mount #$device #$target #$type 0 #$options) + (let ((device (canonicalize-device-spec #$device '#$title))) + #$(if check? + #~(check-file-system device #$type) + #~#t) + (mount device #$target #$type 0 #$options)) #t)) (stop #~(lambda args ;; Normally there are no processes left at this point, so diff --git a/gnu/services/dmd.scm b/gnu/services/dmd.scm index 982c196fe4..74adb27885 100644 --- a/gnu/services/dmd.scm +++ b/gnu/services/dmd.scm @@ -50,7 +50,7 @@ (use-modules (ice-9 ftw) (guix build syscalls) ((guix build linux-initrd) - #:select (check-file-system))) + #:select (check-file-system canonicalize-device-spec))) (register-services #$@(map (lambda (service) diff --git a/gnu/system.scm b/gnu/system.scm index d05ec60b29..548184f5d5 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -182,8 +182,10 @@ as 'needed-for-boot'." (sequence %store-monad (map (match-lambda - (($ device target type flags opts #f check?) + (($ device title target type flags opts + #f check?) (file-system-service device target type + #:title title #:check? check? #:options opts))) file-systems))) @@ -449,7 +451,7 @@ we're running in the final root." (define (operating-system-root-file-system os) "Return the root file system of OS." (find (match-lambda - (($ _ "/") #t) + (($ _ _ "/") #t) (_ #f)) (operating-system-file-systems os))) @@ -457,9 +459,10 @@ we're running in the final root." "Return a gexp denoting the initrd file of OS." (define boot-file-systems (filter (match-lambda - (($ device "/") + (($ device title "/") #t) - (($ device mount-point type flags options boot?) + (($ device title mount-point type flags + options boot?) boot?)) (operating-system-file-systems os))) diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index 485150ea51..7852a6ab26 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -22,6 +22,7 @@ file-system file-system? file-system-device + file-system-title file-system-mount-point file-system-type file-system-needed-for-boot? @@ -42,6 +43,8 @@ make-file-system file-system? (device file-system-device) ; string + (title file-system-title ; 'device | 'label | 'uuid + (default 'device)) (mount-point file-system-mount-point) ; string (type file-system-type) ; string (flags file-system-flags ; list of symbols diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index b80ff10f1e..17fec4f7f4 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -198,8 +198,8 @@ a list of Guile module names to be embedded in the initrd." "Return a list corresponding to file-system FS that can be passed to the initrd code." (match fs - (($ device mount-point type flags options _ check?) - (list device mount-point type flags options check?)))) + (($ device title mount-point type flags options _ check?) + (list device title mount-point type flags options check?)))) (define* (qemu-initrd file-systems #:key diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 184f2512f1..c85445cd5f 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -290,6 +290,7 @@ to USB sticks meant to be read-only." (file-systems (cons (file-system (mount-point "/") (device root-label) + (title 'label) (type file-system-type)) file-systems-to-keep))))) diff --git a/guix/build/linux-initrd.scm b/guix/build/linux-initrd.scm index 05f6bf14bf..c1a0247aff 100644 --- a/guix/build/linux-initrd.scm +++ b/guix/build/linux-initrd.scm @@ -37,6 +37,7 @@ disk-partitions partition-label-predicate find-partition-by-label + canonicalize-device-spec check-file-system mount-file-system @@ -485,7 +486,7 @@ UNIONFS." "Mount the file system described by SPEC under ROOT. SPEC must have the form: - (DEVICE MOUNT-POINT TYPE (FLAGS ...) OPTIONS CHECK?) + (DEVICE TITLE MOUNT-POINT TYPE (FLAGS ...) OPTIONS CHECK?) DEVICE, MOUNT-POINT, and TYPE must be strings; OPTIONS can be a string or #f; FLAGS must be a list of symbols. CHECK? is a Boolean indicating whether to @@ -500,8 +501,8 @@ run a file system check." 0))) (match spec - ((source mount-point type (flags ...) options check?) - (let ((source (canonicalize-device-spec source)) + ((source title mount-point type (flags ...) options check?) + (let ((source (canonicalize-device-spec source title)) (mount-point (string-append root "/" mount-point))) (when check? (check-file-system source type)) @@ -596,12 +597,12 @@ to it are lost." (define root-mount-point? (match-lambda - ((device "/" _ ...) #t) + ((device _ "/" _ ...) #t) (_ #f))) (define root-fs-type (or (any (match-lambda - ((device "/" type _ ...) type) + ((device _ "/" type _ ...) type) (_ #f)) mounts) "ext4")) -- cgit v1.2.3 From b6772a01e98e2d64a356698867fe4dd21252df11 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 3 Jun 2014 11:10:58 +0200 Subject: gnu: elfutils: Add synopsis and description. * gnu/packages/elf.scm (elfutils): Add synopsis and description. --- gnu/packages/elf.scm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm index 45714be70e..a9f2ab5351 100644 --- a/gnu/packages/elf.scm +++ b/gnu/packages/elf.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Ludovic Courtès +;;; Copyright © 2013, 2014 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -47,8 +47,11 @@ (native-inputs `(("m4" ,m4))) (inputs `(("zlib" ,zlib))) (home-page "https://fedorahosted.org/elfutils/") - (synopsis #f) - (description #f) + (synopsis "Linker and ELF manipulation tools") + (description + "This package provides command-line tools to manipulate binaries in the +Executable and Linkable Format (ELF). This includes ld, ar, objdump, +addr2line, and more.") ;; Libraries are dual-licensed LGPLv3.0+ | GPLv2, and programs are GPLv3+. (license lgpl3+))) -- cgit v1.2.3 From 585c651951e5217daaac650865aa56cb4b6c74bb Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 3 Jun 2014 11:48:41 +0200 Subject: system: Make sure /run/setuid-programs comes first in $PATH. * gnu/system.scm (etc-directory) : Move /run/setuid-programs first in $PATH. --- gnu/system.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/system.scm b/gnu/system.scm index 548184f5d5..ec54b8baf0 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -248,8 +248,8 @@ export LC_ALL=\"" locale "\" export TZ=\"" timezone "\" export TZDIR=\"" tzdata "/share/zoneinfo\" -export PATH=/run/setuid-programs:/run/current-system/profile/sbin -export PATH=$HOME/.guix-profile/bin:/run/current-system/profile/bin:$PATH +export PATH=$HOME/.guix-profile/bin:/run/current-system/profile/bin +export PATH=/run/setuid-programs:/run/current-system/profile/sbin:$PATH export CPATH=$HOME/.guix-profile/include:" profile "/include export LIBRARY_PATH=$HOME/.guix-profile/lib:" profile "/lib alias ls='ls -p --color' -- cgit v1.2.3 From cc4a2aeb984b8cd007c48a2fb140792ce2a70a56 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 3 Jun 2014 22:12:05 +0200 Subject: gnu: Merge Parted, fdisk, and ddrescue in (gnu packages disk). * gnu/packages/parted.scm: Rename to... * gnu/packages/disk.scm: ... this. New file. Merge with... * gnu/packages/fdisk.scm: ... this; remove file; * gnu/packages/ddrescue.scm: ... and this; remove file. * gnu/system/install.scm, gnu/system/vm.scm: Adjust accordingly. * gnu-system.am (GNU_SYSTEM_MODULES): Remove gnu/packages/{parted,fdisk,ddrescue}.scm and add gnu/packages/disk.scm. --- gnu-system.am | 4 +- gnu/packages/ddrescue.scm | 47 ------------------ gnu/packages/disk.scm | 121 ++++++++++++++++++++++++++++++++++++++++++++++ gnu/packages/fdisk.scm | 53 -------------------- gnu/packages/parted.scm | 69 -------------------------- gnu/system/install.scm | 3 +- gnu/system/vm.scm | 2 +- 7 files changed, 124 insertions(+), 175 deletions(-) delete mode 100644 gnu/packages/ddrescue.scm create mode 100644 gnu/packages/disk.scm delete mode 100644 gnu/packages/fdisk.scm delete mode 100644 gnu/packages/parted.scm (limited to 'gnu') diff --git a/gnu-system.am b/gnu-system.am index 52548dadbc..e1a8436a98 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -62,15 +62,14 @@ GNU_SYSTEM_MODULES = \ gnu/packages/cyrus-sasl.scm \ gnu/packages/dc.scm \ gnu/packages/dejagnu.scm \ - gnu/packages/ddrescue.scm \ gnu/packages/dictionaries.scm \ + gnu/packages/disk.scm \ gnu/packages/docbook.scm \ gnu/packages/doxygen.scm \ gnu/packages/dwm.scm \ gnu/packages/ed.scm \ gnu/packages/elf.scm \ gnu/packages/emacs.scm \ - gnu/packages/fdisk.scm \ gnu/packages/file.scm \ gnu/packages/flex.scm \ gnu/packages/fltk.scm \ @@ -177,7 +176,6 @@ GNU_SYSTEM_MODULES = \ gnu/packages/openssl.scm \ gnu/packages/package-management.scm \ gnu/packages/parallel.scm \ - gnu/packages/parted.scm \ gnu/packages/patchutils.scm \ gnu/packages/pciutils.scm \ gnu/packages/pcre.scm \ diff --git a/gnu/packages/ddrescue.scm b/gnu/packages/ddrescue.scm deleted file mode 100644 index dd5bf0e552..0000000000 --- a/gnu/packages/ddrescue.scm +++ /dev/null @@ -1,47 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013 Nikita Karetnikov -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see . - -(define-module (gnu packages ddrescue) - #:use-module (guix licenses) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix build-system gnu) - #:use-module ((gnu packages compression) #:select (lzip))) - -(define-public ddrescue - (package - (name "ddrescue") - (version "1.17") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://gnu/ddrescue/ddrescue-" - version ".tar.lz")) - (sha256 - (base32 - "0bvmsbzli2j4czwkabzs978n1y6vx31axh02kpgcf7033cc6rydy")))) - (build-system gnu-build-system) - (home-page "http://www.gnu.org/software/ddrescue/ddrescue.html") - (synopsis "Data recovery utility") - (native-inputs `(("lzip" ,lzip))) - (description - "GNU ddrescue is a fully automated data recovery tool. It copies data -from one file to another, working to rescue data in case of read errors. The -program also includes a tool for manipulating its log files, which are used -to recover data more efficiently by only reading the necessary blocks.") - (license gpl3+))) diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm new file mode 100644 index 0000000000..a5404b2749 --- /dev/null +++ b/gnu/packages/disk.scm @@ -0,0 +1,121 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013 Nikita Karetnikov +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages disk) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages check) + #:use-module (gnu packages gettext) + #:use-module (gnu packages linux) + #:use-module (gnu packages readline) + #:use-module (gnu packages guile) + #:use-module ((gnu packages compression) + #:select (lzip))) + +(define-public parted + (package + (name "parted") + (version "3.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/parted/parted-" + version ".tar.xz")) + (sha256 + (base32 + "05fa4m1bky9d13hqv91jlnngzlyn7y4rnnyq6d86w0dg3vww372y")))) + (build-system gnu-build-system) + (arguments `(#:configure-flags '("--disable-device-mapper") + #:phases (alist-cons-before + 'configure 'fix-mkswap + (lambda* (#:key inputs #:allow-other-keys) + (let ((util-linux (assoc-ref inputs + "util-linux"))) + (substitute* + "tests/t9050-partition-table-types.sh" + (("mkswap") + (string-append util-linux "/sbin/mkswap"))))) + %standard-phases))) + (inputs + ;; XXX: add 'lvm2'. + `(("check" ,check) + + ;; With Readline 6.3, parted/ui.c fails to build because it uses the + ;; now undefined 'CPPFunction' type. + ("readline" ,readline-6.2) + + ("util-linux" ,util-linux))) + (native-inputs + `(("gettext" ,gnu-gettext))) + (home-page "http://www.gnu.org/software/parted/") + (synopsis "Disk partition editor") + (description + "GNU Parted is a package for creating and manipulating disk partition +tables. It includes a library and command-line utility.") + (license gpl3+))) + +(define-public fdisk + (package + (name "fdisk") + (version "2.0.0a") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/fdisk/gnufdisk-" + version ".tar.gz")) + (sha256 + (base32 + "04nd7civ561x2lwcmxhsqbprml3178jfc58fy1v7hzqg5k4nbhy3")))) + (build-system gnu-build-system) + (inputs + `(("gettext" ,gnu-gettext) + ("guile" ,guile-1.8) + ("util-linux" ,util-linux) + ("parted" ,parted))) + (home-page "https://www.gnu.org/software/fdisk/") + (synopsis "Low-level disk partitioning and formatting") + (description + "GNU fdisk provides a GNU version of the common disk partitioning tool +fdisk. fdisk is used for the creation and manipulation of disk partition +tables, and it understands a variety of different formats.") + (license gpl3+))) + +(define-public ddrescue + (package + (name "ddrescue") + (version "1.17") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/ddrescue/ddrescue-" + version ".tar.lz")) + (sha256 + (base32 + "0bvmsbzli2j4czwkabzs978n1y6vx31axh02kpgcf7033cc6rydy")))) + (build-system gnu-build-system) + (home-page "http://www.gnu.org/software/ddrescue/ddrescue.html") + (synopsis "Data recovery utility") + (native-inputs `(("lzip" ,lzip))) + (description + "GNU ddrescue is a fully automated data recovery tool. It copies data +from one file to another, working to rescue data in case of read errors. The +program also includes a tool for manipulating its log files, which are used +to recover data more efficiently by only reading the necessary blocks.") + (license gpl3+))) diff --git a/gnu/packages/fdisk.scm b/gnu/packages/fdisk.scm deleted file mode 100644 index 8272c45aab..0000000000 --- a/gnu/packages/fdisk.scm +++ /dev/null @@ -1,53 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Nikita Karetnikov -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see . - -(define-module (gnu packages fdisk) - #:use-module ((guix licenses) #:select (gpl3+)) - #:use-module (gnu packages gettext) - #:use-module (gnu packages guile) - #:use-module (gnu packages linux) - #:use-module (gnu packages parted) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix build-system gnu)) - -(define-public fdisk - (package - (name "fdisk") - (version "2.0.0a") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://gnu/fdisk/gnufdisk-" - version ".tar.gz")) - (sha256 - (base32 - "04nd7civ561x2lwcmxhsqbprml3178jfc58fy1v7hzqg5k4nbhy3")))) - (build-system gnu-build-system) - (inputs - `(("gettext" ,gnu-gettext) - ("guile" ,guile-1.8) - ("util-linux" ,util-linux) - ("parted" ,parted))) - (home-page "https://www.gnu.org/software/fdisk/") - (synopsis "Low-level disk partitioning and formatting") - (description - "GNU fdisk provides a GNU version of the common disk partitioning tool -fdisk. fdisk is used for the creation and manipulation of disk partition -tables, and it understands a variety of different formats.") - (license gpl3+))) diff --git a/gnu/packages/parted.scm b/gnu/packages/parted.scm deleted file mode 100644 index 5d5d38a515..0000000000 --- a/gnu/packages/parted.scm +++ /dev/null @@ -1,69 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Nikita Karetnikov -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see . - -(define-module (gnu packages parted) - #:use-module (guix licenses) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix build-system gnu) - #:use-module (gnu packages check) - #:use-module (gnu packages gettext) - #:use-module (gnu packages linux) - #:use-module (gnu packages readline)) - -(define-public parted - (package - (name "parted") - (version "3.1") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://gnu/parted/parted-" - version ".tar.xz")) - (sha256 - (base32 - "05fa4m1bky9d13hqv91jlnngzlyn7y4rnnyq6d86w0dg3vww372y")))) - (build-system gnu-build-system) - (arguments `(#:configure-flags '("--disable-device-mapper") - #:phases (alist-cons-before - 'configure 'fix-mkswap - (lambda* (#:key inputs #:allow-other-keys) - (let ((util-linux (assoc-ref inputs - "util-linux"))) - (substitute* - "tests/t9050-partition-table-types.sh" - (("mkswap") - (string-append util-linux "/sbin/mkswap"))))) - %standard-phases))) - (inputs - ;; XXX: add 'lvm2'. - `(("check" ,check) - - ;; With Readline 6.3, parted/ui.c fails to build because it uses the - ;; now undefined 'CPPFunction' type. - ("readline" ,readline-6.2) - - ("util-linux" ,util-linux))) - (native-inputs - `(("gettext" ,gnu-gettext))) - (home-page "http://www.gnu.org/software/parted/") - (synopsis "Disk partition editor") - (description - "GNU Parted is a package for creating and manipulating disk partition -tables. It includes a library and command-line utility.") - (license gpl3+))) diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 3dbce0e3b8..a7036c33bb 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -27,8 +27,7 @@ #:use-module (gnu packages admin) #:use-module (gnu packages package-management) #:use-module (gnu packages zile) - #:use-module (gnu packages parted) - #:use-module (gnu packages fdisk) + #:use-module (gnu packages disk) #:use-module (gnu packages texinfo) #:export (installation-os)) diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index c85445cd5f..99628de709 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -29,7 +29,7 @@ #:use-module (gnu packages bash) #:use-module (gnu packages less) #:use-module (gnu packages qemu) - #:use-module (gnu packages parted) + #:use-module (gnu packages disk) #:use-module (gnu packages zile) #:use-module (gnu packages grub) #:use-module (gnu packages linux) -- cgit v1.2.3 From d8bb353c26a6eba47385845439f1ca8286ab68ee Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 3 Jun 2014 22:22:25 +0200 Subject: gnu: linux-libre: Build the e1000e driver (Intel ethernet NIC driver.) * gnu/packages/linux.scm (linux-libre): Add CONFIG_E1000E=m. --- gnu/packages/linux.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 1690cd8805..46f2178488 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -182,7 +182,8 @@ "CONFIG_VIRTIO_MMIO=m\n" "CONFIG_FUSE_FS=m\n" "CONFIG_CIFS=m\n" - "CONFIG_9P_FS=m\n") + "CONFIG_9P_FS=m\n" + "CONFIG_E1000E=m\n") port) (close-port port)) -- cgit v1.2.3 From e73a99a304c7e54449513f6725cc2928435d0844 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 3 Jun 2014 23:28:50 +0200 Subject: install: Add more useful packages. * gnu/system/install.scm (installation-os)[packages]: Add isc-dhcp, net-tools, ddrescue, kbd, and texinfo-4. --- gnu/system/install.scm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/system/install.scm b/gnu/system/install.scm index a7036c33bb..8c67b73de6 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -138,9 +138,11 @@ Use Alt-F2 for documentation. (base-pam-services #:allow-empty-passwords? #t)) (packages (list bash coreutils findutils grep sed - procps psmisc less - guile-2.0 dmd guix util-linux inetutils - parted fdisk module-init-tools + procps psmisc less texinfo-4 + guile-2.0 dmd guix util-linux + inetutils isc-dhcp net-tools + parted fdisk ddrescue + module-init-tools kbd zile)))) ;; Return it here so 'guix system' can consume it directly. -- cgit v1.2.3 From 39d4fde3bfd27607980eb58f0b17b837953b1e4c Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 4 Jun 2014 01:03:17 -0400 Subject: gnu: gnutls: Upgrade to 3.2.15. * gnu/packages/gnutls.scm (gnutls): Upgrade to 3.2.15. --- gnu/packages/gnutls.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/gnutls.scm b/gnu/packages/gnutls.scm index 0391f54126..e136ed8b26 100644 --- a/gnu/packages/gnutls.scm +++ b/gnu/packages/gnutls.scm @@ -63,7 +63,7 @@ specifications.") (define-public gnutls (package (name "gnutls") - (version "3.2.12") + (version "3.2.15") (source (origin (method url-fetch) (uri @@ -75,7 +75,7 @@ specifications.") "/gnutls-" version ".tar.xz")) (sha256 (base32 - "0195nliarszq5mginli6d2f5z7ljnd7mwa46iy9z8pkcgy56khbl")))) + "1fbpr9r1r2y803s3avwjpy1higqsz85dyb302kvmh0i29frwgg9h")))) (build-system gnu-build-system) (arguments ;; Work around build issue reported at -- cgit v1.2.3 From 6f436c54d6d9698e62639de31a845cd9b9167423 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Jun 2014 14:59:24 +0200 Subject: system: Define '%base-packages' and use it. * gnu/system.scm ()[packages]: Change default value to %BASE-PACKAGES. (%base-packages): New variable. * gnu/system/install.scm (installation-os): Use it when defining the 'packages' field. * doc/guix.texi (Using the Configuration System): Use %BASE-PACKAGES in example. Remove now unneeded module imports. Explain this. --- build-aux/hydra/demo-os.scm | 14 ++------------ doc/guix.texi | 31 ++++++++++++------------------- gnu/system.scm | 27 +++++++++++++++++---------- gnu/system/install.scm | 15 +++------------ 4 files changed, 34 insertions(+), 53 deletions(-) (limited to 'gnu') diff --git a/build-aux/hydra/demo-os.scm b/build-aux/hydra/demo-os.scm index 0b41ec901f..bb8cd05fc2 100644 --- a/build-aux/hydra/demo-os.scm +++ b/build-aux/hydra/demo-os.scm @@ -24,15 +24,7 @@ (use-modules (gnu) - (gnu packages zile) (gnu packages xorg) - (gnu packages admin) - (gnu packages guile) - (gnu packages bash) - (gnu packages linux) - (gnu packages less) - (gnu packages tor) - (gnu packages package-management) (gnu packages avahi) (gnu services networking) @@ -98,7 +90,5 @@ You can log in as 'guest' or 'root' with no password. (pam-services ;; Explicitly allow for empty passwords. (base-pam-services #:allow-empty-passwords? #t)) - (packages (list bash coreutils findutils grep sed - procps psmisc less - guile-2.0 dmd guix util-linux inetutils avahi - xterm zile))) + + (packages (cons* xterm avahi %base-packages))) diff --git a/doc/guix.texi b/doc/guix.texi index cfdfcd8b78..4d5a5150e6 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3116,14 +3116,8 @@ Linux-Libre kernel, initial RAM disk, and boot loader looks like this: @findex operating-system @lisp (use-modules (gnu) ; for 'user-account', '%base-services', etc. - (gnu services ssh) ; for 'lsh-service' - (gnu packages base) ; Coreutils, grep, etc. - (gnu packages bash) ; Bash - (gnu packages admin) ; dmd, Inetutils - (gnu packages zile) ; Zile - (gnu packages less) ; less - (gnu packages guile) ; Guile - (gnu packages linux)) ; procps, psmisc + (gnu packages emacs) ; for 'emacs' + (gnu services ssh)) ; for 'lsh-service' (define komputilo (operating-system @@ -3142,22 +3136,21 @@ Linux-Libre kernel, initial RAM disk, and boot loader looks like this: (uid 1000) (gid 100) (comment "Bob's sister") (home-directory "/home/alice")))) - (packages (list coreutils bash guile-2.0 - guix dmd - inetutils - findutils grep sed - procps psmisc - zile less)) + (packages (cons emacs %base-packages)) (services (cons (lsh-service #:port 2222 #:allow-root-login? #t) %base-services)))) @end lisp This example should be self-describing. The @code{packages} field lists -packages provided by the various @code{(gnu packages ...)} modules above -(@pxref{Package Modules}). These are the packages that will be globally -visible on the system, for all user accounts---i.e., in every user's -@code{PATH} environment variable---in addition to the per-user profiles -(@pxref{Invoking guix package}). +packages that will be globally visible on the system, for all user +accounts---i.e., in every user's @code{PATH} environment variable---in +addition to the per-user profiles (@pxref{Invoking guix package}). The +@var{%base-packages} variables provides all the tools one would expect +for basic user and administrator tasks---including the GNU Core +Utilities, the GNU Networking Utilities, the GNU Zile lightweight text +editor, @command{find}, @command{grep}, etc. The example above adds +Emacs to those, taken from the @code{(gnu packages emacs)} module +(@pxref{Package Modules}). @vindex %base-services The @code{services} field lists @dfn{system services} to be made diff --git a/gnu/system.scm b/gnu/system.scm index ec54b8baf0..7b8e3890d7 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -28,6 +28,9 @@ #:use-module (gnu packages admin) #:use-module (gnu packages linux) #:use-module (gnu packages package-management) + #:use-module (gnu packages which) + #:use-module (gnu packages less) + #:use-module (gnu packages zile) #:use-module (gnu services) #:use-module (gnu services dmd) #:use-module (gnu services base) @@ -59,7 +62,9 @@ operating-system-derivation operating-system-profile - operating-system-grub.cfg)) + operating-system-grub.cfg + + %base-packages)) ;;; Commentary: ;;; @@ -97,15 +102,7 @@ (default %default-issue)) (packages operating-system-packages ; list of (PACKAGE OUTPUT...) - (default (list coreutils ; or just PACKAGE - grep - sed - findutils - guile - bash - (@ (gnu packages dmd) dmd) - guix - tzdata))) + (default %base-packages)) ; or just PACKAGE (timezone operating-system-timezone) ; string (locale operating-system-locale) ; string @@ -216,6 +213,16 @@ explicitly appear in OS." ;;; /etc. ;;; +(define %base-packages + ;; Default set of packages globally visible. It should include anything + ;; required for basic administrator tasks. + (list bash coreutils findutils grep sed + procps psmisc less zile + guile-final (@ (gnu packages admin) dmd) guix + util-linux inetutils isc-dhcp + net-tools ; XXX: remove when Inetutils suffices + module-init-tools kbd)) + (define %default-issue ;; Default contents for /etc/issue. " diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 8c67b73de6..c69e51b2b5 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -20,13 +20,8 @@ #:use-module (gnu) #:use-module (guix gexp) #:use-module (guix monads) - #:use-module (gnu packages bash) - #:use-module (gnu packages less) #:use-module (gnu packages linux) - #:use-module (gnu packages guile) - #:use-module (gnu packages admin) #:use-module (gnu packages package-management) - #:use-module (gnu packages zile) #:use-module (gnu packages disk) #:use-module (gnu packages texinfo) #:export (installation-os)) @@ -137,13 +132,9 @@ Use Alt-F2 for documentation. ;; Explicitly allow for empty passwords. (base-pam-services #:allow-empty-passwords? #t)) - (packages (list bash coreutils findutils grep sed - procps psmisc less texinfo-4 - guile-2.0 dmd guix util-linux - inetutils isc-dhcp net-tools - parted fdisk ddrescue - module-init-tools kbd - zile)))) + (packages (cons* texinfo-4 ; for the standalone Info reader + parted fdisk ddrescue + %base-packages)))) ;; Return it here so 'guix system' can consume it directly. installation-os -- cgit v1.2.3 From 202adef2ec8d7bbfb6a7c216e96b2306e03c759f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Jun 2014 16:01:53 +0200 Subject: gnu: guix: Use /etc as sysconfdir. * gnu/packages/package-management.scm (guix)[arguments]: Pass --sysconfdir=/etc. --- gnu/packages/package-management.scm | 1 + 1 file changed, 1 insertion(+) (limited to 'gnu') diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index e74491a827..672ae9ad6b 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -43,6 +43,7 @@ (arguments `(#:configure-flags (list "--localstatedir=/var" + "--sysconfdir=/etc" (string-append "--with-libgcrypt-prefix=" (assoc-ref %build-inputs "libgcrypt"))) -- cgit v1.2.3 From 2c5c696c39b2d80b1e1b1f477822a6711d779b71 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Jun 2014 16:07:09 +0200 Subject: install: Register the hydra.gnu.org key on the installation image. * gnu/services/base.scm (hydra-key-authorization): New procedure. (guix-service): Add #:authorize-hydra-key? parameter; honor it using 'hydra-key-authorization'. * gnu/system/install.scm (installation-services): Pass #:authorize-hydra-key? #t. --- gnu/services/base.scm | 35 ++++++++++++++++++++++++++++++++--- gnu/system/install.scm | 7 ++++++- 2 files changed, 38 insertions(+), 4 deletions(-) (limited to 'gnu') diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 4442203524..463185d53c 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -330,10 +330,37 @@ starting at FIRST-UID, and under GID." 1+ 1)))) +(define (hydra-key-authorization guix) + "Return a gexp with code to register the hydra.gnu.org public key with +GUIX." + #~(unless (file-exists? "/etc/guix/acl") + (let ((pid (primitive-fork))) + (case pid + ((0) + (let* ((key (string-append #$guix + "/share/guix/hydra.gnu.org.pub")) + (port (open-file key "r0b"))) + (format #t "registering public key '~a'...~%" key) + (close-port (current-input-port)) + ;; (close-fdes 0) + (dup port 0) + (execl (string-append #$guix "/bin/guix") + "guix" "archive" "--authorize") + (exit 1))) + (else + (let ((status (cdr (waitpid pid)))) + (unless (zero? status) + (format (current-error-port) "warning: \ +failed to register hydra.gnu.org public key: ~a~%" status)))))))) + (define* (guix-service #:key (guix guix) (builder-group "guixbuild") - (build-accounts 10)) + (build-accounts 10) authorize-hydra-key?) "Return a service that runs the build daemon from GUIX, and has -BUILD-ACCOUNTS user accounts available under BUILD-USER-GID." +BUILD-ACCOUNTS user accounts available under BUILD-USER-GID. + +When AUTHORIZE-HYDRA-KEY? is true, the hydra.gnu.org public key provided by +GUIX is authorized upon activation, meaning that substitutes from +hydra.gnu.org are used by default." (mlet %store-monad ((accounts (guix-build-accounts build-accounts #:group builder-group))) (return (service @@ -349,7 +376,9 @@ BUILD-ACCOUNTS user accounts available under BUILD-USER-GID." (user-groups (list (user-group (name builder-group) (members (map user-account-name - user-accounts))))))))) + user-accounts))))) + (activate (and authorize-hydra-key? + (hydra-key-authorization guix))))))) (define %base-services ;; Convenience variable holding the basic services. diff --git a/gnu/system/install.scm b/gnu/system/install.scm index c69e51b2b5..707f6b6c86 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -77,7 +77,12 @@ You have been warned. Thanks for being so brave. ;; The usual services. (syslog-service) - (guix-service) + + ;; The build daemon. Register the hydra.gnu.org key as trusted. + ;; This allows the installation process to use substitutes by + ;; default. + (guix-service #:authorize-hydra-key? #t) + (nscd-service)))) (define %issue -- cgit v1.2.3 From 56ef7fcc50f9fdced7d65d95cd0ddf6c1263360c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Jun 2014 16:07:37 +0200 Subject: vm: Add #:name parameter for 'system-disk-image'. * gnu/system/vm.scm (system-disk-image): Add #:name parameter; pass it to 'qemu-image'. --- gnu/system/vm.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 99628de709..4e7c439894 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -261,6 +261,7 @@ the image." (define* (system-disk-image os #:key + (name "disk-image") (file-system-type "ext4") (disk-image-size (* 900 (expt 2 20))) (volatile? #t)) @@ -296,7 +297,8 @@ to USB sticks meant to be read-only." (mlet* %store-monad ((os-drv (operating-system-derivation os)) (grub.cfg (operating-system-grub.cfg os))) - (qemu-image #:grub-configuration grub.cfg + (qemu-image #:name name + #:grub-configuration grub.cfg #:disk-image-size disk-image-size #:disk-image-format "raw" #:file-system-type file-system-type -- cgit v1.2.3 From 4654439be74353825fccf483b3a7827197179be6 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Jun 2014 16:08:26 +0200 Subject: system: Rename activation script. * gnu/system.scm (operating-system-activation-script): Change file name to "activate". --- gnu/system.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/system.scm b/gnu/system.scm index 7b8e3890d7..a224916c0d 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -395,7 +395,7 @@ etc." (define group-specs (map user-group->gexp groups)) - (gexp->file "boot" + (gexp->file "activate" #~(begin (eval-when (expand load eval) ;; Make sure 'use-modules' below succeeds. -- cgit v1.2.3 From d3bbe992ec33860aedccb26734a7a83d263e7ec3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Jun 2014 16:22:48 +0200 Subject: system: Tell module-init-tools where to look for modules. * gnu/packages/linux.scm (module-init-tools)[source](patches): New field. * gnu/packages/patches/module-init-tools-moduledir.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/system.scm (etc-directory): Add #:kernel parameter. Set 'LINUX_MODULE_DIRECTORY' in bashrc. (operating-system-etc-directory): Pass #:kernel to 'etc-directory'. --- gnu-system.am | 1 + gnu/packages/linux.scm | 4 +- .../patches/module-init-tools-moduledir.patch | 168 +++++++++++++++++++++ gnu/system.scm | 9 +- 4 files changed, 180 insertions(+), 2 deletions(-) create mode 100644 gnu/packages/patches/module-init-tools-moduledir.patch (limited to 'gnu') diff --git a/gnu-system.am b/gnu-system.am index e1a8436a98..71af17f060 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -331,6 +331,7 @@ dist_patch_DATA = \ gnu/packages/patches/mhash-keygen-test-segfault.patch \ gnu/packages/patches/mit-krb5-init-fix.patch \ gnu/packages/patches/mpc123-initialize-ao.patch \ + gnu/packages/patches/module-init-tools-moduledir.patch \ gnu/packages/patches/openssl-CVE-2010-5298.patch \ gnu/packages/patches/openssl-extension-checking-fixes.patch \ gnu/packages/patches/patchelf-page-size.patch \ diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 46f2178488..518b0e41b9 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -133,7 +133,9 @@ version ".tar.bz2")) (sha256 (base32 - "0jxnz9ahfic79rp93l5wxcbgh4pkv85mwnjlbv1gz3jawv5cvwp1")))) + "0jxnz9ahfic79rp93l5wxcbgh4pkv85mwnjlbv1gz3jawv5cvwp1")) + (patches + (list (search-patch "module-init-tools-moduledir.patch"))))) (build-system gnu-build-system) (arguments ;; FIXME: The upstream tarball lacks man pages, and building them would diff --git a/gnu/packages/patches/module-init-tools-moduledir.patch b/gnu/packages/patches/module-init-tools-moduledir.patch new file mode 100644 index 0000000000..68d7988f53 --- /dev/null +++ b/gnu/packages/patches/module-init-tools-moduledir.patch @@ -0,0 +1,168 @@ +This patch changes 'modprobe' & co. so they honor the 'LINUX_MODULE_DIRECTORY' +environment variable, rather than looking for modules exclusively in +/lib/modules. + +Patch by David Guibert, from Nixpkgs; adjusted to use 'LINUX_MODULE_DIRECTORY' +rather than 'MODULE_DIR' as the variable name. + +commit cf2c95edb7918bc658f6cae93793c1949fc9cb6e +Author: David Guibert +Date: Fri Aug 5 14:20:12 2011 +0200 + + introduce module-dir + +diff --git a/depmod.c b/depmod.c +index a1d2f8c..9362a35 100644 +--- a/depmod.c ++++ b/depmod.c +@@ -48,9 +48,6 @@ + + #include "testing.h" + +-#ifndef MODULE_DIR +-#define MODULE_DIR "/lib/modules/" +-#endif + + #ifndef MODULE_BUILTIN_KEY + #define MODULE_BUILTIN_KEY "built-in" +@@ -1516,6 +1513,7 @@ static int parse_config_file(const char *filename, + char *line; + unsigned int linenum = 0; + FILE *cfile; ++ char *module_dir; + + cfile = fopen(filename, "r"); + if (!cfile) { +@@ -1525,6 +1523,10 @@ static int parse_config_file(const char *filename, + return 0; + } + ++ if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) { ++ module_dir = "/lib/modules/"; ++ } ++ + while ((line = getline_wrapped(cfile, &linenum)) != NULL) { + char *ptr = line; + char *cmd, *modname; +@@ -1550,7 +1552,7 @@ static int parse_config_file(const char *filename, + continue; + } + nofail_asprintf(&dirname, "%s%s%s/%s", basedir, +- MODULE_DIR, kernelversion, search_path); ++ module_dir, kernelversion, search_path); + len = strlen(dirname); + *search = add_search(dirname, len, *search); + free(dirname); +@@ -1565,7 +1567,7 @@ static int parse_config_file(const char *filename, + continue; + + nofail_asprintf(&pathname, "%s%s%s/%s/%s.ko", basedir, +- MODULE_DIR, kernelversion, subdir, modname); ++ module_dir, kernelversion, subdir, modname); + + *overrides = add_override(pathname, *overrides); + free(pathname); +@@ -1737,6 +1739,7 @@ int main(int argc, char *argv[]) + char *basedir = "", *dirname, *version; + char *system_map = NULL, *module_symvers = NULL; + int i; ++ char *module_dir; + const char *config = NULL; + + if (native_endianness() == 0) +@@ -1832,7 +1835,11 @@ int main(int argc, char *argv[]) + if (optind == argc) + all = 1; + +- nofail_asprintf(&dirname, "%s%s%s", basedir, MODULE_DIR, version); ++ if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) { ++ module_dir = "/lib/modules/"; ++ } ++ ++ nofail_asprintf(&dirname, "%s%s%s", basedir, module_dir, version); + + if (maybe_all) { + if (!doing_stdout && !depfile_out_of_date(dirname)) +@@ -1850,7 +1857,7 @@ int main(int argc, char *argv[]) + size_t len; + + nofail_asprintf(&dirname, "%s%s%s/updates", basedir, +- MODULE_DIR, version); ++ module_dir, version); + len = strlen(dirname); + search = add_search(dirname, len, search); + } +diff --git a/modinfo.c b/modinfo.c +index 1dd8469..67b1041 100644 +--- a/modinfo.c ++++ b/modinfo.c +@@ -19,9 +19,6 @@ + #include "zlibsupport.h" + #include "testing.h" + +-#ifndef MODULE_DIR +-#define MODULE_DIR "/lib/modules" +-#endif + + struct param + { +@@ -193,6 +190,11 @@ static struct elf_file *grab_module(const char *name, + struct utsname buf; + char *depname, *p, *moddir; + struct elf_file *module; ++ char *module_dir; ++ ++ if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) { ++ module_dir = "/lib/modules/"; ++ } + + if (strchr(name, '.') || strchr(name, '/')) { + module = grab_elf_file(name); +@@ -207,9 +209,9 @@ static struct elf_file *grab_module(const char *name, + kernel = buf.release; + } + if (strlen(basedir)) +- nofail_asprintf(&moddir, "%s/%s/%s", basedir, MODULE_DIR, kernel); ++ nofail_asprintf(&moddir, "%s/%s/%s", basedir, module_dir, kernel); + else +- nofail_asprintf(&moddir, "%s/%s", MODULE_DIR, kernel); ++ nofail_asprintf(&moddir, "%s/%s", module_dir, kernel); + + /* Search for it in modules.dep. */ + nofail_asprintf(&depname, "%s/%s", moddir, "modules.dep"); +diff --git a/modprobe.c b/modprobe.c +index 5464f45..d9fbf9d 100644 +--- a/modprobe.c ++++ b/modprobe.c +@@ -86,10 +86,6 @@ typedef enum + + } modprobe_flags_t; + +-#ifndef MODULE_DIR +-#define MODULE_DIR "/lib/modules" +-#endif +- + /** + * print_usage - output the prefered program usage + * +@@ -2136,6 +2132,7 @@ int main(int argc, char *argv[]) + struct modprobe_conf conf = {}; + + recursion_depth = 0; ++ char *module_dir = NULL; + + /* Prepend options from environment. */ + argv = merge_args(getenv("MODPROBE_OPTIONS"), argv, &argc); +@@ -2233,7 +2230,11 @@ int main(int argc, char *argv[]) + if (argc < optind + 1 && !dump_config && !list_only) + print_usage(argv[0]); + +- nofail_asprintf(&dirname, "%s%s/%s", basedir, MODULE_DIR, buf.release); ++ if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) { ++ module_dir = "/lib/modules"; ++ } ++ ++ nofail_asprintf(&dirname, "%s%s/%s", basedir, module_dir, buf.release); + + /* Old-style -t xxx wildcard? Only with -l. */ + if (list_only) { diff --git a/gnu/system.scm b/gnu/system.scm index a224916c0d..4dc6ebd5a7 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -229,6 +229,7 @@ explicitly appear in OS." This is the GNU system. Welcome.\n") (define* (etc-directory #:key + kernel (locale "C") (timezone "Europe/Paris") (issue "Hello!\n") (skeletons '()) @@ -255,6 +256,11 @@ export LC_ALL=\"" locale "\" export TZ=\"" timezone "\" export TZDIR=\"" tzdata "/share/zoneinfo\" +# Tell 'modprobe' & co. where to look for modules. +# XXX: The downside of doing it here is that when switching to a new config +# without rebooting, this variable possibly becomes invalid. +export LINUX_MODULE_DIRECTORY=" kernel "/lib/modules + export PATH=$HOME/.guix-profile/bin:/run/current-system/profile/bin export PATH=/run/setuid-programs:/run/current-system/profile/sbin:$PATH export CPATH=$HOME/.guix-profile/include:" profile "/include @@ -317,7 +323,8 @@ alias ll='ls -l' (append-map service-pam-services services)))) (profile-drv (operating-system-profile os)) (skeletons (operating-system-skeletons os))) - (etc-directory #:pam-services pam-services + (etc-directory #:kernel (operating-system-kernel os) + #:pam-services pam-services #:skeletons skeletons #:issue (operating-system-issue os) #:locale (operating-system-locale os) -- cgit v1.2.3 From 3d116a70f9b18027b31be2e11e8c9c9192622607 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Jun 2014 22:17:20 +0200 Subject: services: Add the build group to the supplementary groups of build users. * gnu/services/base.scm (guix-build-accounts): Add 'supplementary-groups' field. --- gnu/services/base.scm | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gnu') diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 463185d53c..3f7f453c9b 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -324,6 +324,12 @@ starting at FIRST-UID, and under GID." (name (format #f "guixbuilder~2,'0d" n)) (uid (+ first-uid n -1)) (group group) + + ;; guix-daemon expects GROUP to be listed as a + ;; supplementary group too: + ;; . + (supplementary-groups (list group)) + (comment (format #f "Guix Build User ~2d" n)) (home-directory "/var/empty") (shell #~(string-append #$shadow "/sbin/nologin")))) -- cgit v1.2.3 From 185f669109eb56b61c3d51dc8b2e3eeded9b2be9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Jun 2014 22:19:30 +0200 Subject: services: Make sure the store's group is the build group. * gnu/services/base.scm (guix-service)[activate]: New variable. Add 'chown' call for (%store-prefix). Set the 'activate' field to ACTIVATE. * guix/build/install.scm (directives): Add comment about STORE's group. --- gnu/services/base.scm | 18 +++++++++++++++--- guix/build/install.scm | 5 ++++- 2 files changed, 19 insertions(+), 4 deletions(-) (limited to 'gnu') diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 3f7f453c9b..94fa919c0f 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -17,6 +17,8 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu services base) + #:use-module ((guix store) + #:select (%store-prefix)) #:use-module (gnu services) #:use-module (gnu system shadow) ; 'user-account', etc. #:use-module (gnu system linux) ; 'pam-service', etc. @@ -348,7 +350,6 @@ GUIX." (port (open-file key "r0b"))) (format #t "registering public key '~a'...~%" key) (close-port (current-input-port)) - ;; (close-fdes 0) (dup port 0) (execl (string-append #$guix "/bin/guix") "guix" "archive" "--authorize") @@ -367,6 +368,18 @@ BUILD-ACCOUNTS user accounts available under BUILD-USER-GID. When AUTHORIZE-HYDRA-KEY? is true, the hydra.gnu.org public key provided by GUIX is authorized upon activation, meaning that substitutes from hydra.gnu.org are used by default." + (define activate + #~(begin + ;; Make sure the store has BUILDER-GROUP as its group. This may fail + ;; with EACCES when the store is a 9p mount, so catch exceptions. + (false-if-exception + (chown #$(%store-prefix) 0 + (group:gid (getgrnam #$builder-group)))) + + ;; Optionally authorize hydra.gnu.org's key. + #$(and authorize-hydra-key? + (hydra-key-authorization guix)))) + (mlet %store-monad ((accounts (guix-build-accounts build-accounts #:group builder-group))) (return (service @@ -383,8 +396,7 @@ hydra.gnu.org are used by default." (name builder-group) (members (map user-account-name user-accounts))))) - (activate (and authorize-hydra-key? - (hydra-key-authorization guix))))))) + (activate activate))))) (define %base-services ;; Convenience variable holding the basic services. diff --git a/guix/build/install.scm b/guix/build/install.scm index afa7d1dd8f..ea787b63e2 100644 --- a/guix/build/install.scm +++ b/guix/build/install.scm @@ -73,7 +73,10 @@ directory TARGET." (define (directives store) "Return a list of directives to populate the root file system that will host STORE." - `((directory ,store 0 0) + `(;; Note: The store's group is changed to the "guixbuild" group at + ;; activation time. + (directory ,store 0 0) + (directory "/etc") (directory "/var/log") ; for dmd (directory "/var/guix/gcroots") -- cgit v1.2.3 From ea31dbbc18e616196ed7bda61e29178658540e7e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Jun 2014 23:08:59 +0200 Subject: install: Add missing argv[0] in Info invocation. * gnu/system/install.scm (log-to-info): Add "info" as second argument to 'execl'. --- gnu/system/install.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 707f6b6c86..06f8a3f058 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -37,7 +37,7 @@ "Return a script that spawns the Info reader on the right section of the manual." (gexp->script "log-to-info" - #~(execl (string-append #$texinfo-4 "/bin/info") + #~(execl (string-append #$texinfo-4 "/bin/info") "info" "-d" "/run/current-system/profile/share/info" "-f" (string-append #$guix "/share/info/guix.info") "-n" "System Configuration"))) -- cgit v1.2.3 From 9d9b576bcd51049f674933ce5406f9ce549b9bf6 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Jun 2014 23:32:46 +0200 Subject: gnu: Set proper source location for 'gcc-final'. * gnu/packages/base.scm (gcc-final)[location]: New field. Reported by Andreas Enge . --- gnu/packages/base.scm | 1 + 1 file changed, 1 insertion(+) (limited to 'gnu') diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 09cbe8915b..2e16f325ef 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -971,6 +971,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" ;; The final GCC. (package (inherit gcc-boot0) (name "gcc") + (location (source-properties->location (current-source-location))) (arguments `(#:guile ,%bootstrap-guile #:implicit-inputs? #f -- cgit v1.2.3 From cc24623d7189ec03a2b31750daf784b06474cb84 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Jun 2014 23:55:12 +0200 Subject: gnu: bdb: Move documentation to "doc" output. * gnu/packages/bdb.scm (bdb): Add 'outputs' field. Adjust 'configure' phase to move documentation to the "doc" output. --- gnu/packages/bdb.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/bdb.scm b/gnu/packages/bdb.scm index 75a2b72b44..e82a683332 100644 --- a/gnu/packages/bdb.scm +++ b/gnu/packages/bdb.scm @@ -34,13 +34,21 @@ (sha256 (base32 "1f2g2612lf8djbwbwhxsvmffmf9d7693kh2l20195pqp0f9jmnfx")))) (build-system gnu-build-system) + (outputs '("out" ; programs, libraries, headers + "doc")) ; 94 MiB of HTML docs (arguments '(#:tests? #f ; no check target available #:phases (alist-replace 'configure (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) + (let ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc"))) + ;; '--docdir' is not honored, so we need to patch. + (substitute* "dist/Makefile.in" + (("docdir[[:blank:]]*=.*") + (string-append "docdir = " doc "/share/doc/bdb"))) + (zero? (system* "./dist/configure" (string-append "--prefix=" out) -- cgit v1.2.3 From 017f7415ab6eba71448215fe9bb133262680ff09 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 5 Jun 2014 16:36:25 -0400 Subject: gnu: openssl: Upgrade to 1.0.1h. * gnu/packages/openssl.scm (openssl): Upgrade to 1.0.1h. Remove patches, which are now upstream. * gnu/packages/patches/openssl-extension-checking-fixes.patch: Remove. * gnu/packages/patches/openssl-CVE-2010-5298.patch: Remove. * gnu-system.am (dist_patch_DATA): Remove them. --- gnu-system.am | 2 -- gnu/packages/openssl.scm | 7 ++-- gnu/packages/patches/openssl-CVE-2010-5298.patch | 27 --------------- .../patches/openssl-extension-checking-fixes.patch | 40 ---------------------- 4 files changed, 2 insertions(+), 74 deletions(-) delete mode 100644 gnu/packages/patches/openssl-CVE-2010-5298.patch delete mode 100644 gnu/packages/patches/openssl-extension-checking-fixes.patch (limited to 'gnu') diff --git a/gnu-system.am b/gnu-system.am index 71af17f060..c5331fa10d 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -332,8 +332,6 @@ dist_patch_DATA = \ gnu/packages/patches/mit-krb5-init-fix.patch \ gnu/packages/patches/mpc123-initialize-ao.patch \ gnu/packages/patches/module-init-tools-moduledir.patch \ - gnu/packages/patches/openssl-CVE-2010-5298.patch \ - gnu/packages/patches/openssl-extension-checking-fixes.patch \ gnu/packages/patches/patchelf-page-size.patch \ gnu/packages/patches/patchutils-xfail-gendiff-tests.patch \ gnu/packages/patches/perl-no-sys-dirs.patch \ diff --git a/gnu/packages/openssl.scm b/gnu/packages/openssl.scm index eb03bb99c3..51caa00e68 100644 --- a/gnu/packages/openssl.scm +++ b/gnu/packages/openssl.scm @@ -28,17 +28,14 @@ (define-public openssl (package (name "openssl") - (version "1.0.1g") + (version "1.0.1h") (source (origin (method url-fetch) (uri (string-append "ftp://ftp.openssl.org/source/openssl-" version ".tar.gz")) (sha256 (base32 - "0a70qdqccg16nw4bbawa6pjvzn05vfp5wkwg6jl0grch7f683jsk")) - (patches - (list (search-patch "openssl-CVE-2010-5298.patch") - (search-patch "openssl-extension-checking-fixes.patch"))))) + "14yhsgag5as7nhxnw7f0vklwjwa3pmn1i15nmp3f4qxa6sc8l74x")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) (arguments diff --git a/gnu/packages/patches/openssl-CVE-2010-5298.patch b/gnu/packages/patches/openssl-CVE-2010-5298.patch deleted file mode 100644 index 707a24dff0..0000000000 --- a/gnu/packages/patches/openssl-CVE-2010-5298.patch +++ /dev/null @@ -1,27 +0,0 @@ -From db978be7388852059cf54e42539a363d549c5bfd Mon Sep 17 00:00:00 2001 -From: Kurt Roeckx -Date: Sun, 13 Apr 2014 15:05:30 +0200 -Subject: [PATCH] Don't release the buffer when there still is data in it - -RT: 2167, 3265 ---- - ssl/s3_pkt.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/ssl/s3_pkt.c b/ssl/s3_pkt.c -index b9e45c7..32e9207 100644 ---- a/ssl/s3_pkt.c -+++ b/ssl/s3_pkt.c -@@ -1055,7 +1055,8 @@ int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) - { - s->rstate=SSL_ST_READ_HEADER; - rr->off=0; -- if (s->mode & SSL_MODE_RELEASE_BUFFERS) -+ if (s->mode & SSL_MODE_RELEASE_BUFFERS && -+ s->s3->rbuf.left == 0) - ssl3_release_read_buffer(s); - } - } --- -1.9.1 - diff --git a/gnu/packages/patches/openssl-extension-checking-fixes.patch b/gnu/packages/patches/openssl-extension-checking-fixes.patch deleted file mode 100644 index 3fdd893563..0000000000 --- a/gnu/packages/patches/openssl-extension-checking-fixes.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 300b9f0b704048f60776881f1d378c74d9c32fbd Mon Sep 17 00:00:00 2001 -From: "Dr. Stephen Henson" -Date: Tue, 15 Apr 2014 18:48:54 +0100 -Subject: [PATCH] Extension checking fixes. - -When looking for an extension we need to set the last found -position to -1 to properly search all extensions. - -PR#3309. ---- - crypto/x509v3/v3_purp.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/crypto/x509v3/v3_purp.c b/crypto/x509v3/v3_purp.c -index 6c40c7d..5f931db 100644 ---- a/crypto/x509v3/v3_purp.c -+++ b/crypto/x509v3/v3_purp.c -@@ -389,8 +389,8 @@ static void x509v3_cache_extensions(X509 *x) - /* Handle proxy certificates */ - if((pci=X509_get_ext_d2i(x, NID_proxyCertInfo, NULL, NULL))) { - if (x->ex_flags & EXFLAG_CA -- || X509_get_ext_by_NID(x, NID_subject_alt_name, 0) >= 0 -- || X509_get_ext_by_NID(x, NID_issuer_alt_name, 0) >= 0) { -+ || X509_get_ext_by_NID(x, NID_subject_alt_name, -1) >= 0 -+ || X509_get_ext_by_NID(x, NID_issuer_alt_name, -1) >= 0) { - x->ex_flags |= EXFLAG_INVALID; - } - if (pci->pcPathLengthConstraint) { -@@ -670,7 +670,7 @@ static int check_purpose_timestamp_sign(const X509_PURPOSE *xp, const X509 *x, - return 0; - - /* Extended Key Usage MUST be critical */ -- i_ext = X509_get_ext_by_NID((X509 *) x, NID_ext_key_usage, 0); -+ i_ext = X509_get_ext_by_NID((X509 *) x, NID_ext_key_usage, -1); - if (i_ext >= 0) - { - X509_EXTENSION *ext = X509_get_ext((X509 *) x, i_ext); --- -1.9.1 - -- cgit v1.2.3 From c6b76405ffedae1649f3ed68717c70c7f2443347 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 5 Jun 2014 13:38:57 +0200 Subject: gnu: Add WakeLan. * gnu/packages/admin.scm (wakelan): New variable. --- gnu/packages/admin.scm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index df968c4846..b10fc6fe39 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -731,3 +731,41 @@ This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.") ;; In practice, this is linked against Readline, which makes it GPLv3+. (license bsd-3))) + +(define-public wakelan + (package + (name "wakelan") + (version "1.1") + (source (origin + (method url-fetch) + (uri (string-append + "ftp://ftp.gwdg.de/pub/linux/metalab/system/network/misc/wakelan-" + version ".tar.gz")) + (sha256 + (base32 + "0vydqpf44146ir6k87gmqaq6xy66xhc1gkr3nsd7jj3nhy7ypx9x")))) + (build-system gnu-build-system) + (arguments + '(#:phases (alist-replace + 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (mkdir-p (string-append out "/bin")) + (mkdir-p (string-append out "/share/man/man1")) + + ;; It's an old configure script that doesn't understand + ;; the extra options we pass. + (setenv "CONFIG_SHELL" (which "bash")) + (zero? + (system* "./configure" + (string-append "--prefix=" out) + (string-append "--mandir=" out + "/share/man"))))) + %standard-phases) + #:tests? #f)) + (home-page "http://kernel.org") ; really, no home page + (synopsis "Send a wake-on-LAN packet") + (description + "WakeLan broadcasts a properly formatted UDP packet across the local area +network, which causes enabled computers to power on.") + (license gpl2+))) -- cgit v1.2.3 From e97c5be914864674d024dd088eb1f2788ac49f46 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 6 Jun 2014 00:09:12 +0200 Subject: services: Use a fixed GID for the build group and use that for the store. This partly reverts commit 185f669 ("services: Make sure the store's group is the build group.") * gnu/services/base.scm (guix-service)[activate]: Remove 'chown' call. Add 'id' field to 'user-group' form. * guix/build/install.scm (directives): Set the store's GID to 30000. --- gnu/services/base.scm | 21 +++++++++++---------- guix/build/install.scm | 6 +++--- 2 files changed, 14 insertions(+), 13 deletions(-) (limited to 'gnu') diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 94fa919c0f..65a8ceefc4 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -369,16 +369,13 @@ When AUTHORIZE-HYDRA-KEY? is true, the hydra.gnu.org public key provided by GUIX is authorized upon activation, meaning that substitutes from hydra.gnu.org are used by default." (define activate - #~(begin - ;; Make sure the store has BUILDER-GROUP as its group. This may fail - ;; with EACCES when the store is a 9p mount, so catch exceptions. - (false-if-exception - (chown #$(%store-prefix) 0 - (group:gid (getgrnam #$builder-group)))) + ;; Assume that the store has BUILDER-GROUP as its group. We could + ;; otherwise call 'chown' here, but the problem is that on a COW unionfs, + ;; chown leads to an entire copy of the tree, which is a bad idea. - ;; Optionally authorize hydra.gnu.org's key. - #$(and authorize-hydra-key? - (hydra-key-authorization guix)))) + ;; Optionally authorize hydra.gnu.org's key. + (and authorize-hydra-key? + (hydra-key-authorization guix))) (mlet %store-monad ((accounts (guix-build-accounts build-accounts #:group builder-group))) @@ -395,7 +392,11 @@ hydra.gnu.org are used by default." (user-groups (list (user-group (name builder-group) (members (map user-account-name - user-accounts))))) + user-accounts)) + + ;; Use a fixed GID so that we can create the + ;; store with the right owner. + (id 30000)))) (activate activate))))) (define %base-services diff --git a/guix/build/install.scm b/guix/build/install.scm index ea787b63e2..2a76394faa 100644 --- a/guix/build/install.scm +++ b/guix/build/install.scm @@ -73,9 +73,9 @@ directory TARGET." (define (directives store) "Return a list of directives to populate the root file system that will host STORE." - `(;; Note: The store's group is changed to the "guixbuild" group at - ;; activation time. - (directory ,store 0 0) + `(;; Note: the store's GID is fixed precisely so we can set it here rather + ;; than at activation time. + (directory ,store 0 30000) (directory "/etc") (directory "/var/log") ; for dmd -- cgit v1.2.3