From 180d7ac1638de76962b51ee507b2725f278b5aa4 Mon Sep 17 00:00:00 2001 From: Jason Self Date: Sun, 20 Jul 2014 06:47:14 -0700 Subject: gnu: dfc: Update to 3.0.4. * gnu/packages/admin.scm (dfc): Update to version 3.0.4. --- gnu/packages/admin.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 8b7a2c0303..ed15644a48 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -78,16 +78,16 @@ interface and is based on GNU Guile.") (define-public dfc (package (name "dfc") - (version "3.0.3") + (version "3.0.4") (source (origin (method url-fetch) (uri (string-append - "http://projects.gw-computing.net/attachments/download/78/dfc-" + "http://projects.gw-computing.net/attachments/download/79/dfc-" version ".tar.gz")) (sha256 (base32 - "1b4hfqv23l87cb37fxwzfk2sgspkyxpr3ig2hsd23hr6mm982j7z")))) + "0zk1ppx93ijimf4sbgqilxxikpsa2gmpbynknyh41xy7jbdjxp0b")))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ; There are no tests. (native-inputs `(("gettext" ,gnu-gettext))) -- cgit v1.2.3 From da891830dac44e531d21c6b3d3b76a14577a8de9 Mon Sep 17 00:00:00 2001 From: Jason Self Date: Sun, 20 Jul 2014 06:48:58 -0700 Subject: gnu: htop: Update to 1.0.3. * gnu/packages/admin.scm (htop): Update to version 1.0.3. --- gnu/packages/admin.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index ed15644a48..6a5968509d 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -101,14 +101,14 @@ graphs and can export its output to different formats.") (define-public htop (package (name "htop") - (version "1.0.2") + (version "1.0.3") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/htop/" + (uri (string-append "http://hisham.hm/htop/" version "/htop-" version ".tar.gz")) (sha256 (base32 - "18fqrhvnm7h4c3939av8lpiwrwxbyw6hcly0jvq0vkjf0ixnaq7f")))) + "0a8qbpsifzjwc4f45xfwm48jhm59g6q5hlib4bf7z13mgy95fp05")))) (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses))) -- cgit v1.2.3 From 7d193ec34881843573a8013163347cfd8b1e9001 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Sun, 20 Jul 2014 11:29:48 -0500 Subject: guix: refresh: Add --list-dependent option. * guix/packages.scm (package-direct-inputs): New procedure. * gnu/packages.scm (vhash-refq, package-direct-dependents) (package-transitive-dependents, package-covering-dependents): New procedures. * guix/scripts/refresh.scm (%options, show-help, guix-refresh): Add --list-dependent option. * doc/guix.texi (Invoking guix refresh): Document '--list-dependent' option. --- doc/guix.texi | 25 +++++++++++++++ gnu/packages.scm | 66 +++++++++++++++++++++++++++++++++++++- guix/packages.scm | 12 +++++-- guix/scripts/refresh.scm | 83 +++++++++++++++++++++++++++++++++--------------- 4 files changed, 156 insertions(+), 30 deletions(-) (limited to 'gnu') diff --git a/doc/guix.texi b/doc/guix.texi index 5bee540460..8431cbd907 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2545,6 +2545,31 @@ The command above specifically updates the @code{emacs} and @code{idutils} packages. The @code{--select} option would have no effect in this case. +When considering whether to upgrade a package, it is sometimes +convenient to know which packages would be affected by the upgrade and +should be checked for compatibility. For this the following option may +be used when passing @command{guix refresh} one or more package names: + +@table @code + +@item --list-dependent +@itemx -l +List top-level dependent packages that would need to be rebuilt as a +result of upgrading one or more packages. + +@end table + +Be aware that the @code{--list-dependent} option only +@emph{approximates} the rebuilds that would be required as a result of +an upgrade. More rebuilds might be required under some circumstances. + +@example +guix refresh --list-dependent flex +@end example + +The command above lists a set of packages that could be built to check +for compatibility with an upgraded @code{flex} package. + The following options can be used to customize GnuPG operation: @table @code diff --git a/gnu/packages.scm b/gnu/packages.scm index 8365a00051..77d9d3ee82 100644 --- a/gnu/packages.scm +++ b/gnu/packages.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013 Ludovic Courtès ;;; Copyright © 2013 Mark H Weaver +;;; Copyright © 2014 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,10 +32,16 @@ search-bootstrap-binary %patch-directory %bootstrap-binaries-path + fold-packages + find-packages-by-name find-best-packages-by-name - find-newest-available-packages)) + find-newest-available-packages + + package-direct-dependents + package-transitive-dependents + package-covering-dependents)) ;;; Commentary: ;;; @@ -182,3 +189,60 @@ VERSION." (match (vhash-assoc name (find-newest-available-packages)) ((_ version pkgs ...) pkgs) (#f '())))) + + +(define* (vhash-refq vhash key #:optional (dflt #f)) + "Look up KEY in the vhash VHASH, and return the value (if any) associated +with it. If KEY is not found, return DFLT (or `#f' if no DFLT argument is +supplied). Uses `eq?' for equality testing." + (or (and=> (vhash-assq key vhash) cdr) + dflt)) + +(define package-dependencies + (memoize + (lambda () + "Return a vhash keyed by package, and with associated values that are a +list of packages that depend on that package." + (fold-packages + (lambda (package dag) + (fold + (lambda (in d) + ;; Insert a graph edge from each of package's inputs to package. + (vhash-consq in + (cons package (vhash-refq d in '())) + (vhash-delq in d))) + dag + (match (package-direct-inputs package) + (((labels packages . _) ...) + packages) ))) + vlist-null)))) + +(define (package-direct-dependents packages) + "Return a list of packages from the distribution that directly depend on the +packages in PACKAGES." + (delete-duplicates + (concatenate + (map (lambda (p) + (vhash-refq (package-dependencies) p '())) + packages)))) + +(define (package-transitive-dependents packages) + "Return the transitive dependent packages of the distribution packages in +PACKAGES---i.e. the dependents of those packages, plus their dependents, +recursively." + (let ((dependency-dag (package-dependencies))) + (fold-tree + cons '() + (lambda (node) (vhash-refq dependency-dag node)) + ;; Start with the dependents to avoid including PACKAGES in the result. + (package-direct-dependents packages)))) + +(define (package-covering-dependents packages) + "Return a minimal list of packages from the distribution whose dependencies +include all of PACKAGES and all packages that depend on PACKAGES." + (let ((dependency-dag (package-dependencies))) + (fold-tree-leaves + cons '() + (lambda (node) (vhash-refq dependency-dag node)) + ;; Start with the dependents to avoid including PACKAGES in the result. + (package-direct-dependents packages)))) diff --git a/guix/packages.scm b/guix/packages.scm index 985a573fd3..5c3da9f2ff 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -75,6 +75,7 @@ package-location package-field-location + package-direct-inputs package-transitive-inputs package-transitive-target-inputs package-transitive-native-inputs @@ -484,12 +485,17 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET." ((input rest ...) (loop rest (cons input result)))))) +(define (package-direct-inputs package) + "Return all the direct inputs of PACKAGE---i.e, its direct inputs along +with their propagated inputs." + (append (package-native-inputs package) + (package-inputs package) + (package-propagated-inputs package))) + (define (package-transitive-inputs package) "Return the transitive inputs of PACKAGE---i.e., its direct inputs along with their propagated inputs, recursively." - (transitive-inputs (append (package-native-inputs package) - (package-inputs package) - (package-propagated-inputs package)))) + (transitive-inputs (package-direct-inputs package))) (define (package-transitive-target-inputs package) "Return the transitive target inputs of PACKAGE---i.e., its direct inputs diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm index af7beb748b..17d75b33ca 100644 --- a/guix/scripts/refresh.scm +++ b/guix/scripts/refresh.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Ludovic Courtès ;;; Copyright © 2013 Nikita Karetnikov +;;; Copyright © 2014 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,6 +30,7 @@ #:use-module ((gnu packages base) #:select (%final-inputs)) #:use-module (ice-9 match) #:use-module (ice-9 regex) + #:use-module (ice-9 vlist) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-26) @@ -59,6 +61,9 @@ (x (leave (_ "~a: invalid selection; expected `core' or `non-core'") arg))))) + (option '(#\l "list-dependent") #f #f + (lambda (opt name arg result) + (alist-cons 'list-dependent? #t result))) (option '("key-server") #t #f (lambda (opt name arg result) @@ -96,6 +101,9 @@ specified with `--select'.\n")) (display (_ " -s, --select=SUBSET select all the packages in SUBSET, one of `core' or `non-core'")) + (display (_ " + -l, --list-dependent list top-level dependent packages that would need to + be rebuilt as a result of upgrading PACKAGE...")) (newline) (display (_ " --key-server=HOST use HOST as the OpenPGP key server")) @@ -193,9 +201,10 @@ update would trigger a complete rebuild." ;; XXX: Fails to catch MPFR/MPC, whose *source* is used as input. (member (package-name package) names)))) - (let* ((opts (parse-options)) - (update? (assoc-ref opts 'update?)) - (key-download (assoc-ref opts 'key-download)) + (let* ((opts (parse-options)) + (update? (assoc-ref opts 'update?)) + (list-dependent? (assoc-ref opts 'list-dependent?)) + (key-download (assoc-ref opts 'key-download)) (packages (match (concatenate (filter-map (match-lambda @@ -220,26 +229,48 @@ update would trigger a complete rebuild." (some ; user-specified packages some)))) (with-error-handling - (if update? - (let ((store (open-connection))) - (parameterize ((%openpgp-key-server - (or (assoc-ref opts 'key-server) - (%openpgp-key-server))) - (%gpg-command - (or (assoc-ref opts 'gpg-command) - (%gpg-command)))) - (for-each - (cut update-package store <> #:key-download key-download) - packages))) - (for-each (lambda (package) - (match (false-if-exception (package-update-path package)) - ((new-version . directory) - (let ((loc (or (package-field-location package 'version) - (package-location package)))) - (format (current-error-port) - (_ "~a: ~a would be upgraded from ~a to ~a~%") - (location->string loc) - (package-name package) (package-version package) - new-version))) - (_ #f))) - packages))))) + (cond + (list-dependent? + (let* ((rebuilds (map package-full-name + (package-covering-dependents packages))) + (total-dependents + (length (package-transitive-dependents packages)))) + (if (= total-dependents 0) + (format (current-output-port) + (N_ "No dependents other than itself: ~{~a~}~%" + "No dependents other than themselves: ~{~a~^ ~}~%" + (length packages)) + (map package-full-name packages)) + (format (current-output-port) + (N_ (N_ "A single dependent package: ~2*~{~a~}~%" + "Building the following package would ensure ~d \ +dependent packages are rebuilt; ~*~{~a~^ ~}~%" + total-dependents) + "Building the following ~d packages would ensure ~d \ +dependent packages are rebuilt: ~{~a~^ ~}~%" + (length rebuilds)) + (length rebuilds) total-dependents rebuilds)))) + (update? + (let ((store (open-connection))) + (parameterize ((%openpgp-key-server + (or (assoc-ref opts 'key-server) + (%openpgp-key-server))) + (%gpg-command + (or (assoc-ref opts 'gpg-command) + (%gpg-command)))) + (for-each + (cut update-package store <> #:key-download key-download) + packages)))) + (else + (for-each (lambda (package) + (match (false-if-exception (package-update-path package)) + ((new-version . directory) + (let ((loc (or (package-field-location package 'version) + (package-location package)))) + (format (current-error-port) + (_ "~a: ~a would be upgraded from ~a to ~a~%") + (location->string loc) + (package-name package) (package-version package) + new-version))) + (_ #f))) + packages)))))) -- cgit v1.2.3 From a915ab6a6b726c57f5dd9460a3ce56dc7c82dab7 Mon Sep 17 00:00:00 2001 From: Jason Self Date: Sun, 20 Jul 2014 11:56:59 -0700 Subject: gnu: sudo: Update to 1.8.10p3. * gnu/packages/admin.scm (sudo): Update to version 1.8.10p3. --- gnu/packages/admin.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 6a5968509d..f542f0c87a 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -617,7 +617,7 @@ system administrator.") (define-public sudo (package (name "sudo") - (version "1.8.10p2") + (version "1.8.10p3") (source (origin (method url-fetch) (uri @@ -627,7 +627,7 @@ system administrator.") version ".tar.gz"))) (sha256 (base32 - "1wbrygz584abmywklq0b4xhqn3s1bjk3rrladslr5nycdpdvhv5s")))) + "002l6h27pnhb77b65frhazbhknsxvrsnkpi43j7i0qw1lrgi7nkf")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--with-logpath=/var/log/sudo.log") -- cgit v1.2.3 From 7e81a45513306a6c49001f8963a7c6874fd738cf Mon Sep 17 00:00:00 2001 From: Jason Self Date: Sun, 20 Jul 2014 11:59:09 -0700 Subject: gnu: wpa-supplicant: Update to 2.2. * gnu/packages/admin.scm (wpa-supplicant): Update to version 2.2. --- gnu/packages/admin.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index f542f0c87a..f6232abafa 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -668,7 +668,7 @@ commands and their arguments.") (define-public wpa-supplicant (package (name "wpa-supplicant") - (version "2.1") + (version "2.2") (source (origin (method url-fetch) (uri (string-append @@ -677,7 +677,7 @@ commands and their arguments.") ".tar.gz")) (sha256 (base32 - "0xxjw7lslvql1ykfbwmbhdrnjsjljf59fbwf837418s97dz2wqwi")))) + "1vf8jc4yyksbxf86narvsli3vxfbm8nbnim2mdp66nd6d3yvin70")))) (build-system gnu-build-system) (arguments '(#:phases (alist-replace -- cgit v1.2.3 From fcbf703efa575d0b791325c4e219fd11b07ac6c6 Mon Sep 17 00:00:00 2001 From: Jason Self Date: Sun, 20 Jul 2014 13:37:02 -0700 Subject: gnu: ffmpeg: Remove --disable-vis. * gnu/packages/video.scm (ffmpeg): Remove --disable-vis. --- gnu/packages/video.scm | 1 - 1 file changed, 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 075113ca9d..8850543c1d 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -193,7 +193,6 @@ "--disable-armv6t2" "--disable-vfp" "--disable-neon" - "--disable-vis" "--disable-mips32r2" "--disable-mipsdspr1" "--disable-mipsdspr2" -- cgit v1.2.3 From 1b09031f786238b21ab10ba4c3e384ab194735df Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 21 Jul 2014 21:07:00 +0200 Subject: services: Allow 'check-file-system' to work for non-boot-time file systems. * gnu/services/base.scm (file-system-service)[start]: Set $PATH so that fsck.* can be found. Reported by "DusXMT". --- gnu/services/base.scm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 55ee5c4b08..ae12c8e93d 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -25,7 +25,7 @@ #:use-module (gnu system linux) ; 'pam-service', etc. #:use-module (gnu packages admin) #:use-module ((gnu packages linux) - #:select (udev kbd)) + #:select (udev kbd e2fsprogs)) #:use-module ((gnu packages base) #:select (glibc-final)) #:use-module (gnu packages package-management) @@ -110,7 +110,14 @@ true, check the file system before mounting it." (start #~(lambda args (let ((device (canonicalize-device-spec #$device '#$title))) #$(if check? - #~(check-file-system device #$type) + #~(begin + ;; Make sure fsck.ext2 & co. can be found. + (setenv "PATH" + (string-append + #$e2fsprogs "/sbin:" + "/run/current-system/profile/sbin:" + (getenv "PATH"))) + (check-file-system device #$type)) #~#t) (mount device #$target #$type 0 #$options)) #t)) -- cgit v1.2.3 From a69576ea858863574252cbefbcef91db98773d60 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 22 Jul 2014 16:57:57 +0200 Subject: system: Add '%devtmpfs-file-system' for udev, and '%base-file-systems'. Suggested by Adam Pribyl . * gnu/services/base.scm (udev-service)[requirement]: Add 'file-system-/dev'. * gnu/system/file-systems.scm (%devtmpfs-file-system, %base-file-systems): New variables. * gnu/system/install.scm (installation-services)[file-systems]: Use %base-file-systems. * build-aux/hydra/demo-os.scm (file-systems): Likewise. * doc/guix.texi (System Installation): Show %BASE-FILE-SYSTEMS in the example. (Using the Configuration System): Likewise. (File Systems): Document %base-file-systems, %devtmpfs-file-system, %binary-format-file-system, and %fuse-control-file-system. --- build-aux/hydra/demo-os.scm | 14 +++++++------- doc/guix.texi | 37 +++++++++++++++++++++++++++++++++---- gnu/services/base.scm | 9 +++++++-- gnu/system/file-systems.scm | 18 +++++++++++++++++- gnu/system/install.scm | 5 +++-- 5 files changed, 67 insertions(+), 16 deletions(-) (limited to 'gnu') diff --git a/build-aux/hydra/demo-os.scm b/build-aux/hydra/demo-os.scm index 89b67aabe3..9164500d70 100644 --- a/build-aux/hydra/demo-os.scm +++ b/build-aux/hydra/demo-os.scm @@ -44,13 +44,13 @@ (file-systems ;; We provide a dummy file system for /, but that's OK because the VM build ;; code will automatically declare the / file system for us. - (list (file-system - (mount-point "/") - (device "dummy") - (type "dummy")) - ;; %fuse-control-file-system ; needs fuse.ko - ;; %binary-format-file-system ; needs binfmt.ko - )) + (cons* (file-system + (mount-point "/") + (device "dummy") + (type "dummy")) + ;; %fuse-control-file-system ; needs fuse.ko + ;; %binary-format-file-system ; needs binfmt.ko + %base-file-systems)) (users (list (user-account (name "guest") diff --git a/doc/guix.texi b/doc/guix.texi index fb6f897bb2..2b05a75be4 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2826,10 +2826,11 @@ only a root account would look like this: ;; Assuming /dev/sdX is the target hard disk, and /dev/sdX1 the ;; target root file system. (bootloader (grub-configuration (device "/dev/sdX"))) - (file-systems (list (file-system + (file-systems (cons (file-system (device "/dev/sdX1") (mount-point "/") - (type "ext4"))))) + (type "ext4")) + %base-file-systems))) @end example @noindent @@ -2925,10 +2926,11 @@ kernel, initial RAM disk, and boot loader looks like this: (locale "fr_FR.UTF-8") (bootloader (grub-configuration (device "/dev/sda"))) - (file-systems (list (file-system + (file-systems (cons (file-system (device "/dev/sda1") ; or partition label (mount-point "/") - (type "ext3")))) + (type "ext3")) + %base-file-systems)) (users (list (user-account (name "alice") (password "") @@ -3055,6 +3057,32 @@ errors before being mounted. @end table @end deftp +The @code{(gnu system file-systems)} exports the following useful +variables. + +@defvr {Scheme Variable} %base-file-systems +These are essential file systems that are required on normal systems, +such as @var{%devtmpfs-file-system} (see below.) Operating system +declarations should always contain at least these. +@end defvr + +@defvr {Scheme Variable} %devtmpfs-file-system +The @code{devtmpfs} file system to be mounted on @file{/dev}. This is a +requirement for udev (@pxref{Base Services, @code{udev-service}}). +@end defvr + +@defvr {Scheme Variable} %binary-format-file-system +The @code{binfmt_misc} file system, which allows handling of arbitrary +executable file types to be delegated to user space. This requires the +@code{binfmt.ko} kernel module to be loaded. +@end defvr + +@defvr {Scheme Variable} %fuse-control-file-system +The @code{fusectl} file system, which allows unprivileged users to mount +and unmount user-space FUSE file systems. This requires the +@code{fuse.ko} kernel module to be loaded. +@end defvr + @node User Accounts @subsection User Accounts @@ -3245,6 +3273,7 @@ passed to @command{guix-daemon}. Run @var{udev}, which populates the @file{/dev} directory dynamically. @end deffn + @node Networking Services @subsubsection Networking Services diff --git a/gnu/services/base.scm b/gnu/services/base.scm index ae12c8e93d..42e232c9ac 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -473,8 +473,13 @@ passed to @command{guix-daemon}." (with-monad %store-monad (return (service (provision '(udev)) - (requirement '(root-file-system)) - (documentation "Populate the /dev directory.") + + ;; Udev needs /dev to be a 'devtmpfs' mount so that new device + ;; nodes can be added: see + ;; . + (requirement '(root-file-system file-system-/dev)) + + (documentation "Populate the /dev directory, dynamically.") (start #~(lambda () (define udevd (string-append #$udev "/libexec/udev/udevd")) diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index 7852a6ab26..0c2021d7b4 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -30,7 +30,10 @@ file-system-options %fuse-control-file-system - %binary-format-file-system)) + %binary-format-file-system + %devtmpfs-file-system + + %base-file-systems)) ;;; Commentary: ;;; @@ -72,4 +75,17 @@ (type "binfmt_misc") (check? #f))) +(define %devtmpfs-file-system + ;; /dev as a 'devtmpfs' file system, needed for udev. + (file-system + (device "none") + (mount-point "/dev") + (type "devtmpfs") + (check? #f))) + +(define %base-file-systems + ;; List of basic file systems to be mounted. Note that /proc and /sys are + ;; currently mounted by the initrd. + (list %devtmpfs-file-system)) + ;;; file-systems.scm ends here diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 18fd587ead..d4a32609ba 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -117,10 +117,11 @@ Use Alt-F2 for documentation. (file-systems ;; Note: the disk image build code overrides this root file system with ;; the appropriate one. - (list (file-system + (cons (file-system (mount-point "/") (device "gnu-disk-image") - (type "ext4")))) + (type "ext4")) + %base-file-systems)) (users (list (user-account (name "guest") -- cgit v1.2.3 From 4e469051a77d02435eafb1df93224a2ce1bb3146 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 22 Jul 2014 22:53:36 +0200 Subject: system: Add 'create-mount-point?' file system option. * gnu/system/file-systems.scm ()[create-mount-point?]: New field. * gnu/services/base.scm (file-system-service): Add #:create-mount-point? parameter and honor it. * gnu/system.scm (other-file-system-services): Update 'file-system-service' call accordingly. * doc/guix.texi (File Systems): Document it. --- doc/guix.texi | 3 +++ gnu/services/base.scm | 9 +++++++-- gnu/system.scm | 3 ++- gnu/system/file-systems.scm | 6 +++++- 4 files changed, 17 insertions(+), 4 deletions(-) (limited to 'gnu') diff --git a/doc/guix.texi b/doc/guix.texi index 2b05a75be4..a88b546380 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3054,6 +3054,9 @@ instance, for the root file system. This Boolean indicates whether the file system needs to be checked for errors before being mounted. +@item @code{create-mount-point?} (default: @code{#f}) +When true, the mount point is created if it does not exist yet. + @end table @end deftp diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 42e232c9ac..9a67109db0 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -96,11 +96,13 @@ 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 (title 'any)) + #:key (check? #t) create-mount-point? + options (title 'any)) "Return a service that mounts DEVICE on TARGET as a file system TYPE with 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." +true, check the file system before mounting it. When CREATE-MOUNT-POINT? is +true, create TARGET if it does not exist yet." (with-monad %store-monad (return (service @@ -109,6 +111,9 @@ true, check the file system before mounting it." (documentation "Check, mount, and unmount the given file system.") (start #~(lambda args (let ((device (canonicalize-device-spec #$device '#$title))) + #$(if create-mount-point? + #~(mkdir-p #$target) + #~#t) #$(if check? #~(begin ;; Make sure fsck.ext2 & co. can be found. diff --git a/gnu/system.scm b/gnu/system.scm index 20942ec7f0..8c6fc13059 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -181,10 +181,11 @@ as 'needed-for-boot'." (sequence %store-monad (map (match-lambda (($ device title target type flags opts - #f check?) + #f check? create?) (file-system-service device target type #:title title #:check? check? + #:create-mount-point? create? #:options opts))) file-systems))) diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index 0c2021d7b4..ea8d961317 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -28,6 +28,8 @@ file-system-needed-for-boot? file-system-flags file-system-options + file-system-check? + file-system-create-mount-point? %fuse-control-file-system %binary-format-file-system @@ -57,7 +59,9 @@ (needed-for-boot? file-system-needed-for-boot? ; Boolean (default #f)) (check? file-system-check? ; Boolean - (default #t))) + (default #t)) + (create-mount-point? file-system-create-mount-point? ; Boolean + (default #f))) (define %fuse-control-file-system ;; Control file system for Linux' file systems in user-space (FUSE). -- cgit v1.2.3 From 7f239fd33ff7bf2f1ec48de37f14479699d4096f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 22 Jul 2014 23:13:53 +0200 Subject: system: Add 'file-system' decl. for /dev/pts, and use the right options. Fixes . * gnu/system/file-systems.scm (%devtmpfs-file-system): Add 'needed-for-boot?' field. (%tty-gid, %pseudo-terminal-file-system): New variables. (%base-file-systems): Add %PSEUDO-TERMINAL-FILE-SYSTEM. * gnu/services/base.scm (udev-service): Remove dependency on 'file-system-/dev'. * gnu/system/shadow.scm (%base-groups): Add 'id' field for group 'tty'. * guix/build/linux-initrd.scm (boot-system): Remove 'mount' call for /dev/pts. * doc/guix.texi (File Systems): Add %pseudo-terminal-file-system. --- doc/guix.texi | 8 ++++++++ gnu/services/base.scm | 2 +- gnu/system/file-systems.scm | 26 ++++++++++++++++++++++++-- gnu/system/shadow.scm | 4 +++- guix/build/linux-initrd.scm | 5 ----- 5 files changed, 36 insertions(+), 9 deletions(-) (limited to 'gnu') diff --git a/doc/guix.texi b/doc/guix.texi index a88b546380..4490ff1deb 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3074,6 +3074,14 @@ The @code{devtmpfs} file system to be mounted on @file{/dev}. This is a requirement for udev (@pxref{Base Services, @code{udev-service}}). @end defvr +@defvr {Scheme Variable} %pseudo-terminal-file-system +This is the file system to be mounted as @file{/dev/pts}. It supports +@dfn{pseudo-terminals} created @i{via} @code{openpty} and similar +functions (@pxref{Pseudo-Terminals,,, libc, The GNU C Library Reference +Manual}). Pseudo-terminals are used by terminal emulators such as +@command{xterm}. +@end defvr + @defvr {Scheme Variable} %binary-format-file-system The @code{binfmt_misc} file system, which allows handling of arbitrary executable file types to be delegated to user space. This requires the diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 9a67109db0..2c9054af48 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -482,7 +482,7 @@ passed to @command{guix-daemon}." ;; Udev needs /dev to be a 'devtmpfs' mount so that new device ;; nodes can be added: see ;; . - (requirement '(root-file-system file-system-/dev)) + (requirement '(root-file-system)) (documentation "Populate the /dev directory, dynamically.") (start #~(lambda () diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index ea8d961317..76460d95af 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -85,11 +85,33 @@ (device "none") (mount-point "/dev") (type "devtmpfs") - (check? #f))) + (check? #f) + + ;; Mount it from the initrd so /dev/pts & co. can then be mounted over it. + (needed-for-boot? #t))) + +(define %tty-gid + ;; ID of the 'tty' group. Allocate it statically to make it easy to refer + ;; to it from here and from the 'tty' group definitions. + 1004) + +(define %pseudo-terminal-file-system + ;; The pseudo-terminal file system. It needs to be mounted so that + ;; statfs(2) returns DEVPTS_SUPER_MAGIC like libc's getpt(3) expects (and + ;; thus openpty(3) and its users, such as xterm.) + (file-system + (device "none") + (mount-point "/dev/pts") + (type "devpts") + (check? #f) + (needed-for-boot? #f) + (create-mount-point? #t) + (options (string-append "gid=" (number->string %tty-gid) ",mode=620")))) (define %base-file-systems ;; List of basic file systems to be mounted. Note that /proc and /sys are ;; currently mounted by the initrd. - (list %devtmpfs-file-system)) + (list %devtmpfs-file-system + %pseudo-terminal-file-system)) ;;; file-systems.scm ends here diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm index ae6eac9a5b..e29dbb8c3e 100644 --- a/gnu/system/shadow.scm +++ b/gnu/system/shadow.scm @@ -20,6 +20,8 @@ #:use-module (guix records) #:use-module (guix gexp) #:use-module (guix monads) + #:use-module ((gnu system file-systems) + #:select (%tty-gid)) #:use-module ((gnu packages admin) #:select (shadow)) #:use-module (gnu packages bash) @@ -84,7 +86,7 @@ ;; The following groups are conventionally used by things like udev to ;; control access to hardware devices. - (user-group (name "tty")) + (user-group (name "tty") (id %tty-gid)) (user-group (name "dialout")) (user-group (name "kmem")) (user-group (name "video")) diff --git a/guix/build/linux-initrd.scm b/guix/build/linux-initrd.scm index abf86f6a77..08df32ad1e 100644 --- a/guix/build/linux-initrd.scm +++ b/guix/build/linux-initrd.scm @@ -670,11 +670,6 @@ to it are lost." (switch-root "/root") (format #t "loading '~a'...\n" to-load) - ;; Obviously this has to be done each time we boot. Do it from here - ;; so that statfs(2) returns DEVPTS_SUPER_MAGIC like libc's getpt(3) - ;; expects (and thus openpty(3) and its users, such as xterm.) - (mount "none" "/dev/pts" "devpts") - ;; TODO: Remove /lib, /share, and /loader.go. (primitive-load to-load) -- cgit v1.2.3 From 2c071ce96e7e4049be3ae2eb958077566d3b4ea0 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 23 Jul 2014 00:44:27 +0200 Subject: system: Recognize more file system flags. * guix/build/linux-initrd.scm (MS_NOSUID, MS_NODEV, MS_NOEXEC): New variables. (mount-flags->bit-mask): New procedure. (mount-file-system)[flags->bit-mask]: Remove. Use 'mount-flags->bit-mask' instead. In /etc/mtab, use the empty string when OPTIONS is false. * gnu/services/base.scm (file-system-service): Add #:flags parameter and honor it. * gnu/system.scm (other-file-system-services): Pass FLAGS to 'file-system-service'. --- doc/guix.texi | 4 +++- gnu/services/base.scm | 13 +++++++++---- gnu/system.scm | 3 ++- guix/build/linux-initrd.scm | 35 ++++++++++++++++++++++++----------- 4 files changed, 38 insertions(+), 17 deletions(-) (limited to 'gnu') diff --git a/doc/guix.texi b/doc/guix.texi index f475a172fe..42e62d4648 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3039,7 +3039,9 @@ partitions without having to hard-code their actual device name. @item @code{flags} (default: @code{'()}) This is a list of symbols denoting mount flags. Recognized flags -include @code{read-only} and @code{bind-mount}. +include @code{read-only}, @code{bind-mount}, @code{no-dev} (disallow +access to special files), @code{no-suid} (ignore setuid and setgid +bits), and @code{no-exec} (disallow program execution.) @item @code{options} (default: @code{#f}) This is either @code{#f}, or a string denoting mount options. diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 2c9054af48..342b3c1488 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -29,6 +29,8 @@ #:use-module ((gnu packages base) #:select (glibc-final)) #:use-module (gnu packages package-management) + #:use-module ((guix build linux-initrd) + #:select (mount-flags->bit-mask)) #:use-module (guix gexp) #:use-module (guix monads) #:use-module (srfi srfi-1) @@ -96,13 +98,14 @@ 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) create-mount-point? - options (title 'any)) + #:key (flags '()) (check? #t) + create-mount-point? options (title 'any)) "Return a service that mounts DEVICE on TARGET as a file system TYPE with 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. When CREATE-MOUNT-POINT? is -true, create TARGET if it does not exist yet." +true, create TARGET if it does not exist yet. FLAGS is a list of symbols, +such as 'read-only' etc." (with-monad %store-monad (return (service @@ -124,7 +127,9 @@ true, create TARGET if it does not exist yet." (getenv "PATH"))) (check-file-system device #$type)) #~#t) - (mount device #$target #$type 0 #$options)) + (mount device #$target #$type + #$(mount-flags->bit-mask flags) + #$options)) #t)) (stop #~(lambda args ;; Normally there are no processes left at this point, so diff --git a/gnu/system.scm b/gnu/system.scm index 8c6fc13059..4648d810a3 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -186,7 +186,8 @@ as 'needed-for-boot'." #:title title #:check? check? #:create-mount-point? create? - #:options opts))) + #:options opts + #:flags flags))) file-systems))) (define (essential-services os) diff --git a/guix/build/linux-initrd.scm b/guix/build/linux-initrd.scm index 08df32ad1e..662f7967e3 100644 --- a/guix/build/linux-initrd.scm +++ b/guix/build/linux-initrd.scm @@ -40,6 +40,7 @@ find-partition-by-label canonicalize-device-spec + mount-flags->bit-mask check-file-system mount-file-system bind-mount @@ -393,6 +394,9 @@ networking values.) Return #t if INTERFACE is up, #f otherwise." ;; Linux mount flags, from libc's . (define MS_RDONLY 1) +(define MS_NOSUID 2) +(define MS_NODEV 4) +(define MS_NOEXEC 8) (define MS_BIND 4096) (define MS_MOVE 8192) @@ -494,6 +498,24 @@ UNIONFS." fsck code device) (start-repl))))) +(define (mount-flags->bit-mask flags) + "Return the number suitable for the 'flags' argument of 'mount' that +corresponds to the symbols listed in FLAGS." + (let loop ((flags flags)) + (match flags + (('read-only rest ...) + (logior MS_RDONLY (loop rest))) + (('bind-mount rest ...) + (logior MS_BIND (loop rest))) + (('no-suid rest ...) + (logior MS_NOSUID (loop rest))) + (('no-dev rest ...) + (logior MS_NODEV (loop rest))) + (('no-exec rest ...) + (logior MS_NOEXEC (loop rest))) + (() + 0)))) + (define* (mount-file-system spec #:key (root "/root")) "Mount the file system described by SPEC under ROOT. SPEC must have the form: @@ -503,15 +525,6 @@ form: 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 run a file system check." - (define flags->bit-mask - (match-lambda - (('read-only rest ...) - (or MS_RDONLY (flags->bit-mask rest))) - (('bind-mount rest ...) - (or MS_BIND (flags->bit-mask rest))) - (() - 0))) - (match spec ((source title mount-point type (flags ...) options check?) (let ((source (canonicalize-device-spec source title)) @@ -519,7 +532,7 @@ run a file system check." (when check? (check-file-system source type)) (mkdir-p mount-point) - (mount source mount-point type (flags->bit-mask flags) + (mount source mount-point type (mount-flags->bit-mask flags) (if options (string->pointer options) %null-pointer)) @@ -528,7 +541,7 @@ run a file system check." (mkdir-p (string-append root "/etc")) (let ((port (open-file (string-append root "/etc/mtab") "a"))) (format port "~a ~a ~a ~a 0 0~%" - source mount-point type options) + source mount-point type (or options "")) (close-port port)))))) (define (switch-root root) -- cgit v1.2.3 From db17ae5c27c614731b849cc4acc6a2857060c771 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 23 Jul 2014 01:25:01 +0200 Subject: system: Add /dev/shm. * gnu/system/file-systems.scm (%shared-memory-file-system): New variable. (%base-file-systems): Add it. * doc/guix.texi (File Systems): Document it. --- doc/guix.texi | 6 ++++++ gnu/system/file-systems.scm | 14 +++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/doc/guix.texi b/doc/guix.texi index 42e62d4648..7bc10dc566 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3084,6 +3084,12 @@ Manual}). Pseudo-terminals are used by terminal emulators such as @command{xterm}. @end defvr +@defvr {Scheme Variable} %shared-memory-file-system +This file system is mounted as @file{/dev/shm} and is used to support +memory sharing across processes (@pxref{Memory-mapped I/O, +@code{shm_open},, libc, The GNU C Library Reference Manual}). +@end defvr + @defvr {Scheme Variable} %binary-format-file-system The @code{binfmt_misc} file system, which allows handling of arbitrary executable file types to be delegated to user space. This requires the diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index 76460d95af..8700530a76 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -108,10 +108,22 @@ (create-mount-point? #t) (options (string-append "gid=" (number->string %tty-gid) ",mode=620")))) +(define %shared-memory-file-system + ;; Shared memory. + (file-system + (device "tmpfs") + (mount-point "/dev/shm") + (type "tmpfs") + (check? #f) + (flags '(no-suid no-dev)) + (options "size=50%") ;TODO: make size configurable + (create-mount-point? #t))) + (define %base-file-systems ;; List of basic file systems to be mounted. Note that /proc and /sys are ;; currently mounted by the initrd. (list %devtmpfs-file-system - %pseudo-terminal-file-system)) + %pseudo-terminal-file-system + %shared-memory-file-system)) ;;; file-systems.scm ends here -- cgit v1.2.3 From 705f8b68f1b2305e265575fdc295e1900586599e Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 23 Jul 2014 02:13:34 -0400 Subject: system: Add missing exports to (gnu system file-systems). * gnu/system/file-systems.scm (%pseudo-terminal-file-system) (%shared-memory-file-system): Add to export list. --- gnu/system/file-systems.scm | 2 ++ 1 file changed, 2 insertions(+) (limited to 'gnu') diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index 8700530a76..3b13d820cf 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -33,6 +33,8 @@ %fuse-control-file-system %binary-format-file-system + %shared-memory-file-system + %pseudo-terminal-file-system %devtmpfs-file-system %base-file-systems)) -- cgit v1.2.3 From 5383fb5bd4bec0b74b9cc9522b0906dec52cf1ab Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Wed, 23 Jul 2014 16:46:05 +0200 Subject: gnu: pari-gp: Upgrade to 2.7.1. * gnu/packages/algebra.scm (pari-gp): Upgrade to 2.7.1. --- gnu/packages/algebra.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index 9ed978536d..8c12eb604e 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -84,14 +84,14 @@ solve the shortest vector problem.") (define-public pari-gp (package (name "pari-gp") - (version "2.7.0") + (version "2.7.1") (source (origin (method url-fetch) (uri (string-append "http://pari.math.u-bordeaux.fr/pub/pari/unix/pari-" version ".tar.gz")) (sha256 (base32 - "1hk7lmq09crr9jvia8nxzhvbwf8mw62xk456i96jg8dljh0r9sgz")))) + "1gj1rddi22hinzwy7r6hljgbi252wwwyd6gapg4hvcn0ycc7jqyc")))) (build-system gnu-build-system) (inputs `(("gmp" ,gmp) ("perl" ,perl) -- cgit v1.2.3 From 83a17b62363c85f05a0916e9b7493d9d58ce7196 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 22 Jul 2014 22:12:05 +0200 Subject: install: Add a service to back the store with the target disk. Fixes . Reported by Adam Pribyl . * gnu/services/dmd.scm (dmd-configuration-file)[config]: Import (guix build utils). * gnu/system/install.scm (make-cow-store, cow-store-service): New procedures. (installation-services): Use it. (%backing-directory): New variable. * doc/guix.texi (System Installation): Add the 'deco start cow-store /mnt' phase. --- doc/guix.texi | 11 +++++++- gnu/services/dmd.scm | 1 + gnu/system/install.scm | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/doc/guix.texi b/doc/guix.texi index 7bc10dc566..6266f70194 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2799,9 +2799,18 @@ The installation image includes Parted (@pxref{Overview,,, parted, GNU Parted User Manual}), @command{fdisk}, and e2fsprogs, the suite of tools to manipulate ext2/ext3/ext4 file systems. +@item +Once that is done, mount the target root partition under @file{/mnt}. + +@item +Lastly, run @code{deco start cow-store /mnt}. + +This will make @file{/gnu/store} copy-on-write, such that packages added +to it during the installation phase will be written to the target disk +rather than kept in memory. + @end enumerate -Once that is done, mount the target root partition under @file{/mnt}. @subsection Proceeding with the Installation diff --git a/gnu/services/dmd.scm b/gnu/services/dmd.scm index 74adb27885..dfda2708f5 100644 --- a/gnu/services/dmd.scm +++ b/gnu/services/dmd.scm @@ -49,6 +49,7 @@ (use-modules (ice-9 ftw) (guix build syscalls) + (guix build utils) ((guix build linux-initrd) #:select (check-file-system canonicalize-device-spec))) diff --git a/gnu/system/install.scm b/gnu/system/install.scm index d4a32609ba..d3539b3f84 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -20,6 +20,7 @@ #:use-module (gnu) #:use-module (guix gexp) #:use-module (guix monads) + #:use-module ((guix store) #:select (%store-prefix)) #:use-module (gnu packages linux) #:use-module (gnu packages package-management) #:use-module (gnu packages disk) @@ -42,6 +43,78 @@ manual." "-f" (string-append #$guix "/share/info/guix.info") "-n" "System Installation"))) +(define %backing-directory + ;; Sub-directory used as the backing store for copy-on-write. + "/tmp/guix-inst") + +(define (make-cow-store target) + "Return a gexp that makes the store copy-on-write, using TARGET as the +backing store. This is useful when TARGET is on a hard disk, whereas the +current store is on a RAM disk." + (define (unionfs read-only read-write mount-point) + ;; Make MOUNT-POINT the union of READ-ONLY and READ-WRITE. + + ;; Note: in the command below, READ-WRITE appears before READ-ONLY so that + ;; it is considered a "higher-level branch", as per unionfs-fuse(8), + ;; thereby allowing files existing on READ-ONLY to be copied over to + ;; READ-WRITE. + #~(fork+exec-command + (list (string-append #$unionfs-fuse "/bin/unionfs") + "-o" + "cow,allow_other,use_ino,max_files=65536,nonempty" + (string-append #$read-write "=RW:" #$read-only "=RO") + #$mount-point))) + + (define (set-store-permissions directory) + ;; Set the right perms on DIRECTORY to use it as the store. + #~(begin + (chown #$directory 0 30000) ;use the fixed 'guixbuild' GID + (chmod #$directory #o1775))) + + #~(begin + (unless (file-exists? "/.ro-store") + (mkdir "/.ro-store") + (mount #$(%store-prefix) "/.ro-store" "none" + (logior MS_BIND MS_RDONLY))) + + (let ((rw-dir (string-append target #$%backing-directory))) + (mkdir-p rw-dir) + (mkdir-p "/.rw-store") + #$(set-store-permissions #~rw-dir) + #$(set-store-permissions "/.rw-store") + + ;; Mount the union, then atomically make it the store. + (and #$(unionfs "/.ro-store" #~rw-dir "/.rw-store") + (begin + (sleep 1) ;XXX: wait for unionfs to be ready + (mount "/.rw-store" #$(%store-prefix) "" MS_MOVE) + (rmdir "/.rw-store")))))) + +(define (cow-store-service) + "Return a service that makes the store copy-on-write, such that writes go to +the user's target storage device rather than on the RAM disk." + ;; See for the initial report. + (with-monad %store-monad + (return (service + (requirement '(root-file-system user-processes)) + (provision '(cow-store)) + (documentation + "Make the store copy-on-write, with writes going to \ +the given target.") + (start #~(case-lambda + ((target) + #$(make-cow-store #~target) + target) + (else + ;; Do nothing, and mark the service as stopped. + #f))) + (stop #~(lambda (target) + ;; Delete the temporary directory, but leave everything + ;; mounted as there may still be processes using it + ;; since 'user-processes' doesn't depend on us. + (delete-file-recursively + (string-append target #$%backing-directory)))))))) + (define (installation-services) "Return the list services for the installation image." (let ((motd (text-file "motd" " @@ -88,6 +161,10 @@ You have been warned. Thanks for being so brave. ;; Start udev so that useful device nodes are available. (udev-service) + ;; Add the 'cow-store' service, which users have to start manually + ;; since it takes the installation directory as an argument. + (cow-store-service) + ;; Install Unicode support and a suitable font. (console-font-service "tty1") (console-font-service "tty2") -- cgit v1.2.3 From 742160428e3acde63c704e668542ae9b1a7c404b Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Wed, 23 Jul 2014 17:58:34 +0200 Subject: gnu: dvdisaster: Upgrade to 0.72.6. * gnu/packages/cdrom.scm (dvdisaster): Upgrade to 0.72.6. --- gnu/packages/cdrom.scm | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm index e520312164..b4b20ffba5 100644 --- a/gnu/packages/cdrom.scm +++ b/gnu/packages/cdrom.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014 Ludovic Courtès -;;; Copyright © 2013 Andreas Enge +;;; Copyright © 2013, 2014 Andreas Enge ;;; ;;; This file is part of GNU Guix. ;;; @@ -173,14 +173,14 @@ reconstruction capability.") (define-public dvdisaster (package (name "dvdisaster") - (version "0.72.4") + (version "0.72.6") (source (origin (method url-fetch) (uri (string-append "http://dvdisaster.net/downloads/dvdisaster-" version ".tar.bz2")) (sha256 (base32 - "0pm039a78h7m9vvjmmjfkl05ii6qdmfhvbypxjbc7j5w82y66is4")))) + "0sqrprc5rh3shnfli25m2wy0i5f83db54iv04s5s7bxf77m7sy79")))) (build-system gnu-build-system) (inputs `(("gtk+" ,gtk+-2))) @@ -192,7 +192,14 @@ reconstruction capability.") `(;; Parallel builds appear to be unsafe, see ;; . #:parallel-build? #f - #:tests? #f)) ; no check target + #:tests? #f ; no check target + #:phases + (alist-cons-before + 'patch-source-shebangs 'sanitise + (lambda _ + ;; delete dangling symlink + (delete-file ".#GNUmakefile")) + %standard-phases))) (home-page "http://dvdisaster.net/en/index.html") (synopsis "error correcting codes for optical media images") (description "Optical media (CD,DVD,BD) keep their data only for a -- cgit v1.2.3 From 906f70406ab6a44d6fadb5d22c43d86e4944da78 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 23 Jul 2014 18:51:07 +0200 Subject: gnu: module-init-tools: Handle $LINUX_MODULE_DIRECTORY without trailing slash. Fixes . * gnu/packages/patches/module-init-tools-moduledir.patch: Adjust to deal with the lack of a trailing slash. --- .../patches/module-init-tools-moduledir.patch | 40 +++++++++++----------- 1 file changed, 20 insertions(+), 20 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/patches/module-init-tools-moduledir.patch b/gnu/packages/patches/module-init-tools-moduledir.patch index 68d7988f53..7a40a03b04 100644 --- a/gnu/packages/patches/module-init-tools-moduledir.patch +++ b/gnu/packages/patches/module-init-tools-moduledir.patch @@ -2,17 +2,11 @@ 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 +Original patch by David Guibert, from Nixpkgs; adjusted to use +'LINUX_MODULE_DIRECTORY' rather than 'MODULE_DIR' as the variable name. diff --git a/depmod.c b/depmod.c -index a1d2f8c..9362a35 100644 +index a1d2f8c..a8f92b2 100644 --- a/depmod.c +++ b/depmod.c @@ -48,9 +48,6 @@ @@ -38,26 +32,30 @@ index a1d2f8c..9362a35 100644 } + if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) { -+ module_dir = "/lib/modules/"; ++ 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, +@@ -1549,8 +1551,8 @@ static int parse_config_file(const char *filename, + 0, *search); continue; } - nofail_asprintf(&dirname, "%s%s%s/%s", basedir, +- nofail_asprintf(&dirname, "%s%s%s/%s", basedir, - MODULE_DIR, kernelversion, search_path); ++ nofail_asprintf(&dirname, "%s%s/%s/%s", basedir, + 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, +@@ -1564,8 +1566,8 @@ static int parse_config_file(const char *filename, + if (!regex_match(kernelversion, (const char *)version)) continue; - nofail_asprintf(&pathname, "%s%s%s/%s/%s.ko", basedir, +- nofail_asprintf(&pathname, "%s%s%s/%s/%s.ko", basedir, - MODULE_DIR, kernelversion, subdir, modname); ++ nofail_asprintf(&pathname, "%s%s/%s/%s/%s.ko", basedir, + module_dir, kernelversion, subdir, modname); *overrides = add_override(pathname, *overrides); @@ -76,24 +74,26 @@ index a1d2f8c..9362a35 100644 - nofail_asprintf(&dirname, "%s%s%s", basedir, MODULE_DIR, version); + if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) { -+ module_dir = "/lib/modules/"; ++ 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[]) +@@ -1849,8 +1856,8 @@ int main(int argc, char *argv[]) + char *dirname; size_t len; - nofail_asprintf(&dirname, "%s%s%s/updates", basedir, +- nofail_asprintf(&dirname, "%s%s%s/updates", basedir, - MODULE_DIR, version); ++ nofail_asprintf(&dirname, "%s%s/%s/updates", basedir, + module_dir, version); len = strlen(dirname); search = add_search(dirname, len, search); } diff --git a/modinfo.c b/modinfo.c -index 1dd8469..67b1041 100644 +index 1dd8469..6a1865b 100644 --- a/modinfo.c +++ b/modinfo.c @@ -19,9 +19,6 @@ @@ -113,7 +113,7 @@ index 1dd8469..67b1041 100644 + char *module_dir; + + if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) { -+ module_dir = "/lib/modules/"; ++ module_dir = "/lib/modules"; + } if (strchr(name, '.') || strchr(name, '/')) { @@ -131,7 +131,7 @@ index 1dd8469..67b1041 100644 /* 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 +index 5464f45..cb57917 100644 --- a/modprobe.c +++ b/modprobe.c @@ -86,10 +86,6 @@ typedef enum -- cgit v1.2.3 From 4a8b4c25b07eedd1427d8c33c01d0c7d6a0f17b5 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 23 Jul 2014 19:09:27 +0200 Subject: gnu: kmod: Install symlinks for 'insmod', 'modprobe', etc. * gnu/packages/linux.scm (kmod)[arguments]: Add 'install-modprobe&co' phase. --- gnu/packages/linux.scm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 09d123a08d..3ffe2a4cdd 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -1273,7 +1273,18 @@ to use Linux' inotify mechanism, which allows file accesses to be monitored.") ("zlib" ,guix:zlib))) (arguments `(#:tests? #f ; FIXME: Investigate test failures - #:configure-flags '("--with-xz" "--with-zlib"))) + #:configure-flags '("--with-xz" "--with-zlib") + #:phases (alist-cons-after + 'install 'install-modprobe&co + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (for-each (lambda (tool) + (symlink "kmod" + (string-append bin "/" tool))) + '("insmod" "rmmod" "lsmod" "modprobe" + "modinfo" "depmod")))) + %standard-phases))) (home-page "https://www.kernel.org/") (synopsis "Kernel module tools") (description "kmod is a set of tools to handle common tasks with Linux -- cgit v1.2.3 From 94b13427d766b030b02b2df6a291525335f2d08d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 23 Jul 2014 22:27:17 +0200 Subject: gnu: module-init-tools: Fix $LINUX_MODULE_DIRECTORY handling in 'depmod'. * gnu/packages/patches/module-init-tools-moduledir.patch: Adjust the 'depmod' part to handle $LINUX_MODULE_DIRECTORY without a trailing slash. --- gnu/packages/patches/module-init-tools-moduledir.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/patches/module-init-tools-moduledir.patch b/gnu/packages/patches/module-init-tools-moduledir.patch index 7a40a03b04..08f03d1cc4 100644 --- a/gnu/packages/patches/module-init-tools-moduledir.patch +++ b/gnu/packages/patches/module-init-tools-moduledir.patch @@ -6,7 +6,7 @@ Original patch by David Guibert, from Nixpkgs; adjusted to use 'LINUX_MODULE_DIRECTORY' rather than 'MODULE_DIR' as the variable name. diff --git a/depmod.c b/depmod.c -index a1d2f8c..a8f92b2 100644 +index a1d2f8c..ff579c7 100644 --- a/depmod.c +++ b/depmod.c @@ -48,9 +48,6 @@ @@ -77,7 +77,7 @@ index a1d2f8c..a8f92b2 100644 + module_dir = "/lib/modules"; + } + -+ nofail_asprintf(&dirname, "%s%s%s", basedir, module_dir, version); ++ nofail_asprintf(&dirname, "%s%s/%s", basedir, module_dir, version); if (maybe_all) { if (!doing_stdout && !depfile_out_of_date(dirname)) -- cgit v1.2.3 From 20e6c852d35a6fbbe649b735c65df92ec400e864 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 23 Jul 2014 16:43:53 -0400 Subject: gnu: htop: Update source URI. * gnu/packages/admin.scm (htop): Update source URI. --- gnu/packages/admin.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index f6232abafa..9fef60d761 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -104,7 +104,7 @@ graphs and can export its output to different formats.") (version "1.0.3") (source (origin (method url-fetch) - (uri (string-append "http://hisham.hm/htop/" + (uri (string-append "http://hisham.hm/htop/releases/" version "/htop-" version ".tar.gz")) (sha256 (base32 -- cgit v1.2.3 From 1b4f23bdf6169959cb734b99f50401faf0f86d2e Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Wed, 23 Jul 2014 23:03:00 +0200 Subject: gnu: nano: Upgrade to 2.3.6. * gnu/packages/nano.scm (nano): Upgrade to 2.3.6. --- gnu/packages/nano.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm index 73053513d5..1bb6fea889 100644 --- a/gnu/packages/nano.scm +++ b/gnu/packages/nano.scm @@ -27,7 +27,7 @@ (define-public nano (package (name "nano") - (version "2.3.4") + (version "2.3.6") (source (origin (method url-fetch) @@ -35,7 +35,7 @@ version ".tar.gz")) (sha256 (base32 - "1hcqv5yam4pkqx1sviigikzvd7n1pz6lwp7lzpdzagck9fgi4x0p")))) + "0d4ml0v9yi37pjs211xs38w9whsj6530wz3kmrvwgh8jigqz6jx7")))) (build-system gnu-build-system) (inputs `(("gettext" ,gnu-gettext) -- cgit v1.2.3 From bc7f024c4747effc9b2149c3b9b13f2acd2e1cbe Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Wed, 23 Jul 2014 23:07:18 +0200 Subject: gnu: xorriso: Upgrade to 3.1.8. * gnu/packages/cdrom.scm (xorriso): Upgrade to 3.1.8. --- gnu/packages/cdrom.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm index b4b20ffba5..518cfc3c2b 100644 --- a/gnu/packages/cdrom.scm +++ b/gnu/packages/cdrom.scm @@ -98,14 +98,14 @@ extraction from CDs.") (define-public xorriso (package (name "xorriso") - (version "1.3.6.pl01") + (version "1.3.8") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/xorriso/xorriso-" version ".tar.gz")) (sha256 (base32 - "07bm20kb4f6q5pbkxhy7w8ggw2gxkrq45cda2kbh6wgphs5z2h7q")))) + "0zhhj9lr9z7hnb2alac54mc28w1l0mbanphhpmy3ylsi8rih84lh")))) (build-system gnu-build-system) (inputs `(("acl" ,acl) -- cgit v1.2.3 From 408137d992f915dde89c2bc2c9727ae510e214d7 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Wed, 23 Jul 2014 23:09:36 +0200 Subject: gnu: parallel: Upgrade to 20140722. * gnu/packages/parallel.scm (parallel): Upgrade to 20140722. --- gnu/packages/parallel.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm index cf160d07b6..a4755e043d 100644 --- a/gnu/packages/parallel.scm +++ b/gnu/packages/parallel.scm @@ -27,7 +27,7 @@ (define-public parallel (package (name "parallel") - (version "20140622") + (version "20140722") (source (origin (method url-fetch) @@ -35,7 +35,7 @@ version ".tar.bz2")) (sha256 (base32 - "0frlp645yghnwq8x7dk8pdm6id1mqkkh7w48mcbpd04pw225gljq")))) + "165vf8hpl47z38aswsll1284l8xa9a8jwx3a3d2rzshm9yzbiq5n")))) (build-system gnu-build-system) (inputs `(("perl" ,perl))) (home-page "http://www.gnu.org/software/parallel/") -- cgit v1.2.3 From 9fd571a29201b90d750e3e7b4be4842ae6cc59ca Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 23 Jul 2014 18:26:03 -0400 Subject: gnu: Adjust more packages to GLib "bin" split. * gnu/packages/gimp.scm (gegl): Add glib:bin to 'native-inputs'. * gnu/packages/mail.scm (mu): Ditto. --- gnu/packages/gimp.scm | 1 + gnu/packages/mail.scm | 1 + 2 files changed, 2 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm index 9db543199c..399c99bcdf 100644 --- a/gnu/packages/gimp.scm +++ b/gnu/packages/gimp.scm @@ -101,6 +101,7 @@ provided as well as the framework to add new color models and data types.") ("libjpeg" ,libjpeg-8))) (native-inputs `(("pkg-config" ,pkg-config) + ("glib" ,glib "bin") ; for gtester ("intltool" ,intltool))) (home-page "http://gegl.org") (synopsis "Graph based image processing framework") diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index d9c847d4ce..7bdd81b4c8 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -301,6 +301,7 @@ repository and Maildir/IMAP as LOCAL repository.") (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) + ("glib" ,glib "bin") ; for gtester ("texinfo" ,texinfo))) ;; TODO: Add webkit and gtk to build the mug GUI. (inputs -- cgit v1.2.3 From 77362186831b8c07e33b2e8ef0b4c09a446893a4 Mon Sep 17 00:00:00 2001 From: Manolis Ragkousis Date: Wed, 23 Jul 2014 23:59:04 +0000 Subject: gnu: Add libftdi. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/libftdi.scm: New file * gnu-system.am (GNU_SYSTEM_MODULES): Add libftdi.scm Signed-off-by: Ludovic Courtès --- gnu-system.am | 1 + gnu/packages/libftdi.scm | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 gnu/packages/libftdi.scm (limited to 'gnu') diff --git a/gnu-system.am b/gnu-system.am index 0423d1400c..c3e1b98c03 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -139,6 +139,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/libdaemon.scm \ gnu/packages/libevent.scm \ gnu/packages/libffi.scm \ + gnu/packages/libftdi.scm \ gnu/packages/libidn.scm \ gnu/packages/libphidget.scm \ gnu/packages/libsigsegv.scm \ diff --git a/gnu/packages/libftdi.scm b/gnu/packages/libftdi.scm new file mode 100644 index 0000000000..6e8100ce29 --- /dev/null +++ b/gnu/packages/libftdi.scm @@ -0,0 +1,48 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Manolis Fragkiskos Ragkousis +;;; +;;; 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 libftdi) + #:use-module (guix licenses) + #:use-module (guix download) + #:use-module (guix packages) + #:use-module (gnu packages) + #:use-module (gnu packages libusb) + #:use-module (guix build-system cmake)) + +(define-public libftdi + (package + (name "libftdi") + (version "1.1") + (source (origin + (method url-fetch) + (uri (string-append + "http://www.intra2net.com/en/developer/libftdi/download/libftdi1-" + version ".tar.bz2")) + (sha256 + (base32 + "088yh8pxd6q53ssqndydcw1dkq51cjqyahc03lm6iip22cdazcf0")))) + (build-system cmake-build-system) + (native-inputs + `(("libusb" ,libusb))) + (home-page "http://www.intra2net.com") + (synopsis "FTDI USB driver with bitbang mode") + (description + "libFTDI is a library to talk to FTDI chips: FT232BM, +FT245BM, FT2232C, FT2232D, FT245R and FT232H including the popular +bitbangmode.") + (license lgpl2.1+))) -- cgit v1.2.3 From da9c810280c66b3c71699131fb09820cd0b275cf Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 23 Jul 2014 21:56:45 -0400 Subject: gnu: gcc: Update to 4.9.1. * gnu/packages/gcc.scm (gcc-4.9): Update to 4.9.1. --- gnu/packages/gcc.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index c927e6e49c..aed2e8925e 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -272,14 +272,14 @@ Go. It also includes runtime support libraries for these languages.") (define-public gcc-4.9 (package (inherit gcc-4.7) - (version "4.9.0") + (version "4.9.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gcc/gcc-" version "/gcc-" version ".tar.bz2")) (sha256 (base32 - "0mqjxpw2klskls00lwx1k24pnyzm3whqxg3hk74c3sddgfllgc5r")))))) + "0zki3ngi0gsidnmsp88mjl2868cc7cm5wm1vwqw6znja28d7hd6k")))))) (define (custom-gcc gcc name languages) "Return a custom version of GCC that supports LANGUAGES." -- cgit v1.2.3 From 47b73c34f0ac1fbe2cacb9233e7e41cdcfef9caf Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 24 Jul 2014 19:38:50 +0200 Subject: services: xorg: Remove /var/run/slim.lock when starting. Reported by Mark H. Weaver. * gnu/services/xorg.scm (slim-service)[start]: Remove /var/run/slim.lock before starting 'slim'. --- gnu/services/xorg.scm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'gnu') diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 7ca0d3f7db..04d1296edc 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -146,10 +146,15 @@ reboot_cmd " dmd "/sbin/reboot (provision '(xorg-server)) (requirement '(user-processes host-name udev)) (start - #~(make-forkexec-constructor - (list (string-append #$slim "/bin/slim") "-nodaemon") - #:environment-variables - (list (string-append "SLIM_CFGFILE=" #$slim.cfg)))) + #~(lambda () + ;; A stale lock file can prevent SLiM from starting, so remove it + ;; to be on the safe side. + (false-if-exception (delete-file "/var/run/slim.lock")) + + (fork+exec-command + (list (string-append #$slim "/bin/slim") "-nodaemon") + #:environment-variables + (list (string-append "SLIM_CFGFILE=" #$slim.cfg))))) (stop #~(make-kill-destructor)) (respawn? #t) (pam-services -- cgit v1.2.3 From 1dac85663858c8323a0d2483fb675aa5820d4d0e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 24 Jul 2014 22:45:24 +0200 Subject: install: Add a configuration template to the image. * gnu/system/os-config.tmpl: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it * gnu/system/install.scm (configuration-template-service): New procedure. (installation-services): Call it. * doc/guix.texi (System Installation): Mention configuration-template.scm, and @include gnu/system/os-config.tmpl. --- doc/guix.texi | 19 +++---------------- gnu-system.am | 1 + gnu/system/install.scm | 24 ++++++++++++++++++++++++ gnu/system/os-config.tmpl | 31 +++++++++++++++++++++++++++++++ 4 files changed, 59 insertions(+), 16 deletions(-) create mode 100644 gnu/system/os-config.tmpl (limited to 'gnu') diff --git a/doc/guix.texi b/doc/guix.texi index c504a5d0ba..69bae80834 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2850,24 +2850,11 @@ It is better to store that file on the target root file system, say, as @file{/mnt/etc/config.scm}. A minimal operating system configuration, with just the bare minimum and -only a root account would look like this: +only a root account would look like this (on the installation system, +this example is available as @file{/etc/configuration-template.scm}): @example -(use-modules (gnu)) - -(operating-system - (host-name "foo") - (timezone "Europe/Paris") - (locale "en_US.UTF-8") - - ;; Assuming /dev/sdX is the target hard disk, and /dev/sdX1 the - ;; target root file system. - (bootloader (grub-configuration (device "/dev/sdX"))) - (file-systems (cons (file-system - (device "/dev/sdX1") - (mount-point "/") - (type "ext4")) - %base-file-systems))) +@include gnu/system/os-config.tmpl @end example @noindent diff --git a/gnu-system.am b/gnu-system.am index c3e1b98c03..6e1e8afec0 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -268,6 +268,7 @@ GNU_SYSTEM_MODULES = \ gnu/system/file-systems.scm \ gnu/system/grub.scm \ gnu/system/install.scm \ + gnu/system/os-config.tmpl \ 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 index d3539b3f84..567934e4c1 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -115,6 +115,27 @@ the given target.") (delete-file-recursively (string-append target #$%backing-directory)))))))) +(define (configuration-template-service) + "Return a dummy service whose purpose is to install an operating system +configuration template file in the installation system." + + (define local-template + "/etc/configuration-template.scm") + (define template + (search-path %load-path "gnu/system/os-config.tmpl")) + + (mlet %store-monad ((template (interned-file template))) + (return (service + (requirement '(root-file-system)) + (provision '(os-config-template)) + (documentation + "This dummy service installs an OS configuration template.") + (start #~(const #t)) + (stop #~(const #f)) + (activate + #~(unless (file-exists? #$local-template) + (copy-file #$template #$local-template))))))) + (define (installation-services) "Return the list services for the installation image." (let ((motd (text-file "motd" " @@ -144,6 +165,9 @@ You have been warned. Thanks for being so brave. #:auto-login "guest" #:login-program (log-to-info)) + ;; Documentation add-on. + (configuration-template-service) + ;; A bunch of 'root' ttys. (normal-tty "tty3") (normal-tty "tty4") diff --git a/gnu/system/os-config.tmpl b/gnu/system/os-config.tmpl new file mode 100644 index 0000000000..ad58606f67 --- /dev/null +++ b/gnu/system/os-config.tmpl @@ -0,0 +1,31 @@ +;; This is an operating system configuration template. + +(use-modules (gnu)) + +(operating-system + (host-name "antelope") + (timezone "Europe/Paris") + (locale "en_US.UTF-8") + + ;; Assuming /dev/sdX is the target hard disk, and "root" is + ;; the label of the target root file system. + (bootloader (grub-configuration (device "/dev/sdX"))) + (file-systems (cons (file-system + (device "root") + (title 'label) + (mount-point "/") + (type "ext4")) + %base-file-systems)) + + ;; This is where user accounts are specified. The "root" + ;; account is implicit, and is initially created with the + ;; empty password. + (users (list (user-account + (name "alice") + (comment "Bob's sister") + (group "users") + + ;; Adding the account to the "wheel" group + ;; makes it a sudoer. + (supplementary-groups '("wheel")) + (home-directory "/home/alice"))))) -- cgit v1.2.3 From d9372161ef7ab6979f5dc1d92ad59acb5660bb3b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 24 Jul 2014 23:01:55 +0200 Subject: services: xorg: Honor ~/.xsession. * gnu/services/xorg.scm (xinitrc): Attempt to execute ~/.xsession. --- gnu/services/xorg.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 04d1296edc..a34129a8ed 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -97,7 +97,12 @@ EndSection #~(begin (use-modules (ice-9 match)) - ;; TODO: Check for ~/.xsession. + ;; First, try to run ~/.xsession. + (let* ((home (getenv "HOME")) + (file (string-append home "/.xsession"))) + (false-if-exception (execl file file))) + + ;; Then try a pre-configured session type. (match (command-line) ((_ "ratpoison") (execl (string-append #$ratpoison "/bin/ratpoison"))) -- cgit v1.2.3 From c8fa34265d6612c99fe80adfaa66edaddd4d5b0c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 25 Jul 2014 00:12:35 +0200 Subject: system: Add the 'system?' field for user groups. Suggested by Mark H. Weaver. * gnu/system/shadow.scm ()[system?]: New field. (%base-groups): Introduce 'system-group' macro, and use it. * gnu/system.scm (user-group->gexp): Pass the 'system?' field. * guix/build/activation.scm (add-group): Add #:system? and honor it. (activate-users+groups): Handle the 'system?' field. * gnu/system/file-systems.scm (%tty-gid): Choose an ID below 1000. * doc/guix.texi (User Accounts): Document the 'system?' field. --- doc/guix.texi | 4 ++++ gnu/system.scm | 3 ++- gnu/system/file-systems.scm | 2 +- gnu/system/shadow.scm | 42 ++++++++++++++++++++++++------------------ guix/build/activation.scm | 9 ++++++--- 5 files changed, 37 insertions(+), 23 deletions(-) (limited to 'gnu') diff --git a/doc/guix.texi b/doc/guix.texi index 2060da9c55..cef2aba9a8 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3201,6 +3201,10 @@ The group's name. The group identifier (a number). If @code{#f}, a new number is automatically allocated when the group is created. +@item @code{system?} (default: @code{#f}) +This Boolean value indicates whether the group is a ``system'' group. +System groups have low numerical IDs. + @item @code{password} (default: @code{#f}) What, user groups can have a password? Well, apparently yes. Unless @code{#f}, this field specifies the group's password. diff --git a/gnu/system.scm b/gnu/system.scm index 4648d810a3..68f9438693 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -363,7 +363,8 @@ alias ll='ls -l' 'active-groups'." #~(list #$(user-group-name group) #$(user-group-password group) - #$(user-group-id group))) + #$(user-group-id group) + #$(user-group-system? group))) (define (user-account->gexp account) "Turn ACCOUNT, a object, into a list-valued gexp suitable for diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index 3b13d820cf..48c4fc7e77 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -95,7 +95,7 @@ (define %tty-gid ;; ID of the 'tty' group. Allocate it statically to make it easy to refer ;; to it from here and from the 'tty' group definitions. - 1004) + 996) (define %pseudo-terminal-file-system ;; The pseudo-terminal file system. It needs to be mounted so that diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm index e29dbb8c3e..5d638398d1 100644 --- a/gnu/system/shadow.scm +++ b/gnu/system/shadow.scm @@ -43,6 +43,7 @@ user-group-name user-group-password user-group-id + user-group-system? default-skeletons skeleton-directory @@ -75,28 +76,33 @@ user-group? (name user-group-name) (password user-group-password (default #f)) - (id user-group-id (default #f))) + (id user-group-id (default #f)) + (system? user-group-system? ; Boolean + (default #f))) (define %base-groups ;; Default set of groups. - (list (user-group (name "root") (id 0)) - (user-group (name "wheel")) ; root-like users - (user-group (name "users")) ; normal users - (user-group (name "nogroup")) ; for daemons etc. + (let-syntax ((system-group (syntax-rules () + ((_ args ...) + (user-group (system? #t) args ...))))) + (list (system-group (name "root") (id 0)) + (system-group (name "wheel")) ; root-like users + (system-group (name "users")) ; normal users + (system-group (name "nogroup")) ; for daemons etc. - ;; The following groups are conventionally used by things like udev to - ;; control access to hardware devices. - (user-group (name "tty") (id %tty-gid)) - (user-group (name "dialout")) - (user-group (name "kmem")) - (user-group (name "video")) - (user-group (name "audio")) - (user-group (name "netdev")) ; used in avahi-dbus.conf - (user-group (name "lp")) - (user-group (name "disk")) - (user-group (name "floppy")) - (user-group (name "cdrom")) - (user-group (name "tape")))) + ;; The following groups are conventionally used by things like udev to + ;; control access to hardware devices. + (system-group (name "tty") (id %tty-gid)) + (system-group (name "dialout")) + (system-group (name "kmem")) + (system-group (name "video")) + (system-group (name "audio")) + (system-group (name "netdev")) ; used in avahi-dbus.conf + (system-group (name "lp")) + (system-group (name "disk")) + (system-group (name "floppy")) + (system-group (name "cdrom")) + (system-group (name "tape"))))) (define (default-skeletons) "Return the default skeleton files for /etc/skel. These files are copied by diff --git a/guix/build/activation.scm b/guix/build/activation.scm index 9464d2157d..b04b017881 100644 --- a/guix/build/activation.scm +++ b/guix/build/activation.scm @@ -36,13 +36,14 @@ ;;; ;;; Code: -(define* (add-group name #:key gid password +(define* (add-group name #:key gid password system? (log-port (current-error-port))) "Add NAME as a user group, with the given numeric GID if specified." ;; Use 'groupadd' from the Shadow package. (format log-port "adding group '~a'...~%" name) (let ((args `(,@(if gid `("-g" ,(number->string gid)) '()) ,@(if password `("-p" ,password) '()) + ,@(if system? `("--system") '()) ,name))) (zero? (apply system* "groupadd" args)))) @@ -128,9 +129,11 @@ numeric gid or #f." ;; Then create the groups. (for-each (match-lambda - ((name password gid) + ((name password gid system?) (unless (false-if-exception (getgrnam name)) - (add-group name #:gid gid #:password password)))) + (add-group name + #:gid gid #:password password + #:system? system?)))) groups) ;; Finally create the other user accounts. -- cgit v1.2.3 From 417175096aef38c6a72acbbcfdba636c723ab79e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 25 Jul 2014 00:15:46 +0200 Subject: services: Use system groups where applicable. * gnu/services/avahi.scm (avahi-service): Add 'system?' field to 'user-group' form. * gnu/services/base.scm (guix-service): Likewise. * gnu/services/dbus.scm (dbus-service): Likewise. * gnu/services/networking.scm (tor-service): Likewise. --- gnu/services/avahi.scm | 3 ++- gnu/services/base.scm | 1 + gnu/services/dbus.scm | 3 ++- gnu/services/networking.scm | 3 ++- 4 files changed, 7 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/services/avahi.scm b/gnu/services/avahi.scm index e8da6be5f5..48a2c75927 100644 --- a/gnu/services/avahi.scm +++ b/gnu/services/avahi.scm @@ -96,7 +96,8 @@ sockets." (mkdir-p "/var/run/avahi-daemon"))) (user-groups (list (user-group - (name "avahi")))) + (name "avahi") + (system? #t)))) (user-accounts (list (user-account (name "avahi") (group "avahi") diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 342b3c1488..e1d247e8d3 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -472,6 +472,7 @@ passed to @command{guix-daemon}." (user-accounts accounts) (user-groups (list (user-group (name builder-group) + (system? #t) ;; Use a fixed GID so that we can create the ;; store with the right owner. diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm index 6076317ee5..5da7f14605 100644 --- a/gnu/services/dbus.scm +++ b/gnu/services/dbus.scm @@ -86,7 +86,8 @@ and policy files. For example, to allow avahi-daemon to use the system bus, (string-append "--config-file=" #$conf "/system.conf")))) (stop #~(make-kill-destructor)) (user-groups (list (user-group - (name "messagebus")))) + (name "messagebus") + (system? #t)))) (user-accounts (list (user-account (name "messagebus") (group "messagebus") diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index 502b0d85f1..6a7d194659 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -107,7 +107,8 @@ policy) as the @code{tor} unprivileged user." (stop #~(make-kill-destructor)) (user-groups (list (user-group - (name "tor")))) + (name "tor") + (system? #t)))) (user-accounts (list (user-account (name "tor") (group "tor") -- cgit v1.2.3 From aaf77acc1a751a2001d0a8503ba61740299581a5 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 24 Jul 2014 23:06:49 -0400 Subject: gnu: boost: Omit context and coroutines libraries on mips64el. * gnu/packages/boost.scm (boost): Omit context and coroutines libraries on mips64el. --- gnu/packages/boost.scm | 68 +++++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 29 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm index 73b377e384..a77f1393d9 100644 --- a/gnu/packages/boost.scm +++ b/gnu/packages/boost.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 John Darrington +;;; Copyright © 2014 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -46,39 +47,48 @@ ("python" ,python-2) ("tcsh" ,tcsh))) (arguments - `(#:phases - (alist-replace - 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* '("libs/config/configure" - "libs/spirit/classic/phoenix/test/runtest.sh" - "tools/build/v2/doc/bjam.qbk" - "tools/build/v2/engine/execunix.c" - "tools/build/v2/engine/Jambase" - "tools/build/v2/engine/jambase.c") - (("/bin/sh") (which "sh"))) - - (setenv "SHELL" (which "sh")) - (setenv "CONFIG_SHELL" (which "sh")) - - (zero? (system* "./bootstrap.sh" - (string-append "--prefix=" out) - "--with-toolset=gcc")))) - (alist-replace - 'build - (lambda _ - (zero? (system* "./b2" "threading=multi" "link=shared"))) - + (let ((build-flags + `("threading=multi" "link=shared" + ;; Boost's 'context' library is not yet supported on mips64, so + ;; we disable it. The 'coroutine' library depends on 'context', + ;; so we disable that too. + ,@(if (equal? "mips64el-linux" (or (%current-target-system) + (%current-system))) + '("--without-context" "--without-coroutine") + '())))) + `(#:phases (alist-replace - 'check - (lambda _ #t) + 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* '("libs/config/configure" + "libs/spirit/classic/phoenix/test/runtest.sh" + "tools/build/v2/doc/bjam.qbk" + "tools/build/v2/engine/execunix.c" + "tools/build/v2/engine/Jambase" + "tools/build/v2/engine/jambase.c") + (("/bin/sh") (which "sh"))) + (setenv "SHELL" (which "sh")) + (setenv "CONFIG_SHELL" (which "sh")) + + (zero? (system* "./bootstrap.sh" + (string-append "--prefix=" out) + "--with-toolset=gcc")))) (alist-replace - 'install + 'build (lambda _ - (zero? (system* "./b2" "install" "threading=multi" "link=shared"))) - %standard-phases)))))) + (zero? (system* "./b2" ,@build-flags))) + + (alist-replace + 'check + (lambda _ #t) + + (alist-replace + 'install + (lambda _ + (zero? (system* "./b2" "install" ,@build-flags))) + %standard-phases))))))) (home-page "http://boost.org") (synopsis "Peer-reviewed portable C++ source libraries") -- cgit v1.2.3 From 2f4640e320a8834f618c7be5a7e8dba62da91190 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 24 Jul 2014 23:32:13 -0400 Subject: gnu: texlive: Disable tests on mips64el. * gnu/packages/texlive.scm (texlive): Disable tests on mips64el. --- gnu/packages/texlive.scm | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/texlive.scm b/gnu/packages/texlive.scm index b136c99979..57a250cba2 100644 --- a/gnu/packages/texlive.scm +++ b/gnu/packages/texlive.scm @@ -115,6 +115,11 @@ "--with-system-xpdf" "--with-system-zlib" "--with-system-zziplib") + + ;; Disable tests on mips64 to cope with a failure of luajiterr.test. + ;; XXX FIXME fix luajit properly on mips64. + #:tests? ,(not (equal? "mips64el-linux" (or (%current-target-system) + (%current-system)))) #:phases (alist-cons-after 'install 'postinst -- cgit v1.2.3 From 7eade0ee035578d172e8812d1f06e25744308ac0 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 25 Jul 2014 13:46:30 +0200 Subject: gnu: guix: Update to 0.7. * gnu/packages/package-management.scm (guix-0.6): Rename to... (guix-0.7): ... this. Upgrade to 0.7. (guix): Alias for GUIX-0.7. (guix-devel): Change 'guix-0.6' to 'guix-0.7'. --- gnu/packages/package-management.scm | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index cf808970ce..66e71df284 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -34,17 +34,17 @@ #:use-module (gnu packages gettext) #:use-module (gnu packages texinfo)) -(define-public guix-0.6 +(define guix-0.7 (package (name "guix") - (version "0.6") + (version "0.7") (source (origin (method url-fetch) (uri (string-append "ftp://alpha.gnu.org/gnu/guix/guix-" version ".tar.gz")) (sha256 (base32 - "01xw51wizhsk827w4xp79k2b6dxjaviw04r6rbrb85qdxnwg6k9n")))) + "05r7bsjgc0a4m7yy433n3c1dlv2yqlf3qpwlhayn9djhpp2q1ssb")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list @@ -109,10 +109,12 @@ upgrades and roll-backs, per-user profiles, and much more. It is based on the Nix package manager.") (license gpl3+))) -(define-public guix +(define-public guix guix-0.7) + +(define-public guix-devel ;; Development version of Guix. (let ((commit "0ae8c15")) - (package (inherit guix-0.6) + (package (inherit guix-0.7) (version (string-append "0.6." commit)) (source (origin (method git-fetch) @@ -124,7 +126,7 @@ Nix package manager.") (base32 "1y6mwzwsjdxbfibqypb55dix371rifhfz0bygfr8k868lcdsawic")))) (arguments - (substitute-keyword-arguments (package-arguments guix-0.6) + (substitute-keyword-arguments (package-arguments guix-0.7) ((#:phases phases) `(alist-cons-before 'configure 'bootstrap @@ -160,4 +162,4 @@ Nix package manager.") ("gettext" ,gnu-gettext) ("texinfo" ,texinfo) ("graphviz" ,graphviz) - ,@(package-native-inputs guix-0.6)))))) + ,@(package-native-inputs guix-0.7)))))) -- cgit v1.2.3 From d43f4296ccdf4587266c88a7c3e116e720eaddd0 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 25 Jul 2014 17:47:53 +0200 Subject: gnu: Add dmidecode. * gnu/packages/admin.scm (dmidecode): New variable. --- gnu/packages/admin.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 9fef60d761..46f5cc8a58 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -762,3 +762,33 @@ This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.") "WakeLan broadcasts a properly formatted UDP packet across the local area network, which causes enabled computers to power on.") (license gpl2+))) + +(define-public dmidecode + (package + (name "dmidecode") + (version "2.12") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://savannah/dmidecode/dmidecode-" + version ".tar.bz2")) + (sha256 + (base32 + "122hgaw8mpqdfra159lfl6pyk3837giqx6vq42j64fjnbl2z6gwi")))) + (build-system gnu-build-system) + (arguments + '(#:phases (alist-delete 'configure %standard-phases) + #:tests? #f ; no 'check' target + #:make-flags (list (string-append "prefix=" + (assoc-ref %outputs "out"))))) + (home-page "http://www.nongnu.org/dmidecode/") + (synopsis "Read hardware information from the BIOS") + (description + "Dmidecode reports information about your system's hardware as described +in your system BIOS according to the SMBIOS/DMI standard. This typically +includes system manufacturer, model name, serial number, BIOS version, asset +tag as well as a lot of other details of varying level of interest and +reliability depending on the manufacturer. This will often include usage +status for the CPU sockets, expansion slots (e.g. AGP, PCI, ISA) and memory +module slots, and the list of I/O ports (e.g. serial, parallel, USB).") + (license gpl2+))) -- cgit v1.2.3 From 936229930fbde1cff24412cd0440f4bfec50c4ae Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 25 Jul 2014 15:48:25 -0400 Subject: gnu: libpeas: Adjust to glib "bin" split. * gnu/packages/gnome.scm (libpeas): Add glib:bin to 'native-inputs'. --- gnu/packages/gnome.scm | 1 + 1 file changed, 1 insertion(+) (limited to 'gnu') diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 893c3e8a6b..f5a0cd7de7 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -449,6 +449,7 @@ some form of information without getting in the user's way.") ("pango" ,pango))) (native-inputs `(("pkg-config" ,pkg-config) + ("glib:bin" ,glib "bin") ("gobject-introspection" ,gobject-introspection) ("intltool" ,intltool))) (home-page "https://wiki.gnome.org/Libpeas") -- cgit v1.2.3 From f8984634fdabc9969bacba754a4cbc2d8738c477 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 26 Jul 2014 16:08:35 -0400 Subject: gnu: sudo: Apply workaround to build system for MIPS. * gnu/packages/admin.scm (sudo): Work around the fact that configure fails on MIPS without 'file'. --- gnu/packages/admin.scm | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 46f5cc8a58..4a88fdd76a 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -630,7 +630,7 @@ system administrator.") "002l6h27pnhb77b65frhazbhknsxvrsnkpi43j7i0qw1lrgi7nkf")))) (build-system gnu-build-system) (arguments - '(#:configure-flags '("--with-logpath=/var/log/sudo.log") + `(#:configure-flags '("--with-logpath=/var/log/sudo.log") #:phases (alist-cons-before 'configure 'pre-configure (lambda _ @@ -644,7 +644,18 @@ system administrator.") "") (("^install: (.*)install-sudoers(.*)" _ before after) ;; Don't try to create /etc/sudoers. - (string-append "install: " before after "\n")))) + (string-append "install: " before after "\n"))) + + ;; XXX FIXME sudo 1.8.10p3 was bootstrapped with a + ;; prerelease libtool, which fails on MIPS in the absence + ;; of /usr/bin/file. As a temporary workaround, we patch + ;; the configure script to hardcode use of the little + ;; endian N32 ABI on MIPS. + ,@(if (equal? "mips64el-linux" (or (%current-target-system) + (%current-system))) + '((substitute* "configure" + (("\\$emul") "elf32ltsmipn32"))) + '())) %standard-phases) ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but -- cgit v1.2.3 From f280cdb1bafefee42d0c573ecabb0d9bd0659e64 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 26 Jul 2014 16:44:26 -0400 Subject: gnu: goffice: Adapt to glib "bin" split. * gnu/packages/gnome.scm (goffice): Add glib:bin to 'native-inputs'. --- gnu/packages/gnome.scm | 1 + 1 file changed, 1 insertion(+) (limited to 'gnu') diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index f5a0cd7de7..153bd39c96 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1139,6 +1139,7 @@ controls using the Bonobo component framework.") ("libxml2" ,libxml2))) (native-inputs `(("intltool" ,intltool) + ("glib" ,glib "bin") ("pkg-config" ,pkg-config))) (home-page "https://developer.gnome.org/goffice/") (synopsis "Document-centric objects and utilities") -- cgit v1.2.3 From b9663471a87916f36b50af2a0f885f6f08dc3ed2 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 26 Jul 2014 17:08:56 -0400 Subject: gnu: gnumeric: Adapt to glib "bin" split. * gnu/packages/gnome.scm (gnumeric): Add glib:bin to 'native-inputs'. --- gnu/packages/gnome.scm | 1 + 1 file changed, 1 insertion(+) (limited to 'gnu') diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 153bd39c96..f684d24627 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1189,6 +1189,7 @@ controls using the Bonobo component framework.") ("zlib" ,zlib))) (native-inputs `(("intltool" ,intltool) + ("glib:bin" ,glib "bin") ("pkg-config" ,pkg-config))) (home-page "http://www.gnumeric.org") (synopsis "Spreadsheet application") -- cgit v1.2.3