aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/admin.scm38
-rw-r--r--gnu/packages/backup.scm214
-rw-r--r--gnu/packages/base.scm1
-rw-r--r--gnu/packages/bdb.scm10
-rw-r--r--gnu/packages/compression.scm1
-rw-r--r--gnu/packages/ddrescue.scm47
-rw-r--r--gnu/packages/disk.scm (renamed from gnu/packages/parted.scm)58
-rw-r--r--gnu/packages/elf.scm9
-rw-r--r--gnu/packages/fdisk.scm53
-rw-r--r--gnu/packages/gnome.scm5
-rw-r--r--gnu/packages/gnutls.scm4
-rw-r--r--gnu/packages/linux.scm62
-rw-r--r--gnu/packages/maths.scm3
-rw-r--r--gnu/packages/openssl.scm7
-rw-r--r--gnu/packages/package-management.scm1
-rw-r--r--gnu/packages/patches/cssc-gets-undeclared.patch17
-rw-r--r--gnu/packages/patches/cssc-missing-include.patch12
-rw-r--r--gnu/packages/patches/gtkglext-remove-pangox-dependency.patch132
-rw-r--r--gnu/packages/patches/module-init-tools-moduledir.patch168
-rw-r--r--gnu/packages/patches/openssl-CVE-2010-5298.patch27
-rw-r--r--gnu/packages/patches/openssl-extension-checking-fixes.patch40
-rw-r--r--gnu/packages/patches/util-linux-perl.patch15
-rw-r--r--gnu/packages/version-control.scm46
-rw-r--r--gnu/services/base.scm110
-rw-r--r--gnu/services/dmd.scm2
-rw-r--r--gnu/system.scm77
-rw-r--r--gnu/system/file-systems.scm3
-rw-r--r--gnu/system/install.scm147
-rw-r--r--gnu/system/linux-initrd.scm4
-rw-r--r--gnu/system/vm.scm29
30 files changed, 957 insertions, 385 deletions
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index fded33c60b..a3d600d7be 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -722,3 +722,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+)))
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 574bb11816..069baa88da 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -18,13 +18,25 @@
(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)
#:use-module (gnu packages)
- #:use-module (gnu packages python)
+ #: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)
+ #:use-module (gnu packages ssh)
+ #:use-module (gnu packages xml)
#:use-module (srfi srfi-1))
(define-public duplicity
@@ -68,4 +80,200 @@ 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
+ (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 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
+ (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 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 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 license:gpl2+)))
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 3f83ed8d49..ce95559ba5 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -976,6 +976,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
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)
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index c8328076cf..6887ba6167 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -315,3 +315,4 @@ 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+)))
+
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 <nikita@karetnikov.org>
-;;;
-;;; 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 <http://www.gnu.org/licenses/>.
-
-(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/parted.scm b/gnu/packages/disk.scm
index 5d5d38a515..a5404b2749 100644
--- a/gnu/packages/parted.scm
+++ b/gnu/packages/disk.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
+;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -16,7 +16,7 @@
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
-(define-module (gnu packages parted)
+(define-module (gnu packages disk)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
@@ -24,7 +24,10 @@
#:use-module (gnu packages check)
#:use-module (gnu packages gettext)
#:use-module (gnu packages linux)
- #:use-module (gnu packages readline))
+ #:use-module (gnu packages readline)
+ #:use-module (gnu packages guile)
+ #:use-module ((gnu packages compression)
+ #:select (lzip)))
(define-public parted
(package
@@ -67,3 +70,52 @@
"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/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 <ludo@gnu.org>
+;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; 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+)))
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 <nikita@karetnikov.org>
-;;;
-;;; 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 <http://www.gnu.org/licenses/>.
-
-(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/gnome.scm b/gnu/packages/gnome.scm
index 232afc6e44..b10f2a6646 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
@@ -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
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
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 130a0f2a9a..518b0e41b9 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)
@@ -132,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
@@ -181,7 +184,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))
@@ -316,15 +320,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"
@@ -961,7 +965,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")
@@ -1033,6 +1045,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")
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"))))
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/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")))
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 <sys/types.h>
+ #include "filelock.h"
+
+ enum create_mode {
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@
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 <david.guibert@gmail.com>
+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/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 <kurt@roeckx.be>
-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" <steve@openssl.org>
-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
-
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
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+)))
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index dc0161408b..65a8ceefc4 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -17,6 +17,8 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(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.
@@ -89,9 +91,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 +103,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
@@ -193,9 +198,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 +234,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
@@ -243,11 +279,11 @@ stopped before 'kill' is called."
;; 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!
@@ -290,16 +326,57 @@ 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:
+ ;; <http://lists.gnu.org/archive/html/bug-guix/2013-01/msg00239.html>.
+ (supplementary-groups (list group))
+
(comment (format #f "Guix Build User ~2d" n))
(home-directory "/var/empty")
(shell #~(string-append #$shadow "/sbin/nologin"))))
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))
+ (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."
+ (define activate
+ ;; 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)))
+
(mlet %store-monad ((accounts (guix-build-accounts build-accounts
#:group builder-group)))
(return (service
@@ -315,7 +392,12 @@ 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))
+
+ ;; Use a fixed GID so that we can create the
+ ;; store with the right owner.
+ (id 30000))))
+ (activate activate)))))
(define %base-services
;; Convenience variable holding the basic services.
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 06bec40cef..4dc6ebd5a7 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -26,7 +26,11 @@
#: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 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)
@@ -50,6 +54,7 @@
operating-system-initrd
operating-system-users
operating-system-groups
+ operating-system-issue
operating-system-packages
operating-system-timezone
operating-system-locale
@@ -57,7 +62,9 @@
operating-system-derivation
operating-system-profile
- operating-system-grub.cfg))
+ operating-system-grub.cfg
+
+ %base-packages))
;;; Commentary:
;;;
@@ -91,17 +98,11 @@
(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
- 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
@@ -178,8 +179,10 @@ as 'needed-for-boot'."
(sequence %store-monad
(map (match-lambda
- (($ <file-system> device target type flags opts #f check?)
+ (($ <file-system> device title target type flags opts
+ #f check?)
(file-system-service device target type
+ #:title title
#:check? check?
#:options opts)))
file-systems)))
@@ -210,8 +213,25 @@ 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.
+ "
+This is the GNU system. Welcome.\n")
+
(define* (etc-directory #:key
+ kernel
(locale "C") (timezone "Europe/Paris")
+ (issue "Hello!\n")
(skeletons '())
(pam-services '())
(profile "/run/current-system/profile")
@@ -226,15 +246,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" "
@@ -244,8 +256,13 @@ 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
+# 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
export LIBRARY_PATH=$HOME/.guix-profile/lib:" profile "/lib
alias ls='ls -p --color'
@@ -306,8 +323,10 @@ 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)
#:timezone (operating-system-timezone os)
#:sudoers (operating-system-sudoers os)
@@ -319,7 +338,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'
@@ -382,7 +402,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.
@@ -445,7 +465,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
- (($ <file-system> _ "/") #t)
+ (($ <file-system> _ _ "/") #t)
(_ #f))
(operating-system-file-systems os)))
@@ -453,9 +473,10 @@ we're running in the final root."
"Return a gexp denoting the initrd file of OS."
(define boot-file-systems
(filter (match-lambda
- (($ <file-system> device "/")
+ (($ <file-system> device title "/")
#t)
- (($ <file-system> device mount-point type flags options boot?)
+ (($ <file-system> 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/install.scm b/gnu/system/install.scm
new file mode 100644
index 0000000000..06f8a3f058
--- /dev/null
+++ b/gnu/system/install.scm
@@ -0,0 +1,147 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu system install)
+ #:use-module (gnu)
+ #:use-module (guix gexp)
+ #:use-module (guix monads)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages package-management)
+ #:use-module (gnu packages disk)
+ #: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") "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)
+
+ ;; 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
+ ;; 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 (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
+
+;;; install.scm ends here
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
- (($ <file-system> device mount-point type flags options _ check?)
- (list device mount-point type flags options check?))))
+ (($ <file-system> 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 a15c4c358b..4e7c439894 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)
@@ -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
@@ -258,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))
@@ -265,6 +269,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) "/"))
@@ -280,16 +290,19 @@ 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)
+ (title 'label)
(type file-system-type))
file-systems-to-keep)))))
(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
+ #:file-system-label root-label
#:copy-inputs? #t
#:register-closures? #t
#:inputs `(("system" ,os-drv)