From a020d2a996b1d420088f2a6e92f173b950434eba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 13 Dec 2012 22:53:05 +0100 Subject: [PATCH 01/13] guix-package: Use directory names from (guix config). * guix-package.in (%profile-directory): Use %STATE-DIRECTORY instead of a hard-coded directory. --- guix-package.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guix-package.in b/guix-package.in index ff7f38383e..dbd2ee24c7 100644 --- a/guix-package.in +++ b/guix-package.in @@ -35,6 +35,7 @@ exec ${GUILE-@GUILE@} -L "@guilemoduledir@" -l "$0" \ #:use-module (guix derivations) #:use-module (guix packages) #:use-module (guix utils) + #:use-module (guix config) #:use-module (ice-9 ftw) #:use-module (ice-9 format) #:use-module (ice-9 match) @@ -61,8 +62,7 @@ exec ${GUILE-@GUILE@} -L "@guilemoduledir@" -l "$0" \ (cut string-append <> "/.guix-profile"))) (define %profile-directory - (string-append "/nix/var/nix/profiles/" - "guix/" + (string-append %state-directory "/profiles/" (or (and=> (getenv "USER") (cut string-append "per-user/" <>)) "default"))) From 6cb3ccf835e0f10438e5ffd9c888c09e3d5d1380 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 13 Dec 2012 22:53:45 +0100 Subject: [PATCH 02/13] release.nix: tarball: Fix typo. * release.nix (tarball): Replace "gnulib" by "nix". --- release.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release.nix b/release.nix index 2d3a70f524..2cc7be4794 100644 --- a/release.nix +++ b/release.nix @@ -50,7 +50,7 @@ let src = ; buildInputs = with pkgs; [ guile sqlite bzip2 git libgcrypt ]; buildNativeInputs = with pkgs; [ texinfo gettext cvs pkgconfig ]; - preAutoconf = ''git config submodule.gnulib.url "${}"''; + preAutoconf = ''git config submodule.nix.url "${}"''; configureFlags = [ "--with-libgcrypt-prefix=${pkgs.libgcrypt}" "--localstatedir=/nix/var/nix" From 4aa52039a77a0f92ffd02c0da1dbae968693ca5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 13 Dec 2012 23:02:22 +0100 Subject: [PATCH 03/13] guix-package: Avoid use of the `guix' sub-directory for profiles. * guix-package.in (%current-profile): Change to `guix-profile'. --- guix-package.in | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/guix-package.in b/guix-package.in index dbd2ee24c7..fee1a39b2f 100644 --- a/guix-package.in +++ b/guix-package.in @@ -68,7 +68,9 @@ exec ${GUILE-@GUILE@} -L "@guilemoduledir@" -l "$0" \ "default"))) (define %current-profile - (string-append %profile-directory "/profile")) + ;; Call it `guix-profile', not `profile', to allow Guix profiles to + ;; coexist with Nix profiles. + (string-append %profile-directory "/guix-profile")) (define (profile-manifest profile) "Return the PROFILE's manifest." From e2a06ddc7a7d5620f7df8397cec714335b548d6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 13 Dec 2012 23:45:38 +0100 Subject: [PATCH 04/13] build: Have `bootstrap' run all the necessary steps. * bootstrap: Always run "git submodule init". Run `nix/sync-with-upstream'. Reported by Nikita Karetnikov and Andreas Enge. --- bootstrap | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/bootstrap b/bootstrap index e445af2f2c..f34c43dc52 100755 --- a/bootstrap +++ b/bootstrap @@ -7,10 +7,9 @@ set -e -x top_srcdir="$PWD" export top_srcdir -if [ ! -d nix-upstream ] -then - git submodule init -fi +git submodule init git submodule update +./nix/sync-with-upstream + exec autoreconf -vfi From 7f4f06513a7a75caff034ba446bd75188afcfd04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 13 Dec 2012 23:53:37 +0100 Subject: [PATCH 05/13] build: Fix default value of `%state-directory'. * guix/config.scm.in (%state-directory): Append `/nix'. Reported by Andreas Enge . --- guix/config.scm.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/guix/config.scm.in b/guix/config.scm.in index 4717b1c967..c5ebd39fae 100644 --- a/guix/config.scm.in +++ b/guix/config.scm.in @@ -46,7 +46,8 @@ "@storedir@") (define %state-directory - "@guix_localstatedir@") + ;; This must match `NIX_STATE_DIR' as defined in `daemon.am'. + "@guix_localstatedir@/nix") (define %system "@guix_system@") From cdec10f9368a1b69664db85b6bd029b136329b2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 14 Dec 2012 10:44:22 +0100 Subject: [PATCH 06/13] release.nix: Remove trailing "/nix" from localstatedir. * release.nix (tarball, build): Use /nix/var as localstatedir, as a follow-up to 7f4f065. --- release.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release.nix b/release.nix index 2cc7be4794..b83de6c2a5 100644 --- a/release.nix +++ b/release.nix @@ -53,7 +53,7 @@ let preAutoconf = ''git config submodule.nix.url "${}"''; configureFlags = [ "--with-libgcrypt-prefix=${pkgs.libgcrypt}" - "--localstatedir=/nix/var/nix" + "--localstatedir=/nix/var" ]; }; @@ -68,7 +68,7 @@ let src = jobs.tarball; configureFlags = [ "--with-libgcrypt-prefix=${pkgs.libgcrypt}" - "--localstatedir=/nix/var/nix" + "--localstatedir=/nix/var" ]; preBuild = From b3a53fb3610ff23b75f11d58325110d29451a726 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 14 Dec 2012 18:07:10 +0100 Subject: [PATCH 07/13] download: Work around (web client) bug . * guix/build/download.scm: Annihilate `shutdown' in (web client). --- guix/build/download.scm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/guix/build/download.scm b/guix/build/download.scm index 9d90971f28..c09351cee4 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -92,6 +92,11 @@ which is not available during bootstrap." 'set-port-encoding! (lambda (p e) #f)) +;; XXX: Work around , present in Guile +;; up to 2.0.7. +(module-define! (resolve-module '(web client)) + 'shutdown (const #f)) + (define (http-fetch uri file) "Fetch data from URI and write it to FILE. Return FILE on success." From e1b7096acdd3dedbdca92a6d20ade94b21d8561d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 14 Dec 2012 18:15:37 +0100 Subject: [PATCH 08/13] daemon: Build `nix-setuid-helper'. * daemon.am (libexec_PROGRAMS, nix_setuid_helper_SOURCES, nix_setuid_helper_CPPFLAGS, nix_setuid_helper_LDADD): New variables. * test-env.in: Set and export `NIX_SETUID_HELPER'. * README (Installing Guix as non-root): New section. --- .gitignore | 1 + README | 27 +++++++++++++++++++++++---- daemon.am | 10 ++++++++++ test-env.in | 3 ++- 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 8f224467c9..b6786d212b 100644 --- a/.gitignore +++ b/.gitignore @@ -63,3 +63,4 @@ stamp-h[0-9] /test-tmp /nix/scripts/list-runtime-roots /test-env +/nix/nix-setuid-helper/nix-setuid-helper.cc diff --git a/README b/README index d2bbfacd5a..09433586be 100644 --- a/README +++ b/README @@ -59,10 +59,29 @@ the promise of a build; it is stored as a text file under `derivation' primitive, as well as higher-level wrappers such as `build-expression->derivation'. -Guix does remote procedure calls (RPCs) to the Nix daemon (the -=nix-worker --daemon= command), which in turn performs builds and -accesses to the Nix store on its behalf. The RPCs are implemented in -the (guix store) module. +Guix does remote procedure calls (RPCs) to the Guix or Nix daemon (the +=guix-daemon= or =nix-daemon= command), which in turn performs builds +and accesses to the Nix store on its behalf. The RPCs are implemented +in the (guix store) module. + +* Installing Guix as non-root + +The Guix daemon allows software builds to be performed under alternate +user accounts, which are normally created specifically for this +purpose. For instance, you may have a pool of accounts in the +=guixbuild= group, and then you can instruct =guix-daemon= to use them +like this: + + $ guix-daemon --build-users-group=guixbuild + +However, unless it is run as root, =guix-daemon= cannot switch users. +In that case, it falls back to using a setuid-root helper program call +=nix-setuid-helper=. That program is not setuid-root by default when +you install it; instead you should run a command along these lines +(assuming Guix is installed under /usr/local): + + # chown root.root /usr/local/libexec/nix-setuid-helper + # chmod 4755 /usr/local/libexec/nix-setuid-helper * Contact diff --git a/daemon.am b/daemon.am index aa75c6ed29..26b07c4105 100644 --- a/daemon.am +++ b/daemon.am @@ -136,6 +136,16 @@ guix_daemon_LDADD = \ guix_daemon_headers = \ nix/nix-daemon/shared.hh +libexec_PROGRAMS = nix-setuid-helper +nix_setuid_helper_SOURCES = \ + nix/nix-setuid-helper/nix-setuid-helper.cc + +nix_setuid_helper_CPPFLAGS = \ + $(libutil_a_CPPFLAGS) + +nix_setuid_helper_LDADD = \ + libutil.a libformat.a + noinst_HEADERS = \ $(libformat_headers) $(libutil_headers) $(libstore_headers) \ $(guix_daemon_headers) diff --git a/test-env.in b/test-env.in index 4e388053f9..afcf3afedc 100644 --- a/test-env.in +++ b/test-env.in @@ -27,6 +27,7 @@ if [ -x "@abs_top_builddir@/guix-daemon" ] then NIX_SUBSTITUTERS="" # don't resort to substituters + NIX_SETUID_HELPER="@abs_top_builddir@/nix-setuid-helper" # normally unused NIX_IGNORE_SYMLINK_STORE=1 # in case the store is a symlink NIX_STORE_DIR="@GUIX_TEST_ROOT@/store" NIX_LOCALSTATE_DIR="@GUIX_TEST_ROOT@/var" @@ -42,7 +43,7 @@ then export NIX_SUBSTITUTERS NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR \ NIX_LOCALSTATE_DIR NIX_LOG_DIR NIX_STATE_DIR NIX_DB_DIR \ - NIX_ROOT_FINDER + NIX_ROOT_FINDER NIX_SETUID_HELPER # Do that because store.scm calls `canonicalize-path' on it. mkdir -p "$NIX_STORE_DIR" From 0d12bea3067da11ba3e2b9edf54d83cfc6b7b478 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Fri, 14 Dec 2012 11:47:09 +0100 Subject: [PATCH 09/13] build: Avoid brace expansion in `nix/sync-with-upstream'. * nix/sync-with-upstream: Avoid brace expansion, for the sake of Dash. --- nix/sync-with-upstream | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nix/sync-with-upstream b/nix/sync-with-upstream index 69bd1fbee7..1f11fd7d47 100755 --- a/nix/sync-with-upstream +++ b/nix/sync-with-upstream @@ -61,7 +61,8 @@ do fi done -cp -v "$top_srcdir/nix-upstream/"{COPYING,AUTHORS} "$top_srcdir/nix" +cp -v "$top_srcdir/nix-upstream/COPYING" "$top_srcdir/nix" +cp -v "$top_srcdir/nix-upstream/AUTHORS" "$top_srcdir/nix" # Substitutions. sed -i "$top_srcdir/nix/libstore/gc.cc" \ From 4a44e743a0dfaa8fcaaa804b8c93a89ff68f2a97 Mon Sep 17 00:00:00 2001 From: Nikita Karetnikov Date: Fri, 14 Dec 2012 15:14:04 +0000 Subject: [PATCH 10/13] distro: Use (guix licenses) instead of strings. * distro/packages/acl.scm, distro/packages/attr.scm, distro/packages/autotools.scm, distro/packages/base.scm, distro/packages/bash.scm, distro/packages/bdw-gc.scm, distro/packages/bison.scm, distro/packages/bootstrap.scm, distro/packages/compression.scm, distro/packages/cpio.scm, distro/packages/ddrescue.scm, distro/packages/ed.scm, distro/packages/flex.scm, distro/packages/gawk.scm, distro/packages/gdbm.scm, distro/packages/gettext.scm, distro/packages/gnupg.scm, distro/packages/gnutls.scm, distro/packages/gperf.scm, distro/packages/guile.scm, distro/packages/help2man.scm, distro/packages/less.scm, distro/packages/libffi.scm, distro/packages/libsigsegv.scm, distro/packages/libunistring.scm, distro/packages/linux.scm, distro/packages/lout.scm, distro/packages/lsh.scm, distro/packages/m4.scm, distro/packages/multiprecision.scm, distro/packages/nano.scm, distro/packages/ncurses.scm, distro/packages/nettle.scm, distro/packages/perl.scm, distro/packages/pkg-config.scm, distro/packages/pth.scm, distro/packages/readline.scm, distro/packages/recutils.scm, distro/packages/shishi.scm, distro/packages/system.scm, distro/packages/texinfo.scm, distro/packages/time.scm, distro/packages/wget.scm, distro/packages/which.scm, distro/packages/zile.scm: Use (guix licenses). --- distro/packages/acl.scm | 3 ++- distro/packages/attr.scm | 3 ++- distro/packages/autotools.scm | 7 ++++--- distro/packages/base.scm | 27 ++++++++++++++------------- distro/packages/bash.scm | 3 ++- distro/packages/bdw-gc.scm | 3 ++- distro/packages/bison.scm | 3 ++- distro/packages/bootstrap.scm | 3 ++- distro/packages/compression.scm | 15 ++++++++------- distro/packages/cpio.scm | 3 ++- distro/packages/ddrescue.scm | 3 ++- distro/packages/ed.scm | 3 ++- distro/packages/flex.scm | 5 ++++- distro/packages/gawk.scm | 3 ++- distro/packages/gdbm.scm | 3 ++- distro/packages/gettext.scm | 3 ++- distro/packages/gnupg.scm | 18 ++++++++++-------- distro/packages/gnutls.scm | 10 ++++++---- distro/packages/gperf.scm | 3 ++- distro/packages/guile.scm | 7 ++++--- distro/packages/help2man.scm | 3 ++- distro/packages/less.scm | 3 ++- distro/packages/libffi.scm | 3 ++- distro/packages/libsigsegv.scm | 3 ++- distro/packages/libunistring.scm | 3 ++- distro/packages/linux.scm | 14 ++++++++------ distro/packages/lout.scm | 3 ++- distro/packages/lsh.scm | 10 ++++++---- distro/packages/m4.scm | 3 ++- distro/packages/multiprecision.scm | 7 ++++--- distro/packages/nano.scm | 3 ++- distro/packages/ncurses.scm | 3 ++- distro/packages/nettle.scm | 3 ++- distro/packages/perl.scm | 3 ++- distro/packages/pkg-config.scm | 3 ++- distro/packages/pth.scm | 3 ++- distro/packages/readline.scm | 3 ++- distro/packages/recutils.scm | 3 ++- distro/packages/shishi.scm | 8 +++++--- distro/packages/system.scm | 5 +++-- distro/packages/texinfo.scm | 3 ++- distro/packages/time.scm | 3 ++- distro/packages/wget.scm | 3 ++- distro/packages/which.scm | 3 ++- distro/packages/zile.scm | 3 ++- 45 files changed, 142 insertions(+), 90 deletions(-) diff --git a/distro/packages/acl.scm b/distro/packages/acl.scm index a119b5bf52..1c39f2185b 100644 --- a/distro/packages/acl.scm +++ b/distro/packages/acl.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages acl) + #:use-module (guix licenses) #:use-module (distro packages attr) #:use-module (distro packages perl) #:use-module ((distro packages gettext) @@ -58,4 +59,4 @@ "Library and tools for manipulating access control lists") (description "Library and tools for manipulating access control lists.") - (license '("GPLv2+" "LGPLv2.1+")))) + (license '(gpl2+ lgpl2.1+)))) diff --git a/distro/packages/attr.scm b/distro/packages/attr.scm index 03d3a17a8e..38c75fc2ae 100644 --- a/distro/packages/attr.scm +++ b/distro/packages/attr.scm @@ -18,6 +18,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages attr) + #:use-module (guix licenses) #:use-module (distro packages perl) #:use-module ((distro packages gettext) #:renamer (symbol-prefix-proc 'guix:)) @@ -65,4 +66,4 @@ "Library and tools for manipulating extended attributes") (description "Portable library and tools for manipulating extended attributes.") - (license '("GPLv2+" "LGPLv2.1+")))) + (license '(gpl2+ lgpl2.1+)))) diff --git a/distro/packages/autotools.scm b/distro/packages/autotools.scm index 61e7029cde..238025b540 100644 --- a/distro/packages/autotools.scm +++ b/distro/packages/autotools.scm @@ -18,6 +18,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages autotools) + #:use-module (guix licenses) #:use-module (distro) #:use-module (distro packages perl) #:use-module (distro packages m4) @@ -56,7 +57,7 @@ UNIX-like systems without manual user intervention. Autoconf creates a configuration script for a package from a template file that lists the operating system features that the package can use, in the form of M4 macro calls.") - (license "GPLv3+"))) ; some files are under GPLv2+ + (license gpl3+))) ; some files are under GPLv2+ (define-public automake (package @@ -82,7 +83,7 @@ can use, in the form of M4 macro calls.") "GNU Automake is a tool for automatically generating `Makefile.in' files compliant with the GNU Coding Standards. Automake requires the use of Autoconf.") - (license "GPLv2+"))) ; some files are under GPLv3+ + (license gpl2+))) ; some files are under GPLv3+ (define-public libtool (package @@ -111,5 +112,5 @@ complexity of using shared libraries behind a consistent, portable interface. To use libtool, add the new generic library building commands to your Makefile, Makefile.in, or Makefile.am. See the documentation for details.") - (license "GPLv3+") + (license gpl3+) (home-page "http://www.gnu.org/software/libtool/"))) diff --git a/distro/packages/base.scm b/distro/packages/base.scm index ea6297107f..1b08bfda8a 100644 --- a/distro/packages/base.scm +++ b/distro/packages/base.scm @@ -18,6 +18,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages base) + #:use-module (guix licenses) #:use-module (distro) #:use-module (distro packages bash) #:use-module (distro packages bootstrap) @@ -61,7 +62,7 @@ (synopsis "GNU Hello") (description "Yeah...") (home-page "http://www.gnu.org/software/hello/") - (license "GPLv3+"))) + (license gpl3+))) (define-public grep (package @@ -80,7 +81,7 @@ "The grep command searches one or more input files for lines containing a match to a specified pattern. By default, grep prints the matching lines.") - (license "GPLv3+") + (license gpl3+) (home-page "http://www.gnu.org/software/grep/"))) (define-public sed @@ -102,7 +103,7 @@ Instead, it is used to filter text, i.e., it takes text input and performs some operation (or set of operations) on it and outputs the modified text. Sed is typically used for extracting part of a file using pattern matching or substituting multiple occurrences of a string within a file.") - (license "GPLv3+") + (license gpl3+) (home-page "http://www.gnu.org/software/sed/"))) (define-public tar @@ -132,7 +133,7 @@ tape. The name \"Tar\" comes from this use; it stands for tape archiver. Despite the utility's name, Tar can direct its output to available devices, files, or other programs (using pipes), it can even access remote devices or files (as archives).") - (license "GPLv3+") + (license gpl3+) (home-page "http://www.gnu.org/software/tar/"))) (define-public patch @@ -158,7 +159,7 @@ files (as archives).") "GNU Patch takes a patch file containing a difference listing produced by the diff program and applies those differences to one or more original files, producing patched versions.") - (license "GPLv3+") + (license gpl3+) (home-page "http://savannah.gnu.org/projects/patch/"))) (define-public diffutils @@ -203,7 +204,7 @@ produce a merged file that contains both persons' changes together with warnings about conflicts. You can use the sdiff command to merge two files interactively.") - (license "GPLv3+") + (license gpl3+) (home-page "http://www.gnu.org/software/diffutils/"))) (define-public findutils @@ -245,7 +246,7 @@ The tools supplied with this package are: * updatedb - update a file name database; * xargs - build and execute command lines from standard input. ") - (license "GPLv3+") + (license gpl3+) (home-page "http://www.gnu.org/software/findutils/"))) (define-public coreutils @@ -271,7 +272,7 @@ operating system") "The GNU Core Utilities are the basic file, shell and text manipulation utilities of the GNU operating system. These are the core utilities which are expected to exist on every operating system.") - (license "GPLv3+") + (license gpl3+) (home-page "http://www.gnu.org/software/coreutils/"))) (define-public gnu-make @@ -300,7 +301,7 @@ Make gets its knowledge of how to build your program from a file called the makefile, which lists each of the non-source files and how to compute it from other files. When you write a program, you should write a makefile for it, so that it is possible to use Make to build and install the program.") - (license "GPLv3+") + (license gpl3+) (home-page "http://www.gnu.org/software/make/"))) (define-public binutils @@ -334,7 +335,7 @@ assembler, etc.)") "The GNU Binutils are a collection of binary tools. The main ones are `ld' (the GNU linker) and `as' (the GNU assembler). They also include the BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.") - (license "GPLv3+") + (license gpl3+) (home-page "http://www.gnu.org/software/binutils/"))) (define-public gcc-4.7 @@ -448,7 +449,7 @@ libraries for these languages (libstdc++, libgcj, libgomp,...). GCC development is a part of the GNU Project, aiming to improve the compiler used in the GNU system including the GNU/Linux variant.") - (license "GPLv3+") + (license gpl3+) (home-page "http://gcc.gnu.org/")))) (define-public glibc @@ -520,7 +521,7 @@ printf, exit... The GNU C library is used as the C library in the GNU system and most systems with the Linux kernel.") - (license "LGPLv2+") + (license lgpl2.0+) (home-page "http://www.gnu.org/software/libc/"))) @@ -893,7 +894,7 @@ exec ~a/bin/~a-gcc -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" missing `-rpath' flags, and to detect any misuse of libraries outside of the store.") (home-page #f) - (license "GPLv3+"))) + (license gpl3+))) (define %boot3-inputs ;; 4th stage inputs. diff --git a/distro/packages/bash.scm b/distro/packages/bash.scm index 7b427debd9..944bd077a3 100644 --- a/distro/packages/bash.scm +++ b/distro/packages/bash.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages bash) + #:use-module (guix licenses) #:use-module (distro packages ncurses) #:use-module (distro packages readline) #:use-module (guix packages) @@ -84,5 +85,5 @@ to conform to the IEEE POSIX P1003.2/ISO 9945.2 Shell and Tools standard. It offers functional improvements over sh for both programming and interactive use. In addition, most sh scripts can be run by Bash without modification.") - (license "GPLv3+") + (license gpl3+) (home-page "http://www.gnu.org/software/bash/")))) diff --git a/distro/packages/bdw-gc.scm b/distro/packages/bdw-gc.scm index 7f9800eb09..ea5470100d 100644 --- a/distro/packages/bdw-gc.scm +++ b/distro/packages/bdw-gc.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages bdw-gc) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) @@ -56,4 +57,4 @@ C or C++ programs, though that is not its primary goal.") ;; permissive X11-style license: ;; http://www.hpl.hp.com/personal/Hans_Boehm/gc/license.txt - (license "X11"))) + (license x11))) diff --git a/distro/packages/bison.scm b/distro/packages/bison.scm index 500fa3979d..2fc897fadf 100644 --- a/distro/packages/bison.scm +++ b/distro/packages/bison.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages bison) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) @@ -53,4 +54,4 @@ grammars ought to work with Bison with no change. Anyone familiar with Yacc should be able to use Bison with little trouble. You need to be fluent in C or C++ programming in order to use Bison.") - (license "GPLv3+"))) + (license gpl3+))) diff --git a/distro/packages/bootstrap.scm b/distro/packages/bootstrap.scm index 63e8109800..2349204755 100644 --- a/distro/packages/bootstrap.scm +++ b/distro/packages/bootstrap.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages bootstrap) + #:use-module (guix licenses) #:use-module (distro) #:use-module (guix packages) #:use-module (guix download) @@ -191,7 +192,7 @@ $out/bin/guile --version~%" (synopsis "Bootstrap Guile") (description "Pre-built Guile for bootstrapping purposes.") (home-page #f) - (license "LGPLv3+")))) + (license lgpl3+)))) (define %bootstrap-base-url ;; This is where the initial binaries come from. diff --git a/distro/packages/compression.scm b/distro/packages/compression.scm index 8eed5b601b..fdc3d6081f 100644 --- a/distro/packages/compression.scm +++ b/distro/packages/compression.scm @@ -17,6 +17,8 @@ ;;; along with Guix. If not, see . (define-module (distro packages compression) + #:use-module ((guix licenses) + #:renamer (symbol-prefix-proc 'license:)) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu)) @@ -57,9 +59,7 @@ currently used in zlib essentially never expands the data. (LZW can double or triple the file size in extreme cases.) zlib's memory footprint is also independent of the input data and can be reduced, if necessary, at some cost in compression.") - - ;; See . - (license "permissive"))) + (license license:zlib))) (define-public gzip (package @@ -85,7 +85,7 @@ We developed this program as a replacement for compress because of the Unisys and IBM patents covering the LZW algorithm used by compress. These patents made it impossible for us to use compress, and we needed a replacement. The superior compression ratio of gzip is just a bonus.") - (license "GPLv3+") + (license license:gpl3+) (home-page "http://www.gnu.org/software/gzip/"))) (define-public bzip2 @@ -142,7 +142,8 @@ compressor. It typically compresses files to within 10% to 15% of the best available techniques (the PPM family of statistical compressors), whilst being around twice as fast at compression and six times faster at decompression.") - (license "BSD-style") + (license (license:bsd-style "file://LICENSE" + "See LICENSE in the distribution.")) (home-page "http://www.bzip.org/")))) (define-public xz @@ -169,7 +170,7 @@ been modified quite a lot to be suitable for XZ Utils. The primary compression algorithm is currently LZMA2, which is used inside the .xz container format. With typical files, XZ Utils create 30 % smaller output than gzip and 15 % smaller output than bzip2.") - (license '("GPLv2+" "LGPLv2.1+")) ; bits of both + (license '(license:gpl2+ license:lgpl2.1+)) ; bits of both (home-page "http://tukaani.org/xz/"))) (define-public lzo @@ -195,4 +196,4 @@ compression ratio. LZO is written in ANSI C. Both the source code and the compressed data format are designed to be portable across platforms.") - (license "GPLv2+"))) + (license license:gpl2+))) diff --git a/distro/packages/cpio.scm b/distro/packages/cpio.scm index 70c5c01692..cb6d138ec5 100644 --- a/distro/packages/cpio.scm +++ b/distro/packages/cpio.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages cpio) + #:use-module (guix licenses) #:use-module (distro) #:use-module (guix packages) #:use-module (guix download) @@ -54,4 +55,4 @@ default, cpio creates binary format archives, for compatibility with older cpio programs. When extracting from archives, cpio automatically recognizes which kind of archive it is reading and can read archives created on machines with a different byte-order.") - (license "GPLv3+"))) \ No newline at end of file + (license gpl3+))) \ No newline at end of file diff --git a/distro/packages/ddrescue.scm b/distro/packages/ddrescue.scm index cd02e49544..cd302d144b 100644 --- a/distro/packages/ddrescue.scm +++ b/distro/packages/ddrescue.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages ddrescue) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu)) @@ -56,4 +57,4 @@ the same output file, you will probably obtain a complete and error-free file. This is so because the probability of having damaged areas at the same places on different input files is very low. Using the logfile, only the needed blocks are read from the second and successive copies.") - (license "GPLv3+"))) + (license gpl3+))) diff --git a/distro/packages/ed.scm b/distro/packages/ed.scm index 4b3ff76efc..d3723d41f2 100644 --- a/distro/packages/ed.scm +++ b/distro/packages/ed.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages ed) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu)) @@ -49,4 +50,4 @@ execute shell commands. Ed is the \"standard\" text editor in the sense that it is the original editor for Unix, and thus widely available. For most purposes, however, it is superseded by full-screen editors such as GNU Emacs or GNU Moe.") - (license "GPLv3+"))) + (license gpl3+))) diff --git a/distro/packages/flex.scm b/distro/packages/flex.scm index 05bd5e0dd5..cf3c69b12a 100644 --- a/distro/packages/flex.scm +++ b/distro/packages/flex.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages flex) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) @@ -55,4 +56,6 @@ can be compiled and linked to produce an executable. When the executable is run, it analyzes its input for occurrences of text matching the regular expressions for each rule. Whenever it finds a match, it executes the corresponding C code.") - (license "BSD"))) + (license (bsd-style "file://COPYING" + "See COPYING in the distribution.")))) + diff --git a/distro/packages/gawk.scm b/distro/packages/gawk.scm index 102f2acf36..fd8f087509 100644 --- a/distro/packages/gawk.scm +++ b/distro/packages/gawk.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages gawk) + #:use-module (guix licenses) #:use-module (distro packages libsigsegv) #:use-module (guix packages) #:use-module (guix download) @@ -56,4 +57,4 @@ easy with awk, especially the GNU implementation: Gawk. The awk utility interprets a special-purpose programming language that makes it possible to handle many data-reformatting jobs with just a few lines of code.") - (license "GPLv3+"))) + (license gpl3+))) diff --git a/distro/packages/gdbm.scm b/distro/packages/gdbm.scm index 9356cec246..d62bb7491f 100644 --- a/distro/packages/gdbm.scm +++ b/distro/packages/gdbm.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages gdbm) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu)) @@ -52,4 +53,4 @@ database. For compatibility with programs using old UNIX dbm function, the package also provides traditional dbm and ndbm interfaces.") - (license "GPLv3+"))) + (license gpl3+))) diff --git a/distro/packages/gettext.scm b/distro/packages/gettext.scm index ebc25218ab..a7b922f945 100644 --- a/distro/packages/gettext.scm +++ b/distro/packages/gettext.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages gettext) + #:use-module (guix licenses) #:use-module (distro) #:use-module (guix packages) #:use-module (guix download) @@ -61,4 +62,4 @@ offers to programmers, translators, and even users, a well integrated set of tools and documentation. Specifically, the GNU `gettext' utilities are a set of tools that provides a framework to help other GNU packages produce multi-lingual messages.") - (license "GPLv3"))) ; some files are under GPLv2+ + (license gpl3))) ; some files are under GPLv2+ diff --git a/distro/packages/gnupg.scm b/distro/packages/gnupg.scm index ca118355d0..eb792e31e0 100644 --- a/distro/packages/gnupg.scm +++ b/distro/packages/gnupg.scm @@ -17,9 +17,11 @@ ;;; along with Guix. If not, see . (define-module (distro packages gnupg) + #:use-module (guix licenses) #:use-module (distro packages pth) #:use-module (distro packages readline) - #:use-module (distro packages compression) + #:use-module ((distro packages compression) + #:renamer (symbol-prefix-proc 'guix:)) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu)) @@ -45,7 +47,7 @@ for all GnuPG components. Among these are GPG, GPGSM, GPGME, GPG-Agent, libgcrypt, Libksba, DirMngr, Pinentry, SmartCard Daemon and possibly more in the future.") - (license "LGPLv2+"))) + (license lgpl2.0+))) (define-public libgcrypt (package @@ -71,7 +73,7 @@ the code from GnuPG. It provides functions for all cryptographic building blocks: symmetric ciphers, hash algorithms, MACs, public key algorithms, large integer functions, random numbers and a lot of supporting functions.") - (license "LGPLv2+"))) + (license lgpl2.0+))) (define-public libassuan (package @@ -96,7 +98,7 @@ functions, random numbers and a lot of supporting functions.") protocol. This protocol is used for IPC between most newer GnuPG components. Both, server and client side functions are provided.") - (license "LGPLv2+"))) + (license lgpl2.0+))) (define-public libksba (package @@ -121,7 +123,7 @@ provided.") "KSBA (pronounced Kasbah) is a library to make X.509 certificates as well as the CMS easily accessible by other applications. Both specifications are building blocks of S/MIME and TLS.") - (license "GPLv3+"))) + (license gpl3+))) (define-public gnupg (package @@ -142,13 +144,13 @@ specifications are building blocks of S/MIME and TLS.") ;; ("libusb" ,libusb) ;; ("openldap" ,openldap) - ("bzip2" ,bzip2) + ("bzip2" ,guix:bzip2) ("libassuan" ,libassuan) ("libgcrypt" ,libgcrypt) ("libksba" ,libksba) ("pth" ,pth) ("libgpg-error" ,libgpg-error) - ("zlib" ,zlib) + ("zlib" ,guix:zlib) ("readline" ,readline))) (home-page "http://gnupg.org/") (synopsis @@ -163,4 +165,4 @@ command line tool with features for easy integration with other applications. A wealth of frontend applications and libraries are available. Version 2 of GnuPG also provides support for S/MIME.") - (license "GPLv3+"))) + (license gpl3+))) diff --git a/distro/packages/gnutls.scm b/distro/packages/gnutls.scm index 4498e8d117..65134bdded 100644 --- a/distro/packages/gnutls.scm +++ b/distro/packages/gnutls.scm @@ -17,11 +17,13 @@ ;;; along with Guix. If not, see . (define-module (distro packages gnutls) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (distro packages base) - #:use-module (distro packages compression) + #:use-module ((distro packages compression) + #:renamer (symbol-prefix-proc 'guix:)) #:use-module (distro packages nettle) #:use-module (distro packages guile) #:use-module (distro packages perl)) @@ -45,7 +47,7 @@ "Libtasn1 is the ASN.1 library used by GnuTLS, GNU Shishi and some other packages. The goal of this implementation is to be highly portable, and only require an ANSI C89 platform.") - (license "LGPLv2+"))) + (license lgpl2.0+))) (define-public gnutls (package @@ -71,7 +73,7 @@ portable, and only require an ANSI C89 platform.") (inputs `(("guile" ,guile-2.0) ;; ("lzo" ,lzo) - ("zlib" ,zlib) + ("zlib" ,guix:zlib) ("perl" ,perl))) (propagated-inputs `(("libtasn1" ,libtasn1) @@ -91,4 +93,4 @@ Quoting from the TLS protocol specification: Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.\"") - (license "LGPLv2.1+"))) + (license lgpl2.1+))) diff --git a/distro/packages/gperf.scm b/distro/packages/gperf.scm index cd9b05fa58..509407398d 100644 --- a/distro/packages/gperf.scm +++ b/distro/packages/gperf.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages gperf) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) @@ -51,4 +52,4 @@ GNU gperf is highly customizable. There are options for generating C or C++ code, for emitting switch statements or nested ifs instead of a hash table, and for tuning the algorithm employed by gperf.") - (license "GPLv3+"))) + (license gpl3+))) diff --git a/distro/packages/guile.scm b/distro/packages/guile.scm index 5f9ddc6724..e7ed613670 100644 --- a/distro/packages/guile.scm +++ b/distro/packages/guile.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages guile) + #:use-module (guix licenses) #:use-module (distro) #:use-module (distro packages bdw-gc) #:use-module (distro packages gawk) @@ -86,7 +87,7 @@ packaged as a library that can be embedded into programs to make them extensible. It supports many SRFIs.") (home-page "http://www.gnu.org/software/guile/") - (license "LGPLv2+"))) + (license lgpl2.0+))) (define-public guile-2.0 (package @@ -128,7 +129,7 @@ R6RS, Guile includes a module system, full access to POSIX system calls, networking support, multiple threads, dynamic linking, a foreign function call interface, and powerful string processing.") (home-page "http://www.gnu.org/software/guile/") - (license "LGPLv3+"))) + (license lgpl3+))) (define-public guile-2.0/fixed ;; A package of Guile 2.0 that's rarely changed. It is the one used @@ -181,7 +182,7 @@ Guile-Reader’s approach is similar to Common Lisp’s “read table”, but hopefully more powerful and flexible (for instance, one may instantiate as many readers as needed).") (home-page "http://www.nongnu.org/guile-reader/") - (license "GPLv3+"))) + (license gpl3+))) (define-public guile-reader/guile-1.8 ;; Guile-Reader built against Guile 1.8. diff --git a/distro/packages/help2man.scm b/distro/packages/help2man.scm index 51896f7704..0c3dee24d1 100644 --- a/distro/packages/help2man.scm +++ b/distro/packages/help2man.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages help2man) + #:use-module (guix licenses) #:use-module (guix download) #:use-module (guix packages) #:use-module (guix build-system gnu) @@ -48,4 +49,4 @@ (description "help2man produces simple manual pages from the ‘--help’ and ‘--version’ output of other commands.") - (license "GPLv3+"))) + (license gpl3+))) diff --git a/distro/packages/less.scm b/distro/packages/less.scm index fe69164b7f..59c4149aad 100644 --- a/distro/packages/less.scm +++ b/distro/packages/less.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages less) + #:use-module (guix licenses) #:use-module (distro packages ncurses) #:use-module (guix packages) #:use-module (guix download) @@ -47,4 +48,4 @@ have to read the entire input file before starting, so with large input files it starts up faster than text editors like vi. Less uses termcap (or terminfo on some systems), so it can run on a variety of terminals. There is even limited support for hardcopy terminals.") - (license "GPLv3+"))) ; some files are under GPLv2+ \ No newline at end of file + (license gpl3+))) ; some files are under GPLv2+ \ No newline at end of file diff --git a/distro/packages/libffi.scm b/distro/packages/libffi.scm index 8d702a92dd..c2ab94cf43 100644 --- a/distro/packages/libffi.scm +++ b/distro/packages/libffi.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages libffi) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) @@ -68,5 +69,5 @@ conversions for values passed between the two languages.") (home-page "http://sources.redhat.com/libffi/") ;; See . - (license "free, non-copyleft")))) + (license expat)))) diff --git a/distro/packages/libsigsegv.scm b/distro/packages/libsigsegv.scm index f81dffadda..f45c2c585e 100644 --- a/distro/packages/libsigsegv.scm +++ b/distro/packages/libsigsegv.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages libsigsegv) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) @@ -44,4 +45,4 @@ currently not available. Catching and handling a page fault is a useful technique for implementing pageable virtual memory, memory-mapped access to persistent databases, generational garbage collectors, stack overflow handlers, distributed shared memory, and more.") - (license "GPLv2+"))) + (license gpl2+))) diff --git a/distro/packages/libunistring.scm b/distro/packages/libunistring.scm index 20133d021f..7b19e7f9f6 100644 --- a/distro/packages/libunistring.scm +++ b/distro/packages/libunistring.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages libunistring) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) @@ -54,4 +55,4 @@ the user and can be in any language. libunistring is also for you if your application uses Unicode strings as internal in-memory representation.") (home-page "http://www.gnu.org/software/libunistring/") - (license "LGPLv3+"))) + (license lgpl3+))) diff --git a/distro/packages/linux.scm b/distro/packages/linux.scm index d6669312dc..0ec18300fc 100644 --- a/distro/packages/linux.scm +++ b/distro/packages/linux.scm @@ -18,7 +18,9 @@ ;;; along with Guix. If not, see . (define-module (distro packages linux) - #:use-module (distro packages compression) + #:use-module (guix licenses) + #:use-module ((distro packages compression) + #:renamer (symbol-prefix-proc 'guix:)) #:use-module (distro packages flex) #:use-module (distro packages ncurses) #:use-module (distro packages perl) @@ -107,7 +109,7 @@ Pluggable authentication modules are small shared object files that can be used through the PAM API to perform tasks, like authenticating a user at login. Local and dynamic reconfiguration are its key features") - (license "BSD"))) + (license bsd-3))) (define-public psmisc (package @@ -130,7 +132,7 @@ at login. Local and dynamic reconfiguration are its key features") "This PSmisc package is a set of some small useful utilities that use the proc filesystem. We're not about changing the world, but providing the system administrator with some help in common tasks.") - (license "GPLv2+"))) + (license gpl2+))) (define-public util-linux (package @@ -156,7 +158,7 @@ providing the system administrator with some help in common tasks.") ;; Allow 'patch-shebang' to do its work. (("@PERL@") "/bin/perl")))) %standard-phases))) - (inputs `(("zlib" ,zlib) + (inputs `(("zlib" ,guix:zlib) ("ncurses" ,ncurses) ("perl" ,perl))) (home-page "https://www.kernel.org/pub/linux/utils/util-linux/") @@ -167,5 +169,5 @@ providing the system administrator with some help in common tasks.") ;; Note that util-linux doesn't use the same license for all the ;; code. GPLv2+ is the default license for a code without an ;; explicitly defined license. - (license '("GPLv3+" "GPLv2+" "GPLv2" "LGPLv2+" - "BSD-original" "Public Domain")))) + (license '(gpl3+ gpl2+ gpl2 lgpl2.0+ + bsd-4 public-domain)))) diff --git a/distro/packages/lout.scm b/distro/packages/lout.scm index ecd2b144fa..85a363e963 100644 --- a/distro/packages/lout.scm +++ b/distro/packages/lout.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages lout) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) @@ -127,5 +128,5 @@ extended with definitions which are very much easier to write than troff of TeX macros because Lout is a high-level, purely functional language, the outcome of an eight-year research project that went back to the beginning.") - (license "GPLv3+") + (license gpl3+) (home-page "http://savannah.nongnu.org/projects/lout/")))) diff --git a/distro/packages/lsh.scm b/distro/packages/lsh.scm index f6caf52caf..aa74c77b60 100644 --- a/distro/packages/lsh.scm +++ b/distro/packages/lsh.scm @@ -17,13 +17,15 @@ ;;; along with Guix. If not, see . (define-module (distro packages lsh) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (distro) #:use-module (distro packages m4) #:use-module (distro packages linux) - #:use-module (distro packages compression) + #:use-module ((distro packages compression) + #:renamer (symbol-prefix-proc 'guix:)) #:use-module (distro packages multiprecision) #:use-module (distro packages readline) #:use-module (distro packages gperf) @@ -45,7 +47,7 @@ (home-page "http://liboop.ofb.net/") (synopsis "`liboop', an event loop library") (description "liboop is an event loop library.") - (license "LGPLv2.1+"))) + (license lgpl2.1+))) (define-public lsh (package @@ -65,7 +67,7 @@ ("m4" ,m4) ("readline" ,readline) ("liboop" ,liboop) - ("zlib" ,zlib) + ("zlib" ,guix:zlib) ("gmp" ,gmp) ("guile" ,guile-final) ("gperf" ,gperf) @@ -122,4 +124,4 @@ "lsh is a free implementation (in the GNU sense) of the ssh version 2 protocol, currently being standardised by the IETF SECSH working group.") - (license "GPLv2+"))) + (license gpl2+))) diff --git a/distro/packages/m4.scm b/distro/packages/m4.scm index 9b94f18db9..19243a8c2d 100644 --- a/distro/packages/m4.scm +++ b/distro/packages/m4.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages m4) + #:use-module (guix licenses) #:use-module (distro) #:use-module (guix packages) #:use-module (guix download) @@ -70,5 +71,5 @@ expansion, m4 has builtin functions for including named files, running UNIX commands, doing integer arithmetic, manipulating text in various ways, recursion etc... m4 can be used either as a front-end to a compiler or as a macro processor in its own right.") - (license "GPLv3+") + (license gpl3+) (home-page "http://www.gnu.org/software/m4/"))) diff --git a/distro/packages/multiprecision.scm b/distro/packages/multiprecision.scm index 9cfde88c3d..69a05b78bb 100644 --- a/distro/packages/multiprecision.scm +++ b/distro/packages/multiprecision.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages multiprecision) + #:use-module (guix licenses) #:use-module (distro) #:use-module (distro packages m4) #:use-module (guix packages) @@ -63,7 +64,7 @@ emphasis on speed. GMP is faster than any other bignum library. The advantage for GMP increases with the operand sizes for many operations, since GMP uses asymptotically faster algorithms.") - (license "LGPLv3+") + (license lgpl3+) (home-page "http://gmplib.org/"))) (define-public mpfr @@ -89,7 +90,7 @@ The main goal of MPFR is to provide a library for multiple-precision floating-point computation which is both efficient and has a well-defined semantics. It copies the good ideas from the ANSI/IEEE-754 standard for double-precision floating-point arithmetic (53-bit mantissa).") - (license "LGPLv3+") + (license lgpl3+) (home-page "http://www.mpfr.org/"))) (define-public mpc @@ -112,5 +113,5 @@ with exact rounding") "GNU MPC is a C library for the arithmetic of complex numbers with arbitrarily high precision and correct rounding of the result. It is built upon and follows the same principles as GNU MPFR.") - (license "LGPLv3+") + (license lgpl3+) (home-page "http://mpc.multiprecision.org/"))) diff --git a/distro/packages/nano.scm b/distro/packages/nano.scm index e87c679f1b..1af33aa33b 100644 --- a/distro/packages/nano.scm +++ b/distro/packages/nano.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages nano) + #:use-module (guix licenses) #:use-module ((distro packages gettext) #:renamer (symbol-prefix-proc 'guix:)) #:use-module (distro packages ncurses) @@ -48,4 +49,4 @@ editor, part of the Pine email suite from The University of Washington. It aims to emulate Pico as closely as possible and perhaps include extra functionality.") - (license "GPLv3+"))) ; some files are under GPLv2+ \ No newline at end of file + (license gpl3+))) ; some files are under GPLv2+ \ No newline at end of file diff --git a/distro/packages/ncurses.scm b/distro/packages/ncurses.scm index 59e627d4e2..9764474c93 100644 --- a/distro/packages/ncurses.scm +++ b/distro/packages/ncurses.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages ncurses) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) @@ -102,5 +103,5 @@ The ncurses code was developed under GNU/Linux. It has been in use for some time with OpenBSD as the system curses library, and on FreeBSD and NetBSD as an external package. It should port easily to any ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 Warp!") - (license "X11") + (license x11) (home-page "http://www.gnu.org/software/ncurses/")))) diff --git a/distro/packages/nettle.scm b/distro/packages/nettle.scm index a8e698fd89..e947780781 100644 --- a/distro/packages/nettle.scm +++ b/distro/packages/nettle.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages nettle) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) @@ -60,4 +61,4 @@ cryptographic libraries around. \nNettle tries to avoid this problem by doing one thing, the low-level crypto stuff, and providing a simple but general interface to it. In particular, Nettle doesn't do algorithm selection. It doesn't do memory allocation. It doesn't do any I/O.") - (license "GPLv2+"))) + (license gpl2+))) diff --git a/distro/packages/perl.scm b/distro/packages/perl.scm index 9704ae1440..b17342f7ad 100644 --- a/distro/packages/perl.scm +++ b/distro/packages/perl.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages perl) + #:use-module (guix licenses) #:use-module (distro) #:use-module (guix packages) #:use-module (guix download) @@ -71,4 +72,4 @@ "Perl 5 is a highly capable, feature-rich programming language with over 24 years of development.") (home-page "http://www.perl.org/") - (license "GPLv1+"))) ; or "Artistic" + (license gpl1+))) ; or "Artistic" diff --git a/distro/packages/pkg-config.scm b/distro/packages/pkg-config.scm index 554be6bcde..41efdbe12c 100644 --- a/distro/packages/pkg-config.scm +++ b/distro/packages/pkg-config.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages pkg-config) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) @@ -37,7 +38,7 @@ (build-system gnu-build-system) (arguments `(#:configure-flags '("--with-internal-glib"))) (home-page "http://www.freedesktop.org/wiki/Software/pkg-config") - (license "GPLv2+") + (license gpl2+) (synopsis "a helper tool used when compiling applications and libraries") (description diff --git a/distro/packages/pth.scm b/distro/packages/pth.scm index 4e5c90e2af..7934e9fbb9 100644 --- a/distro/packages/pth.scm +++ b/distro/packages/pth.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages pth) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu)) @@ -57,4 +58,4 @@ thread and process termination, and even customized callback functions. Additionally Pth provides an optional emulation API for POSIX.1c threads (\"Pthreads\") which can be used for backward compatibility to existing multithreaded applications.") - (license #f))) + (license lgpl2.1+))) diff --git a/distro/packages/readline.scm b/distro/packages/readline.scm index 9a780a23ac..d474198c17 100644 --- a/distro/packages/readline.scm +++ b/distro/packages/readline.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages readline) + #:use-module (guix licenses) #:use-module (distro) #:use-module (distro packages ncurses) #:use-module (guix packages) @@ -72,5 +73,5 @@ expansion on previous commands. The history facilites are also placed into a separate library, the History library, as part of the build process. The History library may be used without Readline in applications which desire its capabilities.") - (license "GPLv3+") + (license gpl3+) (home-page "http://savannah.gnu.org/projects/readline/"))) diff --git a/distro/packages/recutils.scm b/distro/packages/recutils.scm index afeecb5885..930f3885b7 100644 --- a/distro/packages/recutils.scm +++ b/distro/packages/recutils.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages recutils) + #:use-module (guix licenses) #:use-module (distro) #:use-module (guix packages) #:use-module (guix download) @@ -49,5 +50,5 @@ text-based databases") "GNU recutils is a set of tools and libraries to access human-editable, text-based databases called recfiles. The data is stored as a sequence of records, each record containing an arbitrary number of named fields.") - (license "GPLv3+") + (license gpl3+) (home-page "http://www.gnu.org/software/recutils/"))) diff --git a/distro/packages/shishi.scm b/distro/packages/shishi.scm index 3a71dc3c97..78ec727a36 100644 --- a/distro/packages/shishi.scm +++ b/distro/packages/shishi.scm @@ -18,10 +18,12 @@ ;;; along with Guix. If not, see . (define-module (distro packages shishi) + #:use-module (guix licenses) #:use-module (distro) #:use-module (distro packages gnutls) #:use-module (distro packages gnupg) - #:use-module (distro packages compression) + #:use-module ((distro packages compression) + #:renamer (symbol-prefix-proc 'guix:)) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu)) @@ -48,7 +50,7 @@ "patch/gets")))) (inputs `(("gnutls" ,gnutls) - ("zlib" ,zlib) + ("zlib" ,guix:zlib) ("libgcrypt" ,libgcrypt) ("libtasn1" ,libtasn1) ("patch/gets" ,(search-patch "shishi-gets-undeclared.patch")))) @@ -66,4 +68,4 @@ users to acquire and manage tickets (and more). The server side, a Key Distribution Center, is implemented by `shishid'. ") - (license "GPLv3+"))) ; some files are under GPLv2+ + (license gpl3+))) ; some files are under GPLv2+ diff --git a/distro/packages/system.scm b/distro/packages/system.scm index bd3de558c0..608b233a94 100644 --- a/distro/packages/system.scm +++ b/distro/packages/system.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages system) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) @@ -57,7 +58,7 @@ controlling terminal, such as, e.g., minicom. It can launch and control components of some complex system, such as Jabberd or MeTA1 (and it offers much more control over them than the native utilities). Finally, it can replace the inetd utility!") - (license "GPLv3+"))) + (license gpl3+))) (define-public inetutils (package @@ -87,4 +88,4 @@ it can replace the inetd utility!") ftp(d), hostname, ifconfig, inetd, logger, ping, rcp, rexec(d), rlogin(d), rsh(d), syslogd, talk(d), telnet(d), tftp(d), traceroute, uucpd, and whois.") - (license "GPLv3+"))) + (license gpl3+))) diff --git a/distro/packages/texinfo.scm b/distro/packages/texinfo.scm index a9417812b8..594f29cb70 100644 --- a/distro/packages/texinfo.scm +++ b/distro/packages/texinfo.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages texinfo) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) @@ -57,4 +58,4 @@ for online information and another for a printed manual, you need write only one document. And when the work is revised, you need revise only that one document. The Texinfo system is well-integrated with GNU Emacs.") - (license "GPLv3+"))) + (license gpl3+))) diff --git a/distro/packages/time.scm b/distro/packages/time.scm index ec510222c1..7215ab4fb3 100644 --- a/distro/packages/time.scm +++ b/distro/packages/time.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages time) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu)) @@ -50,4 +51,4 @@ of time, memory, and I/O and IPC calls. Some systems do not provide much information about program resource use; 'time' reports unavailable information as zero values. ") - (license "GPLv2+"))) \ No newline at end of file + (license gpl2+))) \ No newline at end of file diff --git a/distro/packages/wget.scm b/distro/packages/wget.scm index 9d877ec7cd..710cb4c7d8 100644 --- a/distro/packages/wget.scm +++ b/distro/packages/wget.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages wget) + #:use-module (guix licenses) #:use-module ((distro packages gettext) #:renamer (symbol-prefix-proc 'guix:)) #:use-module (distro packages gnutls) @@ -57,4 +58,4 @@ HTTPS and FTP, the most widely-used Internet protocols. It is a non-interactive commandline tool, so it may easily be called from scripts, cron jobs, terminals without X-Windows support, etc.") - (license "GPLv3+"))) ; some files are under GPLv2+ + (license gpl3+))) ; some files are under GPLv2+ diff --git a/distro/packages/which.scm b/distro/packages/which.scm index 24b60d8b4a..3f3a05f452 100644 --- a/distro/packages/which.scm +++ b/distro/packages/which.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages which) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu)) @@ -44,4 +45,4 @@ been executed when this argument had been entered at the shell prompt. It does this by searching for an executable or script in the directories listed in the environment variable PATH using the same algorithm as bash(1).") - (license "GPLv3+"))) ; some files are under GPLv2+ + (license gpl3+))) ; some files are under GPLv2+ diff --git a/distro/packages/zile.scm b/distro/packages/zile.scm index f5c6ba328b..8650852bab 100644 --- a/distro/packages/zile.scm +++ b/distro/packages/zile.scm @@ -17,6 +17,7 @@ ;;; along with Guix. If not, see . (define-module (distro packages zile) + #:use-module (guix licenses) #:use-module (guix download) #:use-module (guix packages) #:use-module (guix build-system gnu) @@ -62,4 +63,4 @@ containing the word \"emacs\", which instead contain the word However, all of this is packed into a program which typically compiles to about 130Kb.") - (license "GPLv3+"))) + (license gpl3+))) From 335dd762ccf757916939886003068e6f9111a47a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 14 Dec 2012 23:51:20 +0100 Subject: [PATCH 11/13] daemon: Disable use of substitutes for now. * nix/nix-daemon/guix-daemon.cc (main): Set `settings.useSubstitutes' to false, and `settings.substituters' to the empty list. --- nix/nix-daemon/guix-daemon.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/nix/nix-daemon/guix-daemon.cc b/nix/nix-daemon/guix-daemon.cc index 6bbea52196..1cb0987193 100644 --- a/nix/nix-daemon/guix-daemon.cc +++ b/nix/nix-daemon/guix-daemon.cc @@ -152,6 +152,10 @@ main (int argc, char *argv[]) settings.processEnvironment (); + /* FIXME: Disable substitutes until we have something that works. */ + settings.useSubstitutes = false; + settings.substituters.clear (); + argp_parse (&argp, argc, argv, 0, 0, 0); argvSaved = argv; From da30f55582c53966130ebe814ba084ff7b60fb6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 15 Dec 2012 00:06:09 +0100 Subject: [PATCH 12/13] daemon: Add `--debug' option. * nix/nix-daemon/guix-daemon.cc (GUIX_OPT_DEBUG): New macro. (options): Add `--debug'. (parse_opt): Set `verbosity' upon GUIX_OPT_DEBUG. --- nix/nix-daemon/guix-daemon.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/nix/nix-daemon/guix-daemon.cc b/nix/nix-daemon/guix-daemon.cc index 1cb0987193..79c719399e 100644 --- a/nix/nix-daemon/guix-daemon.cc +++ b/nix/nix-daemon/guix-daemon.cc @@ -21,6 +21,7 @@ #include #include "shared.hh" #include +#include #include #include @@ -56,6 +57,7 @@ builds derivations on behalf of its clients."; #define GUIX_OPT_DISABLE_LOG_COMPRESSION 6 #define GUIX_OPT_DISABLE_STORE_OPTIMIZATION 7 #define GUIX_OPT_IMPERSONATE_LINUX_26 8 +#define GUIX_OPT_DEBUG 9 static const struct argp_option options[] = { @@ -88,6 +90,8 @@ static const struct argp_option options[] = " (this option has no effect in this configuration)" #endif }, + { "debug", GUIX_OPT_DEBUG, 0, 0, + "Produce debugging output" }, { 0, 0, 0, 0, 0 } }; @@ -118,6 +122,9 @@ parse_opt (int key, char *arg, struct argp_state *state) case GUIX_OPT_LOSE_LOGS: settings.keepLog = false; break; + case GUIX_OPT_DEBUG: + verbosity = lvlDebug; + break; case 'C': settings.buildCores = atoi (arg); break; From 07ab4bf1fc590642307f18b4d1b8687dde3d664b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 15 Dec 2012 15:21:38 +0100 Subject: [PATCH 13/13] guix-build: Add `--verbosity'. * guix-build.in (%default-options): Add `verbosity'. (%options): Add `--verbosity'. (guix-build): Pass it to `set-build-options'. (show-help): Update accordingly. * doc/guix.texi (Invoking guix-build): Document `--verbosity'. --- doc/guix.texi | 6 ++++++ guix-build.in | 15 ++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index b8ab94f5ad..21f6d87b3a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -532,6 +532,12 @@ value @code{0} means to use as many CPU cores as available. @itemx -r @var{file} Make @var{file} a symlink to the result, and register it as a garbage collector root. + +@item --verbosity=@var{level} +Use the given verbosity level. @var{level} must be an integer between 0 +and 5; higher means more verbose output. Setting a level of 4 or more +may be helpful when debugging setup issues with the build daemon. + @end table Behind the scenes, @command{guix-build} is essentially an interface to diff --git a/guix-build.in b/guix-build.in index a3f6f5766b..5136a2a5e4 100644 --- a/guix-build.in +++ b/guix-build.in @@ -71,7 +71,8 @@ When SOURCE? is true, return the derivations of the package sources." (define %default-options ;; Alist of default option values. `((system . ,(%current-system)) - (substitutes? . #t))) + (substitutes? . #t) + (verbosity . 0))) (define (show-help) (display (_ "Usage: guix-build [OPTION]... PACKAGE-OR-DERIVATION... @@ -95,6 +96,8 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n")) (display (_ " -r, --root=FILE make FILE a symlink to the result, and register it as a garbage collector root")) + (display (_ " + --verbosity=LEVEL use the given verbosity LEVEL")) (newline) (display (_ " -h, --help display this help and exit")) @@ -147,7 +150,12 @@ Report bugs to: ~a.~%") "@PACKAGE_BUGREPORT@")) (alist-delete 'substitutes? result)))) (option '(#\r "root") #t #f (lambda (opt name arg result) - (alist-cons 'gc-root arg result))))) + (alist-cons 'gc-root arg result))) + (option '("verbosity") #t #f + (lambda (opt name arg result) + (let ((level (string->number arg))) + (alist-cons 'verbosity level + (alist-delete 'verbosity result))))))) ;;; @@ -244,7 +252,8 @@ Report bugs to: ~a.~%") "@PACKAGE_BUGREPORT@")) (set-build-options (%store) #:keep-failed? (assoc-ref opts 'keep-failed?) #:build-cores (or (assoc-ref opts 'cores) 0) - #:use-substitutes? (assoc-ref opts 'substitutes?)) + #:use-substitutes? (assoc-ref opts 'substitutes?) + #:verbosity (assoc-ref opts 'verbosity)) (if (assoc-ref opts 'derivations-only?) (format #t "~{~a~%~}" drv)