From e3900a4d64e4bf6f426809d6bff058e5a2ae9bc8 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Sat, 6 Jan 2018 15:47:47 -0500 Subject: build-system/go: Build with a filesystem union of Go dependencies. This basically changes (guix build-system go) so that instead of looking up its dependencies in a list of directories in $GOPATH, all the Go dependencies are symlinked into a single directory. Fixes . * guix/build/go-build-system.scm (setup-go-environment): New variable. (setup-environment, install-source): Remove variables. (unpack): Unpack the source relative to $GOPATH. (install): Do not install the compiled objects in the 'pkg' directory. Install the source code in this phase, and only install the source of the package named by IMPORT-PATH. * doc/guix.texi (Build Systems): Adjust accordingly. * gnu/packages/docker.scm (docker): Import (guix build union) on the build side and adjust to build phase name changes in (guix build-system go). * gnu/packages/shellutils.scm (direnv): Likewise. * gnu/packages/databases.scm (mongo-tools)[arguments]: Set '#:install-source #f'. * gnu/packages/music.scm (demlo)[arguments]: Move the 'install-scripts' phase after the 'install' phase. --- guix/build-system/go.scm | 2 + guix/build/go-build-system.scm | 139 ++++++++++++++++++++++------------------- 2 files changed, 78 insertions(+), 63 deletions(-) (limited to 'guix') diff --git a/guix/build-system/go.scm b/guix/build-system/go.scm index cf91163275..1b916af8f9 100644 --- a/guix/build-system/go.scm +++ b/guix/build-system/go.scm @@ -39,6 +39,7 @@ (define %go-build-system-modules ;; Build-side modules imported and used by default. `((guix build go-build-system) + (guix build union) ,@%gnu-build-system-modules)) (define (default-go) @@ -87,6 +88,7 @@ (guile #f) (imported-modules %go-build-system-modules) (modules '((guix build go-build-system) + (guix build union) (guix build utils)))) (define builder `(begin diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm index 022d4fe16b..1a716cea77 100644 --- a/guix/build/go-build-system.scm +++ b/guix/build/go-build-system.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Petter -;;; Copyright © 2017 Leo Famulari +;;; Copyright © 2017, 2019 Leo Famulari ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,6 +19,7 @@ (define-module (guix build go-build-system) #:use-module ((guix build gnu-build-system) #:prefix gnu:) + #:use-module (guix build union) #:use-module (guix build utils) #:use-module (ice-9 match) #:use-module (srfi srfi-1) @@ -38,24 +39,26 @@ ;; results. [0] ;; Go software is developed and built within a particular file system hierarchy -;; structure called a 'workspace' [1]. This workspace is found by Go -;; via the GOPATH environment variable. Typically, all Go source code -;; and compiled objects are kept in a single workspace, but it is -;; possible for GOPATH to contain a list of directories, and that is -;; what we do in this go-build-system. [2] +;; structure called a 'workspace' [1]. This workspace can be found by Go via +;; the GOPATH environment variable. Typically, all Go source code and compiled +;; objects are kept in a single workspace, but GOPATH may be a list of +;; directories [2]. In this go-build-system we create a filesystem union of +;; the Go-language dependencies. Previously, we made GOPATH a list of store +;; directories, but stopped because Go programs started keeping references to +;; these directories in Go 1.11: +;; . ;; -;; Go software, whether a package or a command, is uniquely named using -;; an 'import path'. The import path is based on the URL of the -;; software's source. Since most source code is provided over the -;; internet, the import path is typically a combination of the remote -;; URL and the source repository's file system structure. For example, -;; the Go port of the common `du` command is hosted on github.com, at -;; . Thus, the import path is -;; . [3] +;; Go software, whether a package or a command, is uniquely named using an +;; 'import path'. The import path is based on the URL of the software's source. +;; Because most source code is provided over the internet, the import path is +;; typically a combination of the remote URL and the source repository's file +;; system structure. For example, the Go port of the common `du` command is +;; hosted on github.com, at . Thus, the import +;; path is . [3] ;; -;; It may be possible to programatically guess a package's import path -;; based on the source URL, but we don't try that in this revision of -;; the go-build-system. +;; It may be possible to automatically guess a package's import path based on +;; the source URL, but we don't try that in this revision of the +;; go-build-system. ;; ;; Modules of modular Go libraries are named uniquely with their ;; file system paths. For example, the supplemental but "standardized" @@ -75,6 +78,17 @@ ;; file system union of the required modules of such libraries. I think ;; this could be improved in future revisions of the go-build-system. ;; +;; TODO: +;; * Avoid copying dependencies into the build environment and / or avoid using +;; a tmpdir when creating the inputs union. +;; * Use Go modules [4] +;; * Re-use compiled packages [5] +;; * Avoid the go-inputs hack +;; * Stop needing remove-go-references (-trimpath ? ) +;; * Remove module packages, only offering the full Git repos? This is +;; more idiomatic, I think, because Go downloads Git repos, not modules. +;; What are the trade-offs? +;; ;; [0] `go build`: ;; https://golang.org/cmd/go/#hdr-Compile_packages_and_dependencies ;; `go install`: @@ -107,18 +121,44 @@ ;; ;; [2] https://golang.org/doc/code.html#GOPATH ;; [3] https://golang.org/doc/code.html#ImportPaths +;; [4] https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more +;; [5] https://bugs.gnu.org/32919 ;; ;; Code: +(define* (setup-go-environment #:key inputs outputs #:allow-other-keys) + "Prepare a Go build environment for INPUTS and OUTPUTS. Build a filesystem +union of INPUTS. Export GOPATH, which helps the compiler find the source code +of the package being built and its dependencies, and GOBIN, which determines +where executables (\"commands\") are installed to. This phase is sometimes used +by packages that use (guix build-system gnu) but have a handful of Go +dependencies, so it should be self-contained." + ;; Using the current working directory as GOPATH makes it easier for packagers + ;; who need to manipulate the unpacked source code. + (setenv "GOPATH" (getcwd)) + (setenv "GOBIN" (string-append (assoc-ref outputs "out") "/bin")) + (let ((tmpdir (tmpnam))) + (match (go-inputs inputs) + (((names . directories) ...) + (union-build tmpdir (filter directory-exists? directories) + #:create-all-directories? #t + #:log-port (%make-void-port "w")))) + ;; XXX A little dance because (guix build union) doesn't use mkdir-p. + (copy-recursively tmpdir + (string-append (getenv "GOPATH")) + #:keep-mtime? #t) + (delete-file-recursively tmpdir)) + #t) + (define* (unpack #:key source import-path unpack-path #:allow-other-keys) - "Unpack SOURCE in the UNPACK-PATH, or the IMPORT-PATH is the UNPACK-PATH is -unset. When SOURCE is a directory, copy it instead of unpacking." + "Relative to $GOPATH, unpack SOURCE in the UNPACK-PATH, or the IMPORT-PATH is +the UNPACK-PATH is unset. When SOURCE is a directory, copy it instead of +unpacking." (if (string-null? import-path) ((display "WARNING: The Go import path is unset.\n"))) (if (string-null? unpack-path) (set! unpack-path import-path)) - (mkdir "src") - (let ((dest (string-append "src/" unpack-path))) + (let ((dest (string-append (getenv "GOPATH") "/src/" unpack-path))) (mkdir-p dest) (if (file-is-directory? source) (begin @@ -128,15 +168,6 @@ unset. When SOURCE is a directory, copy it instead of unpacking." (invoke "unzip" "-d" dest source) (invoke "tar" "-C" dest "-xvf" source))))) -(define* (install-source #:key install-source? outputs #:allow-other-keys) - "Install the source code to the output directory." - (let* ((out (assoc-ref outputs "out")) - (source "src") - (dest (string-append out "/" source))) - (when install-source? - (copy-recursively source dest #:keep-mtime? #t)) - #t)) - (define (go-package? name) (string-prefix? "go-" name)) @@ -155,27 +186,6 @@ unset. When SOURCE is a directory, copy it instead of unpacking." (_ #f)) inputs)))) -(define* (setup-environment #:key inputs outputs #:allow-other-keys) - "Export the variables GOPATH and GOBIN, which are based on INPUTS and OUTPUTS, -respectively." - (let ((out (assoc-ref outputs "out"))) - ;; GOPATH is where Go looks for the source code of the build's dependencies. - (set-path-environment-variable "GOPATH" - ;; XXX Matching "." hints that we could do - ;; something simpler here... - (list ".") - (match (go-inputs inputs) - (((_ . dir) ...) - dir))) - - ;; Add the source code of the package being built to GOPATH. - (if (getenv "GOPATH") - (setenv "GOPATH" (string-append (getcwd) ":" (getenv "GOPATH"))) - (setenv "GOPATH" (getcwd))) - ;; Where to install compiled executable files ('commands' in Go parlance'). - (setenv "GOBIN" (string-append out "/bin")) - #t)) - (define* (build #:key import-path #:allow-other-keys) "Build the package named by IMPORT-PATH." (with-throw-handler @@ -193,22 +203,26 @@ respectively." "Here are the results of `go env`:\n")) (invoke "go" "env")))) +;; Can this also install commands??? (define* (check #:key tests? import-path #:allow-other-keys) "Run the tests for the package named by IMPORT-PATH." (when tests? (invoke "go" "test" import-path)) #t) -(define* (install #:key outputs #:allow-other-keys) - "Install the compiled libraries. `go install` installs these files to -$GOPATH/pkg, so we have to copy them into the output directory manually. -Compiled executable files should have already been installed to the store based -on $GOBIN in the build phase." - ;; TODO: From go-1.10 onward, the pkg folder should not be needed (see - ;; https://lists.gnu.org/archive/html/guix-devel/2018-11/msg00208.html). - ;; Remove it? - (when (file-exists? "pkg") - (copy-recursively "pkg" (string-append (assoc-ref outputs "out") "/pkg"))) +(define* (install #:key install-source? outputs import-path unpack-path #:allow-other-keys) + "Install the source code of IMPORT-PATH to the primary output directory. +Compiled executable files (Go \"commands\") should have already been installed +to the store based on $GOBIN in the build phase. +XXX We can't make us of compiled libraries (Go \"packages\")." + (when install-source? + (if (string-null? import-path) + ((display "WARNING: The Go import path is unset.\n"))) + (let* ((out (assoc-ref outputs "out")) + (source (string-append (getenv "GOPATH") "/src/" import-path)) + (dest (string-append out "/src/" import-path))) + (mkdir-p dest) + (copy-recursively source dest #:keep-mtime? #t))) #t) (define* (remove-store-reference file file-name @@ -269,9 +283,8 @@ files in OUTPUTS." (delete 'bootstrap) (delete 'configure) (delete 'patch-generated-file-shebangs) + (add-before 'unpack 'setup-go-environment setup-go-environment) (replace 'unpack unpack) - (add-after 'unpack 'install-source install-source) - (add-before 'build 'setup-environment setup-environment) (replace 'build build) (replace 'check check) (replace 'install install) -- cgit v1.2.3 From bc4cea6f0ef20a620d8bbda8ea14f9adf209c78d Mon Sep 17 00:00:00 2001 From: Guy Fleury Iteriteka Date: Fri, 15 Mar 2019 13:02:51 -0400 Subject: download: Add MATE mirrors. * guix/download.scm (%mirrors): Add mirrors for the MATE Desktop. --- guix/download.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'guix') diff --git a/guix/download.scm b/guix/download.scm index 25eaefcffa..8865777818 100644 --- a/guix/download.scm +++ b/guix/download.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2016 Alex Griffin ;;; Copyright © 2016 David Craven ;;; Copyright © 2017 Tobias Geerinckx-Rice +;;; Copyright © 2019 Guy Fleury Iteriteka ;;; ;;; This file is part of GNU Guix. ;;; @@ -360,7 +361,10 @@ "https://openbsd.mirror.constant.com/pub/OpenBSD/" "https://ftp4.usa.openbsd.org/pub/OpenBSD/" "https://ftp5.usa.openbsd.org/pub/OpenBSD/" - "https://mirror.esc7.net/pub/OpenBSD/")))) + "https://mirror.esc7.net/pub/OpenBSD/") + (mate + "https://pub.mate-desktop.org/releases/" + "http://pub.mate-desktop.org/releases/")))) (define %mirror-file ;; Copy of the list of mirrors to a file. This allows us to keep a single -- cgit v1.2.3 From ee71d44e60a128e107436e1e0405b45280cb49c6 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 15 Mar 2019 17:43:45 +0100 Subject: build-system/glib-or-gtk: Support #:disallowed-references. * guix/build-system/glib-or-gtk.scm (glib-or-gtk-build): Add #:disallowed-references and honor it. --- guix/build-system/glib-or-gtk.scm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'guix') diff --git a/guix/build-system/glib-or-gtk.scm b/guix/build-system/glib-or-gtk.scm index fcd92f2334..8de7dfbfc2 100644 --- a/guix/build-system/glib-or-gtk.scm +++ b/guix/build-system/glib-or-gtk.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2019 Ludovic Courtès ;;; Copyright © 2013 Cyril Roelandt ;;; Copyright © 2014 Federico Beffa ;;; @@ -129,7 +129,8 @@ (system (%current-system)) (imported-modules %glib-or-gtk-build-system-modules) (modules %default-modules) - allowed-references) + allowed-references + disallowed-references) "Build SOURCE with INPUTS. See GNU-BUILD for more details." (define canonicalize-reference (match-lambda @@ -190,6 +191,10 @@ (and allowed-references (map canonicalize-reference allowed-references)) + #:disallowed-references + (and disallowed-references + (map canonicalize-reference + disallowed-references)) #:guile-for-build guile-for-build)) (define glib-or-gtk-build-system -- cgit v1.2.3 From 99aec37a78e7be6a591d0e5b7439896d669a75d1 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 14 Mar 2019 17:02:53 +0100 Subject: pack: "-RR" produces PRoot-enabled relocatable binaries. * gnu/packages/aux-files/run-in-namespace.c (exec_with_proot): New function. (main): When 'clone' fails, call 'rm_rf'. [PROOT_PROGRAM]: When 'clone' fails, call 'exec_with_proot'. * guix/scripts/pack.scm (wrapped-package): Add #:proot?. [proot]: New procedure. [build]: Compile with -DPROOT_PROGRAM when PROOT? is true. * guix/scripts/pack.scm (%options): Set the 'relocatable?' value to 'proot when "-R" is passed several times. (guix-pack): Pass #:proot? to 'wrapped-package'. * tests/guix-pack-relocatable.sh: Use "-RR" on Intel systems that lack user namespace support. * doc/guix.texi (Invoking guix pack): Document -RR. --- doc/guix.texi | 39 +++++++++++++++++++------ gnu/packages/aux-files/run-in-namespace.c | 47 ++++++++++++++++++++++++++++++- guix/scripts/pack.scm | 33 ++++++++++++++++++---- tests/guix-pack-relocatable.sh | 21 ++++++++++---- 4 files changed, 119 insertions(+), 21 deletions(-) (limited to 'guix') diff --git a/doc/guix.texi b/doc/guix.texi index a720f3f3bb..8d51bdf7f4 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4760,14 +4760,24 @@ symlinks, as well as empty mount points for virtual file systems like procfs. @end table +@cindex relocatable binaries @item --relocatable @itemx -R Produce @dfn{relocatable binaries}---i.e., binaries that can be placed -anywhere in the file system hierarchy and run from there. For example, -if you create a pack containing Bash with: +anywhere in the file system hierarchy and run from there. + +When this option is passed once, the resulting binaries require support for +@dfn{user namespaces} in the kernel Linux; when passed +@emph{twice}@footnote{Here's a trick to memorize it: @code{-RR}, which adds +PRoot support, can be thought of as the abbreviation of ``Really +Relocatable''. Neat, isn't it?}, relocatable binaries fall to back to PRoot +if user namespaces are unavailable, and essentially work anywhere---see below +for the implications. + +For example, if you create a pack containing Bash with: @example -guix pack -R -S /mybin=bin bash +guix pack -RR -S /mybin=bin bash @end example @noindent @@ -4786,12 +4796,23 @@ In that shell, if you type @code{ls /gnu/store}, you'll notice that altogether! That is probably the simplest way to deploy Guix-built software on a non-Guix machine. -There's a gotcha though: this technique relies on the @dfn{user -namespace} feature of the kernel Linux, which allows unprivileged users -to mount or change root. Old versions of Linux did not support it, and -some GNU/Linux distributions turn it off; on these systems, programs -from the pack @emph{will fail to run}, unless they are unpacked in the -root file system. +@quotation Note +By default, relocatable binaries rely on the @dfn{user namespace} feature of +the kernel Linux, which allows unprivileged users to mount or change root. +Old versions of Linux did not support it, and some GNU/Linux distributions +turn it off. + +To produce relocatable binaries that work even in the absence of user +namespaces, pass @option{--relocatable} or @option{-R} @emph{twice}. In that +case, binaries will try user namespace support and fall back to PRoot if user +namespaces are not supported. + +The @uref{https://proot-me.github.io/, PRoot} program provides the necessary +support for file system virtualization. It achieves that by using the +@code{ptrace} system call on the running program. This approach has the +advantage to work without requiring special kernel support, but it incurs +run-time overhead every time a system call is made. +@end quotation @item --expression=@var{expr} @itemx -e @var{expr} diff --git a/gnu/packages/aux-files/run-in-namespace.c b/gnu/packages/aux-files/run-in-namespace.c index f0cff88552..551f4db88a 100644 --- a/gnu/packages/aux-files/run-in-namespace.c +++ b/gnu/packages/aux-files/run-in-namespace.c @@ -1,5 +1,5 @@ /* GNU Guix --- Functional package management for GNU - Copyright (C) 2018 Ludovic Courtès + Copyright (C) 2018, 2019 Ludovic Courtès This file is part of GNU Guix. @@ -211,6 +211,46 @@ disallow_setgroups (pid_t pid) close (fd); } + +#ifdef PROOT_PROGRAM + +/* Execute the wrapped program with PRoot, passing it ARGC and ARGV, and + "bind-mounting" STORE in the right place. */ +static void +exec_with_proot (const char *store, int argc, char *argv[]) +{ + int proot_specific_argc = 4; + int proot_argc = argc + proot_specific_argc; + char *proot_argv[proot_argc], *proot; + char bind_spec[strlen (store) + 1 + sizeof "@STORE_DIRECTORY@"]; + + strcpy (bind_spec, store); + strcat (bind_spec, ":"); + strcat (bind_spec, "@STORE_DIRECTORY@"); + + proot = concat (store, PROOT_PROGRAM); + + proot_argv[0] = proot; + proot_argv[1] = "-b"; + proot_argv[2] = bind_spec; + proot_argv[3] = "@WRAPPED_PROGRAM@"; + + for (int i = 0; i < argc; i++) + proot_argv[i + proot_specific_argc] = argv[i + 1]; + + proot_argv[proot_argc] = NULL; + + /* Seccomp support seems to invariably lead to segfaults; disable it by + default. */ + setenv ("PROOT_NO_SECCOMP", "1", 0); + + int err = execv (proot, proot_argv); + if (err < 0) + assert_perror (errno); +} + +#endif + int main (int argc, char *argv[]) @@ -274,6 +314,10 @@ main (int argc, char *argv[]) break; case -1: + rm_rf (new_root); +#ifdef PROOT_PROGRAM + exec_with_proot (store, argc, argv); +#else fprintf (stderr, "%s: error: 'clone' failed: %m\n", argv[0]); fprintf (stderr, "\ This may be because \"user namespaces\" are not supported on this system.\n\ @@ -281,6 +325,7 @@ Consequently, we cannot run '@WRAPPED_PROGRAM@',\n\ unless you move it to the '@STORE_DIRECTORY@' directory.\n\ \n\ Please refer to the 'guix pack' documentation for more information.\n"); +#endif return EXIT_FAILURE; default: diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm index e2ecddfbfc..bfb8b85356 100644 --- a/guix/scripts/pack.scm +++ b/guix/scripts/pack.scm @@ -517,10 +517,14 @@ please email '~a'~%") ;;; (define* (wrapped-package package - #:optional (compiler (c-compiler))) + #:optional (compiler (c-compiler)) + #:key proot?) (define runner (local-file (search-auxiliary-file "run-in-namespace.c"))) + (define (proot) + (specification->package "proot-static")) + (define build (with-imported-modules (source-module-closure '((guix build utils) @@ -550,10 +554,19 @@ please email '~a'~%") (("@STORE_DIRECTORY@") (%store-directory))) (let* ((base (strip-store-prefix program)) - (result (string-append #$output "/" base))) + (result (string-append #$output "/" base)) + (proot #$(and proot? + #~(string-drop + #$(file-append (proot) "/bin/proot") + (+ (string-length (%store-directory)) + 1))))) (mkdir-p (dirname result)) - (invoke #$compiler "-std=gnu99" "-static" "-Os" "-g0" "-Wall" - "run.c" "-o" result) + (apply invoke #$compiler "-std=gnu99" "-static" "-Os" "-g0" "-Wall" + "run.c" "-o" result + (if proot + (list (string-append "-DPROOT_PROGRAM=\"" + proot "\"")) + '())) (delete-file "run.c"))) (setvbuf (current-output-port) 'line) @@ -646,7 +659,12 @@ please email '~a'~%") (exit 0))) (option '(#\R "relocatable") #f #f (lambda (opt name arg result) - (alist-cons 'relocatable? #t result))) + (match (assq-ref result 'relocatable?) + (#f + (alist-cons 'relocatable? #t result)) + (_ + (alist-cons 'relocatable? 'proot + (alist-delete 'relocatable? result)))))) (option '(#\e "expression") #t #f (lambda (opt name arg result) (alist-cons 'expression arg result))) @@ -821,11 +839,14 @@ Create a bundle of PACKAGE.\n")) #:graft? (assoc-ref opts 'graft?)))) (let* ((dry-run? (assoc-ref opts 'dry-run?)) (relocatable? (assoc-ref opts 'relocatable?)) + (proot? (eq? relocatable? 'proot)) (manifest (let ((manifest (manifest-from-args store opts))) ;; Note: We cannot honor '--bootstrap' here because ;; 'glibc-bootstrap' lacks 'libc.a'. (if relocatable? - (map-manifest-entries wrapped-package manifest) + (map-manifest-entries + (cut wrapped-package <> #:proot? proot?) + manifest) manifest))) (pack-format (assoc-ref opts 'format)) (name (string-append (symbol->string pack-format) diff --git a/tests/guix-pack-relocatable.sh b/tests/guix-pack-relocatable.sh index 554416627b..38dcf1e485 100644 --- a/tests/guix-pack-relocatable.sh +++ b/tests/guix-pack-relocatable.sh @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2018 Ludovic Courtès +# Copyright © 2018, 2019 Ludovic Courtès # # This file is part of GNU Guix. # @@ -41,17 +41,28 @@ STORE_PARENT="`dirname $NIX_STORE_DIR`" export STORE_PARENT if test "$STORE_PARENT" = "/"; then exit 77; fi -# This test requires user namespaces and associated command-line tools. -if ! unshare -mrf sh -c 'mount -t tmpfs none "$STORE_PARENT"' +if unshare -mrf sh -c 'mount -t tmpfs none "$STORE_PARENT"' then - exit 77 + # Test the wrapper that relies on user namespaces. + relocatable_option="-R" +else + case "`uname -m`" in + x86_64|i?86) + # Test the wrapper that falls back to PRoot. + relocatable_option="-RR";; + *) + # XXX: Our 'proot' package currently fails tests on non-Intel + # architectures, so skip this by default. + exit 77;; + esac fi test_directory="`mktemp -d`" export test_directory trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT -tarball="`guix pack -R -S /Bin=bin sed`" +export relocatable_option +tarball="`guix pack $relocatable_option -S /Bin=bin sed`" (cd "$test_directory"; tar xvf "$tarball") # Run that relocatable 'sed' in a user namespace where we "erase" the store by -- cgit v1.2.3 From 41dfe40f5dbd162558c3954ae8eb991a56a65682 Mon Sep 17 00:00:00 2001 From: "P.C. Shyamshankar" Date: Fri, 22 Feb 2019 22:38:47 -0500 Subject: pack: Construct inferior package names correctly. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * guix/scripts/pack.scm (wrapped-package): now correctly constructs full names of inferior packages. Co-authored-by: Ludovic Courtès --- guix/scripts/pack.scm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'guix') diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm index bfb8b85356..17a166d9d7 100644 --- a/guix/scripts/pack.scm +++ b/guix/scripts/pack.scm @@ -28,6 +28,7 @@ #:use-module (guix store) #:use-module ((guix status) #:select (with-status-verbosity)) #:use-module (guix grafts) + #:autoload (guix inferior) (inferior-package?) #:use-module (guix monads) #:use-module (guix modules) #:use-module (guix packages) @@ -586,7 +587,15 @@ please email '~a'~%") (find-files #$(file-append package "/sbin")) (find-files #$(file-append package "/libexec"))))))) - (computed-file (string-append (package-full-name package "-") "R") + (computed-file (string-append + (cond ((package? package) + (package-full-name package "-")) + ((inferior-package? package) + (string-append (inferior-package-name package) + "-" + (inferior-package-version package))) + (else "wrapper")) + "R") build)) (define (map-manifest-entries proc manifest) -- cgit v1.2.3 From 22f95e028f038cee342f455dfc55bd32b804907c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 16 Mar 2019 15:11:29 +0100 Subject: tests: Add 'with-environment-variable'. * tests/scripts.scm (with-environment-variable): Move to... * guix/tests.scm (with-environment-variable): ... here. * tests/build-utils.scm ("wrap-program, one input, multiple calls"): Use it instead of 'setenv'. --- guix/tests.scm | 15 +++++++++++++++ tests/build-utils.scm | 30 ++++++++++++++++-------------- tests/scripts.scm | 15 +-------------- 3 files changed, 32 insertions(+), 28 deletions(-) (limited to 'guix') diff --git a/guix/tests.scm b/guix/tests.scm index 749a4edd7a..35ebf8464d 100644 --- a/guix/tests.scm +++ b/guix/tests.scm @@ -39,6 +39,8 @@ canonical-file? network-reachable? shebang-too-long? + with-environment-variable + mock %test-substitute-urls test-assertm @@ -195,6 +197,19 @@ store is opened." (run-with-store store exp #:guile-for-build (%guile-for-build))))) +(define-syntax-rule (with-environment-variable variable value body ...) + "Run BODY with VARIABLE set to VALUE." + (let ((orig (getenv variable))) + (dynamic-wind + (lambda () + (setenv variable value)) + (lambda () + body ...) + (lambda () + (if orig + (setenv variable orig) + (unsetenv variable)))))) + ;;; ;;; Narinfo files, as used by the substituter. diff --git a/tests/build-utils.scm b/tests/build-utils.scm index 7d49446f66..03216f9a35 100644 --- a/tests/build-utils.scm +++ b/tests/build-utils.scm @@ -107,19 +107,21 @@ ;; it can't know about the bootstrap bash in the store, since it's not ;; named "bash". Help it out a bit by providing a symlink it this ;; package's output. - (setenv "PATH" (dirname bash)) - (wrap-program foo `("GUIX_FOO" prefix ("hello"))) - (wrap-program foo `("GUIX_BAR" prefix ("world"))) - - ;; The bootstrap Bash is linked against an old libc and would abort with - ;; an assertion failure when trying to load incompatible locale data. - (unsetenv "LOCPATH") - - (let* ((pipe (open-input-pipe foo)) - (str (get-string-all pipe))) - (with-directory-excursion directory - (for-each delete-file '("foo" ".foo-real"))) - (and (zero? (close-pipe pipe)) - str)))))) + (with-environment-variable "PATH" (dirname bash) + (wrap-program foo `("GUIX_FOO" prefix ("hello"))) + (wrap-program foo `("GUIX_BAR" prefix ("world"))) + + ;; The bootstrap Bash is linked against an old libc and would abort + ;; with an assertion failure when trying to load incompatible locale + ;; data. + (unsetenv "LOCPATH") + + (let* ((pipe (open-input-pipe foo)) + (str (get-string-all pipe))) + (with-directory-excursion directory + (for-each delete-file '("foo" ".foo-real"))) + (and (zero? (close-pipe pipe)) + str))))))) + (test-end) diff --git a/tests/scripts.scm b/tests/scripts.scm index 3901710953..efee271197 100644 --- a/tests/scripts.scm +++ b/tests/scripts.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015 Ludovic Courtès +;;; Copyright © 2015, 2019 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,19 +25,6 @@ ;; Test the (guix scripts) module. -(define-syntax-rule (with-environment-variable variable value body ...) - "Run BODY with VARIABLE set to VALUE." - (let ((orig (getenv variable))) - (dynamic-wind - (lambda () - (setenv variable value)) - (lambda () - body ...) - (lambda () - (if orig - (setenv variable orig) - (unsetenv variable)))))) - (test-begin "scripts") -- cgit v1.2.3 From 21fcfe1ee969cc477dc41486ae4074e655d44274 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 16 Mar 2019 17:09:19 +0100 Subject: bootloader: Use 'invoke/quiet' when running 'grub-install' and co. This hides potentially confusing GRUB messages from the user, such as "Installing for i386-pc platform." * gnu/bootloader/extlinux.scm (install-extlinux): Use 'invoke/quiet' instead of 'system*' and 'error'. * gnu/bootloader/grub.scm (install-grub, install-grub-efi): Likewise. * guix/scripts/system.scm (bootloader-installer-script): Guard against 'message-condition?' and handle them properly. --- gnu/bootloader/extlinux.scm | 8 +++----- gnu/bootloader/grub.scm | 16 ++++++++-------- guix/scripts/system.scm | 13 +++++++++++-- 3 files changed, 22 insertions(+), 15 deletions(-) (limited to 'guix') diff --git a/gnu/bootloader/extlinux.scm b/gnu/bootloader/extlinux.scm index 2bb711eed1..40108584a8 100644 --- a/gnu/bootloader/extlinux.scm +++ b/gnu/bootloader/extlinux.scm @@ -91,11 +91,9 @@ TIMEOUT ~a~%" (for-each (lambda (file) (install-file file install-dir)) (find-files syslinux-dir "\\.c32$")) - (unless - (and (zero? (system* extlinux "--install" install-dir)) - (write-file-on-device - (string-append syslinux-dir "/" #$mbr) 440 device 0)) - (error "failed to install SYSLINUX"))))) + (invoke/quiet extlinux "--install" install-dir) + (write-file-on-device (string-append syslinux-dir "/" #$mbr) + 440 device 0)))) (define install-extlinux-mbr (install-extlinux "mbr.bin")) diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm index 51d5787364..14aede72c5 100644 --- a/gnu/bootloader/grub.scm +++ b/gnu/bootloader/grub.scm @@ -369,10 +369,11 @@ submenu \"GNU system, old configurations...\" {~%") ;; root partition. (setenv "GRUB_ENABLE_CRYPTODISK" "y") - (unless (zero? (system* grub "--no-floppy" "--target=i386-pc" - "--boot-directory" install-dir - device)) - (error "failed to install GRUB (BIOS)"))))) + ;; Hide potentially confusing messages from the user, such as + ;; "Installing for i386-pc platform." + (invoke/quiet grub "--no-floppy" "--target=i386-pc" + "--boot-directory" install-dir + device)))) (define install-grub-efi #~(lambda (bootloader efi-dir mount-point) @@ -388,10 +389,9 @@ submenu \"GNU system, old configurations...\" {~%") ;; Tell 'grub-install' that there might be a LUKS-encrypted /boot or ;; root partition. (setenv "GRUB_ENABLE_CRYPTODISK" "y") - (unless (zero? (system* grub-install "--boot-directory" install-dir - "--bootloader-id=Guix" - "--efi-directory" target-esp)) - (error "failed to install GRUB (EFI)"))))) + (invoke/quiet grub-install "--boot-directory" install-dir + "--bootloader-id=Guix" + "--efi-directory" target-esp)))) diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index d67b9f8185..b4bf66819f 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -808,8 +808,17 @@ and TARGET arguments." #~(begin (use-modules (gnu build bootloader) (guix build utils) - (ice-9 binary-ports)) - (#$installer #$bootloader #$device #$target))))) + (ice-9 binary-ports) + (srfi srfi-34) + (srfi srfi-35)) + + (guard (c ((message-condition? c) ;XXX: i18n + (format (current-error-port) "error: ~a~%" + (condition-message c)) + (exit 1))) + (#$installer #$bootloader #$device #$target) + (format #t "bootloader successfully installed on '~a'~%" + device)))))) (define* (perform-action action os #:key skip-safety-checks? -- cgit v1.2.3 From b56d160944ace6e06fcfe5a36310c98e6a213b87 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Sat, 16 Mar 2019 07:01:26 +0100 Subject: guix: Match package names case-insensitively. * guix/scripts/package.scm (options->upgrade-predicate, process-query): Use REGEXP/ICASE when matching package names. --- guix/scripts/package.scm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'guix') diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index efff511299..b0c6a7ced7 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2016 Roel Janssen ;;; Copyright © 2016 Benz Schenk ;;; Copyright © 2016 Chris Marusich +;;; Copyright © 2019 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; @@ -526,14 +527,14 @@ upgrading, #f otherwise." (define upgrade-regexps (filter-map (match-lambda (('upgrade . regexp) - (make-regexp* (or regexp ""))) + (make-regexp* (or regexp "") regexp/icase)) (_ #f)) opts)) (define do-not-upgrade-regexps (filter-map (match-lambda (('do-not-upgrade . regexp) - (make-regexp* regexp)) + (make-regexp* regexp regexp/icase)) (_ #f)) opts)) @@ -686,7 +687,7 @@ processed, #f otherwise." #t) (('list-installed regexp) - (let* ((regexp (and regexp (make-regexp* regexp))) + (let* ((regexp (and regexp (make-regexp* regexp regexp/icase))) (manifest (profile-manifest profile)) (installed (manifest-entries manifest))) (leave-on-EPIPE @@ -702,7 +703,7 @@ processed, #f otherwise." #t)) (('list-available regexp) - (let* ((regexp (and regexp (make-regexp* regexp))) + (let* ((regexp (and regexp (make-regexp* regexp regexp/icase))) (available (fold-available-packages (lambda* (name version result #:key outputs location -- cgit v1.2.3 From 8ffab257ddb6c5df1ac43b9baeb5f0373bffb482 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 17 Mar 2019 16:22:43 +0100 Subject: guix system: Fix success report of the bootloader installation. Fixes . Reported by Jack Hill . Regression introduced in 21fcfe1ee969cc477dc41486ae4074e655d44274. * guix/scripts/system.scm (bootloader-installer-script): Ungexp DEVICE. --- guix/scripts/system.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'guix') diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index b4bf66819f..97508f4bd6 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -818,7 +818,7 @@ and TARGET arguments." (exit 1))) (#$installer #$bootloader #$device #$target) (format #t "bootloader successfully installed on '~a'~%" - device)))))) + #$device)))))) (define* (perform-action action os #:key skip-safety-checks? -- cgit v1.2.3 From cd2e4b2a8dbded85f7183d86be0747707e55d49e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 17 Mar 2019 17:01:56 +0100 Subject: describe: Add 'current-profile-date'. * guix/describe.scm (current-profile-date): New procedure. --- guix/describe.scm | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'guix') diff --git a/guix/describe.scm b/guix/describe.scm index 00372bbed7..893dca2640 100644 --- a/guix/describe.scm +++ b/guix/describe.scm @@ -21,10 +21,12 @@ #:use-module (guix profiles) #:use-module (guix packages) #:use-module ((guix utils) #:select (location-file)) - #:use-module ((guix store) #:select (%store-prefix)) + #:use-module ((guix store) #:select (%store-prefix store-path?)) + #:use-module ((guix config) #:select (%state-directory)) #:use-module (srfi srfi-1) #:use-module (ice-9 match) #:export (current-profile + current-profile-date current-profile-entries package-path-entries @@ -55,6 +57,27 @@ or #f if this is not applicable." (and (file-exists? (string-append candidate "/manifest")) candidate))))))) +(define (current-profile-date) + "Return the creation date of the current profile (produced by 'guix pull'), +as a number of seconds since the Epoch, or #f if it could not be determined." + ;; Normally 'current-profile' will return ~/.config/guix/current. We need + ;; to 'readlink' once to get '/var/guix/…/guix-profile', whose mtime is the + ;; piece of information we're looking for. + (let loop ((profile (current-profile))) + (match profile + (#f #f) + ((? store-path?) #f) + (file + (if (string-prefix? %state-directory file) + (and=> (lstat file) stat:mtime) + (catch 'system-error + (lambda () + (let ((target (readlink file))) + (loop (if (string-prefix? "/" target) + target + (string-append (dirname file) "/" target))))) + (const #f))))))) + (define current-profile-entries (mlambda () "Return the list of entries in the 'guix pull' profile the calling process -- cgit v1.2.3 From 55da450a1fc9969d9e791d7d94da90df3aa284db Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 17 Mar 2019 17:02:15 +0100 Subject: scripts: 'warn-about-old-distro' looks at the age of the running Guix. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes a discrepancy that could be seen when running: sudo guix system … where 'guix' would warn about the age of root's Guix, even though the running Guix is the user's, not root's. * guix/scripts.scm (warn-about-old-distro)[false-if-not-found]: Remove. Obtain the profile date by calling 'current-profile-date' instead of stat'ing "current-guix". --- guix/scripts.scm | 50 ++++++++++++++++++++------------------------------ 1 file changed, 20 insertions(+), 30 deletions(-) (limited to 'guix') diff --git a/guix/scripts.scm b/guix/scripts.scm index 5e20ecd92c..75d801a466 100644 --- a/guix/scripts.scm +++ b/guix/scripts.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2017, 2018 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2017, 2018, 2019 Ludovic Courtès ;;; Copyright © 2014 Deck Pickard ;;; Copyright © 2015, 2016 Alex Kost ;;; @@ -27,6 +27,7 @@ #:use-module (guix packages) #:use-module (guix derivations) #:use-module ((guix profiles) #:select (%profile-directory)) + #:autoload (guix describe) (current-profile-date) #:use-module (guix build syscalls) #:use-module (srfi srfi-1) #:use-module (srfi srfi-19) @@ -158,36 +159,25 @@ Show what and how will/would be built." #:key (suggested-command "guix package -u")) "Emit a warning if Guix is older than OLD seconds." - (let-syntax ((false-if-not-found - (syntax-rules () - ((_ exp) - (catch 'system-error - (lambda () - exp) - (lambda args - (if (= ENOENT (system-error-errno args)) - #f - (apply throw args)))))))) - (define (seconds->days seconds) - (round (/ seconds (* 3600 24)))) - - (define age - (match (false-if-not-found - (lstat (string-append %profile-directory "/current-guix"))) - (#f #f) - (stat (- (time-second (current-time time-utc)) - (stat:mtime stat))))) - - (when (and age (>= age old)) - (warning (N_ "Your Guix installation is ~a day old.\n" - "Your Guix installation is ~a days old.\n" - (seconds->days age)) - (seconds->days age))) - (when (or (not age) (>= age old)) - (warning (G_ "Consider running 'guix pull' followed by + (define (seconds->days seconds) + (round (/ seconds (* 3600 24)))) + + (define age + (match (current-profile-date) + (#f #f) + (date (- (time-second (current-time time-utc)) + date)))) + + (when (and age (>= age old)) + (warning (N_ "Your Guix installation is ~a day old.\n" + "Your Guix installation is ~a days old.\n" + (seconds->days age)) + (seconds->days age))) + (when (or (not age) (>= age old)) + (warning (G_ "Consider running 'guix pull' followed by '~a' to get up-to-date packages and security updates.\n") - suggested-command) - (newline (guix-warning-port))))) + suggested-command) + (newline (guix-warning-port)))) (define %disk-space-warning ;; The fraction (between 0 and 1) of free disk space below which a warning -- cgit v1.2.3 From 880916ac5228b9cfd6e65ac243d17f6bd12edaf9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 12 Mar 2019 15:50:13 +0100 Subject: guix build: Add '--with-git-url'. * guix/scripts/build.scm (%not-equal): New variable. (evaluate-git-replacement-specs): Use it instead of local variable 'not-equal'. (transform-package-source-git-url): New procedure. (%transformations): Add 'with-git-url'. (%transformation-options, show-transformation-options-help): Add '--with-git-url'. * tests/scripts-build.scm ("options->transformation, with-git-url"): New test. --- doc/guix.texi | 34 +++++++++++++++++++++++----------- guix/scripts/build.scm | 47 ++++++++++++++++++++++++++++++++++++++++------- tests/scripts-build.scm | 24 +++++++++++++++++++++++- 3 files changed, 86 insertions(+), 19 deletions(-) (limited to 'guix') diff --git a/doc/guix.texi b/doc/guix.texi index 5bbd0ee7f0..139a09d1bc 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -7780,22 +7780,18 @@ must be compatible. If @var{replacement} is somehow incompatible with @var{package}, then the resulting package may be unusable. Use with care! -@item --with-branch=@var{package}=@var{branch} +@item --with-git-url=@var{package}=@var{url} @cindex Git, using the latest commit @cindex latest commit, building -Build @var{package} from the latest commit of @var{branch}. The @code{source} -field of @var{package} must be an origin with the @code{git-fetch} method -(@pxref{origin Reference}) or a @code{git-checkout} object; the repository URL -is taken from that @code{source}. Git sub-modules of the repository are -fetched, recursively. +Build @var{package} from the latest commit of the @code{master} branch of the +Git repository at @var{url}. -For instance, the following command builds @code{guile-sqlite3} from the -latest commit of its @code{master} branch, and then builds @code{guix} (which -depends on it) and @code{cuirass} (which depends on @code{guix}) against this -specific @code{guile-sqlite3} build: +For example, the following commands builds the GNU C Library (glibc) straight +from its Git repository instead of building the currently-packaged release: @example -guix build --with-branch=guile-sqlite3=master cuirass +guix build glibc \ + --with-git-url=glibc=git://sourceware.org/git/glibc.git @end example @cindex continuous integration @@ -7809,6 +7805,22 @@ Checkouts are kept in a cache under @file{~/.cache/guix/checkouts} to speed up consecutive accesses to the same repository. You may want to clean it up once in a while to save disk space. +@item --with-branch=@var{package}=@var{branch} +Build @var{package} from the latest commit of @var{branch}. The @code{source} +field of @var{package} must be an origin with the @code{git-fetch} method +(@pxref{origin Reference}) or a @code{git-checkout} object; the repository URL +is taken from that @code{source}. Git sub-modules of the repository are +fetched, recursively. + +For instance, the following command builds @code{guile-sqlite3} from the +latest commit of its @code{master} branch, and then builds @code{guix} (which +depends on it) and @code{cuirass} (which depends on @code{guix}) against this +specific @code{guile-sqlite3} build: + +@example +guix build --with-branch=guile-sqlite3=master cuirass +@end example + @item --with-commit=@var{package}=@var{commit} This is similar to @code{--with-branch}, except that it builds from @var{commit} rather than the tip of a branch. @var{commit} must be a valid diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index 6b29c470fb..5883dbfb44 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -272,16 +272,16 @@ current 'gnutls' package, after which version 3.5.4 is grafted onto them." (rewrite obj) obj)))) +(define %not-equal + (char-set-complement (char-set #\=))) + (define (evaluate-git-replacement-specs specs proc) "Parse SPECS, a list of strings like \"guile=stable-2.2\", and return a list of package pairs, where (PROC PACKAGE URL BRANCH-OR-COMMIT) returns the replacement package. Raise an error if an element of SPECS uses invalid syntax, or if a package it refers to could not be found." - (define not-equal - (char-set-complement (char-set #\=))) - (map (lambda (spec) - (match (string-tokenize spec not-equal) + (match (string-tokenize spec %not-equal) ((name branch-or-commit) (let* ((old (specification->package name)) (source (package-source old)) @@ -341,6 +341,33 @@ strings like \"guile-next=cabba9e\" meaning that packages are built using (rewrite obj) obj)))) +(define (transform-package-source-git-url replacement-specs) + "Return a procedure that, when passed a package, replaces its dependencies +according to REPLACEMENT-SPECS. REPLACEMENT-SPECS is a list of strings like +\"guile-json=https://gitthing.com/…\" meaning that packages are built using +a checkout of the Git repository at the given URL." + ;; FIXME: Currently this cannot be combined with '--with-branch' or + ;; '--with-commit' because they all transform "from scratch". + (define replacements + (map (lambda (spec) + (match (string-tokenize spec %not-equal) + ((name url) + (let* ((old (specification->package name)) + (new (package + (inherit old) + (source (git-checkout (url url) + (recursive? #t)))))) + (cons old new))))) + replacement-specs)) + + (define rewrite + (package-input-rewriting replacements)) + + (lambda (store obj) + (if (package? obj) + (rewrite obj) + obj))) + (define %transformations ;; Transformations that can be applied to things to build. The car is the ;; key used in the option alist, and the cdr is the transformation @@ -350,7 +377,8 @@ strings like \"guile-next=cabba9e\" meaning that packages are built using (with-input . ,transform-package-inputs) (with-graft . ,transform-package-inputs/graft) (with-branch . ,transform-package-source-branch) - (with-commit . ,transform-package-source-commit))) + (with-commit . ,transform-package-source-commit) + (with-git-url . ,transform-package-source-git-url))) (define %transformation-options ;; The command-line interface to the above transformations. @@ -368,7 +396,9 @@ strings like \"guile-next=cabba9e\" meaning that packages are built using (option '("with-branch") #t #f (parser 'with-branch)) (option '("with-commit") #t #f - (parser 'with-commit))))) + (parser 'with-commit)) + (option '("with-git-url") #t #f + (parser 'with-git-url))))) (define (show-transformation-options-help) (display (G_ " @@ -385,7 +415,10 @@ strings like \"guile-next=cabba9e\" meaning that packages are built using build PACKAGE from the latest commit of BRANCH")) (display (G_ " --with-commit=PACKAGE=COMMIT - build PACKAGE from COMMIT"))) + build PACKAGE from COMMIT")) + (display (G_ " + --with-git-url=PACKAGE=URL + build PACKAGE from the repository at URL"))) (define (options->transformation opts) diff --git a/tests/scripts-build.scm b/tests/scripts-build.scm index 190426ed06..54681274b9 100644 --- a/tests/scripts-build.scm +++ b/tests/scripts-build.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016, 2017 Ludovic Courtès +;;; Copyright © 2016, 2017, 2019 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,6 +23,7 @@ #:use-module (guix scripts build) #:use-module (guix ui) #:use-module (guix utils) + #:use-module (guix git) #:use-module (gnu packages) #:use-module (gnu packages base) #:use-module (gnu packages busybox) @@ -164,4 +165,25 @@ ((("x" dep)) (eq? (package-replacement dep) findutils))))))))))) +(test-equal "options->transformation, with-git-url" + (let ((source (git-checkout (url "https://example.org") + (recursive? #t)))) + (list source source)) + (let* ((p (dummy-package "guix.scm" + (inputs `(("foo" ,grep) + ("bar" ,(dummy-package "chbouib" + (native-inputs `(("x" ,grep))))))))) + (t (options->transformation '((with-git-url . "grep=https://example.org"))))) + (with-store store + (let ((new (t store p))) + (and (not (eq? new p)) + (match (package-inputs new) + ((("foo" dep1) ("bar" dep2)) + (and (string=? (package-full-name dep1) + (package-full-name grep)) + (string=? (package-name dep2) "chbouib") + (match (package-native-inputs dep2) + ((("x" dep3)) + (map package-source (list dep1 dep3)))))))))))) + (test-end) -- cgit v1.2.3 From f258d8862852db9779945658b3a3f2b8a2a4c217 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 12 Mar 2019 21:39:48 +0100 Subject: packages: Add 'package-input-rewriting/spec'. * guix/packages.scm (package-input-rewriting/spec): New procedure. * tests/packages.scm ("package-input-rewriting/spec") ("package-input-rewriting/spec, partial match"): New tests. * doc/guix.texi (Defining Packages): Document it. --- doc/guix.texi | 23 +++++++++++++++++++++++ guix/packages.scm | 38 ++++++++++++++++++++++++++++++++++++++ tests/packages.scm | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+) (limited to 'guix') diff --git a/doc/guix.texi b/doc/guix.texi index 139a09d1bc..6124c9c24c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -5241,6 +5241,29 @@ with @var{libressl}. Then we use it to define a @dfn{variant} of the This is exactly what the @option{--with-input} command-line option does (@pxref{Package Transformation Options, @option{--with-input}}). +The following variant of @code{package-input-rewriting} can match packages to +be replaced by name rather than by identity. + +@deffn {Scheme Procedure} package-input-rewriting/spec @var{replacements} +Return a procedure that, given a package, applies the given @var{replacements} to +all the package graph (excluding implicit inputs). @var{replacements} is a list of +spec/procedures pair; each spec is a package specification such as @code{"gcc"} or +@code{"guile@@2"}, and each procedure takes a matching package and returns a +replacement for that package. +@end deffn + +The example above could be rewritten this way: + +@example +(define libressl-instead-of-openssl + ;; Replace all the packages called "openssl" with LibreSSL. + (package-input-rewriting/spec `(("openssl" . ,(const libressl))))) +@end example + +The key difference here is that, this time, packages are matched by spec and +not by identity. In other words, any package in the graph that is called +@code{openssl} will be replaced. + A more generic procedure to rewrite a package dependency graph is @code{package-mapping}: it supports arbitrary changes to nodes in the graph. diff --git a/guix/packages.scm b/guix/packages.scm index f191327718..d20a2562c3 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -102,6 +102,7 @@ package-transitive-supported-systems package-mapping package-input-rewriting + package-input-rewriting/spec package-source-derivation package-derivation package-cross-derivation @@ -869,6 +870,43 @@ package and returns its new name after rewrite." (package-mapping rewrite (cut assq <> replacements))) +(define (package-input-rewriting/spec replacements) + "Return a procedure that, given a package, applies the given REPLACEMENTS to +all the package graph (excluding implicit inputs). REPLACEMENTS is a list of +spec/procedures pair; each spec is a package specification such as \"gcc\" or +\"guile@2\", and each procedure takes a matching package and returns a +replacement for that package." + (define table + (fold (lambda (replacement table) + (match replacement + ((spec . proc) + (let-values (((name version) + (package-name->name+version spec))) + (vhash-cons name (list version proc) table))))) + vlist-null + replacements)) + + (define (find-replacement package) + (vhash-fold* (lambda (item proc) + (or proc + (match item + ((#f proc) + proc) + ((version proc) + (and (version-prefix? version + (package-version package)) + proc))))) + #f + (package-name package) + table)) + + (define (rewrite package) + (match (find-replacement package) + (#f package) + (proc (proc package)))) + + (package-mapping rewrite find-replacement)) + (define-syntax-rule (package/inherit p overrides ...) "Like (package (inherit P) OVERRIDES ...), except that the same transformation is done to the package replacement, if any. P must be a bare diff --git a/tests/packages.scm b/tests/packages.scm index 4e4bffc48c..613b2f1221 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -981,6 +981,57 @@ ((("x" dep)) (eq? dep findutils))))))))) +(test-assert "package-input-rewriting/spec" + (let* ((dep (dummy-package "chbouib" + (native-inputs `(("x" ,grep))))) + (p0 (dummy-package "example" + (inputs `(("foo" ,coreutils) + ("bar" ,grep) + ("baz" ,dep))))) + (rewrite (package-input-rewriting/spec + `(("coreutils" . ,(const sed)) + ("grep" . ,(const findutils))))) + (p1 (rewrite p0)) + (p2 (rewrite p0))) + (and (not (eq? p1 p0)) + (eq? p1 p2) ;memoization + (string=? "example" (package-name p1)) + (match (package-inputs p1) + ((("foo" dep1) ("bar" dep2) ("baz" dep3)) + (and (string=? (package-full-name dep1) + (package-full-name sed)) + (string=? (package-full-name dep2) + (package-full-name findutils)) + (string=? (package-name dep3) "chbouib") + (eq? dep3 (rewrite dep)) ;memoization + (match (package-native-inputs dep3) + ((("x" dep)) + (string=? (package-full-name dep) + (package-full-name findutils)))))))))) + +(test-assert "package-input-rewriting/spec, partial match" + (let* ((dep (dummy-package "chbouib" + (version "1") + (native-inputs `(("x" ,grep))))) + (p0 (dummy-package "example" + (inputs `(("foo" ,coreutils) + ("bar" ,dep))))) + (rewrite (package-input-rewriting/spec + `(("chbouib@123" . ,(const sed)) ;not matched + ("grep" . ,(const findutils))))) + (p1 (rewrite p0))) + (and (not (eq? p1 p0)) + (string=? "example" (package-name p1)) + (match (package-inputs p1) + ((("foo" dep1) ("bar" dep2)) + (and (string=? (package-full-name dep1) + (package-full-name coreutils)) + (eq? dep2 (rewrite dep)) ;memoization + (match (package-native-inputs dep2) + ((("x" dep)) + (string=? (package-full-name dep) + (package-full-name findutils)))))))))) + (test-equal "package-patched-vulnerabilities" '(("CVE-2015-1234") ("CVE-2016-1234" "CVE-2018-4567") -- cgit v1.2.3 From 0c0ff42a243b2da4f1deb52fe3961801008341da Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 12 Mar 2019 22:12:18 +0100 Subject: guix build: Factorize 'package-git-url'. * guix/scripts/build.scm (package-git-url): New procedure. (evaluate-git-replacement-specs): Use it. --- guix/scripts/build.scm | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'guix') diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index 5883dbfb44..7b24cc8eb1 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -275,6 +275,19 @@ current 'gnutls' package, after which version 3.5.4 is grafted onto them." (define %not-equal (char-set-complement (char-set #\=))) +(define (package-git-url package) + "Return the URL of the Git repository for package, or raise an error if +the source of PACKAGE is not fetched from a Git repository." + (let ((source (package-source package))) + (cond ((and (origin? source) + (git-reference? (origin-uri source))) + (git-reference-url (origin-uri source))) + ((git-checkout? source) + (git-checkout-url source)) + (else + (leave (G_ "the source of ~a is not a Git reference~%") + (package-full-name package)))))) + (define (evaluate-git-replacement-specs specs proc) "Parse SPECS, a list of strings like \"guile=stable-2.2\", and return a list of package pairs, where (PROC PACKAGE URL BRANCH-OR-COMMIT) returns the @@ -285,15 +298,7 @@ syntax, or if a package it refers to could not be found." ((name branch-or-commit) (let* ((old (specification->package name)) (source (package-source old)) - (url (cond ((and (origin? source) - (git-reference? (origin-uri source))) - (git-reference-url (origin-uri source))) - ((git-checkout? source) - (git-checkout-url source)) - (else - (leave (G_ "the source of ~a is not a Git \ -reference~%") - (package-full-name old)))))) + (url (package-git-url old))) (cons old (proc old url branch-or-commit)))) (x (leave (G_ "invalid replacement specification: ~s~%") spec)))) -- cgit v1.2.3 From 14328b81a224b726f39dd030886ba8d332027427 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 13 Mar 2019 10:11:54 +0100 Subject: guix build: Transformation options match packages by spec. This allows us to combine several transformations on a given package, in particular '--with-git-url' and '--with-branch'. Previously transformations would ignore each other since they would all take (specification->package SOURCE) as their replacement source, compare it by identity, which doesn't work if a previous transformation has already changed SOURCE. * guix/scripts/build.scm (evaluate-replacement-specs): Adjust to produce an alist as expected by 'package-input-rewriting/spec', with a package spec as the first element of each pair. (evaluate-git-replacement-specs): Likewise. (transform-package-inputs): Adjust accordingly and use 'package-input-rewriting/spec'. (transform-package-inputs/graft): Likewise. (transform-package-source-branch, transform-package-source-commit): Use 'package-input-rewriting/spec'. (transform-package-source-git-url): Likewise, and adjust the REPLACEMENTS alist accordingly. (options->transformation): Iterate over OPTS instead of over %TRANSFORMATIONS. Invoke transformations one by one. * tests/scripts-build.scm ("options->transformation, with-input"): Adjust test to compare packages by name rather than by identity. ("options->transformation, with-git-url + with-branch"): New test. --- doc/guix.texi | 24 +++++++------ guix/scripts/build.scm | 90 +++++++++++++++++++++++++++---------------------- tests/scripts-build.scm | 36 ++++++++++++++++++-- 3 files changed, 97 insertions(+), 53 deletions(-) (limited to 'guix') diff --git a/doc/guix.texi b/doc/guix.texi index 6124c9c24c..a3dd344a70 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -7807,16 +7807,20 @@ care! @cindex Git, using the latest commit @cindex latest commit, building Build @var{package} from the latest commit of the @code{master} branch of the -Git repository at @var{url}. +Git repository at @var{url}. Git sub-modules of the repository are fetched, +recursively. -For example, the following commands builds the GNU C Library (glibc) straight -from its Git repository instead of building the currently-packaged release: +For example, the following command builds the NumPy Python library against the +latest commit of the master branch of Python itself: @example -guix build glibc \ - --with-git-url=glibc=git://sourceware.org/git/glibc.git +guix build python-numpy \ + --with-git-url=python=https://github.com/python/cpython @end example +This option can also be combined with @code{--with-branch} or +@code{--with-commit} (see below). + @cindex continuous integration Obviously, since it uses the latest commit of the given branch, the result of such a command varies over time. Nevertheless it is a convenient way to @@ -7829,11 +7833,11 @@ consecutive accesses to the same repository. You may want to clean it up once in a while to save disk space. @item --with-branch=@var{package}=@var{branch} -Build @var{package} from the latest commit of @var{branch}. The @code{source} -field of @var{package} must be an origin with the @code{git-fetch} method -(@pxref{origin Reference}) or a @code{git-checkout} object; the repository URL -is taken from that @code{source}. Git sub-modules of the repository are -fetched, recursively. +Build @var{package} from the latest commit of @var{branch}. If the +@code{source} field of @var{package} is an origin with the @code{git-fetch} +method (@pxref{origin Reference}) or a @code{git-checkout} object, the +repository URL is taken from that @code{source}. Otherwise you have to use +@code{--with-git-url} to specify the URL of the Git repository. For instance, the following command builds @code{guile-sqlite3} from the latest commit of its @code{master} branch, and then builds @code{guix} (which diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index 7b24cc8eb1..8ebcf79243 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -226,18 +226,21 @@ matching URIs given in SOURCES." obj))))) (define (evaluate-replacement-specs specs proc) - "Parse SPECS, a list of strings like \"guile=guile@2.1\", and invoke PROC on -each package pair specified by SPECS. Return the resulting list. Raise an -error if an element of SPECS uses invalid syntax, or if a package it refers to -could not be found." + "Parse SPECS, a list of strings like \"guile=guile@2.1\" and return a list +of package spec/procedure pairs as expected by 'package-input-rewriting/spec'. +PROC is called with the package to be replaced and its replacement according +to SPECS. Raise an error if an element of SPECS uses invalid syntax, or if a +package it refers to could not be found." (define not-equal (char-set-complement (char-set #\=))) (map (lambda (spec) (match (string-tokenize spec not-equal) - ((old new) - (proc (specification->package old) - (specification->package new))) + ((spec new) + (cons spec + (let ((new (specification->package new))) + (lambda (old) + (proc old new))))) (x (leave (G_ "invalid replacement specification: ~s~%") spec)))) specs)) @@ -248,8 +251,10 @@ dependencies according to REPLACEMENT-SPECS. REPLACEMENT-SPECS is a list of strings like \"guile=guile@2.1\" meaning that, any dependency on a package called \"guile\" must be replaced with a dependency on a version 2.1 of \"guile\"." - (let* ((replacements (evaluate-replacement-specs replacement-specs cons)) - (rewrite (package-input-rewriting replacements))) + (let* ((replacements (evaluate-replacement-specs replacement-specs + (lambda (old new) + new))) + (rewrite (package-input-rewriting/spec replacements))) (lambda (store obj) (if (package? obj) (rewrite obj) @@ -260,13 +265,12 @@ called \"guile\" must be replaced with a dependency on a version 2.1 of dependencies according to REPLACEMENT-SPECS. REPLACEMENT-SPECS is a list of strings like \"gnutls=gnutls@3.5.4\" meaning that packages are built using the current 'gnutls' package, after which version 3.5.4 is grafted onto them." - (define (replacement-pair old new) - (cons old - (package (inherit old) (replacement new)))) + (define (set-replacement old new) + (package (inherit old) (replacement new))) (let* ((replacements (evaluate-replacement-specs replacement-specs - replacement-pair)) - (rewrite (package-input-rewriting replacements))) + set-replacement)) + (rewrite (package-input-rewriting/spec replacements))) (lambda (store obj) (if (package? obj) (rewrite obj) @@ -295,11 +299,13 @@ replacement package. Raise an error if an element of SPECS uses invalid syntax, or if a package it refers to could not be found." (map (lambda (spec) (match (string-tokenize spec %not-equal) - ((name branch-or-commit) - (let* ((old (specification->package name)) - (source (package-source old)) - (url (package-git-url old))) - (cons old (proc old url branch-or-commit)))) + ((spec branch-or-commit) + (define (replace old) + (let* ((source (package-source old)) + (url (package-git-url old))) + (proc old url branch-or-commit))) + + (cons spec replace)) (x (leave (G_ "invalid replacement specification: ~s~%") spec)))) specs)) @@ -318,7 +324,7 @@ strings like \"guile-next=stable-3.0\" meaning that packages are built using (let* ((replacements (evaluate-git-replacement-specs replacement-specs replace)) - (rewrite (package-input-rewriting replacements))) + (rewrite (package-input-rewriting/spec replacements))) (lambda (store obj) (if (package? obj) (rewrite obj) @@ -340,7 +346,7 @@ strings like \"guile-next=cabba9e\" meaning that packages are built using (let* ((replacements (evaluate-git-replacement-specs replacement-specs replace)) - (rewrite (package-input-rewriting replacements))) + (rewrite (package-input-rewriting/spec replacements))) (lambda (store obj) (if (package? obj) (rewrite obj) @@ -351,22 +357,20 @@ strings like \"guile-next=cabba9e\" meaning that packages are built using according to REPLACEMENT-SPECS. REPLACEMENT-SPECS is a list of strings like \"guile-json=https://gitthing.com/…\" meaning that packages are built using a checkout of the Git repository at the given URL." - ;; FIXME: Currently this cannot be combined with '--with-branch' or - ;; '--with-commit' because they all transform "from scratch". (define replacements (map (lambda (spec) (match (string-tokenize spec %not-equal) - ((name url) - (let* ((old (specification->package name)) - (new (package - (inherit old) - (source (git-checkout (url url) - (recursive? #t)))))) - (cons old new))))) + ((spec url) + (cons spec + (lambda (old) + (package + (inherit old) + (source (git-checkout (url url) + (recursive? #t))))))))) replacement-specs)) (define rewrite - (package-input-rewriting replacements)) + (package-input-rewriting/spec replacements)) (lambda (store obj) (if (package? obj) @@ -430,16 +434,22 @@ a checkout of the Git repository at the given URL." "Return a procedure that, when passed an object to build (package, derivation, etc.), applies the transformations specified by OPTS." (define applicable - ;; List of applicable transformations as symbol/procedure pairs. + ;; List of applicable transformations as symbol/procedure pairs in the + ;; order in which they appear on the command line. (filter-map (match-lambda - ((key . transform) - (match (filter-map (match-lambda - ((k . arg) - (and (eq? k key) arg))) - opts) - (() #f) - (args (cons key (transform args)))))) - %transformations)) + ((key . value) + (match (any (match-lambda + ((k . proc) + (and (eq? k key) proc))) + %transformations) + (#f + #f) + (transform + ;; XXX: We used to pass TRANSFORM a list of several + ;; arguments, but we now pass only one, assuming that + ;; transform composes well. + (cons key (transform (list value))))))) + (reverse opts))) (lambda (store obj) (fold (match-lambda* diff --git a/tests/scripts-build.scm b/tests/scripts-build.scm index 54681274b9..4bf1e1a719 100644 --- a/tests/scripts-build.scm +++ b/tests/scripts-build.scm @@ -139,12 +139,15 @@ (and (not (eq? new p)) (match (package-inputs new) ((("foo" dep1) ("bar" dep2) ("baz" dep3)) - (and (eq? dep1 busybox) - (eq? dep2 findutils) + (and (string=? (package-full-name dep1) + (package-full-name busybox)) + (string=? (package-full-name dep2) + (package-full-name findutils)) (string=? (package-name dep3) "chbouib") (match (package-native-inputs dep3) ((("x" dep)) - (eq? dep findutils))))))))))) + (string=? (package-full-name dep) + (package-full-name findutils)))))))))))) (test-assert "options->transformation, with-graft" (let* ((p (dummy-package "guix.scm" @@ -186,4 +189,31 @@ ((("x" dep3)) (map package-source (list dep1 dep3)))))))))))) +(test-equal "options->transformation, with-git-url + with-branch" + ;; Combine the two options and make sure the 'with-branch' transformation + ;; comes after the 'with-git-url' transformation. + (let ((source (git-checkout (url "https://example.org") + (branch "BRANCH") + (recursive? #t)))) + (list source source)) + (let* ((p (dummy-package "guix.scm" + (inputs `(("foo" ,grep) + ("bar" ,(dummy-package "chbouib" + (native-inputs `(("x" ,grep))))))))) + (t (options->transformation + (reverse '((with-git-url + . "grep=https://example.org") + (with-branch . "grep=BRANCH")))))) + (with-store store + (let ((new (t store p))) + (and (not (eq? new p)) + (match (package-inputs new) + ((("foo" dep1) ("bar" dep2)) + (and (string=? (package-name dep1) "grep") + (string=? (package-name dep2) "chbouib") + (match (package-native-inputs dep2) + ((("x" dep3)) + (map package-source (list dep1 dep3)))))))))))) + + (test-end) -- cgit v1.2.3 From 845c44012c2a05436dc0a5316ff3c2a9e5bd725f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 13 Mar 2019 10:26:31 +0100 Subject: guix build: '--with-commit' makes recursive checkouts. This was an omission from commit 024a6bfba906742c136a47b4099f06880f1d3f15. * guix/scripts/build.scm (transform-package-source-commit): Add 'recursive?' field to SOURCE. * tests/scripts-build.scm ("options->transformation, with-branch") ("options->transformation, with-commit"): New tests. --- guix/scripts/build.scm | 3 ++- tests/scripts-build.scm | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) (limited to 'guix') diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index 8ebcf79243..20929d6110 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -342,7 +342,8 @@ strings like \"guile-next=cabba9e\" meaning that packages are built using (if (< (string-length commit) 7) commit (string-take commit 7)))) - (source (git-checkout (url url) (commit commit))))) + (source (git-checkout (url url) (commit commit) + (recursive? #t))))) (let* ((replacements (evaluate-git-replacement-specs replacement-specs replace)) diff --git a/tests/scripts-build.scm b/tests/scripts-build.scm index 4bf1e1a719..32876e956a 100644 --- a/tests/scripts-build.scm +++ b/tests/scripts-build.scm @@ -20,6 +20,7 @@ #:use-module (guix tests) #:use-module (guix store) #:use-module (guix packages) + #:use-module (guix git-download) #:use-module (guix scripts build) #:use-module (guix ui) #:use-module (guix utils) @@ -168,6 +169,54 @@ ((("x" dep)) (eq? (package-replacement dep) findutils))))))))))) +(test-equal "options->transformation, with-branch" + (git-checkout (url "https://example.org") + (branch "devel") + (recursive? #t)) + (let* ((p (dummy-package "guix.scm" + (inputs `(("foo" ,grep) + ("bar" ,(dummy-package "chbouib" + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://example.org") + (commit "cabba9e"))) + (sha256 #f))))))))) + (t (options->transformation '((with-branch . "chbouib=devel"))))) + (with-store store + (let ((new (t store p))) + (and (not (eq? new p)) + (match (package-inputs new) + ((("foo" dep1) ("bar" dep2)) + (and (string=? (package-full-name dep1) + (package-full-name grep)) + (string=? (package-name dep2) "chbouib") + (package-source dep2))))))))) + +(test-equal "options->transformation, with-commit" + (git-checkout (url "https://example.org") + (commit "abcdef") + (recursive? #t)) + (let* ((p (dummy-package "guix.scm" + (inputs `(("foo" ,grep) + ("bar" ,(dummy-package "chbouib" + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://example.org") + (commit "cabba9e"))) + (sha256 #f))))))))) + (t (options->transformation '((with-commit . "chbouib=abcdef"))))) + (with-store store + (let ((new (t store p))) + (and (not (eq? new p)) + (match (package-inputs new) + ((("foo" dep1) ("bar" dep2)) + (and (string=? (package-full-name dep1) + (package-full-name grep)) + (string=? (package-name dep2) "chbouib") + (package-source dep2))))))))) + (test-equal "options->transformation, with-git-url" (let ((source (git-checkout (url "https://example.org") (recursive? #t)))) -- cgit v1.2.3 From d831b1907900ea39c93cef7671acdbf9e04fafc1 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 13 Mar 2019 10:33:17 +0100 Subject: guix build: '--with-branch' strips slashes from the version string. This fixes things like: guix build glibc \ --with-git-url=glibc=git://sourceware.org/git/glibc.git \ --with-branch=glibc=release/2.25/master whereby slashes would before go straight to the 'version' field, leading to an invalid store file name. * guix/scripts/build.scm (transform-package-source-branch)[replace]: Replace slashes with hyphens in BRANCH when building the version string. --- guix/scripts/build.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'guix') diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index 20929d6110..28864435df 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -318,7 +318,10 @@ strings like \"guile-next=stable-3.0\" meaning that packages are built using (define (replace old url branch) (package (inherit old) - (version (string-append "git." branch)) + (version (string-append "git." (string-map (match-lambda + (#\/ #\-) + (chr chr)) + branch))) (source (git-checkout (url url) (branch branch) (recursive? #t))))) -- cgit v1.2.3 From b6fd086a61b3004f9f5392f630155b9ad01752e1 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 18 Mar 2019 09:50:10 +0100 Subject: describe: Warn about 'GUIX_PACKAGE_PATH' in json and recutils format. Fixes . Reported by Pierre Neidhardt . * guix/scripts/describe.scm (display-package-search-path): Add catch-all case for FMT. --- guix/scripts/describe.scm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'guix') diff --git a/guix/scripts/describe.scm b/guix/scripts/describe.scm index 7d0ecb0a4d..b6287d3a4c 100644 --- a/guix/scripts/describe.scm +++ b/guix/scripts/describe.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2018 Ludovic Courtès +;;; Copyright © 2018, 2019 Ludovic Courtès ;;; Copyright © 2018 Oleg Pykhalov ;;; ;;; This file is part of GNU Guix. @@ -85,7 +85,9 @@ Display information about the channels currently in use.\n")) (format #t "~%GUIX_PACKAGE_PATH=\"~a\"~%" string)) ('channels (format #t (G_ "~%;; warning: GUIX_PACKAGE_PATH=\"~a\"~%") - string)))))) + string)) + (_ + (warning (G_ "'GUIX_PACKAGE_PATH' is set but it is not captured~%"))))))) (define (channel->sexp channel) `(channel -- cgit v1.2.3 From 47956fa0c24efcdcba3493f0231c30e9a39ec7df Mon Sep 17 00:00:00 2001 From: ng0 Date: Thu, 14 Mar 2019 09:33:38 +0000 Subject: Correct name and email address for ng0. * .mailmap, Makefile.am, doc/guix.de.texi, doc/guix.fr.texi, doc/guix.texi, etc/completion/fish/guix.fish, gnu/packages/accessibility.scm, gnu/packages/admin.scm, gnu/packages/audio.scm, gnu/packages/autotools.scm, gnu/packages/cdrom.scm, gnu/packages/check.scm, gnu/packages/cinnamon.scm, gnu/packages/compression.scm, gnu/packages/crypto.scm, gnu/packages/databases.scm, gnu/packages/django.scm, gnu/packages/dns.scm, gnu/packages/elixir.scm, gnu/packages/emacs-xyz.scm, gnu/packages/emacs.scm, gnu/packages/enlightenment.scm, gnu/packages/erlang.scm, gnu/packages/fonts.scm, gnu/packages/fontutils.scm, gnu/packages/forth.scm, gnu/packages/fvwm.scm, gnu/packages/games.scm, gnu/packages/gl.scm, gnu/packages/gnome.scm, gnu/packages/gnunet.scm, gnu/packages/gnupg.scm, gnu/packages/gnuzilla.scm, gnu/packages/gtk.scm, gnu/packages/guile-wm.scm,gnu/packages/guile-xyz.scm, gnu/packages/haskell-check.scm, gnu/packages/haskell-crypto.scm, gnu/packages/haskell.scm, gnu/packages/image-viewers.scm, gnu/packages/image.scm, gnu/packages/irc.scm, gnu/packages/language.scm, gnu/packages/libcanberra.scm, gnu/packages/linux.scm, gnu/packages/lisp.scm, gnu/packages/lolcode.scm, gnu/packages/lxde.scm, gnu/packages/lxqt.scm, gnu/packages/mail.scm, gnu/packages/markup.scm, gnu/packages/mate.scm, gnu/packages/maths.scm, gnu/packages/mc.scm, gnu/packages/messaging.scm, gnu/packages/music.scm, gnu/packages/ncurses.scm, gnu/packages/networking.scm, gnu/packages/nickle.scm, gnu/packages/openbox.scm, gnu/packages/pdf.scm, gnu/packages/perl-check.scm, gnu/packages/perl.scm, gnu/packages/python-compression.scm, gnu/packages/python-crypto.scm, gnu/packages/python-web.scm, gnu/packages/python-xyz.scm, gnu/packages/python.scm, gnu/packages/qt.scm, gnu/packages/ruby.scm, gnu/packages/rust.scm, gnu/packages/scheme.scm, gnu/packages/serialization.scm, gnu/packages/shells.scm, gnu/packages/ssh.scm, gnu/packages/suckless.scm, gnu/packages/tbb.scm, gnu/packages/telephony.scm, gnu/packages/text-editors.scm, gnu/packages/textutils.scm, gnu/packages/time.scm, gnu/packages/tls.scm, gnu/packages/tor.scm, gnu/packages/version-control.scm, gnu/packages/video.scm, gnu/packages/vim.scm, gnu/packages/web.scm, gnu/packages/wm.scm, gnu/packages/xdisorg.scm, gnu/packages/xfce.scm, gnu/packages/xml.scm, gnu/packages/xorg.scm, gnu/services/certbot.scm, gnu/services/desktop.scm, gnu/services/version-control.scm, gnu/services/web.scm, guix/import/hackage.scm, guix/licenses.scm: Correct name and email address for ng0. Signed-off-by: Tobias Geerinckx-Rice --- .mailmap | 28 ++++++++++++++-------------- Makefile.am | 2 +- doc/guix.de.texi | 2 +- doc/guix.fr.texi | 2 +- doc/guix.texi | 2 +- etc/completion/fish/guix.fish | 2 +- gnu/packages/accessibility.scm | 2 +- gnu/packages/admin.scm | 2 +- gnu/packages/audio.scm | 2 +- gnu/packages/autotools.scm | 2 +- gnu/packages/cdrom.scm | 2 +- gnu/packages/check.scm | 2 +- gnu/packages/cinnamon.scm | 2 +- gnu/packages/compression.scm | 2 +- gnu/packages/crypto.scm | 2 +- gnu/packages/databases.scm | 2 +- gnu/packages/django.scm | 2 +- gnu/packages/dns.scm | 2 +- gnu/packages/elixir.scm | 2 +- gnu/packages/emacs-xyz.scm | 2 +- gnu/packages/emacs.scm | 2 +- gnu/packages/enlightenment.scm | 2 +- gnu/packages/erlang.scm | 2 +- gnu/packages/fonts.scm | 2 +- gnu/packages/fontutils.scm | 2 +- gnu/packages/forth.scm | 2 +- gnu/packages/fvwm.scm | 2 +- gnu/packages/games.scm | 2 +- gnu/packages/gl.scm | 2 +- gnu/packages/gnome.scm | 2 +- gnu/packages/gnunet.scm | 2 +- gnu/packages/gnupg.scm | 2 +- gnu/packages/gnuzilla.scm | 2 +- gnu/packages/gtk.scm | 2 +- gnu/packages/guile-wm.scm | 2 +- gnu/packages/guile-xyz.scm | 2 +- gnu/packages/haskell-check.scm | 2 +- gnu/packages/haskell-crypto.scm | 2 +- gnu/packages/haskell.scm | 2 +- gnu/packages/image-viewers.scm | 2 +- gnu/packages/image.scm | 2 +- gnu/packages/irc.scm | 2 +- gnu/packages/language.scm | 2 +- gnu/packages/libcanberra.scm | 2 +- gnu/packages/linux.scm | 2 +- gnu/packages/lisp.scm | 2 +- gnu/packages/lolcode.scm | 2 +- gnu/packages/lxde.scm | 2 +- gnu/packages/lxqt.scm | 2 +- gnu/packages/mail.scm | 2 +- gnu/packages/markup.scm | 2 +- gnu/packages/mate.scm | 2 +- gnu/packages/maths.scm | 2 +- gnu/packages/mc.scm | 2 +- gnu/packages/messaging.scm | 2 +- gnu/packages/music.scm | 2 +- gnu/packages/ncurses.scm | 2 +- gnu/packages/networking.scm | 2 +- gnu/packages/nickle.scm | 2 +- gnu/packages/openbox.scm | 2 +- gnu/packages/pdf.scm | 2 +- gnu/packages/perl-check.scm | 2 +- gnu/packages/perl.scm | 2 +- gnu/packages/python-compression.scm | 2 +- gnu/packages/python-crypto.scm | 2 +- gnu/packages/python-web.scm | 2 +- gnu/packages/python-xyz.scm | 2 +- gnu/packages/python.scm | 2 +- gnu/packages/qt.scm | 2 +- gnu/packages/ruby.scm | 2 +- gnu/packages/rust.scm | 2 +- gnu/packages/scheme.scm | 2 +- gnu/packages/serialization.scm | 2 +- gnu/packages/shells.scm | 2 +- gnu/packages/ssh.scm | 2 +- gnu/packages/suckless.scm | 2 +- gnu/packages/tbb.scm | 2 +- gnu/packages/telephony.scm | 2 +- gnu/packages/text-editors.scm | 2 +- gnu/packages/textutils.scm | 2 +- gnu/packages/time.scm | 2 +- gnu/packages/tls.scm | 2 +- gnu/packages/tor.scm | 2 +- gnu/packages/version-control.scm | 2 +- gnu/packages/video.scm | 2 +- gnu/packages/vim.scm | 2 +- gnu/packages/web.scm | 2 +- gnu/packages/wm.scm | 2 +- gnu/packages/xdisorg.scm | 2 +- gnu/packages/xfce.scm | 2 +- gnu/packages/xml.scm | 2 +- gnu/packages/xorg.scm | 2 +- gnu/services/certbot.scm | 2 +- gnu/services/desktop.scm | 2 +- gnu/services/version-control.scm | 2 +- gnu/services/web.scm | 2 +- guix/import/hackage.scm | 2 +- guix/licenses.scm | 2 +- 98 files changed, 111 insertions(+), 111 deletions(-) (limited to 'guix') diff --git a/.mailmap b/.mailmap index 981decdeef..7de5313923 100644 --- a/.mailmap +++ b/.mailmap @@ -43,20 +43,20 @@ Mathieu Lirzin Mathieu Othacehe Mathieu Othacehe Nikita Karetnikov -Nils Gillmann ng0 -Nils Gillmann Nils Gillmann -Nils Gillmann ng0 -Nils Gillmann ng0 -Nils Gillmann -Nils Gillmann -Nils Gillmann -Nils Gillmann -Nils Gillmann -Nils Gillmann -Nils Gillmann -Nils Gillmann -Nils Gillmann -Nils Gillmann +ng0 Nils Gillmann +ng0 Nils Gillmann +ng0 ng0 +ng0 ng0 +ng0 +ng0 +ng0 +ng0 +ng0 +ng0 +ng0 +ng0 +ng0 +ng0 Pierre Neidhardt Pierre-Antoine Rouby Pjotr Prins diff --git a/Makefile.am b/Makefile.am index e7109ec69c..50839fcb27 100644 --- a/Makefile.am +++ b/Makefile.am @@ -9,7 +9,7 @@ # Copyright © 2017 Ricardo Wurmus # Copyright © 2017 Jan Nieuwenhuizen # Copyright © 2017 Arun Isaac -# Copyright © 2018 Nils Gillmann +# Copyright © 2018 ng0 # Copyright © 2018 Julien Lepiller # Copyright © 2018 Oleg Pykhalov # Copyright © 2018 Alex Vong diff --git a/doc/guix.de.texi b/doc/guix.de.texi index 3f02c850e7..83dae0d3ec 100644 --- a/doc/guix.de.texi +++ b/doc/guix.de.texi @@ -34,7 +34,7 @@ Leo Famulari@* Copyright @copyright{} 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus@* Copyright @copyright{} 2016 Ben Woodcroft@* Copyright @copyright{} 2016, 2017, 2018 Chris Marusich@* Copyright @copyright{} 2016, 2017, 2018 Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* Copyright -@copyright{} 2016, 2017 Nils Gillmann@* Copyright @copyright{} 2016, 2017, +@copyright{} 2016, 2017 ng0@* Copyright @copyright{} 2016, 2017, 2018, 2019 Jan Nieuwenhuizen@* Copyright @copyright{} 2016 Julien Lepiller@* Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2016, 2017, 2018, 2019 Christopher Baines@* Copyright @copyright{} 2017, 2018 diff --git a/doc/guix.fr.texi b/doc/guix.fr.texi index 4ef3c1a0ff..541fd6f0d0 100644 --- a/doc/guix.fr.texi +++ b/doc/guix.fr.texi @@ -34,7 +34,7 @@ Leo Famulari@* Copyright @copyright{} 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus@* Copyright @copyright{} 2016 Ben Woodcroft@* Copyright @copyright{} 2016, 2017, 2018 Chris Marusich@* Copyright @copyright{} 2016, 2017, 2018 Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* Copyright -@copyright{} 2016, 2017 Nils Gillmann@* Copyright @copyright{} 2016, 2017, +@copyright{} 2016, 2017 ng0@* Copyright @copyright{} 2016, 2017, 2018, 2019 Jan Nieuwenhuizen@* Copyright @copyright{} 2016 Julien Lepiller@* Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2016, 2017, 2018, 2019 Christopher Baines@* Copyright @copyright{} 2017, 2018 diff --git a/doc/guix.texi b/doc/guix.texi index 63581bbe41..326607e7e9 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -30,7 +30,7 @@ Copyright @copyright{} 2016 Ben Woodcroft@* Copyright @copyright{} 2016, 2017, 2018 Chris Marusich@* Copyright @copyright{} 2016, 2017, 2018 Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* -Copyright @copyright{} 2016, 2017 Nils Gillmann@* +Copyright @copyright{} 2016, 2017 ng0@* Copyright @copyright{} 2016, 2017, 2018, 2019 Jan Nieuwenhuizen@* Copyright @copyright{} 2016 Julien Lepiller@* Copyright @copyright{} 2016 Alex ter Weele@* diff --git a/etc/completion/fish/guix.fish b/etc/completion/fish/guix.fish index d5b28cdc2b..525d39679d 100644 --- a/etc/completion/fish/guix.fish +++ b/etc/completion/fish/guix.fish @@ -1,6 +1,6 @@ # # GNU Guix --- Functional package management for GNU -# Copyright © 2017, 2018 Nils Gillmann +# Copyright © 2017, 2018 ng0 # # This file is part of GNU Guix. # diff --git a/gnu/packages/accessibility.scm b/gnu/packages/accessibility.scm index 35c8c8f19b..431e5924c9 100644 --- a/gnu/packages/accessibility.scm +++ b/gnu/packages/accessibility.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017 Stefan Reichör ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; Copyright © 2019 Andrew Miloradovsky diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index f433d3f40d..9ed2e32324 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -12,7 +12,7 @@ ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner ;;; Copyright © 2016 Peter Feigl ;;; Copyright © 2016 John J. Foerch -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2016 John Darrington ;;; Copyright © 2017 Ben Sturmfels diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 03d41770c2..a38e77c996 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2015, 2016 Mark H Weaver ;;; Copyright © 2016, 2017, 2018 Efraim Flashner ;;; Copyright © 2016, 2017 Alex Griffin -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2016 Lukas Gradl ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2018 Oleg Pykhalov diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm index 4edfb5725e..ceb70dfee7 100644 --- a/gnu/packages/autotools.scm +++ b/gnu/packages/autotools.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2014 Manolis Fragkiskos Ragkousis ;;; Copyright © 2015, 2017, 2018 Mark H Weaver ;;; Copyright © 2016 David Thompson -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017, 2019 Efraim Flashner ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Ricardo Wurmus diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm index cdbe25fe44..50bf3abcb9 100644 --- a/gnu/packages/cdrom.scm +++ b/gnu/packages/cdrom.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2017 John Darrington ;;; Copyright © 2017 Thomas Danckaert ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2018 Oleg Pykhalov ;;; Copyright © 2018, 2019 Ricardo Wurmus ;;; Copyright © 2019 Eric Bavier diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 649d6d2f13..4229578f86 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -23,7 +23,7 @@ ;;; Copyright © 2017 Frederick M. Muriithi ;;; Copyright © 2017 Mathieu Othacehe ;;; Copyright © 2017, 2019 Kei Kebreau -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus ;;; Copyright © 2016, 2017, 2018 Marius Bakke ;;; Copyright © 2017, 2018 Ludovic Courtès diff --git a/gnu/packages/cinnamon.scm b/gnu/packages/cinnamon.scm index 7cac863f92..72403e1b11 100644 --- a/gnu/packages/cinnamon.scm +++ b/gnu/packages/cinnamon.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 23a8f997f0..e3c23126b0 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -14,7 +14,7 @@ ;;; Copyright © 2016 David Craven ;;; Copyright © 2016, 2019 Kei Kebreau ;;; Copyright © 2016, 2018 Marius Bakke -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017 Manolis Fragkiskos Ragkousis ;;; Copyright © 2017 Theodoros Foradis ;;; Copyright © 2017 Stefan Reichör diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index e0d4f27874..d6f8e22eab 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2016, 2017, 2018, 2019 Leo Famulari ;;; Copyright © 2016 Lukas Gradl ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016, 2017, 2019 Eric Bavier ;;; Copyright © 2017 Pierre Langlois ;;; Copyright © 2018 Efraim Flashner diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 921304ef2a..912b8d77c5 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -11,7 +11,7 @@ ;;; Copyright © 2016 Hartmut Goebel ;;; Copyright © 2016 Christopher Allan Webber ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016, 2017, 2018 Roel Janssen ;;; Copyright © 2016 David Craven ;;; Copyright © 2016 Jan Nieuwenhuizen diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm index 734755c609..8fd29d533a 100644 --- a/gnu/packages/django.scm +++ b/gnu/packages/django.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Hartmut Goebel ;;; Copyright © 2016 Efraim Flashner -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2017 Ricardo Wurmus ;;; Copyright © 2018 Vijayalakshmi Vedantham diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm index f1bcbc1b4d..f8b60e34c5 100644 --- a/gnu/packages/dns.scm +++ b/gnu/packages/dns.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2016 Ricardo Wurmus ;;; Copyright © 2016, 2017 Efraim Flashner ;;; Copyright © 2016 John Darrington -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2016 Marius Bakke ;;; Copyright © 2017 Vasile Dumitrascu diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm index e154a2b2c1..29c7ee966f 100644 --- a/gnu/packages/elixir.scm +++ b/gnu/packages/elixir.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2016 Ricardo Wurmus ;;; Copyright © 2017 nee ;;; Copyright © 2018 Tobias Geerinckx-Rice -;;; Copyright © 2018 Nils Gillmann +;;; Copyright © 2018 ng0 ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 8d5ee6c5fb..28b24d467d 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -12,7 +12,7 @@ ;;; Copyright © 2016 David Thompson ;;; Copyright © 2016 Matthew Jordan ;;; Copyright © 2016, 2017 Roel Janssen -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016 Alex Griffin ;;; Copyright © 2016, 2017, 2018, 2019 Nicolas Goaziou ;;; Copyright © 2016, 2017, 2018 Alex Vong diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 74005972db..e00931c504 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2016, 2018 Arun Isaac ;;; Copyright © 2016 Federico Beffa ;;; Copyright © 2016 David Thompson -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2017 Marius Bakke ;;; Copyright © 2017 Maxim Cournoyer ;;; Copyright © 2017 Alex Vong diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index c3aa469776..d2853e62d6 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2015 Tomáš Čech ;;; Copyright © 2015 Daniel Pimentel ;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Timo Eisenmann ;;; diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm index 45206f71a0..9c38b53581 100644 --- a/gnu/packages/erlang.scm +++ b/gnu/packages/erlang.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2016, 2017 Leo Famulari ;;; Copyright © 2016, 2017 Pjotr Prins ;;; Copyright © 2018 Tobias Geerinckx-Rice -;;; Copyright © 2018 Nils Gillmann +;;; Copyright © 2018 ng0 ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index 62f076a772..6988443e94 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2015 Eric Dvorsak ;;; Copyright © 2015, 2017 Ricardo Wurmus ;;; Copyright © 2015, 2016 Leo Famulari -;;; Copyright © 2016, 2017, 2018 Nils Gillmann +;;; Copyright © 2016, 2017, 2018 ng0 ;;; Copyright © 2016 Jookia <166291@gmail.com> ;;; Copyright © 2016 Eric Bavier ;;; Copyright © 2016 Dmitry Nikolaev diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm index 274efe5fd8..8f8a300644 100644 --- a/gnu/packages/fontutils.scm +++ b/gnu/packages/fontutils.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2016, 2017 Efraim Flashner ;;; Copyright © 2017 Rene Saavedra ;;; Copyright © 2017 Leo Famulari -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Ricardo Wurmus ;;; Copyright © 2018 Ludovic Courtès diff --git a/gnu/packages/forth.scm b/gnu/packages/forth.scm index 5efc668b78..6902a4a4a3 100644 --- a/gnu/packages/forth.scm +++ b/gnu/packages/forth.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2016 Sou Bunnbu ;;; ;;; This file is part of GNU Guix. diff --git a/gnu/packages/fvwm.scm b/gnu/packages/fvwm.scm index 386edba591..ad0720a60c 100644 --- a/gnu/packages/fvwm.scm +++ b/gnu/packages/fvwm.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Sou Bunnbu ;;; Copyright © 2016 Efraim Flashner -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 74fc452e32..b9deda7bf9 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -15,7 +15,7 @@ ;;; Copyright © 2015, 2016, 2017 Alex Kost ;;; Copyright © 2015 Paul van der Walt ;;; Copyright © 2016, 2017 Rodger Fox -;;; Copyright © 2016, 2017, 2018 Nils Gillmann +;;; Copyright © 2016, 2017, 2018 ng0 ;;; Copyright © 2016 Albin Söderqvist ;;; Copyright © 2016, 2017, 2018 Kei Kebreau ;;; Copyright © 2016 Alex Griffin diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index 08ba3c8b8c..743932fd07 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2013 Joshua Grant ;;; Copyright © 2014, 2016 David Thompson ;;; Copyright © 2014, 2015, 2016, 2017 Mark H Weaver -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2016, 2017, 2018 Ricardo Wurmus ;;; Copyright © 2016 David Thompson ;;; Copyright © 2017, 2018 Efraim Flashner diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index f407f567b9..060379aba9 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -19,7 +19,7 @@ ;;; Copyright © 2016 Roel Janssen ;;; Copyright © 2016, 2018 Leo Famulari ;;; Copyright © 2016 Alex Griffin -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016 David Craven ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2017 Thomas Danckaert diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm index 461180161e..93c905406f 100644 --- a/gnu/packages/gnunet.scm +++ b/gnu/packages/gnunet.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2015, 2017, 2019 Efraim Flashner ;;; Copyright © 2016 Ricardo Wurmus ;;; Copyright © 2016 Mark H Weaver -;;; Copyright © 2016, 2017, 2018 Nils Gillmann +;;; Copyright © 2016, 2017, 2018 ng0 ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Alex Vong ;;; diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index c5c99bfeb6..fcec2f065d 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner ;;; Copyright © 2015, 2016, 2017, 2019 Ricardo Wurmus ;;; Copyright © 2016 Christopher Allan Webber -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016 Christopher Baines ;;; Copyright © 2016 Mike Gerwitz ;;; Copyright © 2016 Troy Sankey diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index e11c0eb576..785d5c1342 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2016, 2017, 2018 Efraim Flashner ;;; Copyright © 2016 Alex Griffin ;;; Copyright © 2017 Clément Lassieur -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Ricardo Wurmus ;;; Copyright © 2019 Ivan Petkov diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index fb5c178d53..1ac90216ef 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -13,7 +13,7 @@ ;;; Copyright © 2016 Fabian Harfert ;;; Copyright © 2016 Kei Kebreau ;;; Copyright © 2016 Patrick Hetu -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2017 Roel Janssen ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2017 Marius Bakke diff --git a/gnu/packages/guile-wm.scm b/gnu/packages/guile-wm.scm index 3755282403..7b1731171a 100644 --- a/gnu/packages/guile-wm.scm +++ b/gnu/packages/guile-wm.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013, 2014 Ludovic Courtès ;;; Copyright © 2016 Alex ter Weele ;;; Copyright © 2017 Ricardo Wurmus -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index a64a54323a..d4f019c814 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -14,7 +14,7 @@ ;;; Copyright © 2017 David Thompson ;;; Copyright © 2017, 2018 Mathieu Othacehe ;;; Copyright © 2017 Theodoros Foradis -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Maxim Cournoyer ;;; Copyright © 2018 Arun Isaac diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm index 0d4501df86..19eb40eaa4 100644 --- a/gnu/packages/haskell-check.scm +++ b/gnu/packages/haskell-check.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2015 Eric Bavier ;;; Copyright © 2015 Federico Beffa ;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2016 David Craven ;;; Copyright © 2017 Danny Milosavljevic ;;; Copyright © 2017 rsiddharth diff --git a/gnu/packages/haskell-crypto.scm b/gnu/packages/haskell-crypto.scm index b5bbd147cf..8f216a379d 100644 --- a/gnu/packages/haskell-crypto.scm +++ b/gnu/packages/haskell-crypto.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Paul van der Walt ;;; Copyright © 2015, 2017, 2018, 2019 Ricardo Wurmus -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2017 rsiddharth ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice ;;; diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 2b8525d923..2a5ba2a706 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2015 Paul van der Walt ;;; Copyright © 2015 Eric Bavier ;;; Copyright © 2016, 2018, 2019 Ludovic Courtès -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016 Efraim Flashner ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus ;;; Copyright © 2016, 2017 David Craven diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm index d388562924..82b44a4900 100644 --- a/gnu/packages/image-viewers.scm +++ b/gnu/packages/image-viewers.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2015, 2016 Alex Kost ;;; Copyright © 2016, 2017, 2018 Efraim Flashner ;;; Copyright © 2017 Alex Griffin -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017 Mathieu Othacehe ;;; Copyright © 2017 nee ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 941b991695..b52b6025ae 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -13,7 +13,7 @@ ;;; Copyright © 2016 Eric Bavier ;;; Copyright © 2016, 2017 Arun Isaac ;;; Copyright © 2016, 2017 Kei Kebreau -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017 Hartmut Goebel ;;; Copyright © 2017 Julien Lepiller ;;; Copyright © 2018 Joshua Sierles, Nextjournal diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm index e6f23d14d7..d3b3a51294 100644 --- a/gnu/packages/irc.scm +++ b/gnu/packages/irc.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2014 Kevin Lemonnier ;;; Copyright © 2015, 2017 Ludovic Courtès ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2017 Marius Bakke ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm index 110f07a476..46b60b7055 100644 --- a/gnu/packages/language.scm +++ b/gnu/packages/language.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015, 2016 Eric Bavier ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice -;;; Copyright © 2018 Nils Gillmann +;;; Copyright © 2018 ng0 ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/libcanberra.scm b/gnu/packages/libcanberra.scm index 0032d9a85f..121ba11f89 100644 --- a/gnu/packages/libcanberra.scm +++ b/gnu/packages/libcanberra.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2014, 2015, 2019 Ludovic Courtès ;;; Copyright © 2016 Fabian Harfert -;;; Copyright © 2017, 2018 Nils Gillmann +;;; Copyright © 2017, 2018 ng0 ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index e9d8ea45c1..34af81b469 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -18,7 +18,7 @@ ;;; Copyright © 2016, 2017, 2018 Marius Bakke ;;; Copyright © 2016, 2018 Rene Saavedra ;;; Copyright © 2016 Carlos Sánchez de La Lama -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2017, 2018 Leo Famulari ;;; Copyright © 2017 José Miguel Sánchez García ;;; Copyright © 2017 Gábor Boskovits diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 3d43b7c509..87dcf36372 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer ;;; Copyright © 2015 Mark H Weaver ;;; Copyright © 2016 Federico Beffa -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016, 2017 Andy Patterson ;;; Copyright © 2017, 2019 Ricardo Wurmus ;;; Copyright © 2017, 2018 Efraim Flashner diff --git a/gnu/packages/lolcode.scm b/gnu/packages/lolcode.scm index f7e2da380c..e55a36c509 100644 --- a/gnu/packages/lolcode.scm +++ b/gnu/packages/lolcode.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm index ea099b0f3b..d91e62359b 100644 --- a/gnu/packages/lxde.scm +++ b/gnu/packages/lxde.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Mathieu Lirzin ;;; Copyright © 2016 Efraim Flashner -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017 Mathieu Othacehe ;;; Copyright © 2017 Brendan Tildesley ;;; Copyright © 2018 Tobias Geerinckx-Rice diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm index 4c00b2a611..d91efe715d 100644 --- a/gnu/packages/lxqt.scm +++ b/gnu/packages/lxqt.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2015 Sou Bunnbu ;;; Copyright © 2016 Mark H Weaver ;;; Copyright © 2016 Efraim Flashner -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2018, 2019 Meiyo Peng ;;; Copyright © 2018 Ricardo Wurmus diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 89c183dbd7..bb44ea1a53 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -15,7 +15,7 @@ ;;; Copyright © 2016 Lukas Gradl ;;; Copyright © 2016 Alex Kost ;;; Copyright © 2016, 2017 Troy Sankey -;;; Copyright © 2016, 2017, 2018 Nils Gillmann +;;; Copyright © 2016, 2017, 2018 ng0 ;;; Copyright © 2016 Clément Lassieur ;;; Copyright © 2016, 2017, 2018, 2019 Arun Isaac ;;; Copyright © 2016 John Darrington diff --git a/gnu/packages/markup.scm b/gnu/packages/markup.scm index 67f2bf2881..2b1e2ef63c 100644 --- a/gnu/packages/markup.scm +++ b/gnu/packages/markup.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2015 Mathieu Lirzin ;;; Copyright © 2015 David Thompson ;;; Copyright © 2016 Efraim Flashner -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm index ef94491622..16e9148506 100644 --- a/gnu/packages/mate.scm +++ b/gnu/packages/mate.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Fabian Harfert ;;; Copyright © 2016, 2017 Efraim Flashner -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 33c1416c75..af2c141ee5 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -16,7 +16,7 @@ ;;; Copyright © 2016 Leo Famulari ;;; Copyright © 2016, 2017 Thomas Danckaert ;;; Copyright © 2017, 2018 Paul Garlick -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017 Ben Woodcroft ;;; Copyright © 2017 Theodoros Foradis ;;; Copyright © 2017, 2019 Arun Isaac diff --git a/gnu/packages/mc.scm b/gnu/packages/mc.scm index ecac5412e4..3d6185ca78 100644 --- a/gnu/packages/mc.scm +++ b/gnu/packages/mc.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Eric Bavier ;;; Copyright © 2016 Efraim Flashner -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 73519d7702..c27c465957 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2015 Andreas Enge ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus ;;; Copyright © 2015, 2018 Efraim Flashner -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016 Andy Patterson ;;; Copyright © 2016, 2017, 2018, 2019 Clément Lassieur ;;; Copyright © 2017 Mekeor Melire diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 54c7798472..c98f050caf 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2016, 2017 Kei Kebreau ;;; Copyright © 2016 John J. Foerch ;;; Copyright © 2016 Alex Griffin -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017 Rodger Fox ;;; Copyright © 2017, 2018, 2019 Nicolas Goaziou ;;; Copyright © 2017, 2018 Pierre Langlois diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm index ae3fb887e8..9b5498688b 100644 --- a/gnu/packages/ncurses.scm +++ b/gnu/packages/ncurses.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2018 Ludovic Courtès ;;; Copyright © 2014, 2016 Mark H Weaver ;;; Copyright © 2015, 2017 Leo Famulari -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2016 Efraim Flashner ;;; Copyright © 2016 Jan Nieuwenhuizen ;;; Copyright © 2017 Marius Bakke diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index eeabc3d93d..ecfd373365 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2016 John Darrington ;;; Copyright © 2016, 2017, 2018, 2019 Nicolas Goaziou ;;; Copyright © 2016 Eric Bavier -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016, 2017, 2018 Arun Isaac ;;; Copyright © 2016 Benz Schenk ;;; Copyright © 2016, 2017 Pjotr Prins diff --git a/gnu/packages/nickle.scm b/gnu/packages/nickle.scm index c8179419bb..9cc38867b6 100644 --- a/gnu/packages/nickle.scm +++ b/gnu/packages/nickle.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. diff --git a/gnu/packages/openbox.scm b/gnu/packages/openbox.scm index 1643b7502b..ceca6e53e0 100644 --- a/gnu/packages/openbox.scm +++ b/gnu/packages/openbox.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Julien Lepiller ;;; Copyright © 2016 Efraim Flashner -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index 29f2381e6d..ff26bed64f 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2014, 2015, 2016, 2018, 2019 Ricardo Wurmus ;;; Copyright © 2015 Paul van der Walt ;;; Copyright © 2016 Roel Janssen -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner ;;; Copyright © 2016, 2017 Marius Bakke ;;; Copyright © 2016, 2017 Ludovic Courtès diff --git a/gnu/packages/perl-check.scm b/gnu/packages/perl-check.scm index 3b9640583a..aae83e5771 100644 --- a/gnu/packages/perl-check.scm +++ b/gnu/packages/perl-check.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2016 Danny Milosavljevic ;;; Copyright © 2016 Ben Woodcroft ;;; Copyright © 2016 Ricardo Wurmus -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2016, 2017, 2019 Efraim Flashner ;;; Copyright © 2016, 2017 Alex Sassmannshausen ;;; Copyright © 2016, 2017 Marius Bakke diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 5b05b772dc..0075bbdf2e 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2016, 2018 Mark H Weaver ;;; Copyright © 2016 Jochem Raat ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2016 Alex Sassmannshausen ;;; Copyright © 2016, 2018 Roel Janssen ;;; Copyright © 2016 Ben Woodcroft diff --git a/gnu/packages/python-compression.scm b/gnu/packages/python-compression.scm index e13227b616..88f62d1934 100644 --- a/gnu/packages/python-compression.scm +++ b/gnu/packages/python-compression.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2017 Ricardo Wurmus -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017 Julien Lepiller ;;; Copyright © 2018, 2019 Efraim Flashner ;;; diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm index 688c8c4378..08f1e4d399 100644 --- a/gnu/packages/python-crypto.scm +++ b/gnu/packages/python-crypto.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2014, 2017 Eric Bavier ;;; Copyright © 2015, 2016 David Thompson ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2015, 2016, 2017, 2019 Ricardo Wurmus ;;; Copyright © 2016 Danny Milosavljevic diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 32d769c3ed..ec068bdf0b 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus ;;; Copyright © 2017 Roel Janssen ;;; Copyright © 2016, 2017 Julien Lepiller -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2014, 2017 Eric Bavier ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2015 Cyril Roelandt diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index ed54f54593..f9e87fb9c7 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -23,7 +23,7 @@ ;;; Copyright © 2016 Daniel Pimentel ;;; Copyright © 2016 Sou Bunnbu ;;; Copyright © 2016, 2017 Troy Sankey -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016 Dylan Jeffers ;;; Copyright © 2016 David Craven ;;; Copyright © 2016, 2017, 2018 Marius Bakke diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 25f2ffa73c..57ced499cb 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -23,7 +23,7 @@ ;;; Copyright © 2016 Daniel Pimentel ;;; Copyright © 2016 Sou Bunnbu ;;; Copyright © 2016, 2017 Troy Sankey -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016 Dylan Jeffers ;;; Copyright © 2016 David Craven ;;; Copyright © 2016, 2017, 2018 Marius Bakke diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 8179911539..6e567792f8 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2015 Sou Bunnbu ;;; Copyright © 2015, 2018, 2019 Ludovic Courtès ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016 Thomas Danckaert ;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus ;;; Copyright © 2017 Quiliro diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 818553848d..7a2b191063 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2014, 2015 David Thompson ;;; Copyright © 2015, 2019 Ricardo Wurmus ;;; Copyright © 2015, 2016, 2017 Ben Woodcroft -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017 Marius Bakke ;;; Copyright © 2017, 2018 Efraim Flashner ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 048a91052d..074d9b0655 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 David Craven ;;; Copyright © 2016 Eric Le Bihan -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2017 Ben Woodcroft ;;; Copyright © 2017, 2018 Nikolai Merinov ;;; Copyright © 2017 Efraim Flashner diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index 93a1a3e152..9dbb3713ee 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2016 Ricardo Wurmus ;;; Copyright © 2016, 2017 Efraim Flashner ;;; Copyright © 2016 Jan Nieuwenhuizen -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2017 John Darrington ;;; Copyright © 2017 Clément Lassieur ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm index 876318869c..05e0d1d833 100644 --- a/gnu/packages/serialization.scm +++ b/gnu/packages/serialization.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2017 Corentin Bocquillon ;;; Copyright © 2017 Gregor Giesen ;;; Copyright © 2017 Frederick M. Muriithi -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Joshua Sierles, Nextjournal ;;; diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index 4c832c0702..2c6642f727 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2016 Stefan Reichör ;;; Copyright © 2017, 2018 Ricardo Wurmus -;;; Copyright © 2017, 2018 Nils Gillmann +;;; Copyright © 2017, 2018 ng0 ;;; Copyright © 2017, 2018 Leo Famulari ;;; Copyright © 2017 Arun Isaac ;;; Copyright © 2019 Meiyo Peng diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index 91b89242f8..dc81736f06 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2017 Stefan Reichör ;;; Copyright © 2017 Ricardo Wurmus -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2018 Manuel Graf ;;; Copyright © 2019 Gábor Boskovits ;;; diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm index d15fdbaddd..c1357bd282 100644 --- a/gnu/packages/suckless.scm +++ b/gnu/packages/suckless.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013 Cyril Roelandt ;;; Copyright © 2015 Amirouche Boubekki ;;; Copyright © 2016 Al McElrath -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2015 Dmitry Bogatov ;;; Copyright © 2015 Leo Famulari ;;; Copyright © 2016 Eric Bavier diff --git a/gnu/packages/tbb.scm b/gnu/packages/tbb.scm index ee21a61895..788eabfdfa 100644 --- a/gnu/packages/tbb.scm +++ b/gnu/packages/tbb.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015, 2016 Ricardo Wurmus -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index 63709935c3..559fb3d63f 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2015, 2016 Efraim Flashner ;;; Copyright © 2016 Lukas Gradl ;;; Copyright © 2016 Francesco Frassinelli -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2017, 2018 Ricardo Wurmus ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Jovany Leandro G.C diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm index b1afd63b32..b96f8235d4 100644 --- a/gnu/packages/text-editors.scm +++ b/gnu/packages/text-editors.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2016 Carlo Zancanaro ;;; Copyright © 2017, 2018 Eric Bavier ;;; Copyright © 2017 Feng Shu -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2014 Taylan Ulrich Bayırlı/Kammer ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2019 Efraim Flashner diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm index 78050f3925..7436fdeb97 100644 --- a/gnu/packages/textutils.scm +++ b/gnu/packages/textutils.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2016 Jelle Licht ;;; Copyright © 2016 Alex Griffin ;;; Copyright © 2016, 2018 Efraim Flashner -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2016 Marius Bakke ;;; Copyright © 2017 Eric Bavier ;;; Copyright © 2017 Rene Saavedra diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm index 948d2b995c..747e4cf080 100644 --- a/gnu/packages/time.scm +++ b/gnu/packages/time.scm @@ -11,7 +11,7 @@ ;;; Copyright © 2016 Marius Bakke ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2017 Ben Woodcroft -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017 Julien Lepiller ;;; Copyright © 2018 Alex Vong ;;; Copyright © 2019 Kyle Meyer diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index bdfbc003d3..6ecb5673e6 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2015 David Thompson ;;; Copyright © 2015, 2016, 2017, 2018 Leo Famulari ;;; Copyright © 2016, 2017, 2019 Efraim Flashner -;;; Copyright © 2016, 2017, 2018 Nils Gillmann +;;; Copyright © 2016, 2017, 2018 ng0 ;;; Copyright © 2016 Hartmut Goebel ;;; Copyright © 2017 Ricardo Wurmus ;;; Copyright © 2017, 2018 Marius Bakke diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm index a0b16db3a7..a24923c045 100644 --- a/gnu/packages/tor.scm +++ b/gnu/packages/tor.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2016, 2017, 2018 Efraim Flashner -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2017, 2018 Eric Bavier ;;; Copyright © 2017 Rutger Helling diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 674850e0ac..d750863f30 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -10,7 +10,7 @@ ;;; Copyright © 2015, 2018 Kyle Meyer ;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus ;;; Copyright © 2016, 2017 Leo Famulari -;;; Copyright © 2016, 2017, 2018 Nils Gillmann +;;; Copyright © 2016, 2017, 2018 ng0 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2017 Vasile Dumitrascu ;;; Copyright © 2017 Clément Lassieur diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index c661c4ce87..f00be7092b 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -11,7 +11,7 @@ ;;; Copyright © 2016 Kei Kebreau ;;; Copyright © 2016 Dmitry Nikolaev ;;; Copyright © 2016 Andy Patterson -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016, 2018, 2019 Eric Bavier ;;; Copyright © 2016 Jan Nieuwenhuizen ;;; Copyright © 2017 Feng Shu diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index 70e358656d..56deb12c3d 100644 --- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Cyril Roelandt ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2017 Ricardo Wurmus ;;; Copyright © 2017 Marius Bakke ;;; Copyright © 2018 Tobias Geerinckx-Rice diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 577be916bf..dfabb3aa65 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -14,7 +14,7 @@ ;;; Copyright © 2016 Rene Saavedra ;;; Copyright © 2016 Ben Woodcroft ;;; Copyright © 2016 Clément Lassieur -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016, 2017, 2018, 2019 Arun Isaac ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2016 Bake Timmons diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 539d6564c7..0a05ff4ae4 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2016 Al McElrath ;;; Copyright © 2016 Carlo Zancanaro ;;; Copyright © 2016, 2017, 2018 Ludovic Courtès -;;; Copyright © 2016, 2017, 2018 Nils Gillmann +;;; Copyright © 2016, 2017, 2018 ng0 ;;; Copyright © 2016 doncatnip ;;; Copyright © 2016 Ivan Vilata i Balaguer ;;; Copyright © 2017 Mekeor Melire diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 6bfae74f18..cd3428a1fb 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -17,7 +17,7 @@ ;;; Copyright © 2016, 2017, 2019 Marius Bakke ;;; Copyright © 2016 Petter ;;; Copyright © 2017 Mekeor Melire -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2017 Marek Benc ;;; Copyright © 2017 Mike Gerwitz diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index b47fe5d301..f5618932ca 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2016 Kei Kebreau ;;; Copyright © 2017, 2019 Ricardo Wurmus ;;; Copyright © 2017 Petter -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index d4ff1643e5..9f0959d78f 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -11,7 +11,7 @@ ;;; Copyright © 2016, 2017 Leo Famulari ;;; Copyright © 2016 Ben Woodcroft ;;; Copyright © 2016 Jan Nieuwenhuizen -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2016, 2017, 2018 Marius Bakke ;;; Copyright © 2017 Adriano Peluso diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 3463ac85a7..f168b51f4c 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2016 Mathieu Lirzin ;;; Copyright © 2015 Cyrill Schenkel ;;; Copyright © 2016, 2017 Efraim Flashner -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2016 Alex Kost ;;; Copyright © 2016 David Craven ;;; Copyright © 2016, 2017 John Darrington diff --git a/gnu/services/certbot.scm b/gnu/services/certbot.scm index 7548145c98..7565bc97ca 100644 --- a/gnu/services/certbot.scm +++ b/gnu/services/certbot.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2016 Sou Bunnbu ;;; Copyright © 2017, 2018 Clément Lassieur ;;; diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 8f8e177ca9..b912c208cc 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2015 Mark H Weaver ;;; Copyright © 2016 Sou Bunnbu ;;; Copyright © 2017 Maxim Cournoyer -;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017 ng0 ;;; Copyright © 2018 Efraim Flashner ;;; Copyright © 2018 Ricardo Wurmus ;;; Copyright © 2017, 2019 Christopher Baines diff --git a/gnu/services/version-control.scm b/gnu/services/version-control.scm index 13669925ab..e332b93096 100644 --- a/gnu/services/version-control.scm +++ b/gnu/services/version-control.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2016 Sou Bunnbu ;;; Copyright © 2017 Oleg Pykhalov ;;; Copyright © 2017 Clément Lassieur diff --git a/gnu/services/web.scm b/gnu/services/web.scm index d71fed20ed..b6ebe90774 100644 --- a/gnu/services/web.scm +++ b/gnu/services/web.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 David Thompson ;;; Copyright © 2015, 2016, 2017, 2018 Ludovic Courtès -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2016, 2017, 2018 Julien Lepiller ;;; Copyright © 2017 Christopher Baines ;;; Copyright © 2017 nee diff --git a/guix/import/hackage.scm b/guix/import/hackage.scm index 48db764b3c..2a51420d14 100644 --- a/guix/import/hackage.scm +++ b/guix/import/hackage.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Federico Beffa ;;; Copyright © 2016 Eric Bavier -;;; Copyright © 2016 Nils Gillmann +;;; Copyright © 2016 ng0 ;;; Copyright © 2018 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. diff --git a/guix/licenses.scm b/guix/licenses.scm index d22c3fa36e..676e71acdb 100644 --- a/guix/licenses.scm +++ b/guix/licenses.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2016 Leo Famulari ;;; Copyright © 2016 Fabian Harfert ;;; Copyright © 2016 Rene Saavedra -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2017 Clément Lassieur ;;; Copyright © 2017 Petter ;;; Copyright © 2017 Marius Bakke -- cgit v1.2.3 From ae031d453cc43f87481dcfb06051cb6a928f4c5c Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Wed, 13 Mar 2019 16:18:02 +0530 Subject: import: Add Launchpad updater. * guix/import/launchpad.scm: New file. * Makefile.am (MODULES): Register it. * doc/guix.texi (Invoking guix refresh): Mention the Launchpad updater. --- Makefile.am | 1 + doc/guix.texi | 4 +- guix/import/launchpad.scm | 124 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 guix/import/launchpad.scm (limited to 'guix') diff --git a/Makefile.am b/Makefile.am index 50839fcb27..9e49b079bf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -202,6 +202,7 @@ MODULES = \ guix/import/gnu.scm \ guix/import/hackage.scm \ guix/import/json.scm \ + guix/import/launchpad.scm \ guix/import/opam.scm \ guix/import/print.scm \ guix/import/pypi.scm \ diff --git a/doc/guix.texi b/doc/guix.texi index 326607e7e9..bb344e1625 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -48,7 +48,7 @@ Copyright @copyright{} 2017 Maxim Cournoyer@* Copyright @copyright{} 2017, 2018 Tobias Geerinckx-Rice@* Copyright @copyright{} 2017 George Clemmer@* Copyright @copyright{} 2017 Andy Wingo@* -Copyright @copyright{} 2017, 2018 Arun Isaac@* +Copyright @copyright{} 2017, 2018, 2019 Arun Isaac@* Copyright @copyright{} 2017 nee@* Copyright @copyright{} 2018 Rutger Helling@* Copyright @copyright{} 2018 Oleg Pykhalov@* @@ -8841,6 +8841,8 @@ the updater for @uref{https://hackage.haskell.org, Hackage} packages. the updater for @uref{https://www.stackage.org, Stackage} packages. @item crate the updater for @uref{https://crates.io, Crates} packages. +@item launchpad +the updater for @uref{https://launchpad.net, Launchpad} packages. @end table For instance, the following command only checks for updates of Emacs diff --git a/guix/import/launchpad.scm b/guix/import/launchpad.scm new file mode 100644 index 0000000000..ffd5e9221e --- /dev/null +++ b/guix/import/launchpad.scm @@ -0,0 +1,124 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Arun Isaac +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (guix import launchpad) + #:use-module (ice-9 match) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:use-module (web uri) + #:use-module ((guix download) #:prefix download:) + #:use-module (guix import json) + #:use-module (guix packages) + #:use-module (guix upstream) + #:use-module (guix utils) + #:export (%launchpad-updater)) + +(define (find-extension url) + "Return the extension of the archive e.g. '.tar.gz' given a URL, or +false if none is recognized" + (find (lambda (x) (string-suffix? x url)) + (list ".tar.gz" ".tar.bz2" ".tar.xz" + ".zip" ".tar" ".tgz" ".tbz" ".love"))) + +(define (updated-launchpad-url old-package new-version) + ;; Return a url for the OLD-PACKAGE with NEW-VERSION. If no source url in + ;; the OLD-PACKAGE is a Launchpad url, then return false. + + (define (updated-url url) + (and (string-prefix? "https://launchpad.net/" url) + (let ((ext (or (find-extension url) "")) + (name (package-name old-package)) + (version (package-version old-package)) + (repo (launchpad-repository url))) + (cond + ((and + (>= (length (string-split version #\.)) 2) + (string=? (string-append "https://launchpad.net/" + repo "/" (version-major+minor version) + "/" version "/+download/" repo "-" version ext) + url)) + (string-append "https://launchpad.net/" + repo "/" (version-major+minor new-version) + "/" new-version "/+download/" repo "-" new-version ext)) + (#t #f))))) ; Some URLs are not recognised. + + (let ((source-uri (and=> (package-source old-package) origin-uri)) + (fetch-method (and=> (package-source old-package) origin-method))) + (cond + ((eq? fetch-method download:url-fetch) + (match source-uri + ((? string?) + (updated-url source-uri)) + ((source-uri ...) + (find updated-url source-uri)))) + (else #f)))) + +(define (launchpad-package? package) + "Return true if PACKAGE is a package from Launchpad, else false." + (->bool (updated-launchpad-url package "1.0.0"))) + +(define (launchpad-repository url) + "Return a string e.g. linuxdcpp of the name of the repository, from a string +URL of the form +'https://launchpad.net/linuxdcpp/1.1/1.1.0/+download/linuxdcpp-1.1.0.tar.bz2'" + (match (string-split (uri-path (string->uri url)) #\/) + ((_ repo . rest) repo))) + +(define (latest-released-version package-name) + "Return a string of the newest released version name given the PACKAGE-NAME, +for example, 'linuxdcpp'. Return #f if there is no releases." + (define (pre-release? x) + ;; Versions containing anything other than digit characters and "." (for + ;; example, "5.1.0-rc1") are assumed to be pre-releases. + (not (string-every (char-set-union (char-set #\.) + char-set:digit) + (hash-ref x "version")))) + + (hash-ref + (last (remove + pre-release? + (hash-ref (json-fetch + (string-append "https://api.launchpad.net/1.0/" + package-name "/releases")) + "entries"))) + "version")) + +(define (latest-release pkg) + "Return an for the latest release of PKG." + (define (origin-github-uri origin) + (match (origin-uri origin) + ((? string? url) url) ; surely a Launchpad URL + ((urls ...) + (find (cut string-contains <> "launchpad.net") urls)))) + + (let* ((source-uri (origin-github-uri (package-source pkg))) + (name (package-name pkg)) + (newest-version (latest-released-version name))) + (if newest-version + (upstream-source + (package name) + (version newest-version) + (urls (list (updated-launchpad-url pkg newest-version)))) + #f))) ; On Launchpad but no proper releases + +(define %launchpad-updater + (upstream-updater + (name 'launchpad) + (description "Updater for Launchpad packages") + (pred launchpad-package?) + (latest latest-release))) -- cgit v1.2.3 From 427c87d0bdc06cc3ee7fc220fd3ad36084412533 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 19 Mar 2019 11:03:35 +0100 Subject: pack: Produce relative symlinks when using '-f squashfs'. Fixes . * guix/scripts/pack.scm (squashfs-image)[build]: Use 'relative-file-name' when creating SYMLINKS. * guix/scripts/pack.scm (guix-pack): Pass #:relative-symlinks? #t when PACK-FORMAT is 'squashfs. --- guix/scripts/pack.scm | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'guix') diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm index 17a166d9d7..8685ba1d0a 100644 --- a/guix/scripts/pack.scm +++ b/guix/scripts/pack.scm @@ -306,11 +306,13 @@ added to the pack." (with-imported-modules (source-module-closure '((guix build utils) (guix build store-copy) + (guix build union) (gnu build install)) #:select? not-config?) #~(begin (use-modules (guix build utils) (guix build store-copy) + ((guix build union) #:select (relative-file-name)) (gnu build install) (srfi srfi-1) (srfi srfi-26) @@ -359,12 +361,18 @@ added to the pack." ,@(append-map (match-lambda ((source '-> target) - (list "-p" - (string-join - ;; name s mode uid gid symlink - (list source - "s" "777" "0" "0" - (string-append #$profile "/" target)))))) + ;; Create relative symlinks to work around a bug in + ;; Singularity 2.x: + ;; https://bugs.gnu.org/34913 + ;; https://github.com/sylabs/singularity/issues/1487 + (let ((target (string-append #$profile "/" target))) + (list "-p" + (string-join + ;; name s mode uid gid symlink + (list source + "s" "777" "0" "0" + (relative-file-name (dirname source) + target))))))) '#$symlinks) ;; Create empty mount points. @@ -881,7 +889,14 @@ Create a bundle of PACKAGE.\n")) (run-with-store store (mlet* %store-monad ((profile (profile-derivation manifest - #:relative-symlinks? relocatable? + + ;; Always produce relative + ;; symlinks for Singularity (see + ;; ). + #:relative-symlinks? + (or relocatable? + (eq? 'squashfs pack-format)) + #:hooks (if bootstrap? '() %default-profile-hooks) -- cgit v1.2.3 From 6c5e618ca004d3714d9de7676f2a984735bfe17b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 19 Mar 2019 11:14:39 +0100 Subject: pack: Create an empty /home directory for '-f squashfs'. Fixes . * guix/scripts/pack.scm (squashfs-image)[build]: Pass "-p /home d 555 0 0". --- guix/scripts/pack.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'guix') diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm index 8685ba1d0a..e5502ef9ca 100644 --- a/guix/scripts/pack.scm +++ b/guix/scripts/pack.scm @@ -378,7 +378,8 @@ added to the pack." ;; Create empty mount points. "-p" "/proc d 555 0 0" "-p" "/sys d 555 0 0" - "-p" "/dev d 555 0 0")) + "-p" "/dev d 555 0 0" + "-p" "/home d 555 0 0")) (when database ;; Initialize /var/guix. -- cgit v1.2.3 From ad4910eec06047124d29cb9a8d4b40dafdb71630 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sun, 17 Mar 2019 16:32:24 +0100 Subject: build-system/meson: Add #:allowed-references and #:disallowed-references. * guix/build-system/meson.scm (meson-build): Add support for #:allowed-references and #:disallowed-references. --- guix/build-system/meson.scm | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'guix') diff --git a/guix/build-system/meson.scm b/guix/build-system/meson.scm index 8d49020454..370d185545 100644 --- a/guix/build-system/meson.scm +++ b/guix/build-system/meson.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Peter Mikkelsen -;;; Copyright © 2018 Marius Bakke +;;; Copyright © 2018, 2019 Marius Bakke ;;; ;;; This file is part of GNU Guix. ;;; @@ -109,9 +109,25 @@ (system (%current-system)) (imported-modules %meson-build-system-modules) (modules '((guix build meson-build-system) - (guix build utils)))) + (guix build utils))) + allowed-references + disallowed-references) "Build SOURCE using MESON, and with INPUTS, assuming that SOURCE has a 'meson.build' file." + + ;; TODO: Copied from build-system/gnu, factorize this! + (define canonicalize-reference + (match-lambda + ((? package? p) + (derivation->output-path (package-derivation store p system + #:graft? #f))) + (((? package? p) output) + (derivation->output-path (package-derivation store p system + #:graft? #f) + output)) + ((? string? output) + output))) + (define builder `(let ((build-phases (if ,glib-or-gtk? ,phases @@ -159,7 +175,15 @@ has a 'meson.build' file." #:inputs inputs #:modules imported-modules #:outputs outputs - #:guile-for-build guile-for-build)) + #:guile-for-build guile-for-build + #:allowed-references + (and allowed-references + (map canonicalize-reference + allowed-references)) + #:disallowed-references + (and disallowed-references + (map canonicalize-reference + disallowed-references)))) (define meson-build-system (build-system -- cgit v1.2.3