From 2b34b4b46d44b3849b1909892875c56b66cbbdc0 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Mar 2015 23:21:09 +0100 Subject: gnu: bash: Install headers in "include" output. * gnu/packages/bash.scm (bash)[outputs]: New field. [arguments]: Use 'modify-phases'. Add 'install-headers' phase. --- gnu/packages/bash.scm | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm index c669194c2e..4f92547da5 100644 --- a/gnu/packages/bash.scm +++ b/gnu/packages/bash.scm @@ -127,6 +127,26 @@ number/base32-hash tuples, directly usable in the 'patch-series' form." (let ((out (assoc-ref outputs "out"))) (with-directory-excursion (string-append out "/bin") (symlink "bash" "sh"))))) + (install-headers-phase + '(lambda* (#:key outputs #:allow-other-keys) + ;; Install Bash headers so that packages that provide extensions + ;; can use them. We install them in include/bash; that's what + ;; Debian does and what Bash extensions like recutils or + ;; guile-bash expect. + (let ((include (string-append (assoc-ref outputs "include") + "/include/bash")) + (headers "^\\./(builtins/|lib/glob/|lib/tilde/|)[^/]+\\.h$")) + (mkdir-p include) + (for-each (lambda (file) + (when ((@ (ice-9 regex) string-match) headers file) + (let ((directory (string-append include "/" + (dirname file)))) + (mkdir-p directory) + (copy-file file + (string-append directory "/" + (basename file)))))) + (find-files "." "\\.h$")) + #t))) (version "4.3")) (package (name "bash") @@ -147,6 +167,9 @@ number/base32-hash tuples, directly usable in the 'patch-series' form." (version (string-append version "." (number->string (length %patch-series-4.3)))) (build-system gnu-build-system) + + (outputs '("out" + "include")) ;headers used by extensions (native-inputs `(("bison" ,bison))) ;to rebuild the parser (inputs `(("readline" ,readline) ("ncurses" ,ncurses))) ;TODO: add texinfo @@ -168,9 +191,10 @@ number/base32-hash tuples, directly usable in the 'patch-series' form." ;; for now. #:tests? #f - #:phases (alist-cons-after 'install 'post-install - ,post-install-phase - %standard-phases))) + #:phases (modify-phases %standard-phases + (add-after install post-install ,post-install-phase) + (add-after install install-headers + ,install-headers-phase)))) (synopsis "The GNU Bourne-Again SHell") (description "Bash is the shell, or command-line interpreter, of the GNU system. It -- cgit v1.2.3 From 266d26df87269282a7ef760208aac62bddfb7a7a Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sun, 8 Mar 2015 00:11:15 +0100 Subject: gnu: patch: Update to 2.7.5. * gnu/packages/base.scm (patch): Update to 2.7.5. --- gnu/packages/base.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 102a9659c2..c9988a8494 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -151,14 +151,14 @@ standard utility.") (define-public patch (package (name "patch") - (version "2.7.4") + (version "2.7.5") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/patch/patch-" version ".tar.xz")) (sha256 (base32 - "02gikxjvcxysr4l65c8vivgz62xmalp0av5ypzff8vqhrq3vpb0f")))) + "16d2r9kpivaak948mxzc0bai45mqfw73m113wrkmbffnalv1b5gx")))) (build-system gnu-build-system) (native-inputs `(("ed", ed))) (synopsis "Apply differences to originals, with optional backups") -- cgit v1.2.3 From 49689377a3bab8da08436455ca14a0432fa0e95f Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 9 Mar 2015 22:59:01 -0400 Subject: gnu: sqlite: Add -DSQLITE_ENABLE_UNLOCK_NOTIFY to CFLAGS. * gnu/packages/databases.scm (sqlite)[arguments]: Add -DSQLITE_ENABLE_UNLOCK_NOTIFY to CFLAGS. --- gnu/packages/databases.scm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 26df1f7d22..41fed2a6ac 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -236,9 +236,12 @@ types are supported, as is encryption.") "04dl53iv5q0srv4jcgjfzsrdzkq6dg1sgmlmpw9lrd4xrmj6jmvl")))) (build-system gnu-build-system) (inputs `(("readline" ,readline))) - ;; Add -DSQLITE_SECURE_DELETE. GNU Icecat will refuse to use the system - ;; SQLite unless this option is enabled. - (arguments `(#:configure-flags '("CFLAGS=-O2 -DSQLITE_SECURE_DELETE"))) + (arguments + `(#:configure-flags + ;; Add -DSQLITE_SECURE_DELETE and -DSQLITE_ENABLE_UNLOCK_NOTIFY to + ;; CFLAGS. GNU Icecat will refuse to use the system SQLite unless these + ;; options are enabled. + '("CFLAGS=-O2 -DSQLITE_SECURE_DELETE -DSQLITE_ENABLE_UNLOCK_NOTIFY"))) (home-page "http://www.sqlite.org/") (synopsis "The SQLite database management system") (description -- cgit v1.2.3 From cf87cc894d6913e5c58a381890f920d7e1edf178 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 18 Mar 2015 19:00:12 +0100 Subject: packages: Rewrite 'patch-and-repack' using gexps. * guix/packages.scm (patch-and-repack): Remove 'store' parameter and change default value of #:inputs to (%standard-patch-inputs). [lookup-input, instantiate-patch]: New procedures. [patch-inputs]: Remove. [builder]: Rename to... [build]: ... this. Use gexps instead of sexps. (patch-and-repack*): Remove. (origin->derivation): Use 'patch-and-repack' instead of 'patch-and-repack*'. * tests/packages.scm ("package-source-derivation, snippet")[source](snippet): Remove references to '%build-inputs' and '%outputs'. --- guix/packages.scm | 226 ++++++++++++++++++++++++----------------------------- tests/packages.scm | 5 +- 2 files changed, 104 insertions(+), 127 deletions(-) diff --git a/guix/packages.scm b/guix/packages.scm index ec0e79d08b..f12ef99b3e 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -26,6 +26,7 @@ #:use-module (guix base32) #:use-module (guix derivations) #:use-module (guix build-system) + #:use-module (guix gexp) #:use-module (ice-9 match) #:use-module (ice-9 vlist) #:use-module (srfi srfi-1) @@ -349,10 +350,9 @@ the build code of derivation." (package->derivation (default-guile) system #:graft? #f)) -;; TODO: Rewrite using %STORE-MONAD and gexps. -(define* (patch-and-repack store source patches +(define* (patch-and-repack source patches #:key - (inputs '()) + (inputs (%standard-patch-inputs)) (snippet #f) (flags '("-p1")) (modules '()) @@ -370,6 +370,11 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET." (derivation->output-path source) source)) + (define (lookup-input name) + (match (assoc-ref inputs name) + ((package) package) + (#f #f))) + (define decompression-type (cond ((string-suffix? "gz" source-file-name) "gzip") ((string-suffix? "bz2" source-file-name) "bzip2") @@ -398,115 +403,93 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET." ".xz" ".tar.xz")))) - (define patch-inputs - (map (lambda (number patch) - (list (string-append "patch" (number->string number)) - (match patch - ((? string?) - (add-to-store store (basename patch) #t - "sha256" patch)) - ((? origin?) - (package-source-derivation store patch system))))) - (iota (length patches)) - - patches)) - - (define builder - `(begin - (use-modules (ice-9 ftw) - (srfi srfi-1) - (guix build utils)) - - ;; Encoding/decoding errors shouldn't be silent. - (fluid-set! %default-port-conversion-strategy 'error) - - (let ((locales (assoc-ref %build-inputs "locales")) - (out (assoc-ref %outputs "out")) - (xz (assoc-ref %build-inputs "xz")) - (decomp (assoc-ref %build-inputs ,decompression-type)) - (source (assoc-ref %build-inputs "source")) - (tar (string-append (assoc-ref %build-inputs "tar") - "/bin/tar")) - (patch (string-append (assoc-ref %build-inputs "patch") - "/bin/patch"))) - (define (apply-patch input) - (let ((patch* (assoc-ref %build-inputs input))) - (format (current-error-port) "applying '~a'...~%" patch*) - - ;; Use '--force' so that patches that do not apply perfectly are - ;; rejected. - (zero? (system* patch "--force" ,@flags "--input" patch*)))) - - (define (first-file directory) - ;; Return the name of the first file in DIRECTORY. - (car (scandir directory - (lambda (name) - (not (member name '("." ".."))))))) - - (when locales - ;; First of all, install a UTF-8 locale so that UTF-8 file names - ;; are correctly interpreted. During bootstrap, LOCALES is #f. - (setenv "LOCPATH" (string-append locales "/lib/locale")) - (setlocale LC_ALL "en_US.UTF-8")) - - (setenv "PATH" (string-append xz "/bin" ":" - decomp "/bin")) - - ;; SOURCE may be either a directory or a tarball. - (and (if (file-is-directory? source) - (let* ((store (or (getenv "NIX_STORE") "/gnu/store")) - (len (+ 1 (string-length store))) - (base (string-drop source len)) - (dash (string-index base #\-)) - (directory (string-drop base (+ 1 dash)))) - (mkdir directory) - (copy-recursively source directory) - #t) - (zero? (system* tar "xvf" source))) - (let ((directory (first-file "."))) - (format (current-error-port) - "source is under '~a'~%" directory) - (chdir directory) - - (and (every apply-patch ',(map car patch-inputs)) - - ,@(if snippet - `((let ((module (make-fresh-user-module))) - (module-use-interfaces! module - (map resolve-interface - ',modules)) - (module-define! module '%build-inputs - %build-inputs) - (module-define! module '%outputs %outputs) - ((@ (system base compile) compile) - ',snippet - #:to 'value - #:opts %auto-compilation-options - #:env module))) - '()) - - (begin (chdir "..") #t) - (zero? (system* tar "cvfa" out directory)))))))) - - - (let ((name (tarxz-name original-file-name)) - (inputs (filter-map (match-lambda - ((name (? package? p)) - (and (member name (cons decompression-type - '("tar" "xz" "patch"))) - (list name - (package-derivation store p system - #:graft? #f))))) - (or inputs (%standard-patch-inputs)))) - (modules (delete-duplicates (cons '(guix build utils) modules)))) - - (build-expression->derivation store name builder - #:inputs `(("source" ,source) - ,@inputs - ,@patch-inputs) - #:system system - #:modules modules - #:guile-for-build guile-for-build))) + (define instantiate-patch + (match-lambda + ((? string? patch) + (interned-file patch #:recursive? #t)) + ((? origin? patch) + (origin->derivation patch system)))) + + (mlet %store-monad ((tar -> (lookup-input "tar")) + (xz -> (lookup-input "xz")) + (patch -> (lookup-input "patch")) + (locales -> (lookup-input "locales")) + (decomp -> (lookup-input decompression-type)) + (patches (sequence %store-monad + (map instantiate-patch patches)))) + (define build + #~(begin + (use-modules (ice-9 ftw) + (srfi srfi-1) + (guix build utils)) + + (define (apply-patch patch) + (format (current-error-port) "applying '~a'...~%" patch) + + ;; Use '--force' so that patches that do not apply perfectly are + ;; rejected. + (zero? (system* (string-append #$patch "/bin/patch") + "--force" #$@flags "--input" patch))) + + (define (first-file directory) + ;; Return the name of the first file in DIRECTORY. + (car (scandir directory + (lambda (name) + (not (member name '("." ".."))))))) + + ;; Encoding/decoding errors shouldn't be silent. + (fluid-set! %default-port-conversion-strategy 'error) + + (when #$locales + ;; First of all, install a UTF-8 locale so that UTF-8 file names + ;; are correctly interpreted. During bootstrap, LOCALES is #f. + (setenv "LOCPATH" (string-append #$locales "/lib/locale")) + (setlocale LC_ALL "en_US.UTF-8")) + + (setenv "PATH" (string-append #$xz "/bin" ":" + #$decomp "/bin")) + + ;; SOURCE may be either a directory or a tarball. + (and (if (file-is-directory? #$source) + (let* ((store (or (getenv "NIX_STORE") "/gnu/store")) + (len (+ 1 (string-length store))) + (base (string-drop #$source len)) + (dash (string-index base #\-)) + (directory (string-drop base (+ 1 dash)))) + (mkdir directory) + (copy-recursively #$source directory) + #t) + (zero? (system* (string-append #$tar "/bin/tar") + "xvf" #$source))) + (let ((directory (first-file "."))) + (format (current-error-port) + "source is under '~a'~%" directory) + (chdir directory) + + (and (every apply-patch '#$patches) + #$@(if snippet + #~((let ((module (make-fresh-user-module))) + (module-use-interfaces! module + (map resolve-interface + '#$modules)) + ((@ (system base compile) compile) + '#$snippet + #:to 'value + #:opts %auto-compilation-options + #:env module))) + #~()) + + (begin (chdir "..") #t) + (zero? (system* (string-append #$tar "/bin/tar") + "cvfa" #$output directory))))))) + + (let ((name (tarxz-name original-file-name)) + (modules (delete-duplicates (cons '(guix build utils) modules)))) + (gexp->derivation name build + #:graft? #f + #:system system + #:modules modules + #:guile-for-build guile-for-build)))) (define (transitive-inputs inputs) (let loop ((inputs inputs) @@ -954,9 +937,6 @@ cross-compilation target triplet." (package->cross-derivation package target system) (package->derivation package system))) -(define patch-and-repack* - (store-lift patch-and-repack)) - (define* (origin->derivation source #:optional (system (%current-system))) "When SOURCE is an object, return its derivation for SYSTEM. When @@ -976,14 +956,14 @@ outside of the store) or SOURCE itself (if SOURCE is already a store item.)" (default-guile)) system #:graft? #f))) - (patch-and-repack* source patches - #:inputs inputs - #:snippet snippet - #:flags flags - #:system system - #:modules modules - #:imported-modules modules - #:guile-for-build guile))) + (patch-and-repack source patches + #:inputs inputs + #:snippet snippet + #:flags flags + #:system system + #:modules modules + #:imported-modules modules + #:guile-for-build guile))) ((and (? string?) (? direct-store-path?) file) (with-monad %store-monad (return file))) diff --git a/tests/packages.scm b/tests/packages.scm index c9dd5d859a..a181b1b08a 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -205,10 +205,7 @@ (chmod "." #o777) (symlink "guile" "guile-rocks") (copy-recursively "../share/guile/2.0/scripts" - "scripts") - - ;; These variables must exist. - (pk %build-inputs %outputs)))))) + "scripts")))))) (package (package (inherit (dummy-package "with-snippet")) (source source) (build-system trivial-build-system) -- cgit v1.2.3 From e5ffe52cc7d0fa3242e3cd11f63c94deab91a3d5 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 21 Mar 2015 20:33:22 +0100 Subject: gnu: calibre: Update to 2.22.0. * gnu/packages/ebook.scm (calibre): Update to 2.22.0. --- gnu/packages/ebook.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 196cbaeea3..de85fad8c6 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -60,7 +60,7 @@ (define-public calibre (package (name "calibre") - (version "2.21.0") + (version "2.22.0") (source (origin (method url-fetch) @@ -69,7 +69,7 @@ version ".tar.xz")) (sha256 (base32 - "1adig2jxwbmsxcs36jaybhc8zdb8mnkc23kabw0c72izrsg4c5gb")) + "19hpm5xzhjr0nfjm6xyqxjx2iwm3iw7y6bbs11337arfrxn16ly0")) ;; Remove non-free or doubtful code, see ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html (modules '((guix build utils))) -- cgit v1.2.3 From 3c76a81b94d4f8f932fa94d2761b22d05cf8ae4f Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 19 Mar 2015 11:58:13 -0400 Subject: gnu: openssl: Update to 1.0.2a. * gnu/packages/openssl.scm (openssl): Update to 1.0.2a. --- gnu/packages/openssl.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/openssl.scm b/gnu/packages/openssl.scm index 26a1bbb811..6acbb12737 100644 --- a/gnu/packages/openssl.scm +++ b/gnu/packages/openssl.scm @@ -29,14 +29,14 @@ (define-public openssl (package (name "openssl") - (version "1.0.2") + (version "1.0.2a") (source (origin (method url-fetch) (uri (string-append "ftp://ftp.openssl.org/source/openssl-" version ".tar.gz")) (sha256 (base32 - "1s988w1h1yxh7lhrhh164hv6vil94lkwzh6g2rfm03dypbrvlj4c")))) + "0jijgzf72659pikms2bc5w31h78xrd1h5zp2r01an2h340y3kdhm")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) (arguments -- cgit v1.2.3 From ec3b1c575d2d866646920490e849c4a0c708df60 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 21 Mar 2015 21:58:04 +0100 Subject: gnu: Use 'glibc-utf8-locales-final' in the default patching inputs. * gnu/packages/commencement.scm (glibc-utf8-locales-final): Make public. * guix/packages.scm (%standard-patch-inputs): Use GLIBC-UTF8-LOCALES-FINAL instead of GLIBC-UTF8-LOCALES. --- gnu/packages/commencement.scm | 2 +- guix/packages.scm | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index f312e1729c..d96a8237c3 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -616,7 +616,7 @@ store.") (current-source-location) #:guile %bootstrap-guile))) -(define glibc-utf8-locales-final +(define-public glibc-utf8-locales-final ;; Now that we have GUILE-FINAL, build the UTF-8 locales. They are needed ;; by the build processes afterwards so their 'scm_to_locale_string' works ;; with the full range of Unicode codepoints (remember diff --git a/guix/packages.scm b/guix/packages.scm index f12ef99b3e..69cfd6d26c 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -336,7 +336,8 @@ corresponds to the arguments expected by `set-path-environment-variable'." ("gzip" ,(ref '(gnu packages compression) 'gzip)) ("lzip" ,(ref '(gnu packages compression) 'lzip)) ("patch" ,(ref '(gnu packages base) 'patch)) - ("locales" ,(ref '(gnu packages base) 'glibc-utf8-locales))))) + ("locales" ,(ref '(gnu packages commencement) + 'glibc-utf8-locales-final))))) (define (default-guile) "Return the default Guile package used to run the build code of -- cgit v1.2.3 From a158484db41f1662032609da61cd3ae9f292607b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 21 Mar 2015 22:07:11 +0100 Subject: packages: Make sure the patch inputs are not #f. Fixes build issues whereby #:inputs would be #f. See . * guix/packages.scm (patch-and-repack): #:input defaults to #f. [lookup-input]: When INPUTS is #f, use (%standard-patch-inputs). --- guix/packages.scm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/guix/packages.scm b/guix/packages.scm index 69cfd6d26c..ca9d3a9fb1 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -353,7 +353,7 @@ the build code of derivation." (define* (patch-and-repack source patches #:key - (inputs (%standard-patch-inputs)) + inputs (snippet #f) (flags '("-p1")) (modules '()) @@ -371,10 +371,14 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET." (derivation->output-path source) source)) - (define (lookup-input name) - (match (assoc-ref inputs name) - ((package) package) - (#f #f))) + (define lookup-input + ;; The default value of the 'patch-inputs' field, and thus INPUTS is #f, + ;; so deal with that. + (let ((inputs (or inputs (%standard-patch-inputs)))) + (lambda (name) + (match (assoc-ref inputs name) + ((package) package) + (#f #f))))) (define decompression-type (cond ((string-suffix? "gz" source-file-name) "gzip") -- cgit v1.2.3 From 9d297fae5f42300909d0a9b8031c14f4c332ed9e Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sun, 15 Mar 2015 23:12:32 +0100 Subject: gnu: gtk+-2: build gobject introspection typelib file. * gnu/packages/gtk.scm (gtk+-2): add `gobject-introspection' to the native-inputs to install typelib file. --- gnu/packages/gtk.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index fef5a814db..b3688d5ec1 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -408,10 +408,12 @@ is part of the GNOME accessibility project.") (native-inputs `(("perl" ,perl) ("glib" ,glib "bin") + ("gobject-introspection" ,gobject-introspection) ("pkg-config" ,pkg-config) ("python-wrapper" ,python-wrapper))) (arguments - `(#:phases + `(#:make-flags '("CC=gcc") + #:phases (alist-cons-before 'configure 'disable-tests (lambda _ -- cgit v1.2.3 From 38829eac4ba820daeaa8911187b841276e6990a9 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Wed, 4 Mar 2015 16:29:08 +0100 Subject: gnu: Add mplayer2. * gnu/packages/video.scm (mplayer2): New variable. * gnu/packages/patches/mplayer2-theora-fix.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + gnu/packages/patches/mplayer2-theora-fix.patch | 286 +++++++++++++++++++++++++ gnu/packages/video.scm | 124 +++++++++++ 3 files changed, 411 insertions(+) create mode 100644 gnu/packages/patches/mplayer2-theora-fix.patch diff --git a/gnu-system.am b/gnu-system.am index 2bed50fc40..154f51f1af 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -461,6 +461,7 @@ dist_patch_DATA = \ gnu/packages/patches/mhash-keygen-test-segfault.patch \ gnu/packages/patches/mit-krb5-init-fix.patch \ gnu/packages/patches/mpc123-initialize-ao.patch \ + gnu/packages/patches/mplayer2-theora-fix.patch \ gnu/packages/patches/module-init-tools-moduledir.patch \ gnu/packages/patches/mupdf-buildsystem-fix.patch \ gnu/packages/patches/mutt-CVE-2014-9116.patch \ diff --git a/gnu/packages/patches/mplayer2-theora-fix.patch b/gnu/packages/patches/mplayer2-theora-fix.patch new file mode 100644 index 0000000000..982db5f57c --- /dev/null +++ b/gnu/packages/patches/mplayer2-theora-fix.patch @@ -0,0 +1,286 @@ +Fix libtheora linking issue with modern theora versions. + +Adapted from: +http://git.buildroot.net/buildroot/commit/?id=46b71cb0be27c0e6b7c93afb49fc80779bf310e3 + +--- a/libmpcodecs/vd_theora.c ++++ b/libmpcodecs/vd_theora.c +@@ -39,22 +39,23 @@ + + LIBVD_EXTERN(theora) + +-#include ++#include + + #define THEORA_NUM_HEADER_PACKETS 3 + + typedef struct theora_struct_st { +- theora_state st; +- theora_comment cc; +- theora_info inf; ++ th_setup_info *tsi; ++ th_dec_ctx *tctx; ++ th_comment tc; ++ th_info ti; + } theora_struct_t; + + /** Convert Theora pixelformat to the corresponding IMGFMT_ */ +-static uint32_t theora_pixelformat2imgfmt(theora_pixelformat fmt){ ++static uint32_t theora_pixelformat2imgfmt(th_pixel_fmt fmt){ + switch(fmt) { +- case OC_PF_420: return IMGFMT_YV12; +- case OC_PF_422: return IMGFMT_422P; +- case OC_PF_444: return IMGFMT_444P; ++ case TH_PF_420: return IMGFMT_YV12; ++ case TH_PF_422: return IMGFMT_422P; ++ case TH_PF_444: return IMGFMT_444P; + } + return 0; + } +@@ -64,7 +65,7 @@ + theora_struct_t *context = sh->context; + switch(cmd) { + case VDCTRL_QUERY_FORMAT: +- if (*(int*)arg == theora_pixelformat2imgfmt(context->inf.pixelformat)) ++ if (*(int*)arg == theora_pixelformat2imgfmt(context->ti.pixel_fmt)) + return CONTROL_TRUE; + return CONTROL_FALSE; + } +@@ -88,8 +89,9 @@ + if (!context) + goto err_out; + +- theora_info_init(&context->inf); +- theora_comment_init(&context->cc); ++ th_info_init(&context->ti); ++ th_comment_init(&context->tc); ++ context->tsi = NULL; + + /* Read all header packets, pass them to theora_decode_header. */ + for (i = 0; i < THEORA_NUM_HEADER_PACKETS; i++) +@@ -109,7 +111,7 @@ + op.b_o_s = 1; + } + +- if ( (errorCode = theora_decode_header (&context->inf, &context->cc, &op)) ) ++ if ( (errorCode = th_decode_headerin (&context->ti, &context->tc, &context->tsi, &op)) < 0) + { + mp_msg(MSGT_DECVIDEO, MSGL_ERR, "Broken Theora header; errorCode=%i!\n", errorCode); + goto err_out; +@@ -117,23 +119,25 @@ + } + + /* now init codec */ +- errorCode = theora_decode_init (&context->st, &context->inf); +- if (errorCode) ++ context->tctx = th_decode_alloc (&context->ti, context->tsi); ++ if (!context->tctx) + { +- mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Theora decode init failed: %i \n", errorCode); ++ mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Theora decode init failed\n"); + goto err_out; + } ++ /* free memory used for decoder setup information */ ++ th_setup_free(context->tsi); + +- if(sh->aspect==0.0 && context->inf.aspect_denominator!=0) ++ if(sh->aspect==0.0 && context->ti.aspect_denominator!=0) + { +- sh->aspect = ((double)context->inf.aspect_numerator * context->inf.width)/ +- ((double)context->inf.aspect_denominator * context->inf.height); ++ sh->aspect = ((double)context->ti.aspect_numerator * context->ti.frame_width)/ ++ ((double)context->ti.aspect_denominator * context->ti.frame_height); + } + + mp_msg(MSGT_DECVIDEO,MSGL_V,"INFO: Theora video init ok!\n"); +- mp_msg(MSGT_DECVIDEO,MSGL_INFO,"Frame: %dx%d, Picture %dx%d, Offset [%d,%d]\n", context->inf.width, context->inf.height, context->inf.frame_width, context->inf.frame_height, context->inf.offset_x, context->inf.offset_y); ++ mp_msg(MSGT_DECVIDEO,MSGL_INFO,"Frame: %dx%d, Picture %dx%d, Offset [%d,%d]\n", context->ti.frame_width, context->ti.frame_height, context->ti.pic_width, context->ti.pic_height, context->ti.pic_x, context->ti.pic_y); + +- return mpcodecs_config_vo (sh,context->inf.width,context->inf.height,theora_pixelformat2imgfmt(context->inf.pixelformat)); ++ return mpcodecs_config_vo (sh,context->ti.frame_width,context->ti.frame_height,theora_pixelformat2imgfmt(context->ti.pixel_fmt)); + + err_out: + free(context); +@@ -150,9 +154,9 @@ + + if (context) + { +- theora_info_clear(&context->inf); +- theora_comment_clear(&context->cc); +- theora_clear (&context->st); ++ th_info_clear(&context->ti); ++ th_comment_clear(&context->tc); ++ th_decode_free (context->tctx); + free (context); + } + } +@@ -165,7 +169,7 @@ + theora_struct_t *context = sh->context; + int errorCode = 0; + ogg_packet op; +- yuv_buffer yuv; ++ th_ycbcr_buffer ycbcrbuf; + mp_image_t* mpi; + + // no delayed frames +@@ -177,31 +181,31 @@ + op.packet = data; + op.granulepos = -1; + +- errorCode = theora_decode_packetin (&context->st, &op); +- if (errorCode) ++ errorCode = th_decode_packetin (context->tctx, &op, NULL); ++ if (errorCode < 0) + { + mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Theora decode packetin failed: %i \n", + errorCode); + return NULL; + } + +- errorCode = theora_decode_YUVout (&context->st, &yuv); +- if (errorCode) ++ errorCode = th_decode_ycbcr_out (context->tctx, ycbcrbuf); ++ if (errorCode < 0) + { + mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Theora decode YUVout failed: %i \n", + errorCode); + return NULL; + } + +- mpi = mpcodecs_get_image(sh, MP_IMGTYPE_EXPORT, 0, yuv.y_width, yuv.y_height); ++ mpi = mpcodecs_get_image(sh, MP_IMGTYPE_EXPORT, 0, ycbcrbuf[0].width, ycbcrbuf[0].height); + if(!mpi) return NULL; + +- mpi->planes[0]=yuv.y; +- mpi->stride[0]=yuv.y_stride; +- mpi->planes[1]=yuv.u; +- mpi->stride[1]=yuv.uv_stride; +- mpi->planes[2]=yuv.v; +- mpi->stride[2]=yuv.uv_stride; ++ mpi->planes[0]=ycbcrbuf[0].data; ++ mpi->stride[0]=ycbcrbuf[0].stride; ++ mpi->planes[1]=ycbcrbuf[1].data; ++ mpi->stride[1]=ycbcrbuf[1].stride; ++ mpi->planes[2]=ycbcrbuf[2].data; ++ mpi->stride[2]=ycbcrbuf[2].stride; + + return mpi; + } +--- a/libmpdemux/demux_ogg.c ++++ b/libmpdemux/demux_ogg.c +@@ -49,21 +49,21 @@ + #endif + + #ifdef CONFIG_OGGTHEORA +-#include +-int _ilog (unsigned int); /* defined in many places in theora/lib/ */ ++#include + #endif + + #define BLOCK_SIZE 4096 + + /* Theora decoder context : we won't be able to interpret granule positions +- * without using theora_granule_time with the theora_state of the stream. ++ * without using th_granule_time with the th_dec_ctx of the stream. + * This is duplicated in `vd_theora.c'; put this in a common header? + */ + #ifdef CONFIG_OGGTHEORA + typedef struct theora_struct_st { +- theora_state st; +- theora_comment cc; +- theora_info inf; ++ th_setup_info *tsi; ++ th_dec_ctx *tctx; ++ th_comment tc; ++ th_info ti; + } theora_struct_t; + #endif + +@@ -116,7 +116,7 @@ + float samplerate; /// granulpos 2 time + int64_t lastpos; + int32_t lastsize; +- int keyframe_frequency_force; ++ int keyframe_granule_shift; + + // Logical stream state + ogg_stream_state stream; +@@ -299,11 +299,10 @@ + have theora_state st, until all header packets were passed to the + decoder. */ + if (!pack->bytes || !(*data&0x80)) { +- int keyframe_granule_shift = _ilog(os->keyframe_frequency_force - 1); +- int64_t iframemask = (1 << keyframe_granule_shift) - 1; ++ int64_t iframemask = (1 << os->keyframe_granule_shift) - 1; + + if (pack->granulepos >= 0) { +- os->lastpos = pack->granulepos >> keyframe_granule_shift; ++ os->lastpos = pack->granulepos >> os->keyframe_granule_shift; + os->lastpos += pack->granulepos & iframemask; + *flags = (pack->granulepos & iframemask) == 0; + } else { +@@ -892,14 +891,15 @@ + #ifdef CONFIG_OGGTHEORA + } else if (pack.bytes >= 7 && !strncmp (&pack.packet[1], "theora", 6)) { + int errorCode = 0; +- theora_info inf; +- theora_comment cc; ++ th_info ti; ++ th_comment tc; ++ th_setup_info *tsi = NULL; + +- theora_info_init (&inf); +- theora_comment_init (&cc); ++ th_info_init (&ti); ++ th_comment_init (&tc); + +- errorCode = theora_decode_header (&inf, &cc, &pack); +- if (errorCode) { ++ errorCode = th_decode_headerin(&ti, &tc, &tsi, &pack); ++ if (errorCode < 0) { + mp_msg(MSGT_DEMUX, MSGL_ERR, + "Theora header parsing failed: %i \n", errorCode); + } else { +@@ -908,30 +908,32 @@ + sh_v->bih = calloc(1, sizeof(*sh_v->bih)); + sh_v->bih->biSize = sizeof(*sh_v->bih); + sh_v->bih->biCompression = sh_v->format = FOURCC_THEORA; +- sh_v->fps = ((double)inf.fps_numerator) / (double)inf.fps_denominator; +- sh_v->frametime = ((double)inf.fps_denominator) / (double)inf.fps_numerator; +- sh_v->disp_w = sh_v->bih->biWidth = inf.frame_width; +- sh_v->disp_h = sh_v->bih->biHeight = inf.frame_height; ++ sh_v->fps = ((double)ti.fps_numerator) / (double)ti.fps_denominator; ++ sh_v->frametime = ((double)ti.fps_denominator) / (double)ti.fps_numerator; ++ sh_v->i_bps = ti.target_bitrate / 8; ++ sh_v->disp_w = sh_v->bih->biWidth = ti.frame_width; ++ sh_v->disp_h = sh_v->bih->biHeight = ti.frame_height; + sh_v->bih->biBitCount = 24; + sh_v->bih->biPlanes = 3; + sh_v->bih->biSizeImage = ((sh_v->bih->biBitCount / 8) * sh_v->bih->biWidth * sh_v->bih->biHeight); + ogg_d->subs[ogg_d->num_sub].samplerate = sh_v->fps; + ogg_d->subs[ogg_d->num_sub].theora = 1; +- ogg_d->subs[ogg_d->num_sub].keyframe_frequency_force = inf.keyframe_frequency_force; ++ ogg_d->subs[ogg_d->num_sub].keyframe_granule_shift = ti.keyframe_granule_shift; + ogg_d->subs[ogg_d->num_sub].id = n_video; + n_video++; + mp_msg(MSGT_DEMUX, MSGL_INFO, + "[Ogg] stream %d: video (Theora v%d.%d.%d), -vid %d\n", + ogg_d->num_sub, +- (int)inf.version_major, +- (int)inf.version_minor, +- (int)inf.version_subminor, ++ (int)ti.version_major, ++ (int)ti.version_minor, ++ (int)ti.version_subminor, + n_video - 1); + if (mp_msg_test(MSGT_HEADER, MSGL_V)) + print_video_header(sh_v->bih, MSGL_V); + } +- theora_comment_clear(&cc); +- theora_info_clear(&inf); ++ th_comment_clear(&tc); ++ th_info_clear(&ti); ++ th_setup_free(tsi); + #endif /* CONFIG_OGGTHEORA */ + } else if (pack.bytes >= 4 && !strncmp (&pack.packet[0], "fLaC", 4)) { + sh_a = new_sh_audio_aid(demuxer, ogg_d->num_sub, n_audio, NULL); diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index ce26812aec..a7f39b8249 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -26,6 +26,7 @@ fsf-free isc)) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system python) @@ -34,6 +35,7 @@ #:use-module (gnu packages audio) #:use-module (gnu packages autotools) #:use-module (gnu packages avahi) + #:use-module (gnu packages base) #:use-module (gnu packages cdrom) #:use-module (gnu packages compression) #:use-module (gnu packages databases) @@ -42,6 +44,7 @@ #:use-module (gnu packages fontutils) #:use-module (gnu packages fribidi) #:use-module (gnu packages gettext) + #:use-module (gnu packages ghostscript) #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages guile) @@ -59,6 +62,7 @@ #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) #:use-module (gnu packages qt) + #:use-module (gnu packages samba) #:use-module (gnu packages sdl) #:use-module (gnu packages ssh) #:use-module (gnu packages texlive) @@ -512,6 +516,126 @@ NuppelVideo, FLI, YUV4MPEG, FILM, RoQ, PVA files. One can watch VideoCD, SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") (license gpl2))) +;;; This is not version 2; it's a fork literally named "mplayer2". +(define-public mplayer2 + (package + (name "mplayer2") + ;; There are no tarballs. The 2.0 git tag, which is actually the first + ;; release is from 2011. The latest commit is from 2013 October, so we + ;; use that commit. + (version "201310") + (source (origin + (method git-fetch) + (uri (git-reference + ;; XXX Change this if mplayer2.org goes up again. + (url "http://repo.or.cz/mplayer2.git") + (commit "2c378c71a4d9b1df382db9aa787b646628b4e3f9"))) + (sha256 + (base32 + "0s8554sanj6cvnf0h148nsmjgy5v0568nmcza7grpv6fnmddpfam")) + (file-name (string-append name "-" version "-checkout")) + ;; Warning: after using this patch, one must pass the -ltheora + ;; linker flag manually to configure; see below. + (patches (list (search-patch "mplayer2-theora-fix.patch"))))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("perl" ,perl) + ("python" ,python) + ("python-2" ,python-2) + ("python-docutils" ,python-docutils) + ;; ./configure uses which(1) to find rst2man.py. + ("which" ,which))) + ;; Missing features: DirectFB, Xss screensaver extensions, VDPAU, MNG, + ;; libnut, DirectShow TV interface, Radio interfaces of all kinds, vstream + ;; client, XMSS inputplugin support, joystick, lirc/lircc, and openal. + ;; OpenAL support is experimental and causes compilation to fail with + ;; linker errors. + (inputs + `(("alsa-lib" ,alsa-lib) + ("faad2" ,faad2) + ("ffmpeg" ,ffmpeg) + ("gettext" ,gnu-gettext) + ("jack" ,jack-2) + ("ladspa" ,ladspa) + ("lcms" ,lcms) + ("liba52" ,liba52) + ("libass" ,libass) + ("libbluray" ,libbluray) + ("libbs2b" ,libbs2b) + ("libcaca" ,libcaca) + ("libcdio-paranoia" ,libcdio-paranoia) + ("libdca" ,libdca) + ("libdv" ,libdv) + ("libdvdread" ,libdvdread) + ("libdvdnav" ,libdvdnav-4) + ("libjpeg" ,libjpeg) + ("libmad" ,libmad) + ("libpng" ,libpng) + ("libquvi" ,libquvi) + ("libtheora" ,libtheora) + ("libungif" ,libungif) + ("libvorbis" ,libvorbis) + ("libx11" ,libx11) + ("libxinerama" ,libxinerama) + ("libxv" ,libxv) + ("mesa" ,mesa) + ("mpg123" ,mpg123) + ("ncurses" ,ncurses) + ("portaudio" ,portaudio) + ("pulseaudio" ,pulseaudio) + ("rsound" ,rsound) + ("samba" ,samba) + ("sdl" ,sdl) + ("speex" ,speex) + ("xvid" ,xvid))) + (arguments + '(#:phases + (alist-replace + 'configure + ;; ./configure does not work followed by "SHELL=..." and + ;; "CONFIG_SHELL=..."; set environment variables instead. + (lambda* (#:key inputs outputs #:allow-other-keys) + (setenv "SHELL" (which "bash")) + (setenv "CONFIG_SHELL" (which "bash")) + (substitute* "configure" + (("/usr/X11") (assoc-ref inputs "libx11"))) + (zero? + (system* "./configure" + (string-append "--prefix=" (assoc-ref outputs "out")) + "--enable-translation" + "--enable-runtime-cpudetection" + ;; This is needed in accordance with the theora patch. + "--extra-libs=-ltheoradec"))) + (alist-cons-before + 'build 'fix-TOOLS-shebangs + (lambda _ + (substitute* (find-files "TOOLS" "\\.(sh|pl|py)$") + (("/usr/bin/env") (which "env")) + (("/usr/bin/perl") (which "perl")) + (("/usr/bin/python3") (which "python3")) + (("/usr/bin/python") (which "python")))) + (alist-cons-before + 'build 'fix-input-buffer-padding-size + (lambda _ + (substitute* "libmpdemux/demuxer.h" + ;; This has to match with FFmpeg's FF_INPUT_BUFFER_PADDING_SIZE, + ;; which has changed at some point. + (("(#define MP_INPUT_BUFFER_PADDING_SIZE )[0-9]*" all) + (string-append all "32")))) + %standard-phases))) + ;; No 'check' target. + #:tests? #f)) + ;; XXX Change this if mplayer2.org goes up again. + (home-page "http://repo.or.cz/w/mplayer2.git") + (synopsis "Audio and video player") + (description "mplayer2 is a general-purpose audio and video player. It's +a fork of the original MPlayer project, and contains further development in +several areas.") + ;; See file Copyright. Most files are gpl2+ or compatible, but talloc.c + ;; is under lgpl3+, thus the whole project becomes gpl3+. + (license gpl3+))) + (define-public libvpx (package (name "libvpx") -- cgit v1.2.3 From d13586bfe489a9afcb7eb241ff6030a1341baf3c Mon Sep 17 00:00:00 2001 From: Tomáš Čech Date: Thu, 19 Mar 2015 14:38:58 +0100 Subject: gnu: Add the-silver-searcher. * gnu/packages/code.scm (the-silver-searcher): New variable. --- gnu/packages/code.scm | 55 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 50 insertions(+), 5 deletions(-) diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index 7799e38930..ad61b85afc 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -20,9 +20,12 @@ (define-module (gnu packages code) #:use-module (guix packages) #:use-module (guix download) - #:use-module (guix licenses) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system gnu) + #:use-module (gnu packages compression) #:use-module (gnu packages emacs) + #:use-module (gnu packages pcre) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages perl) #:use-module (gnu packages texinfo) #:use-module (gnu packages autogen) @@ -54,7 +57,7 @@ control flow of the program. It can output the graph in several styles and in either the POSIX format or in an extended GNU format. cflow also includes a major mode for Emacs for examining the flowcharts that it produces.") - (license gpl3+))) + (license license:gpl3+))) (define-public complexity (package @@ -78,7 +81,7 @@ a major mode for Emacs for examining the flowcharts that it produces.") convoluted, overly long or otherwise difficult to understand. This may help in learning or reviewing unfamiliar code or perhaps highlighting your own code that seemed comprehensible when you wrote it.") - (license gpl3+))) + (license license:gpl3+))) (define-public global ; a global variable (package @@ -119,7 +122,7 @@ highlighting your own code that seemed comprehensible when you wrote it.") across a wide array of environments, such as different text editors, shells and web browsers. The resulting tags are useful for quickly moving around in a large, deeply nested project.") - (license gpl3+))) + (license license:gpl3+))) (define-public sloccount (package @@ -175,4 +178,46 @@ code (SLOC) in large software systems. It can automatically identify and measure a wide range of programming languages. It automatically estimates the effort, time, and money it would take to develop the software, using the COCOMO model or user-provided parameters.") - (license gpl2+))) + (license license:gpl2+))) + +(define-public the-silver-searcher + (package + (name "the-silver-searcher") + (version "0.29.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/ggreer/the_silver_searcher/archive/" + version ".tar.gz")) + (sha256 + (base32 + "0ah7vcqprl9hhafi68bvzaiywy7dfm28zf7kpw3xrlqzfn0vg7kp")) + (file-name (string-append name "-" version ".tar.gz")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) + (inputs + `(("pcre" ,pcre) + ("xz" ,xz) + ("zlib" ,zlib))) + (arguments + `(#:phases + ;; There is no configure yet, so let's create it, but let configure and + ;; make do the work in later phases. + (alist-cons-before 'configure 'autoconf + (lambda _ + (substitute* "build.sh" + (("./configure") "true") + (("make -j4") "true")) + (zero? (system* "sh" "build.sh"))) + %standard-phases))) + (home-page "http://geoff.greer.fm/ag/") + (synopsis "Fast code searching tool") + (description + "The silver searcher, or 'ag', is tool for quickly searching through +files, but compared to grep is much faster and respects files like .gitignore, +.hgignore, etc.") + (license license:asl2.0))) -- cgit v1.2.3 From a9a8f0637dc82788ead8f1a6cc02a524464285a6 Mon Sep 17 00:00:00 2001 From: Tomáš Čech Date: Wed, 18 Mar 2015 16:23:26 +0100 Subject: Revert "gnu: Add sdcv." This reverts commit 004eb31859971f9602f618cbdf6612f4bcaddd9c. --- gnu/packages/dictionaries.scm | 47 +++++-------------------------------------- 1 file changed, 5 insertions(+), 42 deletions(-) diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm index b18e02a77e..345d0a26c1 100644 --- a/gnu/packages/dictionaries.scm +++ b/gnu/packages/dictionaries.scm @@ -17,18 +17,14 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages dictionaries) - #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system trivial) - #:use-module (guix build-system cmake) #:use-module (gnu packages base) - #:use-module (gnu packages compression) - #:use-module (gnu packages gettext) - #:use-module (gnu packages glib) - #:use-module (gnu packages pkg-config) - #:use-module (gnu packages readline) - #:use-module (gnu packages texinfo)) + #:use-module (gnu packages texinfo) + #:use-module ((gnu packages compression) + #:select (gzip))) (define-public vera (package @@ -79,37 +75,4 @@ (description "V.E.R.A. (Virtual Entity of Relevant Acronyms) is a list of computing acronyms distributed as an info document.") - (license license:fdl1.3+))) - -(define-public sdcv - (package - (name "sdcv") - (version "0.5.0-beta4") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/project/sdcv/sdcv/sdcv-" - version "-Source.tar.bz2")) - (sha256 - (base32 "1b9v91al2c1499q6yx6q8jggid0714444mfj6myqgz3nvqjyrrqr")))) - (build-system cmake-build-system) - (native-inputs - `(("pkg-config" ,pkg-config))) - (inputs - `(("glib" ,glib) - ("gettext" ,gnu-gettext) - ("readline" ,readline) - ("zlib" ,zlib))) - (arguments - `(#:tests? #f ; no tests implemented - #:phases - ;; this is known workaround for missing lang files - (alist-cons-after 'build 'build-lang - (lambda _ (zero? (system* "make" "lang"))) - %standard-phases))) - (home-page "http://sdcv.sourceforge.net/") - (synopsis "Command line variant of StarDict") - (description - "Sdcv is command line dictionary utility, which supports StarDict dictinary -format.") - (license license:gpl2+))) + (license fdl1.3+))) -- cgit v1.2.3 From 2924f0d6ce180a9d09eab994efb6a60c61fab3fd Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 21 Mar 2015 23:13:02 +0100 Subject: gexp: Add identity compiler for derivations. * guix/gexp.scm (derivation-compiler): New procedure. (lower-inputs): Remove 'derivation?' case. (gexp-inputs)[add-reference-inputs]: Likewise. (gexp->sexp)[reference->sexp]: Likewise. --- guix/gexp.scm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/guix/gexp.scm b/guix/gexp.scm index f8646a081c..4a2a924a03 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -127,6 +127,12 @@ cross-compiling.)" body ...))) (register-compiler! name))) +(define-gexp-compiler (derivation-compiler (drv derivation?) system target) + ;; Derivations are the lowest-level representation, so this is the identity + ;; compiler. + (with-monad %store-monad + (return drv))) + ;;; ;;; Inputs & outputs. @@ -165,8 +171,6 @@ the cross-compilation target triplet." (with-monad %store-monad (sequence %store-monad (map (match-lambda - ((and ((? derivation?) sub-drv ...) input) - (return input)) ((and ((? struct? thing) sub-drv ...) input) (mlet* %store-monad ((lower -> (lookup-compiler thing)) (drv (lower thing system target))) @@ -262,6 +266,7 @@ The other arguments are as for 'derivation'." (define (graphs-file-names graphs) ;; Return a list of (FILE-NAME . STORE-PATH) pairs made from GRAPHS. (map (match-lambda + ;; TODO: Remove 'derivation?' special cases. ((file-name (? derivation? drv)) (cons file-name (derivation->output-path drv))) ((file-name (? derivation? drv) sub-drv) @@ -348,8 +353,6 @@ The other arguments are as for 'derivation'." references." (define (add-reference-inputs ref result) (match ref - (($ (? derivation? drv) output) - (cons `(,drv ,output) result)) (($ (? gexp? exp)) (append (gexp-inputs exp references) result)) (($ (? string? str)) @@ -411,8 +414,6 @@ and in the current monad setting (system type, etc.)" (define* (reference->sexp ref #:optional native?) (with-monad %store-monad (match ref - (($ (? derivation? drv) output) - (return (derivation->output-path drv output))) (($ output) ;; Output file names are not known in advance but the daemon defines ;; an environment variable for each of them at build time, so use -- cgit v1.2.3 From accb682c5027cb91104cce7786f9dc4403adf51c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 21 Mar 2015 23:21:53 +0100 Subject: gexp: Allow objects in #:allowed-references. * guix/gexp.scm (lower-references): Add case. * tests/gexp.scm ("gexp->derivation #:allowed-references, specific output"): New test. --- guix/gexp.scm | 5 +++++ tests/gexp.scm | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/guix/gexp.scm b/guix/gexp.scm index 4a2a924a03..218914c4b4 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -201,6 +201,11 @@ names and file names suitable for the #:allowed-references argument to (match-lambda ((? string? output) (return output)) + (($ thing output native?) + (mlet* %store-monad ((lower -> (lookup-compiler thing)) + (drv (lower thing system + (if native? #f target)))) + (return (derivation->output-path drv output)))) (thing (mlet* %store-monad ((lower -> (lookup-compiler thing)) (drv (lower thing system target))) diff --git a/tests/gexp.scm b/tests/gexp.scm index 4c31e22f15..27c08467e7 100644 --- a/tests/gexp.scm +++ b/tests/gexp.scm @@ -497,6 +497,23 @@ (list "out" %bootstrap-guile)))) (built-derivations (list drv)))) +(test-assertm "gexp->derivation #:allowed-references, specific output" + (mlet* %store-monad ((in (gexp->derivation "thing" + #~(begin + (mkdir #$output:ok) + (mkdir #$output:not-ok)))) + (drv (gexp->derivation "allowed-refs" + #~(begin + (pk #$in:not-ok) + (mkdir #$output) + (chdir #$output) + (symlink #$output "self") + (symlink #$in:ok "ok")) + #:allowed-references + (list "out" + (gexp-input in "ok"))))) + (built-derivations (list drv)))) + (test-assert "gexp->derivation #:allowed-references, disallowed" (let ((drv (run-with-store %store (gexp->derivation "allowed-refs" -- cgit v1.2.3 From 607e1b51f4b473e69373b9887555d7f6abd4cf10 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 22 Mar 2015 23:09:43 +0100 Subject: gexp: Ignore nested gexps in macro expansion. Before that, the 'references' and 'natives' or the outer gexp in an expression like #~#+#~#$coreutils would include those of the inner gexp. * guix/gexp.scm (gexp)[collect-escapes]: Ignore everything below 'ungexp-native' or 'ungexp-native-splicing'. [collect-native-escapes]: Ignore everything below 'ungexp' or 'ungexp-splicing'. --- guix/gexp.scm | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/guix/gexp.scm b/guix/gexp.scm index 218914c4b4..3081ab0653 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -474,13 +474,20 @@ and in the current monad setting (system type, etc.)" ;; Return all the 'ungexp' present in EXP. (let loop ((exp exp) (result '())) - (syntax-case exp (ungexp ungexp-splicing) + (syntax-case exp (ungexp + ungexp-splicing + ungexp-native + ungexp-native-splicing) ((ungexp _) (cons exp result)) ((ungexp _ _) (cons exp result)) ((ungexp-splicing _ ...) (cons exp result)) + ((ungexp-native _ ...) + result) + ((ungexp-native-splicing _ ...) + result) ((exp0 exp ...) (let ((result (loop #'exp0 result))) (fold loop result #'(exp ...)))) @@ -491,13 +498,20 @@ and in the current monad setting (system type, etc.)" ;; Return all the 'ungexp-native' forms present in EXP. (let loop ((exp exp) (result '())) - (syntax-case exp (ungexp-native ungexp-native-splicing) + (syntax-case exp (ungexp + ungexp-splicing + ungexp-native + ungexp-native-splicing) ((ungexp-native _) (cons exp result)) ((ungexp-native _ _) (cons exp result)) ((ungexp-native-splicing _ ...) (cons exp result)) + ((ungexp _ ...) + result) + ((ungexp-splicing _ ...) + result) ((exp0 exp ...) (let ((result (loop #'exp0 result))) (fold loop result #'(exp ...)))) -- cgit v1.2.3 From 1123759b4549bedc1a44b5d59a30c886e58ff6bc Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 22 Mar 2015 23:17:37 +0100 Subject: gexp: Fix handling of nativeness in nested gexps. * guix/gexp.scm (gexp-inputs): Remove 'references' parameter; add #:native? and honor it. [add-reference-inputs]: Distinguish between native gexp inputs, and non-native gexp inputs. Honor 'native?' field of list inputs. * tests/gexp.scm ("ungexp + ungexp-native, nested"): New test. --- guix/gexp.scm | 30 +++++++++++++++++++++--------- tests/gexp.scm | 6 ++++++ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/guix/gexp.scm b/guix/gexp.scm index 3081ab0653..01290dba18 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -353,13 +353,23 @@ The other arguments are as for 'derivation'." #:allowed-references allowed #:local-build? local-build?)))) -(define* (gexp-inputs exp #:optional (references gexp-references)) - "Return the input list for EXP, using REFERENCES to get its list of -references." +(define* (gexp-inputs exp #:key native?) + "Return the input list for EXP. When NATIVE? is true, return only native +references; otherwise, return only non-native references." (define (add-reference-inputs ref result) (match ref - (($ (? gexp? exp)) - (append (gexp-inputs exp references) result)) + (($ (? gexp? exp) _ #t) + (if native? + (append (gexp-inputs exp) + (gexp-inputs exp #:native? #t) + result) + result)) + (($ (? gexp? exp) _ #f) + (if native? + (append (gexp-inputs exp #:native? #t) + result) + (append (gexp-inputs exp) + result))) (($ (? string? str)) (if (direct-store-path? str) (cons `(,str) result) @@ -369,13 +379,13 @@ references." ;; THING is a derivation, or a package, or an origin, etc. (cons `(,thing ,output) result) result)) - (($ (lst ...) output native?) + (($ (lst ...) output n?) (fold-right add-reference-inputs result ;; XXX: For now, automatically convert LST to a list of ;; gexp-inputs. (map (match-lambda ((? gexp-input? x) x) - (x (%gexp-input x "out" native?))) + (x (%gexp-input x "out" (or n? native?)))) lst))) (_ ;; Ignore references to other kinds of objects. @@ -383,10 +393,12 @@ references." (fold-right add-reference-inputs '() - (references exp))) + (if native? + (gexp-native-references exp) + (gexp-references exp)))) (define gexp-native-inputs - (cut gexp-inputs <> gexp-native-references)) + (cut gexp-inputs <> #:native? #t)) (define (gexp-outputs exp) "Return the outputs referred to by EXP as a list of strings." diff --git a/tests/gexp.scm b/tests/gexp.scm index 27c08467e7..0540969503 100644 --- a/tests/gexp.scm +++ b/tests/gexp.scm @@ -160,6 +160,12 @@ (equal? `(list ,guile ,cu ,libc ,bu) (gexp->sexp* exp target))))) +(test-equal "ungexp + ungexp-native, nested" + (list `((,%bootstrap-guile "out")) '<> `((,coreutils "out"))) + (let* ((exp (gexp (list (ungexp-native (gexp (ungexp coreutils))) + (ungexp %bootstrap-guile))))) + (list (gexp-inputs exp) '<> (gexp-native-inputs exp)))) + (test-assert "input list" (let ((exp (gexp (display '(ungexp (list %bootstrap-guile coreutils))))) -- cgit v1.2.3 From 4d58122071bbd7bb56c9658a9bbe7621bf3e423d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 22 Mar 2015 23:43:25 +0100 Subject: store: Default to a non-empty list of substituters. Fixes . Reported by Mark H Weaver . * guix/store.scm (%default-substitute-urls): New variable. (set-build-options): Change default value of #:substitute-urls to %DEFAULT-SUBSTITUTE-URLS. --- guix/store.scm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/guix/store.scm b/guix/store.scm index 45c555b12c..3d6b06989c 100644 --- a/guix/store.scm +++ b/guix/store.scm @@ -447,6 +447,10 @@ encoding conversion errors." (message "invalid error code") (status k)))))))) +(define %default-substitute-urls + ;; Default list of substituters. + '("http://hydra.gnu.org")) + (define* (set-build-options server #:key keep-failed? keep-going? fallback? (verbosity 0) @@ -459,7 +463,12 @@ encoding conversion errors." (print-build-trace #t) (build-cores (current-processor-count)) (use-substitutes? #t) - (substitute-urls '())) ; client "untrusted" cache URLs + + ;; Client-provided substitute URLs. For + ;; unprivileged clients, these are considered + ;; "untrusted"; for root, they override the + ;; daemon's settings. + (substitute-urls %default-substitute-urls)) ;; Must be called after `open-connection'. (define socket -- cgit v1.2.3 From cd15ad828ac95658093ab2bd846c5ad1697a636f Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 19 Mar 2015 17:06:06 +0100 Subject: gnu: Add utf8proc. * gnu/packages/textutils.scm (utf8proc): New variable. --- gnu/packages/textutils.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm index 5a8f9f09ea..d6cc577e7d 100644 --- a/gnu/packages/textutils.scm +++ b/gnu/packages/textutils.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -83,3 +84,41 @@ handy front-end to the library.") an encoding detection library, and enca, a command line frontend, integrating libenca and several charset conversion libraries and tools.") (license license:gpl2))) + +(define-public utf8proc + (package + (name "utf8proc") + (version "1.1.6") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/JuliaLang/utf8proc/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0wmsi672knii0q70wh6a3ll0gv7qk33c50zbpzasrs3b16bqy659")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ;no "check" target + #:make-flags '("CC=gcc") + #:phases + (alist-replace + 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((lib (string-append (assoc-ref outputs "out") "/lib/")) + (include (string-append (assoc-ref outputs "out") "/include/"))) + (mkdir-p lib) + (mkdir-p include) + (copy-file "utf8proc.h" (string-append include "utf8proc.h")) + (for-each (lambda (file) + (copy-file file (string-append lib (basename file)))) + '("libutf8proc.a" "libutf8proc.so")))) + ;; no configure script + (alist-delete 'configure %standard-phases)))) + (home-page "http://julialang.org/utf8proc/") + (synopsis "C library for processing UTF-8 Unicode data") + (description "utf8proc is a small C library that provides Unicode +normalization, case-folding, and other operations for data in the UTF-8 +encoding, supporting Unicode version 7.0.") + (license license:expat))) -- cgit v1.2.3 From e73b49fbd6c3028c3175b982efeb3f819963dc55 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 17 Mar 2015 12:24:45 +0100 Subject: gnu: Add openblas. * gnu/packages/maths.scm (openblas): New variable. --- gnu/packages/maths.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index b6d3ed3680..c58be5d153 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -35,6 +35,7 @@ #:use-module (guix build-system gnu) #:use-module (gnu packages algebra) #:use-module (gnu packages bison) + #:use-module (gnu packages check) #:use-module (gnu packages cmake) #:use-module (gnu packages compression) #:use-module (gnu packages curl) @@ -991,6 +992,40 @@ based on transforming an expression into a bytecode and precalculating constant parts of it.") (license license:expat))) +(define-public openblas + (package + (name "openblas") + (version "0.2.13") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/xianyi/OpenBLAS/tarball/v" + version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1asg5mix13ipxgj5h2yj2p0r8km1di5jbcjkn5gmhb37nx7qfv6k")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ;no "check" target + #:substitutable? #f ;force local build because of CPU detection + #:make-flags + (list (string-append "PREFIX=" (assoc-ref %outputs "out")) + "SHELL=bash" + "NO_LAPACK=1") + ;; no configure script + #:phases (alist-delete 'configure %standard-phases))) + (inputs + `(("fortran" ,gfortran-4.8))) + (native-inputs + `(("cunit" ,cunit) + ("perl" ,perl))) + (home-page "http://www.openblas.net/") + (synopsis "Optimized BLAS library based on GotoBLAS") + (description + "OpenBLAS is a BLAS library forked from the GotoBLAS2-1.13 BSD version.") + (license license:bsd-3))) + (define-public openlibm (package (name "openlibm") -- cgit v1.2.3 From f9e62ad221a9f059f78b4f2800d48cf893de10dd Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 10 Mar 2015 13:56:55 +0100 Subject: gnu: icedtea6: patch ant shebang in unpack phase * gnu/packages/java.scm (icedtea6)[arguments]: patch bootstrap ant in the `unpack' phase instead of `patch-paths'. --- gnu/packages/java.scm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 29f628ca38..7f841f090b 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -184,6 +184,7 @@ build process and its dependencies, whereas Make uses Makefile format.") (zero? (system* "tar" "xvjf" (assoc-ref inputs "ant-bootstrap"))) (begin + (patch-shebang "apache-ant-1.9.4/bin/ant") (chdir (string-append ,name "-" ,version)) (mkdir "openjdk") (with-directory-excursion "openjdk" @@ -193,8 +194,6 @@ build process and its dependencies, whereas Make uses Makefile format.") (alist-cons-after 'unpack 'patch-paths (lambda _ - (patch-shebang "../apache-ant-1.9.4/bin/ant") - ;; shebang in patches so that they apply cleanly (substitute* '("patches/jtreg-jrunscript.patch" "patches/hotspot/hs23/drop_unlicensed_test.patch") -- cgit v1.2.3 From 6f27f3775e0bad87fb1d9bf5107f81d17d2dc630 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 10 Mar 2015 14:00:55 +0100 Subject: gnu: icedtea6: patch hardcoded objcopy path. * gnu/packages/java.scm (icedtea6)[arguments]: patch Makefile to override DEF_OBJCOPY variable definition. --- gnu/packages/java.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 7f841f090b..84ac822d9f 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -227,7 +227,9 @@ build process and its dependencies, whereas Make uses Makefile format.") (string-append "DEVTOOLS_PATH = " corebin)) (("COMPILER_PATH *= */usr/bin/") (string-append "COMPILER_PATH = " - (assoc-ref %build-inputs "gcc") "/bin/"))) + (assoc-ref %build-inputs "gcc") "/bin/")) + (("DEF_OBJCOPY *=.*objcopy") + (string-append "DEF_OBJCOPY = " (which "objcopy")))) ;; fix hard-coded utility paths (substitute* '("openjdk/jdk/make/common/shared/Defs-utils.gmk" -- cgit v1.2.3 From 4d80586aa5212538fb8521a82dcd5aaebd1486fe Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 10 Mar 2015 14:05:48 +0100 Subject: gnu: icedtea6: patch patches in separate build phase. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/java.scm (icedtea6)[arguments]: Move patching of patches from ‘patch-paths’ to new ‘patch-patches’ phase. --- gnu/packages/java.scm | 168 +++++++++++++++++++++++++------------------------- 1 file changed, 85 insertions(+), 83 deletions(-) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 84ac822d9f..e109ca69a6 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -192,7 +192,7 @@ build process and its dependencies, whereas Make uses Makefile format.") "openjdk6-src.tar.xz") (zero? (system* "tar" "xvf" "openjdk6-src.tar.xz")))))) (alist-cons-after - 'unpack 'patch-paths + 'unpack 'patch-patches (lambda _ ;; shebang in patches so that they apply cleanly (substitute* '("patches/jtreg-jrunscript.patch" @@ -204,85 +204,87 @@ build process and its dependencies, whereas Make uses Makefile format.") (("ALSA_INCLUDE=/usr/include/alsa/version.h") (string-append "ALSA_INCLUDE=" (assoc-ref %build-inputs "alsa-lib") - "/include/alsa/version.h"))) + "/include/alsa/version.h")))) + (alist-cons-after + 'unpack 'patch-paths + (lambda _ + ;; buildtree.make generates shell scripts, so we need to replace + ;; the generated shebang + (substitute* '("openjdk/hotspot/make/linux/makefiles/buildtree.make") + (("/bin/sh") (which "bash"))) - ;; buildtree.make generates shell scripts, so we need to replace - ;; the generated shebang - (substitute* '("openjdk/hotspot/make/linux/makefiles/buildtree.make") - (("/bin/sh") (which "bash"))) + (let ((corebin (string-append + (assoc-ref %build-inputs "coreutils") "/bin/")) + (binbin (string-append + (assoc-ref %build-inputs "binutils") "/bin/")) + (grepbin (string-append + (assoc-ref %build-inputs "grep") "/bin/"))) + (substitute* '("openjdk/jdk/make/common/shared/Defs-linux.gmk" + "openjdk/corba/make/common/shared/Defs-linux.gmk") + (("UNIXCOMMAND_PATH = /bin/") + (string-append "UNIXCOMMAND_PATH = " corebin)) + (("USRBIN_PATH = /usr/bin/") + (string-append "USRBIN_PATH = " corebin)) + (("DEVTOOLS_PATH *= */usr/bin/") + (string-append "DEVTOOLS_PATH = " corebin)) + (("COMPILER_PATH *= */usr/bin/") + (string-append "COMPILER_PATH = " + (assoc-ref %build-inputs "gcc") "/bin/")) + (("DEF_OBJCOPY *=.*objcopy") + (string-append "DEF_OBJCOPY = " (which "objcopy")))) - (let ((corebin (string-append - (assoc-ref %build-inputs "coreutils") "/bin/")) - (binbin (string-append - (assoc-ref %build-inputs "binutils") "/bin/")) - (grepbin (string-append - (assoc-ref %build-inputs "grep") "/bin/"))) - (substitute* '("openjdk/jdk/make/common/shared/Defs-linux.gmk" - "openjdk/corba/make/common/shared/Defs-linux.gmk") - (("UNIXCOMMAND_PATH = /bin/") - (string-append "UNIXCOMMAND_PATH = " corebin)) - (("USRBIN_PATH = /usr/bin/") - (string-append "USRBIN_PATH = " corebin)) - (("DEVTOOLS_PATH *= */usr/bin/") - (string-append "DEVTOOLS_PATH = " corebin)) - (("COMPILER_PATH *= */usr/bin/") - (string-append "COMPILER_PATH = " - (assoc-ref %build-inputs "gcc") "/bin/")) - (("DEF_OBJCOPY *=.*objcopy") - (string-append "DEF_OBJCOPY = " (which "objcopy")))) + ;; fix hard-coded utility paths + (substitute* '("openjdk/jdk/make/common/shared/Defs-utils.gmk" + "openjdk/corba/make/common/shared/Defs-utils.gmk") + (("ECHO *=.*echo") + (string-append "ECHO = " (which "echo"))) + (("^GREP *=.*grep") + (string-append "GREP = " (which "grep"))) + (("EGREP *=.*egrep") + (string-append "EGREP = " (which "egrep"))) + (("CPIO *=.*cpio") + (string-append "CPIO = " (which "cpio"))) + (("READELF *=.*readelf") + (string-append "READELF = " (which "readelf"))) + (("^ *AR *=.*ar") + (string-append "AR = " (which "ar"))) + (("^ *TAR *=.*tar") + (string-append "TAR = " (which "tar"))) + (("AS *=.*as") + (string-append "AS = " (which "as"))) + (("LD *=.*ld") + (string-append "LD = " (which "ld"))) + (("STRIP *=.*strip") + (string-append "STRIP = " (which "strip"))) + (("NM *=.*nm") + (string-append "NM = " (which "nm"))) + (("^SH *=.*sh") + (string-append "SH = " (which "bash"))) + (("^FIND *=.*find") + (string-append "FIND = " (which "find"))) + (("LDD *=.*ldd") + (string-append "LDD = " (which "ldd"))) + (("NAWK *=.*(n|g)awk") + (string-append "NAWK = " (which "gawk"))) + ;; (("NAWK *=.*gawk") + ;; (string-append "NAWK = " (which "gawk"))) + (("XARGS *=.*xargs") + (string-append "XARGS = " (which "xargs"))) + (("UNZIP *=.*unzip") + (string-append "UNZIP = " (which "unzip"))) + (("ZIPEXE *=.*zip") + (string-append "ZIPEXE = " (which "zip"))) + (("SED *=.*sed") + (string-append "SED = " (which "sed")))) - ;; fix hard-coded utility paths - (substitute* '("openjdk/jdk/make/common/shared/Defs-utils.gmk" - "openjdk/corba/make/common/shared/Defs-utils.gmk") - (("ECHO *=.*echo") - (string-append "ECHO = " (which "echo"))) - (("^GREP *=.*grep") - (string-append "GREP = " (which "grep"))) - (("EGREP *=.*egrep") - (string-append "EGREP = " (which "egrep"))) - (("CPIO *=.*cpio") - (string-append "CPIO = " (which "cpio"))) - (("READELF *=.*readelf") - (string-append "READELF = " (which "readelf"))) - (("^ *AR *=.*ar") - (string-append "AR = " (which "ar"))) - (("^ *TAR *=.*tar") - (string-append "TAR = " (which "tar"))) - (("AS *=.*as") - (string-append "AS = " (which "as"))) - (("LD *=.*ld") - (string-append "LD = " (which "ld"))) - (("STRIP *=.*strip") - (string-append "STRIP = " (which "strip"))) - (("NM *=.*nm") - (string-append "NM = " (which "nm"))) - (("^SH *=.*sh") - (string-append "SH = " (which "bash"))) - (("^FIND *=.*find") - (string-append "FIND = " (which "find"))) - (("LDD *=.*ldd") - (string-append "LDD = " (which "ldd"))) - (("NAWK *=.*(n|g)awk") - (string-append "NAWK = " (which "gawk"))) - ;; (("NAWK *=.*gawk") - ;; (string-append "NAWK = " (which "gawk"))) - (("XARGS *=.*xargs") - (string-append "XARGS = " (which "xargs"))) - (("UNZIP *=.*unzip") - (string-append "UNZIP = " (which "unzip"))) - (("ZIPEXE *=.*zip") - (string-append "ZIPEXE = " (which "zip"))) - (("SED *=.*sed") - (string-append "SED = " (which "sed")))) - - ;; Some of these timestamps cause problems as they are more than - ;; 10 years ago, failing the build process. - (substitute* - "openjdk/jdk/src/share/classes/java/util/CurrencyData.properties" - (("AZ=AZM;2005-12-31-20-00-00;AZN") "AZ=AZN") - (("MZ=MZM;2006-06-30-22-00-00;MZN") "MZ=MZN") - (("RO=ROL;2005-06-30-21-00-00;RON") "RO=RON") - (("TR=TRL;2004-12-31-22-00-00;TRY") "TR=TRY")))) + ;; Some of these timestamps cause problems as they are more than + ;; 10 years ago, failing the build process. + (substitute* + "openjdk/jdk/src/share/classes/java/util/CurrencyData.properties" + (("AZ=AZM;2005-12-31-20-00-00;AZN") "AZ=AZN") + (("MZ=MZM;2006-06-30-22-00-00;MZN") "MZ=MZN") + (("RO=ROL;2005-06-30-21-00-00;RON") "RO=RON") + (("TR=TRL;2004-12-31-22-00-00;TRY") "TR=TRY")))) (alist-cons-before 'configure 'set-paths (lambda* (#:key inputs #:allow-other-keys) @@ -399,11 +401,11 @@ build process and its dependencies, whereas Make uses Makefile format.") (let* ((error-pattern (make-regexp "^(Error|FAILED):.*")) (checker (lambda (port) (let loop () - (let ((line (read-line port))) - (cond - ((eof-object? line) #t) - ((regexp-exec error-pattern line) #f) - (else (loop))))))) + (let ((line (read-line port))) + (cond + ((eof-object? line) #t) + ((regexp-exec error-pattern line) #f) + (else (loop))))))) (run-test (lambda (test) (system* "make" test) (call-with-input-file @@ -422,7 +424,7 @@ build process and its dependencies, whereas Make uses Makefile format.") (copy-recursively "openjdk.build/docs" doc) (copy-recursively "openjdk.build/j2re-image" jre) (copy-recursively "openjdk.build/j2sdk-image" jdk))) - %standard-phases)))))))) + %standard-phases))))))))) (native-inputs `(("ant-bootstrap" ,(origin -- cgit v1.2.3 From 3893c80a8866f268e039d90658feb6e6dc68e0da Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 23 Mar 2015 10:14:24 +0100 Subject: gnu: icedtea6: Rename ‘set-paths’ phase to ‘set-additional-paths’ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/java.scm (icedtea6)[arguments]: Rename ‘set-paths’ phase to ‘set-additional-paths’. --- gnu/packages/java.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index e109ca69a6..02972701b7 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -286,7 +286,7 @@ build process and its dependencies, whereas Make uses Makefile format.") (("RO=ROL;2005-06-30-21-00-00;RON") "RO=RON") (("TR=TRL;2004-12-31-22-00-00;TRY") "TR=TRY")))) (alist-cons-before - 'configure 'set-paths + 'configure 'set-additional-paths (lambda* (#:key inputs #:allow-other-keys) (let* ((gcjdir (assoc-ref %build-inputs "gcj")) (gcjlib (string-append gcjdir "/lib")) -- cgit v1.2.3 From 18f3c3209d1daf16623e29fe396a7b2a01c269af Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 23 Mar 2015 10:15:28 +0100 Subject: gnu: icedtea6: Do not set CC and LD_LIBRARY_PATH. * gnu/packages/java.scm (icedtea6)[arguments]: Do not set CC and LD_LIBRARY_PATH variables. --- gnu/packages/java.scm | 3 --- 1 file changed, 3 deletions(-) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 02972701b7..a1e35cc449 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -291,7 +291,6 @@ build process and its dependencies, whereas Make uses Makefile format.") (let* ((gcjdir (assoc-ref %build-inputs "gcj")) (gcjlib (string-append gcjdir "/lib")) (antpath (string-append (getcwd) "/../apache-ant-1.9.4"))) - (setenv "CC" (which "gcc")) (setenv "CPATH" (string-append (assoc-ref %build-inputs "libxrender") "/include/X11/extensions" ":" @@ -309,8 +308,6 @@ build process and its dependencies, whereas Make uses Makefile format.") (setenv "ALT_FREETYPE_LIB_PATH" (string-append (assoc-ref %build-inputs "freetype") "/lib")) - (setenv "LD_LIBRARY_PATH" - (string-append antpath "/lib" ":" gcjlib)) (setenv "PATH" (string-append antpath "/bin:" (getenv "PATH"))))) (alist-cons-before -- cgit v1.2.3 From 6b2bad40fc93a37775256917617b25acdd609738 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 17 Mar 2015 14:12:14 +0100 Subject: gnu: icedtea6: remove commented substitution. * gnu/packages/java.scm (icedtea6): Remove commented substitution. --- gnu/packages/java.scm | 2 -- 1 file changed, 2 deletions(-) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index a1e35cc449..d50281839f 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -266,8 +266,6 @@ build process and its dependencies, whereas Make uses Makefile format.") (string-append "LDD = " (which "ldd"))) (("NAWK *=.*(n|g)awk") (string-append "NAWK = " (which "gawk"))) - ;; (("NAWK *=.*gawk") - ;; (string-append "NAWK = " (which "gawk"))) (("XARGS *=.*xargs") (string-append "XARGS = " (which "xargs"))) (("UNZIP *=.*unzip") -- cgit v1.2.3 From 2742f87e17eb81088e041b363bb2f854b22a27bc Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 10 Mar 2015 11:32:48 +0100 Subject: gnu: Add SuiteSparse. * gnu/packages/maths.scm (suitesparse): New variable. --- gnu/packages/maths.scm | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index c58be5d153..0d2efdde26 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -63,6 +63,7 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages readline) + #:use-module (gnu packages tbb) #:use-module (gnu packages tcsh) #:use-module (gnu packages tcl) #:use-module (gnu packages texinfo) @@ -1100,6 +1101,60 @@ Fresnel integrals, and similar related functions as well.") ;; public domain software. (license (list license:expat license:public-domain)))) +(define-public suitesparse + (package + (name "suitesparse") + (version "4.4.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-" + version ".tar.gz")) + (sha256 + (base32 + "100hdzr0mf4mzlwnqpmwpfw4pymgsf9n3g0ywb1yps2nk1zbkdy5")))) + (build-system gnu-build-system) + (arguments + '(#:parallel-build? #f ;cholmod build fails otherwise + #:tests? #f ;no "check" target + #:make-flags + (list "CC=gcc" + "BLAS=-lblas" + "TBB=-ltbb" + "CHOLMOD_CONFIG=-DNPARTITION" ;required when METIS is not used + (string-append "INSTALL_LIB=" + (assoc-ref %outputs "out") "/lib") + (string-append "INSTALL_INCLUDE=" + (assoc-ref %outputs "out") "/include")) + #:phases + (alist-cons-before + 'install 'prepare-out + ;; README.txt states that the target directories must exist prior to + ;; running "make install". + (lambda _ + (mkdir-p (string-append (assoc-ref %outputs "out") "/lib")) + (mkdir-p (string-append (assoc-ref %outputs "out") "/include"))) + ;; no configure script + (alist-delete 'configure %standard-phases)))) + (inputs + `(("tbb" ,tbb) + ("lapack" ,lapack))) + (home-page "http://faculty.cse.tamu.edu/davis/suitesparse.html") + (synopsis "Suite of sparse matrix software") + (description + "SuiteSparse is a suite of sparse matrix algorithms, including: UMFPACK, +multifrontal LU factorization; CHOLMOD, supernodal Cholesky; SPQR, +multifrontal QR; KLU and BTF, sparse LU factorization, well-suited for circuit +simulation; ordering methods (AMD, CAMD, COLAMD, and CCOLAMD); CSparse and +CXSparse, a concise sparse Cholesky factorization package; and many other +packages.") + ;; LGPLv2.1+: + ;; AMD, CAMD, BTF, COLAMD, CCOLAMD, CSparse, CXSparse, KLU, LDL + ;; GPLv2+: + ;; GPUQREngine, RBio, SuiteSparse_GPURuntime, SuiteSparseQR, UMFPACK + (license (list license:gpl2+ license:lgpl2.1+)))) + (define-public atlas (package (name "atlas") -- cgit v1.2.3 From 61a529b421471213739700da179cc3adc82585e9 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 20 Mar 2015 12:11:35 +0100 Subject: gnu: Add double-conversion. * gnu/packages/maths.scm (double-conversion): New variable. --- gnu/packages/maths.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 0d2efdde26..cb6fa66201 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -92,6 +92,32 @@ effectively as a scientific calculator.") (license license:gpl3+) (home-page "http://www.gnu.org/software/units/"))) +(define-public double-conversion + (package + (name "double-conversion") + (version "1.1.5") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/floitsch/double-conversion/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0cnr8xhyjfxijay8ymkqcph3672wp2lj23qhdmr3m4kia5kpdf83")))) + (build-system cmake-build-system) + (arguments + '(#:test-target "test" + #:configure-flags '("-DBUILD_SHARED_LIBS=ON" + "-DBUILD_TESTING=ON"))) + (home-page "https://github.com/floitsch/double-conversion") + (synopsis "Conversion routines for IEEE doubles") + (description + "The double-conversion library provides binary-decimal and decimal-binary +routines for IEEE doubles. The library consists of efficient conversion +routines that have been extracted from the V8 JavaScript engine.") + (license license:bsd-3))) + (define-public dionysus (package (name "dionysus") -- cgit v1.2.3 From aa5fac334f611438e2be7687784652644540fe8b Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 20 Mar 2015 11:26:23 +0100 Subject: gnu: Add Julia. * gnu/packages/julia.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/julia.scm | 172 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 173 insertions(+) create mode 100644 gnu/packages/julia.scm diff --git a/gnu-system.am b/gnu-system.am index 154f51f1af..852abd316f 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -156,6 +156,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/iso-codes.scm \ gnu/packages/java.scm \ gnu/packages/jrnl.scm \ + gnu/packages/julia.scm \ gnu/packages/kde.scm \ gnu/packages/key-mon.scm \ gnu/packages/language.scm \ diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm new file mode 100644 index 0000000000..844f1b2a19 --- /dev/null +++ b/gnu/packages/julia.scm @@ -0,0 +1,172 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages julia) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages algebra) + #:use-module (gnu packages base) + #:use-module (gnu packages elf) + #:use-module (gnu packages gcc) + #:use-module (gnu packages llvm) + #:use-module (gnu packages libunwind) + #:use-module (gnu packages maths) + #:use-module (gnu packages multiprecision) ; mpfr + #:use-module (gnu packages pcre) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages textutils) + #:use-module (gnu packages version-control)) + +(define-public julia + (package + (name "julia") + (version "0.3.6") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/JuliaLang/julia/releases/download/v" + version "/julia-" version "_0c24dca65c.tar.gz")) + (sha256 + (base32 + "1hnbc2blzr9bc27m3vsr127fhg0h5imgqlrx00jakf0my0ccw8gr")))) + (build-system gnu-build-system) + (arguments + '(#:test-target "test" + #:modules ((ice-9 match) + (guix build gnu-build-system) + (guix build utils)) + #:phases + (alist-cons-after + 'unpack 'hardcode-soname-map + ;; ./src/ccall.cpp creates a map from library names to paths using the + ;; output of "/sbin/ldconfig -p". Since ldconfig is not used in Guix, + ;; we patch ccall.cpp to contain a static map. + (lambda* (#:key inputs #:allow-other-keys) + (use-modules (ice-9 match)) + (substitute* "src/ccall.cpp" + (("jl_read_sonames.*;") + (string-join + (map (match-lambda + ((input libname soname) + (string-append + "sonameMap[\"" libname "\"] = " + "\"" (assoc-ref inputs input) "/lib/" soname "\";"))) + '(("libc" "libc" "libc.so.6") + ("pcre" "libpcre" "libpcre.so") + ("mpfr" "libmpfr" "libmpfr.so") + ("openblas" "libblas" "libopenblas.so") + ("arpack-ng" "libarpack" "libarpack.so") + ("lapack" "liblapack" "liblapack.so") + ("gmp" "libgmp" "libgmp.so") + ("openlibm" "libopenlibm" "libopenlibm.so") + ("openspecfun" "libopenspecfun" "libopenspecfun.so") + ("fftw" "libfftw3" "libfftw3.so") + ("fftwf" "libfftw3f" "libfftw3f.so"))))))) + (alist-cons-before + 'build 'replace-default-shell + (lambda _ + (substitute* "base/client.jl" + (("/bin/sh") (which "sh")))) + (alist-cons-before + 'build 'patch-include-path + (lambda _ + (substitute* "deps/Makefile" + (("/usr/include/double-conversion") + (string-append (assoc-ref %build-inputs "double-conversion") + "/include/double-conversion")))) + (alist-cons-before + 'check 'disable-broken-test + ;; One test fails because it produces slightly different output. + (lambda _ + (substitute* "test/repl.jl" + (("@test output") "# @test output"))) + ;; no configure script + (alist-delete 'configure %standard-phases))))) + #:make-flags + (list + (string-append "prefix=" (assoc-ref %outputs "out")) + "CONFIG_SHELL=bash" ;needed to build bundled libraries + "USE_SYSTEM_LIBUV=0" ;Julia expects a modified libuv + "USE_SYSTEM_DSFMT=0" ;not packaged for Guix and upstream has no + ;build system for a shared library. + "USE_SYSTEM_RMATH=0" ;Julia uses a bundled version of R's math + ;library, patched to use the DSFMT RNG. + + "USE_SYSTEM_LAPACK=1" + "USE_SYSTEM_BLAS=1" + "USE_BLAS64=0" ;needed when USE_SYSTEM_BLAS=1 + + "USE_SYSTEM_FFTW=1" + "LIBFFTWNAME=libfftw3" + "LIBFFTWFNAME=libfftw3f" + + ;; TODO: Suitesparse does not install shared libraries, so we cannot + ;; use the suitesparse package. + ;; "USE_SYSTEM_SUITESPARSE=1" + ;; (string-append "SUITESPARSE_INC=-I " + ;; (assoc-ref %build-inputs "suitesparse") + ;; "/include") + + "USE_SYSTEM_GRISU=1" ;for double-conversion + "USE_SYSTEM_UTF8PROC=1" + "USE_SYSTEM_LLVM=1" + "USE_SYSTEM_LIBUNWIND=1" + "USE_SYSTEM_PCRE=1" + "USE_SYSTEM_OPENLIBM=1" + "USE_SYSTEM_GMP=1" + "USE_SYSTEM_MPFR=1" + "USE_SYSTEM_ARPACK=1" + "USE_SYSTEM_LIBGIT2=1" + "USE_SYSTEM_OPENSPECFUN=1"))) + (inputs + `(("llvm" ,llvm-3.5) + ("arpack-ng" ,arpack-ng) + ("lapack" ,lapack) + ("openblas" ,openblas) ;Julia does not build with Atlas + ("libunwind" ,libunwind) + ("openlibm" ,openlibm) + ("openspecfun" ,openspecfun) + ("double-conversion" ,double-conversion) + ("fftw" ,fftw) + ("fftwf" ,fftwf) + ("fortran" ,gfortran-4.8) + ("pcre" ,pcre) + ("utf8proc" ,utf8proc) + ("git" ,git) + ("mpfr" ,mpfr) + ("gmp" ,gmp))) + (native-inputs + `(("perl" ,perl) + ("patchelf" ,patchelf) + ("pkg-config" ,pkg-config) + ("python" ,python-2) + ("which" ,which))) + (home-page "http://julialang.org/") + (synopsis "High-performance dynamic language for technical computing") + (description + "Julia is a high-level, high-performance dynamic programming language for +technical computing, with syntax that is familiar to users of other technical +computing environments. It provides a sophisticated compiler, distributed +parallel execution, numerical accuracy, and an extensive mathematical function +library.") + (license license:expat))) -- cgit v1.2.3 From ef5cbf9bae96555fc0c1983f30bd466476027b20 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 18 Mar 2015 14:08:20 +0100 Subject: gnu: Add python-h5py and python2-h5py. * gnu/packages/python.scm (python-h5py, python2-h5py): New variables. --- gnu/packages/python.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 2fcdbcc211..7282233bfa 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -324,6 +324,45 @@ etc. ") (define-public python2-babel (package-with-python2 python-babel)) +(define-public python-h5py + (package + (name "python-h5py") + (version "2.4.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/h/h5py/h5py-" + version ".tar.gz")) + (sha256 + (base32 + "0q4f9l8grf6pwp64xbv8bmyxx416s7h4522nnxac056ap3savbps")))) + (build-system python-build-system) + (inputs + `(("python-cython" ,python-cython) + ("python-numpy" ,python-numpy) + ("hdf5" ,hdf5))) + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (arguments `(#:tests? #f)) ; no test target + (home-page "http://www.h5py.org/") + (synopsis "Read and write HDF5 files from Python") + (description + "The h5py package provides both a high- and low-level interface to the +HDF5 library from Python. The low-level interface is intended to be a +complete wrapping of the HDF5 API, while the high-level component supports +access to HDF5 files, datasets and groups using established Python and NumPy +concepts.") + (license bsd-3))) + +(define-public python2-h5py + (let ((h5py (package-with-python2 python-h5py))) + (package (inherit h5py) + (inputs + `(("python2-numpy" ,python2-numpy) + ,@(alist-delete + "python-numpy" + (package-inputs h5py))))))) + (define-public python-lockfile (package (name "python-lockfile") -- cgit v1.2.3 From 83bb3a3ee4292d75cc6cfe08947ffb12989eccba Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 18 Mar 2015 12:48:16 +0800 Subject: gnu: sdl: Allow dlopen for OpenGL. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes a regression introduced in 666aa99. Reported by Felipe López and David Thompson. * gnu/packages/sdl.scm (sdl)[inputs]: Add glu. [arguments]<#:configure-flags>: Replace '--disable-sdl-dlopen' with '--disable-alsa-shared --disable-pulseaudio-shared --disable-x11-shared'. --- gnu/packages/sdl.scm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index 03aa56d118..fd555f9068 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -60,8 +60,11 @@ (build-system gnu-build-system) (arguments '(;; Explicitly link against shared libraries instead of dlopening them. - ;; For X11, ALSA, PulseAudio, etc. - #:configure-flags '("--disable-sdl-dlopen") + ;; For X11, ALSA, and PulseAudio. + ;; OpenGL library is still dlopened at runtime. + #:configure-flags '("--disable-alsa-shared" + "--disable-pulseaudio-shared" + "--disable-x11-shared") #:tests? #f)) ; no check target (propagated-inputs @@ -71,6 +74,7 @@ (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("libxrandr" ,libxrandr) ("mesa" ,mesa) + ("glu" ,glu) ("alsa-lib" ,alsa-lib) ("pulseaudio" ,pulseaudio))) (synopsis "Cross platform game development library") -- cgit v1.2.3 From 07780c714e590a96577670c0dc3dfb1a23ad4ab5 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 21 Mar 2015 15:08:39 +0800 Subject: gnu: sdl: Explicitly use mesa as OpenGL driver. * gnu/packages/sdl.scm (sdl)[arguments]<#:configure-flags>: Add 'LDFLAGS=-lGL'. --- gnu/packages/sdl.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index fd555f9068..9a3b3898d8 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -64,7 +64,11 @@ ;; OpenGL library is still dlopened at runtime. #:configure-flags '("--disable-alsa-shared" "--disable-pulseaudio-shared" - "--disable-x11-shared") + "--disable-x11-shared" + ;; Explicitly link with mesa. + ;; This add mesa to libsdl's RUNPATH, to make dlopen + ;; finding the libGL from mesa at runtime. + "LDFLAGS=-lGL") #:tests? #f)) ; no check target (propagated-inputs -- cgit v1.2.3 From 69383a47986923e85c9c9e9d0cf40207aea1c6f0 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 23 Mar 2015 15:17:50 +0100 Subject: gnu: bigloo: Use Emacs with X11 support. * gnu/packages/scheme.scm (bigloo)[inputs]: Change EMACS-NO-X to EMACS. --- gnu/packages/scheme.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index 70eceecd80..b450e33bbd 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -199,7 +199,7 @@ features an integrated Emacs-like editor and a large runtime library.") (string-append "EMACSDIR=" dir))))) %standard-phases)))) (inputs - `(("emacs" ,emacs-no-x) + `(("emacs" ,emacs) ;UDE needs the X version of Emacs ;; Optional APIs for which Bigloo has bindings. ("avahi" ,avahi) -- cgit v1.2.3 From 87db65507e0385c139593ffb6749ffe1e85fa82b Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 22 Mar 2015 23:56:19 -0400 Subject: Remove unused patchelf inputs. * gnu/packages/maths.scm (lapack, gmsh), gnu/packages/ssh.scm (libssh): Remove unused patchelf from native-inputs. --- gnu/packages/maths.scm | 2 -- gnu/packages/ssh.scm | 1 - 2 files changed, 3 deletions(-) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index cb6fa66201..49667cc71b 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -283,7 +283,6 @@ large scale eigenvalue problems.") "0lk3f97i9imqascnlf6wr5mjpyxqcdj73pgj97dj2mgvyg9z1n4s")))) (build-system cmake-build-system) (home-page "http://www.netlib.org/lapack/") - (native-inputs `(("patchelf" ,patchelf))) ;for augment-rpath (inputs `(("fortran" ,gfortran-4.8) ("python" ,python-2))) (arguments @@ -435,7 +434,6 @@ files.") ;; Remove non-free METIS code '(delete-file-recursively "contrib/Metis")))) (build-system cmake-build-system) - (native-inputs `(("patchelf" ,patchelf))) ;for augment-rpath (propagated-inputs `(("fltk" ,fltk) ("gfortran" ,gfortran-4.8) diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index 0148b25a16..10697850f4 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -72,7 +72,6 @@ ;; fields of 'gcry_thread_cbs' that are now private: ;; src/threads.c:72:26: error: 'struct gcry_thread_cbs' has no member named 'mutex_init' ("libgcrypt", libgcrypt-1.5))) - (native-inputs `(("patchelf" ,patchelf))) (synopsis "SSH client library") (description "libssh is a C library implementing the SSHv2 and SSHv1 protocol for -- cgit v1.2.3 From 0561e9ae16c2894d19432f1c6eb8e99ad508dc47 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 5 Jan 2015 22:31:34 +0100 Subject: substitute-binary: Allow callers to specify the size of a narinfo. * guix/scripts/substitute-binary.scm (read-narinfo): Add #:size parameter and honor it. --- guix/scripts/substitute-binary.scm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/guix/scripts/substitute-binary.scm b/guix/scripts/substitute-binary.scm index a4d153d4a0..85c2c74520 100755 --- a/guix/scripts/substitute-binary.scm +++ b/guix/scripts/substitute-binary.scm @@ -309,12 +309,16 @@ NARINFO, doesn't match HASH, a bytevector containing the hash of NARINFO." (corrupt-signature (leave (_ "signature on '~a' is corrupt~%") uri))))) -(define* (read-narinfo port #:optional url) +(define* (read-narinfo port #:optional url + #:key size) "Read a narinfo from PORT. If URL is true, it must be a string used to -build full URIs from relative URIs found while reading PORT. +build full URIs from relative URIs found while reading PORT. When SIZE is +true, read at most SIZE bytes from PORT; otherwise, read as much as possible. No authentication and authorization checks are performed here!" - (let ((str (utf8->string (get-bytevector-all port)))) + (let ((str (utf8->string (if size + (get-bytevector-n port size) + (get-bytevector-all port))))) (alist->record (call-with-input-string str fields->alist) (narinfo-maker str url) '("StorePath" "URL" "Compression" -- cgit v1.2.3 From d3a652037ef879f9279bc056c43d15ba7afcbb25 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 23 Mar 2015 22:25:04 +0100 Subject: substitute-binary: Pipeline HTTP requests instead of using threads. * guix/scripts/substitute-binary.scm (fetch-narinfo, %lookup-threads, n-par-map*): Remove. (narinfo-cache-file, cached-narinfo, cache-narinfo!, narinfo-request, http-multiple-get, read-to-eof, fetch-narinfos, lookup-narinfos, narinfo-from-file): New procedures. (lookup-narinfo): Rewrite in terms of 'lookup-narinfos'. (guix-substitute-binary): Use 'lookup-narinfos' instead of 'lookup-narinfo'. --- guix/scripts/substitute-binary.scm | 270 ++++++++++++++++++++++++++----------- 1 file changed, 192 insertions(+), 78 deletions(-) diff --git a/guix/scripts/substitute-binary.scm b/guix/scripts/substitute-binary.scm index 85c2c74520..c21c50fe9f 100755 --- a/guix/scripts/substitute-binary.scm +++ b/guix/scripts/substitute-binary.scm @@ -28,7 +28,7 @@ #:use-module (guix base64) #:use-module (guix pk-crypto) #:use-module (guix pki) - #:use-module ((guix build utils) #:select (mkdir-p)) + #:use-module ((guix build utils) #:select (mkdir-p dump-port)) #:use-module ((guix build download) #:select (progress-proc uri-abbreviation)) #:use-module (ice-9 rdelim) @@ -48,6 +48,8 @@ #:use-module (srfi srfi-34) #:use-module (srfi srfi-35) #:use-module (web uri) + #:use-module (web request) + #:use-module (web response) #:use-module (guix http-client) #:export (narinfo-signature->canonical-sexp read-narinfo @@ -218,7 +220,7 @@ failure." gonna have to wait." (delay (begin (format (current-error-port) - (_ "updating list of substitutes from '~a'...~%") + (_ "updating list of substitutes from '~a'...\r") url) (open-cache url)))) @@ -380,40 +382,56 @@ or is signed by an unauthorized key." the cache STR originates form." (call-with-input-string str (cut read-narinfo <> cache-uri))) -(define (fetch-narinfo cache path) - "Return the record for PATH, or #f if CACHE does not hold PATH." - (define (download url) - ;; Download the .narinfo from URL, and return its contents as a list of - ;; key/value pairs. Don't emit an error message upon 404. - (false-if-exception (fetch (string->uri url) - #:quiet-404? #t))) - - (and (string=? (cache-store-directory cache) (%store-prefix)) - (and=> (download (string-append (cache-url cache) "/" - (store-path-hash-part path) - ".narinfo")) - (cute read-narinfo <> (cache-url cache))))) - (define (obsolete? date now ttl) "Return #t if DATE is obsolete compared to NOW + TTL seconds." (time>? (subtract-duration now (make-time time-duration 0 ttl)) (make-time time-monotonic 0 date))) -(define %lookup-threads - ;; Number of threads spawned to perform lookup operations. This means we - ;; can have this many simultaneous HTTP GET requests to the server, which - ;; limits the impact of connection latency. - 20) -(define (lookup-narinfo cache path) - "Check locally if we have valid info about PATH, otherwise go to CACHE and -check what it has." +(define (narinfo-cache-file path) + "Return the name of the local file that contains an entry for PATH." + (string-append %narinfo-cache-directory "/" + (store-path-hash-part path))) + +(define (cached-narinfo path) + "Check locally if we have valid info about PATH. Return two values: a +Boolean indicating whether we have valid cached info, and that info, which may +be either #f (when PATH is unavailable) or the narinfo for PATH." (define now (current-time time-monotonic)) (define cache-file - (string-append %narinfo-cache-directory "/" - (store-path-hash-part path))) + (narinfo-cache-file path)) + + (catch 'system-error + (lambda () + (call-with-input-file cache-file + (lambda (p) + (match (read p) + (('narinfo ('version 1) + ('cache-uri cache-uri) + ('date date) ('value #f)) + ;; A cached negative lookup. + (if (obsolete? date now %narinfo-negative-ttl) + (values #f #f) + (values #t #f))) + (('narinfo ('version 1) + ('cache-uri cache-uri) + ('date date) ('value value)) + ;; A cached positive lookup + (if (obsolete? date now %narinfo-ttl) + (values #f #f) + (values #t (string->narinfo value cache-uri)))) + (('narinfo ('version v) _ ...) + (values #f #f)))))) + (lambda _ + (values #f #f)))) + +(define (cache-narinfo! cache path narinfo) + "Cache locally NARNIFO for PATH, which originates from CACHE. NARINFO may +be #f, in which case it indicates that PATH is unavailable at CACHE." + (define now + (current-time time-monotonic)) (define (cache-entry cache-uri narinfo) `(narinfo (version 1) @@ -421,43 +439,153 @@ check what it has." (date ,(time-second now)) (value ,(and=> narinfo narinfo->string)))) - (let*-values (((valid? cached) - (catch 'system-error - (lambda () - (call-with-input-file cache-file - (lambda (p) - (match (read p) - (('narinfo ('version 1) - ('cache-uri cache-uri) - ('date date) ('value #f)) - ;; A cached negative lookup. - (if (obsolete? date now %narinfo-negative-ttl) - (values #f #f) - (values #t #f))) - (('narinfo ('version 1) - ('cache-uri cache-uri) - ('date date) ('value value)) - ;; A cached positive lookup - (if (obsolete? date now %narinfo-ttl) - (values #f #f) - (values #t (string->narinfo value - cache-uri)))) - (('narinfo ('version v) _ ...) - (values #f #f)))))) - (lambda _ - (values #f #f))))) - (if valid? - cached ; including negative caches + (with-atomic-file-output (narinfo-cache-file path) + (lambda (out) + (write (cache-entry (cache-url cache) narinfo) out))) + narinfo) + +(define (narinfo-request cache-url path) + "Return an HTTP request for the narinfo of PATH at CACHE-URL." + (let ((url (string-append cache-url "/" (store-path-hash-part path) + ".narinfo"))) + (build-request (string->uri url) #:method 'GET))) + +(define (http-multiple-get base-url requests proc) + "Send all of REQUESTS to the server at BASE-URL. Call PROC for each +response, passing it the request object, the response, and a port from which +to read the response body. Return the list of results." + (let connect ((requests requests) + (result '())) + ;; (format (current-error-port) "connecting (~a requests left)..." + ;; (length requests)) + (let ((p (open-socket-for-uri base-url))) + ;; Send all of REQUESTS in a row. + (setvbuf p _IOFBF (expt 2 16)) + (for-each (cut write-request <> p) requests) + (force-output p) + + ;; Now start processing responses. + (let loop ((requests requests) + (result result)) + (match requests + (() + (reverse result)) + ((head tail ...) + (let* ((resp (read-response p)) + (body (response-body-port resp))) + ;; The server can choose to stop responding at any time, in which + ;; case we have to try again. Check whether that is the case. + (match (assq 'connection (response-headers resp)) + (('connection 'close) + (connect requests result)) ;try again + (_ + (loop tail ;keep going + (cons (proc head resp body) result))))))))))) + +(define (read-to-eof port) + "Read from PORT until EOF is reached. The data are discarded." + (dump-port port (%make-void-port "w"))) + +(define (narinfo-from-file file url) + "Attempt to read a narinfo from FILE, using URL as the cache URL. Return #f +if file doesn't exist, and the narinfo otherwise." + (catch 'system-error + (lambda () + (call-with-input-file file + (cut read-narinfo <> url))) + (lambda args + (if (= ENOENT (system-error-errno args)) + #f + (apply throw args))))) + +(define (fetch-narinfos cache paths) + "Retrieve all the narinfos for PATHS from CACHE and return them." + (define url + (cache-url cache)) + + (define update-progress! + (let ((done 0)) + (lambda () + (display #\cr (current-error-port)) + (force-output (current-error-port)) + (format (current-error-port) + (_ "updating list of substitutes from '~a'... ~5,1f%") + url (* 100. (/ done (length paths)))) + (set! done (+ 1 done))))) + + (define (handle-narinfo-response request response port) + (let ((len (response-content-length response))) + ;; Make sure to read no more than LEN bytes since subsequent bytes may + ;; belong to the next response. + (case (response-code response) + ((200) ; hit + (let ((narinfo (read-narinfo port url #:size len))) + (cache-narinfo! cache (narinfo-path narinfo) narinfo) + (update-progress!) + narinfo)) + ((404) ; failure + (let* ((path (uri-path (request-uri request))) + (hash-part (string-drop-right path 8))) ; drop ".narinfo" + (if len + (get-bytevector-n port len) + (read-to-eof port)) + (cache-narinfo! cache + (find (cut string-contains <> hash-part) paths) + #f) + (update-progress!)) + #f) + (else ; transient failure + (if len + (get-bytevector-n port len) + (read-to-eof port)) + #f)))) + + (and (string=? (cache-store-directory cache) (%store-prefix)) + (let ((uri (string->uri url))) + (case (and=> uri uri-scheme) + ((http) + (let ((requests (map (cut narinfo-request url <>) paths))) + (update-progress!) + (let ((result (http-multiple-get url requests + handle-narinfo-response))) + (newline (current-error-port)) + result))) + ((file #f) + (let* ((base (string-append (uri-path uri) "/")) + (files (map (compose (cut string-append base <> ".narinfo") + store-path-hash-part) + paths))) + (filter-map (cut narinfo-from-file <> url) files))) + (else + (leave (_ "~s: unsupported server URI scheme~%") + (if uri (uri-scheme uri) url))))))) + +(define (lookup-narinfos cache paths) + "Return the narinfos for PATHS, invoking the server at CACHE when no +information is available locally." + (let-values (((cached missing) + (fold2 (lambda (path cached missing) + (let-values (((valid? value) + (cached-narinfo path))) + (if valid? + (values (cons value cached) missing) + (values cached (cons path missing))))) + '() + '() + paths))) + (if (null? missing) + cached (let* ((cache (force cache)) - (narinfo (and cache (fetch-narinfo cache path)))) - ;; Cache NARINFO only when CACHE was actually accessible. This - ;; avoids caching negative hits when in fact we just lacked network - ;; access. - (when cache - (with-atomic-file-output cache-file - (lambda (out) - (write (cache-entry (cache-url cache) narinfo) out)))) - narinfo)))) + (missing (if cache + (fetch-narinfos cache missing) + '()))) + (append cached missing))))) + +(define (lookup-narinfo cache path) + "Return the narinfo for PATH in CACHE, or #f when no substitute for PATH was +found." + (match (lookup-narinfos cache (list path)) + ((answer) answer))) (define (remove-expired-cached-narinfos) "Remove expired narinfo entries from the cache. The sole purpose of this @@ -580,16 +708,6 @@ Internal tool to substitute a pre-built binary to a local build.\n")) ;;; Entry point. ;;; -(define n-par-map* - ;; We want the ability to run many threads in parallel, regardless of the - ;; number of cores. However, Guile 2.0.5 has a bug whereby 'n-par-map' ends - ;; up consuming a lot of memory, possibly leading to death. Thus, resort to - ;; 'par-map' on 2.0.5. - (if (guile-version>? "2.0.5") - n-par-map - (lambda (n proc lst) - (par-map proc lst)))) - (define (check-acl-initialized) "Warn if the ACL is uninitialized." (define (singleton? acl) @@ -698,9 +816,7 @@ substituter disabled~%") ;; Return the subset of PATHS available in CACHE. (let ((substitutable (if cache - (n-par-map* %lookup-threads - (cut lookup-narinfo cache <>) - paths) + (lookup-narinfos cache paths) '()))) (for-each (lambda (narinfo) (format #t "~a~%" (narinfo-path narinfo))) @@ -710,9 +826,7 @@ substituter disabled~%") ;; Reply info about PATHS if it's in CACHE. (let ((substitutable (if cache - (n-par-map* %lookup-threads - (cut lookup-narinfo cache <>) - paths) + (lookup-narinfos cache paths) '()))) (for-each (lambda (narinfo) (format #t "~a\n~a\n~a\n" -- cgit v1.2.3 From cb043c2b13c484744312772e9e74e2a1dbced95b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 8 Jan 2015 23:11:28 +0100 Subject: substitute-binary: Remove thread-safe 'regexp-exec' wrapper. * guix/scripts/substitute-binary.scm: Remove 'regexp-exec' setting. --- guix/scripts/substitute-binary.scm | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/guix/scripts/substitute-binary.scm b/guix/scripts/substitute-binary.scm index c21c50fe9f..e797c6d40b 100755 --- a/guix/scripts/substitute-binary.scm +++ b/guix/scripts/substitute-binary.scm @@ -34,7 +34,6 @@ #:use-module (ice-9 rdelim) #:use-module (ice-9 regex) #:use-module (ice-9 match) - #:use-module (ice-9 threads) #:use-module (ice-9 format) #:use-module (ice-9 ftw) #:use-module (ice-9 binary-ports) @@ -96,15 +95,6 @@ disabled!~%")) ;; How often we want to remove files corresponding to expired cache entries. (* 7 24 3600)) -;; In Guile 2.0.9, `regexp-exec' is thread-unsafe, so work around it. -;; See . -(set! regexp-exec - (let ((real regexp-exec) - (lock (make-mutex))) - (lambda (rx str . rest) - (with-mutex lock - (apply real rx str rest))))) - (define fields->alist ;; The narinfo format is really just like recutils. recutils->alist) -- cgit v1.2.3 From 1f8ad12a9cdd670e8b2d14c4141bb309b69addcb Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 23 Mar 2015 22:17:56 +0100 Subject: gnu: geiser: Update to 0.7. * gnu/packages/emacs.scm (geiser): Update to 0.7. --- gnu/packages/emacs.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 297d174b5e..20d0b047a5 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -151,13 +151,14 @@ editor (without an X toolkit)" ) (define-public geiser (package (name "geiser") - (version "0.6") + (version "0.7") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/geiser/" version "/geiser-" version ".tar.gz")) (sha256 - (base32 "1mrk0bzqcpfhsw6635qznn47nzfy9ps7wrhkpymswdfpw5mdsry5")))) + (base32 + "0cp7r91ibw45yw9k3fz1s13y7ryfsxjgpk57qv37qsznb9lmqylx")))) (build-system gnu-build-system) (arguments '(#:phases (alist-cons-after -- cgit v1.2.3 From 9586011d085f381ce2a3dfa6233df2b2f19a196c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 23 Mar 2015 22:18:25 +0100 Subject: gnu: geiser: Make description more concise and less personal. * gnu/packages/emacs.scm (geiser)[description]: Tweak. --- gnu/packages/emacs.scm | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 20d0b047a5..b844661fa1 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -174,20 +174,12 @@ editor (without an X toolkit)" ) (home-page "http://nongnu.org/geiser/") (synopsis "Collection of Emacs modes for Guile and Racket hacking") (description - "Geiser is a collection of Emacs major and minor modes that -conspire with one or more Scheme interpreters to keep the Lisp Machine -Spirit alive. It draws inspiration (and a bit more) from environments -such as Common Lisp’s Slime, Factor’s FUEL, Squeak or Emacs itself, and -does its best to make Scheme hacking inside Emacs (even more) fun. - -Or, to be precise, what i consider fun. Geiser is thus my humble -contribution to the dynamic school of expression, and a reaction against -what i perceive as a derailment, in modern times, of standard Scheme -towards the static camp. Because i prefer growing and healing to poking -at corpses, the continuously running Scheme interpreter takes the center -of the stage in Geiser. A bundle of Elisp shims orchestrates the dialog -between the Scheme interpreter, Emacs and, ultimately, the schemer, -giving her access to live metadata.") + "Geiser is a collection of Emacs major and minor modes that conspire with +one or more Scheme implementations to keep the Lisp Machine Spirit alive. The +continuously running Scheme interpreter takes the center of the stage in +Geiser. A bundle of Elisp shims orchestrates the dialog between the Scheme +implementation, Emacs and, ultimately, the schemer, giving them access to live +metadata.") (license license:bsd-3))) (define-public paredit -- cgit v1.2.3 From e2e21359c5930b9defec7e1359018347bc025850 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 23 Mar 2015 23:13:18 +0100 Subject: gnu: guix: Update snapshot. * gnu/packages/package-management.scm (guix-devel): Update. --- gnu/packages/package-management.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 38bddef975..f31f872602 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -142,7 +142,7 @@ the Nix package manager.") (define guix-devel ;; Development version of Guix. - (let ((commit "07157e8")) + (let ((commit "9586011")) (package (inherit guix-0.8.1) (version (string-append "0.8.1." commit)) (source (origin @@ -152,7 +152,7 @@ the Nix package manager.") (commit commit))) (sha256 (base32 - "0ksfvkkgzsz58h60a8kypg9x24sabl5007hr3a2ddgh05rjckbci")))) + "0dcmw8gz2qxknjnh9k8rdwmgysnxnvawdmlg1pyzngakwlsy1c3z")))) (arguments (substitute-keyword-arguments (package-arguments guix-0.8.1) ((#:phases phases) -- cgit v1.2.3 From 19ee92014488fe7037477dbe0b1999feae9ac59c Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 20 Mar 2015 12:39:50 +0100 Subject: gnu: Add python2-pbcore. * gnu/packages/bioinformatics.scm (python2-pbcore): New variable. --- gnu/packages/bioinformatics.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 1214a0b708..fc0ce4a166 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -615,6 +615,35 @@ RNA-Seq, the MISO model uses Bayesian inference to compute the probability that a read originated from a particular isoform.") (license license:gpl2))) +(define-public python2-pbcore + (package + (name "python2-pbcore") + (version "0.9.3") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/PacificBiosciences/pbcore/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1z46rwjac93jm87cbj2zgjg6qvsgs65140wkbbxsvxps7ai4pm09")))) + (build-system python-build-system) + (arguments `(#:python ,python-2)) ; pbcore requires Python 2.7 + (inputs + `(("python-cython" ,python2-cython) + ("python-numpy" ,python2-numpy) + ("python-pysam" ,python2-pysam) + ("python-h5py" ,python2-h5py))) + (native-inputs + `(("python-setuptools" ,python2-setuptools))) + (home-page "http://pacificbiosciences.github.io/pbcore/") + (synopsis "Library for reading and writing PacBio data files") + (description + "The pbcore package provides Python APIs for interacting with PacBio data +files and writing bioinformatics applications.") + (license license:bsd-3))) + (define-public rseqc (package (name "rseqc") -- cgit v1.2.3 From ad641d53ded0ffa31472e65ca51f22b0fe70e414 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 18 Mar 2015 14:39:42 +0100 Subject: gnu: Add python2-bx-python. * gnu/packages/bioinformatics.scm (python2-bx-python): New variable. --- gnu/packages/bioinformatics.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index fc0ce4a166..744f8c2a4a 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -285,6 +285,41 @@ and more accurate. BWA-MEM also has better performance than BWA-backtrack for 70-100bp Illumina reads.") (license license:gpl3+))) +(define-public python2-bx-python + (package + (name "python2-bx-python") + (version "0.7.2") + (source (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/b/bx-python/bx-python-" + version ".tar.gz")) + (sha256 + (base32 + "0ld49idhc5zjdvbhvjq1a2qmpjj7h5v58rqr25dzmfq7g34b50xh")) + (modules '((guix build utils))) + (snippet + '(substitute* "setup.py" + ;; remove dependency on outdated "distribute" module + (("^from distribute_setup import use_setuptools") "") + (("^use_setuptools\\(\\)") ""))))) + (build-system python-build-system) + (arguments + `(#:tests? #f ;tests fail because test data are not included + #:python ,python-2)) + (inputs + `(("python-numpy" ,python2-numpy) + ("zlib" ,zlib))) + (native-inputs + `(("python-nose" ,python2-nose) + ("python-setuptools" ,python2-setuptools))) + (home-page "http://bitbucket.org/james_taylor/bx-python/") + (synopsis "Tools for manipulating biological data") + (description + "bx-python provides tools for manipulating biological data, particularly +multiple sequence alignments.") + (license license:expat))) + (define-public clipper (package (name "clipper") -- cgit v1.2.3 From 2c16316ef4420b462a1147e8eaee4680093616fd Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 20 Mar 2015 14:36:38 +0100 Subject: gnu: Add pbtranscript-tofu. * gnu/packages/bioinformatics.scm (pbtranscript-tofu): New variable. --- gnu/packages/bioinformatics.scm | 55 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 744f8c2a4a..ca8dcb761a 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -20,6 +20,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) #:use-module (guix build-system python) @@ -679,6 +680,60 @@ that a read originated from a particular isoform.") files and writing bioinformatics applications.") (license license:bsd-3))) +(define-public pbtranscript-tofu + (let ((commit "c7bbd5472")) + (package + (name "pbtranscript-tofu") + (version (string-append "0.4.1." commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/PacificBiosciences/cDNA_primer.git") + (commit commit))) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "148xkzi689c49g6fdhckp6mnmj2qhjdf1j4wifm6ja7ij95d7fxx")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2 + ;; With standard flags, the install phase attempts to create a zip'd + ;; egg file, and fails with an error: 'ZIP does not support timestamps + ;; before 1980' + #:configure-flags '("--single-version-externally-managed" + "--record=pbtranscript-tofu.txt") + #:phases + (alist-cons-after + 'unpack 'enter-directory-and-clean-up + (lambda _ + (chdir "pbtranscript-tofu/pbtranscript/") + ;; Delete clutter + (delete-file-recursively "dist/") + (delete-file-recursively "setuptools_cython-0.2.1-py2.6.egg/") + (delete-file-recursively "pbtools.pbtranscript.egg-info") + (delete-file "Cython-0.20.1.tar.gz") + (delete-file "setuptools_cython-0.2.1-py2.7.egg") + (delete-file "setuptools_cython-0.2.1.tar.gz") + (delete-file "setup.cfg") + ;; files should be writable for install phase + (for-each (lambda (f) (chmod f #o755)) + (find-files "." "\\.py"))) + %standard-phases))) + (inputs + `(("python-cython" ,python2-cython) + ("python-numpy" ,python2-numpy) + ("python-bx-python" ,python2-bx-python) + ("python-pbcore" ,python2-pbcore))) + (native-inputs + `(("python-nose" ,python2-nose) + ("python-setuptools" ,python2-setuptools))) + (home-page "https://github.com/PacificBiosciences/cDNA_primer") + (synopsis "Analyze transcriptome data generated with the Iso-Seq protocol") + (description + "pbtranscript-tofu contains scripts to analyze transcriptome data +generated using the PacBio Iso-Seq protocol.") + (license license:bsd-3)))) + (define-public rseqc (package (name "rseqc") -- cgit v1.2.3 From b655b2154c8a72f5c9b7e54594653df49f3c2c02 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Tue, 24 Mar 2015 20:35:37 +0100 Subject: gnu: calibre: Add a patch to avoid automatic checking for updates. * gnu/packages/patches/calibre-no-updates-dialog.patch: New file. * gnu-system.am (dist_patch_DATA): Register patch. * gnu/packages/ebook.scm (calibre): Use patch. --- gnu-system.am | 1 + gnu/packages/ebook.scm | 3 ++- gnu/packages/patches/calibre-no-updates-dialog.patch | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/calibre-no-updates-dialog.patch diff --git a/gnu-system.am b/gnu-system.am index 852abd316f..153d395b57 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -375,6 +375,7 @@ dist_patch_DATA = \ gnu/packages/patches/binutils-ld-new-dtags.patch \ gnu/packages/patches/binutils-loongson-workaround.patch \ gnu/packages/patches/calibre-drop-unrar.patch \ + gnu/packages/patches/calibre-no-updates-dialog.patch \ gnu/packages/patches/cdparanoia-fpic.patch \ gnu/packages/patches/chmlib-inttypes.patch \ gnu/packages/patches/clucene-pkgconfig.patch \ diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index de85fad8c6..05165774d7 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -77,7 +77,8 @@ '(begin (delete-file-recursively "src/unrar") (delete-file "src/odf/thumbnail.py"))) - (patches (list (search-patch "calibre-drop-unrar.patch"))))) + (patches (list (search-patch "calibre-drop-unrar.patch") + (search-patch "calibre-no-updates-dialog.patch"))))) (build-system python-build-system) (native-inputs `(("pkg-config" ,pkg-config) diff --git a/gnu/packages/patches/calibre-no-updates-dialog.patch b/gnu/packages/patches/calibre-no-updates-dialog.patch new file mode 100644 index 0000000000..1d8d79660e --- /dev/null +++ b/gnu/packages/patches/calibre-no-updates-dialog.patch @@ -0,0 +1,18 @@ +Taken from debian. + +# Description: Disable update check by default. +Index: calibre/src/calibre/gui2/main.py +=================================================================== +--- calibre.orig/src/calibre/gui2/main.py 2014-02-02 10:41:28.470954623 +0100 ++++ calibre/src/calibre/gui2/main.py 2014-02-02 10:41:56.546954247 +0100 +@@ -37,8 +37,8 @@ + help=_('Start minimized to system tray.')) + parser.add_option('-v', '--verbose', default=0, action='count', + help=_('Ignored, do not use. Present only for legacy reasons')) +- parser.add_option('--no-update-check', default=False, action='store_true', +- help=_('Do not check for updates')) ++ parser.add_option('--update-check', dest='no_update_check', default=True, action='store_false', ++ help=_('Check for updates')) + parser.add_option('--ignore-plugins', default=False, action='store_true', + help=_('Ignore custom plugins, useful if you installed a plugin' + ' that is preventing calibre from starting')) -- cgit v1.2.3 From 17287d7d47567aa1649250182e0f7ab11d5d55d1 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 24 Mar 2015 10:52:05 -0500 Subject: packages: Add zip archive support to 'patch-and-repack'. Fixes . * guix/packages.scm (%standard-patch-inputs): Add "unzip". (patch-and-repack)[decompression-type]: Detect zip archive. [build]: Invoke "unzip" when appropriate. --- guix/packages.scm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/guix/packages.scm b/guix/packages.scm index ca9d3a9fb1..99fbd24cb6 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -335,6 +335,7 @@ corresponds to the arguments expected by `set-path-environment-variable'." ("bzip2" ,(ref '(gnu packages compression) 'bzip2)) ("gzip" ,(ref '(gnu packages compression) 'gzip)) ("lzip" ,(ref '(gnu packages compression) 'lzip)) + ("unzip" ,(ref '(gnu packages zip) 'unzip)) ("patch" ,(ref '(gnu packages base) 'patch)) ("locales" ,(ref '(gnu packages commencement) 'glibc-utf8-locales-final))))) @@ -384,6 +385,7 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET." (cond ((string-suffix? "gz" source-file-name) "gzip") ((string-suffix? "bz2" source-file-name) "bzip2") ((string-suffix? "lz" source-file-name) "lzip") + ((string-suffix? "zip" source-file-name) "unzip") (else "xz"))) (define original-file-name @@ -464,8 +466,10 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET." (mkdir directory) (copy-recursively #$source directory) #t) - (zero? (system* (string-append #$tar "/bin/tar") - "xvf" #$source))) + #$(if (string=? decompression-type "unzip") + #~(zero? (system* "unzip" #$source)) + #~(zero? (system* (string-append #$tar "/bin/tar") + "xvf" #$source)))) (let ((directory (first-file "."))) (format (current-error-port) "source is under '~a'~%" directory) -- cgit v1.2.3 From c7d1d88f6c75f9ba67caa624976dbad2980856ef Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 24 Mar 2015 22:47:25 +0100 Subject: derivations: Don't invoke the substituter when an item is already in store. Fixes . Reported by Mark H Weaver . * guix/derivations.scm (substitution-oracle): Add 'valid?' procedure. Remove 'valid?' items from PATHS. --- guix/derivations.scm | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/guix/derivations.scm b/guix/derivations.scm index 4b0048b54b..9b5ee367b6 100644 --- a/guix/derivations.scm +++ b/guix/derivations.scm @@ -225,22 +225,28 @@ download with a fixed hash (aka. `fetchurl')." (define* (substitution-oracle store drv) "Return a one-argument procedure that, when passed a store file name, returns #t if it's substitutable and #f otherwise. The returned procedure -knows about all substitutes for all the derivations listed in DRV and their -prerequisites. +knows about all substitutes for all the derivations listed in DRV; it also +knows about their prerequisites, unless they are themselves substitutable. Creating a single oracle (thus making a single 'substitutable-paths' call) and reusing it is much more efficient than calling 'has-substitutes?' or similar repeatedly, because it avoids the costs associated with launching the substituter many times." + (define valid? + (cut valid-path? store <>)) + (let* ((paths (delete-duplicates (fold (lambda (drv result) (let ((self (match (derivation->output-paths drv) (((names . paths) ...) - paths))) - (deps (append-map derivation-input-output-paths - (derivation-prerequisites - drv)))) - (append self deps result))) + paths)))) + (if (every valid? self) + result + (let ((deps + (append-map derivation-input-output-paths + (derivation-prerequisites drv)))) + (append (remove valid? (append self deps)) + result))))) '() drv))) (subst (list->set (substitutable-paths store paths)))) -- cgit v1.2.3 From 1f4344574567337a7e32b97f8cb98104deb71666 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 22 Mar 2015 22:39:56 -0400 Subject: gnu: python: Do not use patchelf. * gnu/packages/python.scm (python-2): Add rpath for lib directory of output to LDFLAGS. Remove 'patchelf' from inputs. Remove #:modules and #:imported-modules from arguments. Remove 'add-lib-to-runpath' phase. (python): Do not add #:modules to inherited package arguments. --- gnu/packages/python.scm | 67 ++++++++++++++++--------------------------------- 1 file changed, 22 insertions(+), 45 deletions(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 7282233bfa..23afec7950 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -33,7 +33,6 @@ #:use-module (gnu packages) #:use-module (gnu packages compression) #:use-module (gnu packages databases) - #:use-module (gnu packages elf) #:use-module (gnu packages fontutils) #:use-module (gnu packages gdbm) #:use-module (gnu packages gcc) @@ -134,7 +133,8 @@ (sqlite (assoc-ref %build-inputs "sqlite")) (openssl (assoc-ref %build-inputs "openssl")) (readline (assoc-ref %build-inputs "readline")) - (zlib (assoc-ref %build-inputs "zlib"))) + (zlib (assoc-ref %build-inputs "zlib")) + (out (assoc-ref %outputs "out"))) (list "--enable-shared" ; allow embedding "--with-system-ffi" ; build ctypes (string-append "CPPFLAGS=" @@ -151,43 +151,27 @@ "-L" sqlite "/lib " "-L" openssl "/lib " "-L" readline "/lib " - "-L" zlib "/lib"))) - - #:modules ((guix build gnu-build-system) - (guix build utils) - (guix build rpath) - (srfi srfi-26)) - #:imported-modules ((guix build gnu-build-system) - (guix build utils) - (guix build rpath)) + "-L" zlib "/lib " + "-Wl,-rpath=" out "/lib"))) #:phases - (alist-cons-after - 'strip 'add-lib-to-runpath - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (lib (string-append out "/lib"))) - ;; Add LIB to the RUNPATH of all the executables. - (with-directory-excursion out - (for-each (cut augment-rpath <> lib) - (find-files "bin" ".*"))))) + (alist-cons-before + 'configure 'patch-lib-shells + (lambda _ + ;; Filter for existing files, since some may not exist in all + ;; versions of python that are built with this recipe. + (substitute* (filter file-exists? + '("Lib/subprocess.py" + "Lib/popen2.py" + "Lib/distutils/tests/test_spawn.py" + "Lib/test/test_subprocess.py")) + (("/bin/sh") (which "sh")))) (alist-cons-before - 'configure 'patch-lib-shells + 'check 'pre-check (lambda _ - ;; Filter for existing files, since some may not exist in all - ;; versions of python that are built with this recipe. - (substitute* (filter file-exists? - '("Lib/subprocess.py" - "Lib/popen2.py" - "Lib/distutils/tests/test_spawn.py" - "Lib/test/test_subprocess.py")) - (("/bin/sh") (which "sh")))) - (alist-cons-before - 'check 'pre-check - (lambda _ - ;; 'Lib/test/test_site.py' needs a valid $HOME - (setenv "HOME" (getcwd))) - %standard-phases))))) + ;; 'Lib/test/test_site.py' needs a valid $HOME + (setenv "HOME" (getcwd))) + %standard-phases)))) (inputs `(("bzip2" ,bzip2) ("gdbm" ,gdbm) @@ -195,8 +179,7 @@ ("sqlite" ,sqlite) ; for sqlite extension ("openssl" ,openssl) ("readline" ,readline) - ("zlib" ,zlib) - ("patchelf" ,patchelf))) ; for (guix build rpath) + ("zlib" ,zlib))) (native-inputs `(("pkg-config" ,pkg-config))) (native-search-paths @@ -230,14 +213,8 @@ data types.") (sha256 (base32 "1rdncc7g8g6f3lfdg33rli1yffbiq8z283xy4f5ksl1l8i49psdb")))) - (arguments - (let ((args `(#:modules ((guix build gnu-build-system) - (guix build utils) - (srfi srfi-1) - (srfi srfi-26)) - ,@(package-arguments python-2)))) - (substitute-keyword-arguments args - ((#:tests? _) #t)))) + (arguments (substitute-keyword-arguments (package-arguments python-2) + ((#:tests? _) #t))) (native-search-paths (list (search-path-specification (variable "PYTHONPATH") -- cgit v1.2.3 From 3681db5d2c3c40f8796703325242998bbdb48403 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 25 Mar 2015 09:42:45 +0100 Subject: derivations: Add a 'cut?' parameter to 'derivation-prerequisites'. * guix/derivations.scm (valid-derivation-input?): New procedure. (derivation-prerequisites): Add 'cut?' parameter and honor it. * tests/derivations.scm ("derivation-prerequisites and derivation-input-is-valid?"): New test. --- guix/derivations.scm | 20 +++++++++++++++++--- tests/derivations.scm | 14 ++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/guix/derivations.scm b/guix/derivations.scm index 9b5ee367b6..8daad4b81d 100644 --- a/guix/derivations.scm +++ b/guix/derivations.scm @@ -60,6 +60,7 @@ derivation-input-path derivation-input-sub-derivations derivation-input-output-paths + valid-derivation-input? &derivation-error derivation-error? @@ -187,12 +188,25 @@ download with a fixed hash (aka. `fetchurl')." (map (cut derivation-path->output-path path <>) sub-drvs)))) -(define (derivation-prerequisites drv) - "Return the list of derivation-inputs required to build DRV, recursively." +(define (valid-derivation-input? store input) + "Return true if INPUT is valid--i.e., if all the outputs it requests are in +the store." + (every (cut valid-path? store <>) + (derivation-input-output-paths input))) + +(define* (derivation-prerequisites drv #:optional (cut? (const #f))) + "Return the list of derivation-inputs required to build DRV, recursively. + +CUT? is a predicate that is passed a derivation-input and returns true to +eliminate the given input and its dependencies from the search. An example of +search a predicate is 'valid-derivation-input?'; when it is used as CUT?, the +result is the set of prerequisites of DRV not already in valid." (let loop ((drv drv) (result '()) (input-set (set))) - (let ((inputs (remove (cut set-contains? input-set <>) + (let ((inputs (remove (lambda (input) + (or (set-contains? input-set input) + (cut? input))) (derivation-inputs drv)))) (fold2 loop (append inputs result) diff --git a/tests/derivations.scm b/tests/derivations.scm index 72d253c465..a8cccac34a 100644 --- a/tests/derivations.scm +++ b/tests/derivations.scm @@ -499,6 +499,20 @@ (string=? path (derivation-file-name (%guile-for-build))))) (derivation-prerequisites drv)))) +(test-assert "derivation-prerequisites and derivation-input-is-valid?" + (let* ((a (build-expression->derivation %store "a" '(mkdir %output))) + (b (build-expression->derivation %store "b" `(list ,(random-text)))) + (c (build-expression->derivation %store "c" `(mkdir %output) + #:inputs `(("a" ,a) ("b" ,b))))) + (build-derivations %store (list a)) + (match (derivation-prerequisites c + (cut valid-derivation-input? %store + <>)) + ((($ file ("out"))) + (string=? file (derivation-file-name b))) + (x + (pk 'fail x #f))))) + (test-assert "build-expression->derivation without inputs" (let* ((builder '(begin (mkdir %output) -- cgit v1.2.3 From c3a450fb49da41f1225353d2ca2e652daae36939 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 25 Mar 2015 09:48:52 +0100 Subject: derivations: 'substitution-oracle' now ignores sub-trees that are valid. Before that, "guix build qt", when only qt itself is missing, would lead 'substitution-oracle' to call 'substitutable-paths' with 318 items. Now, this is down to 6 items, because it doesn't ask about prerequisites that are already valid. * guix/derivations.scm (substitution-oracle)[valid-input?, dependencies]: New procedures. Use 'dependencies' and remove call to 'remove'. --- guix/derivations.scm | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/guix/derivations.scm b/guix/derivations.scm index 8daad4b81d..7737e39b2d 100644 --- a/guix/derivations.scm +++ b/guix/derivations.scm @@ -249,6 +249,17 @@ substituter many times." (define valid? (cut valid-path? store <>)) + (define valid-input? + (cut valid-derivation-input? store <>)) + + (define (dependencies drv) + ;; Skip prerequisite sub-trees of DRV whose root is valid. This allows us + ;; to ask the substituter for just as much as needed, instead of asking it + ;; for the whole world, which can be significantly faster when substitute + ;; info is not already in cache. + (append-map derivation-input-output-paths + (derivation-prerequisites drv valid-input?))) + (let* ((paths (delete-duplicates (fold (lambda (drv result) (let ((self (match (derivation->output-paths drv) @@ -256,11 +267,8 @@ substituter many times." paths)))) (if (every valid? self) result - (let ((deps - (append-map derivation-input-output-paths - (derivation-prerequisites drv)))) - (append (remove valid? (append self deps)) - result))))) + (append (append self (dependencies drv)) + result)))) '() drv))) (subst (list->set (substitutable-paths store paths)))) -- cgit v1.2.3 From 2c74fde00e4e721c6a73646935ab0cfe19dd9188 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 25 Mar 2015 10:34:27 +0100 Subject: Rename 'guix substitute-binary' to 'guix substitute'. * guix/scripts/substitute-binary.scm: Rename to... * guix/scripts/substitute.scm: ... this. Adjust module name, entry point, comments, and help string accordingly. * nix/scripts/substitute-binary.in: Rename to... * nix/scripts/substitute.in: ... this. * pre-inst-env.in (NIX_SUBSTITUTERS): Adjust accordingly. * tests/substitute-binary.scm: Rename to... * tests/substitute.scm: ... this. Adjust references to (guix scripts substitute) accordingly. * guix/ui.scm (show-guix-help)[internal?]: Change "substitute-binary" to "substitute". * Makefile.am (MODULES, SCM_TESTS): Adjust to file renames. * daemon.am (nodist_pkglibexec_SCRIPTS): Likewise. * config-daemon.ac: Likewise. * guix/tests.scm (call-with-derivation-narinfo): Adjust comments and docstring. --- .gitignore | 2 +- Makefile.am | 4 +- config-daemon.ac | 4 +- daemon.am | 2 +- guix/scripts/substitute-binary.scm | 896 ------------------------------------- guix/scripts/substitute.scm | 896 +++++++++++++++++++++++++++++++++++++ guix/tests.scm | 4 +- guix/ui.scm | 2 +- nix/scripts/substitute-binary.in | 11 - nix/scripts/substitute.in | 11 + pre-inst-env.in | 2 +- tests/store.scm | 10 +- tests/substitute-binary.scm | 284 ------------ tests/substitute.scm | 284 ++++++++++++ 14 files changed, 1206 insertions(+), 1206 deletions(-) delete mode 100755 guix/scripts/substitute-binary.scm create mode 100755 guix/scripts/substitute.scm delete mode 100644 nix/scripts/substitute-binary.in create mode 100644 nix/scripts/substitute.in delete mode 100644 tests/substitute-binary.scm create mode 100644 tests/substitute.scm diff --git a/.gitignore b/.gitignore index 3ec36366e3..eaa7dbd51a 100644 --- a/.gitignore +++ b/.gitignore @@ -96,7 +96,7 @@ stamp-h[0-9] /doc/guix.tp /doc/guix.vr /doc/guix.vrs -/nix/scripts/substitute-binary +/nix/scripts/substitute /doc/images/bootstrap-graph.png /doc/images/bootstrap-graph.eps /guix-register diff --git a/Makefile.am b/Makefile.am index 882ab8e27b..4a1f8d0a88 100644 --- a/Makefile.am +++ b/Makefile.am @@ -96,7 +96,7 @@ MODULES = \ guix/scripts/gc.scm \ guix/scripts/hash.scm \ guix/scripts/pull.scm \ - guix/scripts/substitute-binary.scm \ + guix/scripts/substitute.scm \ guix/scripts/authenticate.scm \ guix/scripts/refresh.scm \ guix/scripts/system.scm \ @@ -162,7 +162,7 @@ SCM_TESTS = \ tests/pk-crypto.scm \ tests/pki.scm \ tests/sets.scm \ - tests/substitute-binary.scm \ + tests/substitute.scm \ tests/builders.scm \ tests/derivations.scm \ tests/ui.scm \ diff --git a/config-daemon.ac b/config-daemon.ac index 5f83d45a4c..fb80c754c9 100644 --- a/config-daemon.ac +++ b/config-daemon.ac @@ -133,8 +133,8 @@ if test "x$guix_build_daemon" = "xyes"; then AC_CONFIG_FILES([nix/scripts/list-runtime-roots], [chmod +x nix/scripts/list-runtime-roots]) - AC_CONFIG_FILES([nix/scripts/substitute-binary], - [chmod +x nix/scripts/substitute-binary]) + AC_CONFIG_FILES([nix/scripts/substitute], + [chmod +x nix/scripts/substitute]) AC_CONFIG_FILES([nix/scripts/guix-authenticate], [chmod +x nix/scripts/guix-authenticate]) AC_CONFIG_FILES([nix/scripts/offload], diff --git a/daemon.am b/daemon.am index 5963606861..9d6516ae6c 100644 --- a/daemon.am +++ b/daemon.am @@ -165,7 +165,7 @@ nix/libstore/schema.sql.hh: nix/libstore/schema.sql nodist_pkglibexec_SCRIPTS = \ nix/scripts/list-runtime-roots \ - nix/scripts/substitute-binary + nix/scripts/substitute if BUILD_DAEMON_OFFLOAD diff --git a/guix/scripts/substitute-binary.scm b/guix/scripts/substitute-binary.scm deleted file mode 100755 index e797c6d40b..0000000000 --- a/guix/scripts/substitute-binary.scm +++ /dev/null @@ -1,896 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015 Ludovic Courtès -;;; Copyright © 2014 Nikita Karetnikov -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see . - -(define-module (guix scripts substitute-binary) - #:use-module (guix ui) - #:use-module (guix store) - #:use-module (guix utils) - #:use-module (guix config) - #:use-module (guix records) - #:use-module (guix serialization) - #:use-module (guix hash) - #:use-module (guix base64) - #:use-module (guix pk-crypto) - #:use-module (guix pki) - #:use-module ((guix build utils) #:select (mkdir-p dump-port)) - #:use-module ((guix build download) - #:select (progress-proc uri-abbreviation)) - #:use-module (ice-9 rdelim) - #:use-module (ice-9 regex) - #:use-module (ice-9 match) - #:use-module (ice-9 format) - #:use-module (ice-9 ftw) - #:use-module (ice-9 binary-ports) - #:use-module (rnrs io ports) - #:use-module (rnrs bytevectors) - #:use-module (srfi srfi-1) - #:use-module (srfi srfi-9) - #:use-module (srfi srfi-11) - #:use-module (srfi srfi-19) - #:use-module (srfi srfi-26) - #:use-module (srfi srfi-34) - #:use-module (srfi srfi-35) - #:use-module (web uri) - #:use-module (web request) - #:use-module (web response) - #:use-module (guix http-client) - #:export (narinfo-signature->canonical-sexp - read-narinfo - write-narinfo - guix-substitute-binary)) - -;;; Comment: -;;; -;;; This is the "binary substituter". It is invoked by the daemon do check -;;; for the existence of available "substitutes" (pre-built binaries), and to -;;; actually use them as a substitute to building things locally. -;;; -;;; If possible, substitute a binary for the requested store path, using a Nix -;;; "binary cache". This program implements the Nix "substituter" protocol. -;;; -;;; Code: - -(define %narinfo-cache-directory - ;; A local cache of narinfos, to avoid going to the network. - (or (and=> (getenv "XDG_CACHE_HOME") - (cut string-append <> "/guix/substitute-binary")) - (string-append %state-directory "/substitute-binary/cache"))) - -(define %allow-unauthenticated-substitutes? - ;; Whether to allow unchecked substitutes. This is useful for testing - ;; purposes, and should be avoided otherwise. - (and (and=> (getenv "GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES") - (cut string-ci=? <> "yes")) - (begin - (warning (_ "authentication and authorization of substitutes \ -disabled!~%")) - #t))) - -(define %narinfo-ttl - ;; Number of seconds during which cached narinfo lookups are considered - ;; valid. - (* 24 3600)) - -(define %narinfo-negative-ttl - ;; Likewise, but for negative lookups---i.e., cached lookup failures. - (* 3 3600)) - -(define %narinfo-expired-cache-entry-removal-delay - ;; How often we want to remove files corresponding to expired cache entries. - (* 7 24 3600)) - -(define fields->alist - ;; The narinfo format is really just like recutils. - recutils->alist) - -(define %fetch-timeout - ;; Number of seconds after which networking is considered "slow". - 5) - -(define %random-state - (seed->random-state (+ (ash (cdr (gettimeofday)) 32) (getpid)))) - -(define-syntax-rule (with-timeout duration handler body ...) - "Run BODY; when DURATION seconds have expired, call HANDLER, and run BODY -again." - (begin - (sigaction SIGALRM - (lambda (signum) - (sigaction SIGALRM SIG_DFL) - handler)) - (alarm duration) - (call-with-values - (lambda () - (let try () - (catch 'system-error - (lambda () - body ...) - (lambda args - ;; Before Guile v2.0.9-39-gfe51c7b, the SIGALRM triggers EINTR - ;; because of the bug at - ;; . - ;; When that happens, try again. Note: SA_RESTART cannot be - ;; used because of . - (if (= EINTR (system-error-errno args)) - (begin - ;; Wait a little to avoid bursts. - (usleep (random 3000000 %random-state)) - (try)) - (apply throw args)))))) - (lambda result - (alarm 0) - (sigaction SIGALRM SIG_DFL) - (apply values result))))) - -(define* (fetch uri #:key (buffered? #t) (timeout? #t) (quiet-404? #f)) - "Return a binary input port to URI and the number of bytes it's expected to -provide. If QUIET-404? is true, HTTP 404 error conditions are passed through -to the caller without emitting an error message." - (case (uri-scheme uri) - ((file) - (let ((port (open-file (uri-path uri) - (if buffered? "rb" "r0b")))) - (values port (stat:size (stat port))))) - ((http) - (guard (c ((http-get-error? c) - (let ((code (http-get-error-code c))) - (if (and (= code 404) quiet-404?) - (raise c) - (leave (_ "download from '~a' failed: ~a, ~s~%") - (uri->string (http-get-error-uri c)) - code (http-get-error-reason c)))))) - ;; On Guile 2.0.5, `http-fetch' fetches the whole thing at once. So - ;; honor TIMEOUT? to disable the timeout when fetching a nar. - ;; - ;; Test this with: - ;; sudo tc qdisc add dev eth0 root netem delay 1500ms - ;; and then cancel with: - ;; sudo tc qdisc del dev eth0 root - (let ((port #f)) - (with-timeout (if (or timeout? (guile-version>? "2.0.5")) - %fetch-timeout - 0) - (begin - (warning (_ "while fetching ~a: server is somewhat slow~%") - (uri->string uri)) - (warning (_ "try `--no-substitutes' if the problem persists~%")) - - ;; Before Guile v2.0.9-39-gfe51c7b, EINTR was reported to the user, - ;; and thus PORT had to be closed and re-opened. This is not the - ;; case afterward. - (unless (or (guile-version>? "2.0.9") - (version>? (version) "2.0.9.39")) - (when port - (close-port port)))) - (begin - (when (or (not port) (port-closed? port)) - (set! port (open-socket-for-uri uri #:buffered? buffered?))) - (http-fetch uri #:text? #f #:port port)))))))) - -(define-record-type - (%make-cache url store-directory wants-mass-query?) - cache? - (url cache-url) - (store-directory cache-store-directory) - (wants-mass-query? cache-wants-mass-query?)) - -(define (open-cache url) - "Open the binary cache at URL. Return a object on success, or #f on -failure." - (define (download-cache-info url) - ;; Download the `nix-cache-info' from URL, and return its contents as an - ;; list of key/value pairs. - (and=> (false-if-exception (fetch (string->uri url))) - fields->alist)) - - (and=> (download-cache-info (string-append url "/nix-cache-info")) - (lambda (properties) - (alist->record properties - (cut %make-cache url <...>) - '("StoreDir" "WantMassQuery"))))) - -(define-syntax-rule (open-cache* url) - "Delayed variant of 'open-cache' that also lets the user know that they're -gonna have to wait." - (delay (begin - (format (current-error-port) - (_ "updating list of substitutes from '~a'...\r") - url) - (open-cache url)))) - -(define-record-type - (%make-narinfo path uri uri-base compression file-hash file-size nar-hash nar-size - references deriver system signature contents) - narinfo? - (path narinfo-path) - (uri narinfo-uri) - (uri-base narinfo-uri-base) ; URI of the cache it originates from - (compression narinfo-compression) - (file-hash narinfo-file-hash) - (file-size narinfo-file-size) - (nar-hash narinfo-hash) - (nar-size narinfo-size) - (references narinfo-references) - (deriver narinfo-deriver) - (system narinfo-system) - (signature narinfo-signature) ; canonical sexp - ;; The original contents of a narinfo file. This field is needed because we - ;; want to preserve the exact textual representation for verification purposes. - ;; See - ;; for more information. - (contents narinfo-contents)) - -(define (narinfo-signature->canonical-sexp str) - "Return the value of a narinfo's 'Signature' field as a canonical sexp." - (match (string-split str #\;) - ((version _ sig) - (let ((maybe-number (string->number version))) - (cond ((not (number? maybe-number)) - (leave (_ "signature version must be a number: ~s~%") - version)) - ;; Currently, there are no other versions. - ((not (= 1 maybe-number)) - (leave (_ "unsupported signature version: ~a~%") - maybe-number)) - (else - (let ((signature (utf8->string (base64-decode sig)))) - (catch 'gcry-error - (lambda () - (string->canonical-sexp signature)) - (lambda (key proc err) - (leave (_ "signature is not a valid \ -s-expression: ~s~%") - signature)))))))) - (x - (leave (_ "invalid format of the signature field: ~a~%") x)))) - -(define (narinfo-maker str cache-url) - "Return a narinfo constructor for narinfos originating from CACHE-URL. STR -must contain the original contents of a narinfo file." - (lambda (path url compression file-hash file-size nar-hash nar-size - references deriver system signature) - "Return a new object." - (%make-narinfo path - ;; Handle the case where URL is a relative URL. - (or (string->uri url) - (string->uri (string-append cache-url "/" url))) - cache-url - - compression file-hash - (and=> file-size string->number) - nar-hash - (and=> nar-size string->number) - (string-tokenize references) - (match deriver - ((or #f "") #f) - (_ deriver)) - system - (false-if-exception - (and=> signature narinfo-signature->canonical-sexp)) - str))) - -(define* (assert-valid-signature narinfo signature hash - #:optional (acl (current-acl))) - "Bail out if SIGNATURE, a canonical sexp representing the signature of -NARINFO, doesn't match HASH, a bytevector containing the hash of NARINFO." - (let ((uri (uri->string (narinfo-uri narinfo)))) - (signature-case (signature hash acl) - (valid-signature #t) - (invalid-signature - (leave (_ "invalid signature for '~a'~%") uri)) - (hash-mismatch - (leave (_ "hash mismatch for '~a'~%") uri)) - (unauthorized-key - (leave (_ "'~a' is signed with an unauthorized key~%") uri)) - (corrupt-signature - (leave (_ "signature on '~a' is corrupt~%") uri))))) - -(define* (read-narinfo port #:optional url - #:key size) - "Read a narinfo from PORT. If URL is true, it must be a string used to -build full URIs from relative URIs found while reading PORT. When SIZE is -true, read at most SIZE bytes from PORT; otherwise, read as much as possible. - -No authentication and authorization checks are performed here!" - (let ((str (utf8->string (if size - (get-bytevector-n port size) - (get-bytevector-all port))))) - (alist->record (call-with-input-string str fields->alist) - (narinfo-maker str url) - '("StorePath" "URL" "Compression" - "FileHash" "FileSize" "NarHash" "NarSize" - "References" "Deriver" "System" - "Signature")))) - -(define (narinfo-sha256 narinfo) - "Return the sha256 hash of NARINFO as a bytevector, or #f if NARINFO lacks a -'Signature' field." - (let ((contents (narinfo-contents narinfo))) - (match (string-contains contents "Signature:") - (#f #f) - (index - (let ((above-signature (string-take contents index))) - (sha256 (string->utf8 above-signature))))))) - -(define* (assert-valid-narinfo narinfo - #:optional (acl (current-acl)) - #:key (verbose? #t)) - "Raise an exception if NARINFO lacks a signature, has an invalid signature, -or is signed by an unauthorized key." - (let ((hash (narinfo-sha256 narinfo))) - (if (not hash) - (if %allow-unauthenticated-substitutes? - narinfo - (leave (_ "substitute at '~a' lacks a signature~%") - (uri->string (narinfo-uri narinfo)))) - (let ((signature (narinfo-signature narinfo))) - (unless %allow-unauthenticated-substitutes? - (assert-valid-signature narinfo signature hash acl) - (when verbose? - (format (current-error-port) - "found valid signature for '~a', from '~a'~%" - (narinfo-path narinfo) - (uri->string (narinfo-uri narinfo))))) - narinfo)))) - -(define* (valid-narinfo? narinfo #:optional (acl (current-acl))) - "Return #t if NARINFO's signature is not valid." - (or %allow-unauthenticated-substitutes? - (let ((hash (narinfo-sha256 narinfo)) - (signature (narinfo-signature narinfo))) - (and hash signature - (signature-case (signature hash acl) - (valid-signature #t) - (else #f)))))) - -(define (write-narinfo narinfo port) - "Write NARINFO to PORT." - (put-bytevector port (string->utf8 (narinfo-contents narinfo)))) - -(define (narinfo->string narinfo) - "Return the external representation of NARINFO." - (call-with-output-string (cut write-narinfo narinfo <>))) - -(define (string->narinfo str cache-uri) - "Return the narinfo represented by STR. Assume CACHE-URI as the base URI of -the cache STR originates form." - (call-with-input-string str (cut read-narinfo <> cache-uri))) - -(define (obsolete? date now ttl) - "Return #t if DATE is obsolete compared to NOW + TTL seconds." - (time>? (subtract-duration now (make-time time-duration 0 ttl)) - (make-time time-monotonic 0 date))) - - -(define (narinfo-cache-file path) - "Return the name of the local file that contains an entry for PATH." - (string-append %narinfo-cache-directory "/" - (store-path-hash-part path))) - -(define (cached-narinfo path) - "Check locally if we have valid info about PATH. Return two values: a -Boolean indicating whether we have valid cached info, and that info, which may -be either #f (when PATH is unavailable) or the narinfo for PATH." - (define now - (current-time time-monotonic)) - - (define cache-file - (narinfo-cache-file path)) - - (catch 'system-error - (lambda () - (call-with-input-file cache-file - (lambda (p) - (match (read p) - (('narinfo ('version 1) - ('cache-uri cache-uri) - ('date date) ('value #f)) - ;; A cached negative lookup. - (if (obsolete? date now %narinfo-negative-ttl) - (values #f #f) - (values #t #f))) - (('narinfo ('version 1) - ('cache-uri cache-uri) - ('date date) ('value value)) - ;; A cached positive lookup - (if (obsolete? date now %narinfo-ttl) - (values #f #f) - (values #t (string->narinfo value cache-uri)))) - (('narinfo ('version v) _ ...) - (values #f #f)))))) - (lambda _ - (values #f #f)))) - -(define (cache-narinfo! cache path narinfo) - "Cache locally NARNIFO for PATH, which originates from CACHE. NARINFO may -be #f, in which case it indicates that PATH is unavailable at CACHE." - (define now - (current-time time-monotonic)) - - (define (cache-entry cache-uri narinfo) - `(narinfo (version 1) - (cache-uri ,cache-uri) - (date ,(time-second now)) - (value ,(and=> narinfo narinfo->string)))) - - (with-atomic-file-output (narinfo-cache-file path) - (lambda (out) - (write (cache-entry (cache-url cache) narinfo) out))) - narinfo) - -(define (narinfo-request cache-url path) - "Return an HTTP request for the narinfo of PATH at CACHE-URL." - (let ((url (string-append cache-url "/" (store-path-hash-part path) - ".narinfo"))) - (build-request (string->uri url) #:method 'GET))) - -(define (http-multiple-get base-url requests proc) - "Send all of REQUESTS to the server at BASE-URL. Call PROC for each -response, passing it the request object, the response, and a port from which -to read the response body. Return the list of results." - (let connect ((requests requests) - (result '())) - ;; (format (current-error-port) "connecting (~a requests left)..." - ;; (length requests)) - (let ((p (open-socket-for-uri base-url))) - ;; Send all of REQUESTS in a row. - (setvbuf p _IOFBF (expt 2 16)) - (for-each (cut write-request <> p) requests) - (force-output p) - - ;; Now start processing responses. - (let loop ((requests requests) - (result result)) - (match requests - (() - (reverse result)) - ((head tail ...) - (let* ((resp (read-response p)) - (body (response-body-port resp))) - ;; The server can choose to stop responding at any time, in which - ;; case we have to try again. Check whether that is the case. - (match (assq 'connection (response-headers resp)) - (('connection 'close) - (connect requests result)) ;try again - (_ - (loop tail ;keep going - (cons (proc head resp body) result))))))))))) - -(define (read-to-eof port) - "Read from PORT until EOF is reached. The data are discarded." - (dump-port port (%make-void-port "w"))) - -(define (narinfo-from-file file url) - "Attempt to read a narinfo from FILE, using URL as the cache URL. Return #f -if file doesn't exist, and the narinfo otherwise." - (catch 'system-error - (lambda () - (call-with-input-file file - (cut read-narinfo <> url))) - (lambda args - (if (= ENOENT (system-error-errno args)) - #f - (apply throw args))))) - -(define (fetch-narinfos cache paths) - "Retrieve all the narinfos for PATHS from CACHE and return them." - (define url - (cache-url cache)) - - (define update-progress! - (let ((done 0)) - (lambda () - (display #\cr (current-error-port)) - (force-output (current-error-port)) - (format (current-error-port) - (_ "updating list of substitutes from '~a'... ~5,1f%") - url (* 100. (/ done (length paths)))) - (set! done (+ 1 done))))) - - (define (handle-narinfo-response request response port) - (let ((len (response-content-length response))) - ;; Make sure to read no more than LEN bytes since subsequent bytes may - ;; belong to the next response. - (case (response-code response) - ((200) ; hit - (let ((narinfo (read-narinfo port url #:size len))) - (cache-narinfo! cache (narinfo-path narinfo) narinfo) - (update-progress!) - narinfo)) - ((404) ; failure - (let* ((path (uri-path (request-uri request))) - (hash-part (string-drop-right path 8))) ; drop ".narinfo" - (if len - (get-bytevector-n port len) - (read-to-eof port)) - (cache-narinfo! cache - (find (cut string-contains <> hash-part) paths) - #f) - (update-progress!)) - #f) - (else ; transient failure - (if len - (get-bytevector-n port len) - (read-to-eof port)) - #f)))) - - (and (string=? (cache-store-directory cache) (%store-prefix)) - (let ((uri (string->uri url))) - (case (and=> uri uri-scheme) - ((http) - (let ((requests (map (cut narinfo-request url <>) paths))) - (update-progress!) - (let ((result (http-multiple-get url requests - handle-narinfo-response))) - (newline (current-error-port)) - result))) - ((file #f) - (let* ((base (string-append (uri-path uri) "/")) - (files (map (compose (cut string-append base <> ".narinfo") - store-path-hash-part) - paths))) - (filter-map (cut narinfo-from-file <> url) files))) - (else - (leave (_ "~s: unsupported server URI scheme~%") - (if uri (uri-scheme uri) url))))))) - -(define (lookup-narinfos cache paths) - "Return the narinfos for PATHS, invoking the server at CACHE when no -information is available locally." - (let-values (((cached missing) - (fold2 (lambda (path cached missing) - (let-values (((valid? value) - (cached-narinfo path))) - (if valid? - (values (cons value cached) missing) - (values cached (cons path missing))))) - '() - '() - paths))) - (if (null? missing) - cached - (let* ((cache (force cache)) - (missing (if cache - (fetch-narinfos cache missing) - '()))) - (append cached missing))))) - -(define (lookup-narinfo cache path) - "Return the narinfo for PATH in CACHE, or #f when no substitute for PATH was -found." - (match (lookup-narinfos cache (list path)) - ((answer) answer))) - -(define (remove-expired-cached-narinfos) - "Remove expired narinfo entries from the cache. The sole purpose of this -function is to make sure `%narinfo-cache-directory' doesn't grow -indefinitely." - (define now - (current-time time-monotonic)) - - (define (expired? file) - (catch 'system-error - (lambda () - (call-with-input-file file - (lambda (port) - (match (read port) - (('narinfo ('version 1) ('cache-uri _) ('date date) - ('value #f)) - (obsolete? date now %narinfo-negative-ttl)) - (('narinfo ('version 1) ('cache-uri _) ('date date) - ('value _)) - (obsolete? date now %narinfo-ttl)) - (_ #t))))) - (lambda args - ;; FILE may have been deleted. - #t))) - - (for-each (lambda (file) - (let ((file (string-append %narinfo-cache-directory - "/" file))) - (when (expired? file) - ;; Wrap in `false-if-exception' because FILE might have been - ;; deleted in the meantime (TOCTTOU). - (false-if-exception (delete-file file))))) - (scandir %narinfo-cache-directory - (lambda (file) - (= (string-length file) 32))))) - -(define (maybe-remove-expired-cached-narinfo) - "Remove expired narinfo entries from the cache if deemed necessary." - (define now - (current-time time-monotonic)) - - (define expiry-file - (string-append %narinfo-cache-directory "/last-expiry-cleanup")) - - (define last-expiry-date - (or (false-if-exception - (call-with-input-file expiry-file read)) - 0)) - - (when (obsolete? last-expiry-date now %narinfo-expired-cache-entry-removal-delay) - (remove-expired-cached-narinfos) - (call-with-output-file expiry-file - (cute write (time-second now) <>)))) - -(define (progress-report-port report-progress port) - "Return a port that calls REPORT-PROGRESS every time something is read from -PORT. REPORT-PROGRESS is a two-argument procedure such as that returned by -`progress-proc'." - (define total 0) - (define (read! bv start count) - (let ((n (match (get-bytevector-n! port bv start count) - ((? eof-object?) 0) - (x x)))) - (set! total (+ total n)) - (report-progress total (const n)) - ;; XXX: We're not in control, so we always return anyway. - n)) - - ;; Since `http-fetch' in Guile 2.0.5 returns all the data once it's done, - ;; don't pretend to report any progress in that case. - (if (guile-version>? "2.0.5") - (make-custom-binary-input-port "progress-port-proc" - read! #f #f - (cut close-port port)) - (begin - (format (current-error-port) (_ "Downloading, please wait...~%")) - (format (current-error-port) - (_ "(Please consider upgrading Guile to get proper progress report.)~%")) - port))) - -(define-syntax with-networking - (syntax-rules () - "Catch DNS lookup errors and gracefully exit." - ;; Note: no attempt is made to catch other networking errors, because DNS - ;; lookup errors are typically the first one, and because other errors are - ;; a subset of `system-error', which is harder to filter. - ((_ exp ...) - (catch 'getaddrinfo-error - (lambda () exp ...) - (lambda (key error) - (leave (_ "host name lookup error: ~a~%") - (gai-strerror error))))))) - - -;;; -;;; Help. -;;; - -(define (show-help) - (display (_ "Usage: guix substitute-binary [OPTION]... -Internal tool to substitute a pre-built binary to a local build.\n")) - (display (_ " - --query report on the availability of substitutes for the - store file names passed on the standard input")) - (display (_ " - --substitute STORE-FILE DESTINATION - download STORE-FILE and store it as a Nar in file - DESTINATION")) - (newline) - (display (_ " - -h, --help display this help and exit")) - (display (_ " - -V, --version display version information and exit")) - (newline) - (show-bug-report-information)) - - - -;;; -;;; Entry point. -;;; - -(define (check-acl-initialized) - "Warn if the ACL is uninitialized." - (define (singleton? acl) - ;; True if ACL contains just the user's public key. - (and (file-exists? %public-key-file) - (let ((key (call-with-input-file %public-key-file - (compose string->canonical-sexp - get-string-all)))) - (match acl - ((thing) - (equal? (canonical-sexp->string thing) - (canonical-sexp->string key))) - (_ - #f))))) - - (let ((acl (acl->public-keys (current-acl)))) - (when (or (null? acl) (singleton? acl)) - (warning (_ "ACL for archive imports seems to be uninitialized, \ -substitutes may be unavailable\n"))))) - -(define (daemon-options) - "Return a list of name/value pairs denoting build daemon options." - (define %not-newline - (char-set-complement (char-set #\newline))) - - (match (getenv "_NIX_OPTIONS") - (#f ;should not happen when called by the daemon - '()) - (newline-separated - ;; Here we get something of the form "OPTION1=VALUE1\nOPTION2=VALUE2\n". - (filter-map (lambda (option=value) - (match (string-index option=value #\=) - (#f ;invalid option setting - #f) - (equal-sign - (cons (string-take option=value equal-sign) - (string-drop option=value (+ 1 equal-sign)))))) - (string-tokenize newline-separated %not-newline))))) - -(define (find-daemon-option option) - "Return the value of build daemon option OPTION, or #f if it could not be -found." - (assoc-ref (daemon-options) option)) - -(define %cache-url - (match (and=> ;; TODO: Uncomment the following lines when multiple - ;; substitute sources are supported. - ;; (find-daemon-option "untrusted-substitute-urls") ;client - ;; " " - (find-daemon-option "substitute-urls") ;admin - string-tokenize) - ((url) - url) - ((head tail ..1) - ;; Currently we don't handle multiple substitute URLs. - (warning (_ "these substitute URLs will not be used:~{ ~a~}~%") - tail) - head) - (#f - ;; This can only happen when this script is not invoked by the - ;; daemon. - "http://hydra.gnu.org"))) - -(define (guix-substitute-binary . args) - "Implement the build daemon's substituter protocol." - (mkdir-p %narinfo-cache-directory) - (maybe-remove-expired-cached-narinfo) - (check-acl-initialized) - - ;; Starting from commit 22144afa in Nix, we are allowed to bail out directly - ;; when we know we cannot substitute, but we must emit a newline on stdout - ;; when everything is alright. - (let ((uri (string->uri %cache-url))) - (case (uri-scheme uri) - ((http) - ;; Exit gracefully if there's no network access. - (let ((host (uri-host uri))) - (catch 'getaddrinfo-error - (lambda () - (getaddrinfo host)) - (lambda (key error) - (warning (_ "failed to look up host '~a' (~a), \ -substituter disabled~%") - host (gai-strerror error)) - (exit 0))))) - (else #t))) - - ;; Say hello (see above.) - (newline) - (force-output (current-output-port)) - - (with-networking - (with-error-handling ; for signature errors - (match args - (("--query") - (let ((cache (open-cache* %cache-url)) - (acl (current-acl))) - (define (valid? obj) - (and (narinfo? obj) (valid-narinfo? obj acl))) - - (let loop ((command (read-line))) - (or (eof-object? command) - (begin - (match (string-tokenize command) - (("have" paths ..1) - ;; Return the subset of PATHS available in CACHE. - (let ((substitutable - (if cache - (lookup-narinfos cache paths) - '()))) - (for-each (lambda (narinfo) - (format #t "~a~%" (narinfo-path narinfo))) - (filter valid? substitutable)) - (newline))) - (("info" paths ..1) - ;; Reply info about PATHS if it's in CACHE. - (let ((substitutable - (if cache - (lookup-narinfos cache paths) - '()))) - (for-each (lambda (narinfo) - (format #t "~a\n~a\n~a\n" - (narinfo-path narinfo) - (or (and=> (narinfo-deriver narinfo) - (cute string-append - (%store-prefix) "/" - <>)) - "") - (length (narinfo-references narinfo))) - (for-each (cute format #t "~a/~a~%" - (%store-prefix) <>) - (narinfo-references narinfo)) - (format #t "~a\n~a\n" - (or (narinfo-file-size narinfo) 0) - (or (narinfo-size narinfo) 0))) - (filter valid? substitutable)) - (newline))) - (wtf - (error "unknown `--query' command" wtf))) - (loop (read-line))))))) - (("--substitute" store-path destination) - ;; Download STORE-PATH and add store it as a Nar in file DESTINATION. - (let* ((cache (open-cache* %cache-url)) - (narinfo (lookup-narinfo cache store-path)) - (uri (narinfo-uri narinfo))) - ;; Make sure it is signed and everything. - (assert-valid-narinfo narinfo) - - ;; Tell the daemon what the expected hash of the Nar itself is. - (format #t "~a~%" (narinfo-hash narinfo)) - - (format (current-error-port) "downloading `~a'~:[~*~; (~,1f MiB installed)~]...~%" - store-path - - ;; Use the Nar size as an estimate of the installed size. - (narinfo-size narinfo) - (and=> (narinfo-size narinfo) - (cute / <> (expt 2. 20)))) - (let*-values (((raw download-size) - ;; Note that Hydra currently generates Nars on the fly - ;; and doesn't specify a Content-Length, so - ;; DOWNLOAD-SIZE is #f in practice. - (fetch uri #:buffered? #f #:timeout? #f)) - ((progress) - (let* ((comp (narinfo-compression narinfo)) - (dl-size (or download-size - (and (equal? comp "none") - (narinfo-size narinfo)))) - (progress (progress-proc (uri-abbreviation uri) - dl-size - (current-error-port)))) - (progress-report-port progress raw))) - ((input pids) - (decompressed-port (and=> (narinfo-compression narinfo) - string->symbol) - progress))) - ;; Unpack the Nar at INPUT into DESTINATION. - (restore-file input destination) - - ;; Skip a line after what 'progress-proc' printed. - (newline (current-error-port)) - - (every (compose zero? cdr waitpid) pids)))) - (("--version") - (show-version-and-exit "guix substitute-binary")) - (("--help") - (show-help)) - (opts - (leave (_ "~a: unrecognized options~%") opts)))))) - - -;;; Local Variables: -;;; eval: (put 'with-timeout 'scheme-indent-function 1) -;;; End: - -;;; substitute-binary.scm ends here diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm new file mode 100755 index 0000000000..e99c29945c --- /dev/null +++ b/guix/scripts/substitute.scm @@ -0,0 +1,896 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès +;;; Copyright © 2014 Nikita Karetnikov +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (guix scripts substitute) + #:use-module (guix ui) + #:use-module (guix store) + #:use-module (guix utils) + #:use-module (guix config) + #:use-module (guix records) + #:use-module (guix serialization) + #:use-module (guix hash) + #:use-module (guix base64) + #:use-module (guix pk-crypto) + #:use-module (guix pki) + #:use-module ((guix build utils) #:select (mkdir-p dump-port)) + #:use-module ((guix build download) + #:select (progress-proc uri-abbreviation)) + #:use-module (ice-9 rdelim) + #:use-module (ice-9 regex) + #:use-module (ice-9 match) + #:use-module (ice-9 format) + #:use-module (ice-9 ftw) + #:use-module (ice-9 binary-ports) + #:use-module (rnrs io ports) + #:use-module (rnrs bytevectors) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-9) + #:use-module (srfi srfi-11) + #:use-module (srfi srfi-19) + #:use-module (srfi srfi-26) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) + #:use-module (web uri) + #:use-module (web request) + #:use-module (web response) + #:use-module (guix http-client) + #:export (narinfo-signature->canonical-sexp + read-narinfo + write-narinfo + guix-substitute)) + +;;; Comment: +;;; +;;; This is the "binary substituter". It is invoked by the daemon do check +;;; for the existence of available "substitutes" (pre-built binaries), and to +;;; actually use them as a substitute to building things locally. +;;; +;;; If possible, substitute a binary for the requested store path, using a Nix +;;; "binary cache". This program implements the Nix "substituter" protocol. +;;; +;;; Code: + +(define %narinfo-cache-directory + ;; A local cache of narinfos, to avoid going to the network. + (or (and=> (getenv "XDG_CACHE_HOME") + (cut string-append <> "/guix/substitute-binary")) + (string-append %state-directory "/substitute-binary/cache"))) + +(define %allow-unauthenticated-substitutes? + ;; Whether to allow unchecked substitutes. This is useful for testing + ;; purposes, and should be avoided otherwise. + (and (and=> (getenv "GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES") + (cut string-ci=? <> "yes")) + (begin + (warning (_ "authentication and authorization of substitutes \ +disabled!~%")) + #t))) + +(define %narinfo-ttl + ;; Number of seconds during which cached narinfo lookups are considered + ;; valid. + (* 24 3600)) + +(define %narinfo-negative-ttl + ;; Likewise, but for negative lookups---i.e., cached lookup failures. + (* 3 3600)) + +(define %narinfo-expired-cache-entry-removal-delay + ;; How often we want to remove files corresponding to expired cache entries. + (* 7 24 3600)) + +(define fields->alist + ;; The narinfo format is really just like recutils. + recutils->alist) + +(define %fetch-timeout + ;; Number of seconds after which networking is considered "slow". + 5) + +(define %random-state + (seed->random-state (+ (ash (cdr (gettimeofday)) 32) (getpid)))) + +(define-syntax-rule (with-timeout duration handler body ...) + "Run BODY; when DURATION seconds have expired, call HANDLER, and run BODY +again." + (begin + (sigaction SIGALRM + (lambda (signum) + (sigaction SIGALRM SIG_DFL) + handler)) + (alarm duration) + (call-with-values + (lambda () + (let try () + (catch 'system-error + (lambda () + body ...) + (lambda args + ;; Before Guile v2.0.9-39-gfe51c7b, the SIGALRM triggers EINTR + ;; because of the bug at + ;; . + ;; When that happens, try again. Note: SA_RESTART cannot be + ;; used because of . + (if (= EINTR (system-error-errno args)) + (begin + ;; Wait a little to avoid bursts. + (usleep (random 3000000 %random-state)) + (try)) + (apply throw args)))))) + (lambda result + (alarm 0) + (sigaction SIGALRM SIG_DFL) + (apply values result))))) + +(define* (fetch uri #:key (buffered? #t) (timeout? #t) (quiet-404? #f)) + "Return a binary input port to URI and the number of bytes it's expected to +provide. If QUIET-404? is true, HTTP 404 error conditions are passed through +to the caller without emitting an error message." + (case (uri-scheme uri) + ((file) + (let ((port (open-file (uri-path uri) + (if buffered? "rb" "r0b")))) + (values port (stat:size (stat port))))) + ((http) + (guard (c ((http-get-error? c) + (let ((code (http-get-error-code c))) + (if (and (= code 404) quiet-404?) + (raise c) + (leave (_ "download from '~a' failed: ~a, ~s~%") + (uri->string (http-get-error-uri c)) + code (http-get-error-reason c)))))) + ;; On Guile 2.0.5, `http-fetch' fetches the whole thing at once. So + ;; honor TIMEOUT? to disable the timeout when fetching a nar. + ;; + ;; Test this with: + ;; sudo tc qdisc add dev eth0 root netem delay 1500ms + ;; and then cancel with: + ;; sudo tc qdisc del dev eth0 root + (let ((port #f)) + (with-timeout (if (or timeout? (guile-version>? "2.0.5")) + %fetch-timeout + 0) + (begin + (warning (_ "while fetching ~a: server is somewhat slow~%") + (uri->string uri)) + (warning (_ "try `--no-substitutes' if the problem persists~%")) + + ;; Before Guile v2.0.9-39-gfe51c7b, EINTR was reported to the user, + ;; and thus PORT had to be closed and re-opened. This is not the + ;; case afterward. + (unless (or (guile-version>? "2.0.9") + (version>? (version) "2.0.9.39")) + (when port + (close-port port)))) + (begin + (when (or (not port) (port-closed? port)) + (set! port (open-socket-for-uri uri #:buffered? buffered?))) + (http-fetch uri #:text? #f #:port port)))))))) + +(define-record-type + (%make-cache url store-directory wants-mass-query?) + cache? + (url cache-url) + (store-directory cache-store-directory) + (wants-mass-query? cache-wants-mass-query?)) + +(define (open-cache url) + "Open the binary cache at URL. Return a object on success, or #f on +failure." + (define (download-cache-info url) + ;; Download the `nix-cache-info' from URL, and return its contents as an + ;; list of key/value pairs. + (and=> (false-if-exception (fetch (string->uri url))) + fields->alist)) + + (and=> (download-cache-info (string-append url "/nix-cache-info")) + (lambda (properties) + (alist->record properties + (cut %make-cache url <...>) + '("StoreDir" "WantMassQuery"))))) + +(define-syntax-rule (open-cache* url) + "Delayed variant of 'open-cache' that also lets the user know that they're +gonna have to wait." + (delay (begin + (format (current-error-port) + (_ "updating list of substitutes from '~a'...\r") + url) + (open-cache url)))) + +(define-record-type + (%make-narinfo path uri uri-base compression file-hash file-size nar-hash nar-size + references deriver system signature contents) + narinfo? + (path narinfo-path) + (uri narinfo-uri) + (uri-base narinfo-uri-base) ; URI of the cache it originates from + (compression narinfo-compression) + (file-hash narinfo-file-hash) + (file-size narinfo-file-size) + (nar-hash narinfo-hash) + (nar-size narinfo-size) + (references narinfo-references) + (deriver narinfo-deriver) + (system narinfo-system) + (signature narinfo-signature) ; canonical sexp + ;; The original contents of a narinfo file. This field is needed because we + ;; want to preserve the exact textual representation for verification purposes. + ;; See + ;; for more information. + (contents narinfo-contents)) + +(define (narinfo-signature->canonical-sexp str) + "Return the value of a narinfo's 'Signature' field as a canonical sexp." + (match (string-split str #\;) + ((version _ sig) + (let ((maybe-number (string->number version))) + (cond ((not (number? maybe-number)) + (leave (_ "signature version must be a number: ~s~%") + version)) + ;; Currently, there are no other versions. + ((not (= 1 maybe-number)) + (leave (_ "unsupported signature version: ~a~%") + maybe-number)) + (else + (let ((signature (utf8->string (base64-decode sig)))) + (catch 'gcry-error + (lambda () + (string->canonical-sexp signature)) + (lambda (key proc err) + (leave (_ "signature is not a valid \ +s-expression: ~s~%") + signature)))))))) + (x + (leave (_ "invalid format of the signature field: ~a~%") x)))) + +(define (narinfo-maker str cache-url) + "Return a narinfo constructor for narinfos originating from CACHE-URL. STR +must contain the original contents of a narinfo file." + (lambda (path url compression file-hash file-size nar-hash nar-size + references deriver system signature) + "Return a new object." + (%make-narinfo path + ;; Handle the case where URL is a relative URL. + (or (string->uri url) + (string->uri (string-append cache-url "/" url))) + cache-url + + compression file-hash + (and=> file-size string->number) + nar-hash + (and=> nar-size string->number) + (string-tokenize references) + (match deriver + ((or #f "") #f) + (_ deriver)) + system + (false-if-exception + (and=> signature narinfo-signature->canonical-sexp)) + str))) + +(define* (assert-valid-signature narinfo signature hash + #:optional (acl (current-acl))) + "Bail out if SIGNATURE, a canonical sexp representing the signature of +NARINFO, doesn't match HASH, a bytevector containing the hash of NARINFO." + (let ((uri (uri->string (narinfo-uri narinfo)))) + (signature-case (signature hash acl) + (valid-signature #t) + (invalid-signature + (leave (_ "invalid signature for '~a'~%") uri)) + (hash-mismatch + (leave (_ "hash mismatch for '~a'~%") uri)) + (unauthorized-key + (leave (_ "'~a' is signed with an unauthorized key~%") uri)) + (corrupt-signature + (leave (_ "signature on '~a' is corrupt~%") uri))))) + +(define* (read-narinfo port #:optional url + #:key size) + "Read a narinfo from PORT. If URL is true, it must be a string used to +build full URIs from relative URIs found while reading PORT. When SIZE is +true, read at most SIZE bytes from PORT; otherwise, read as much as possible. + +No authentication and authorization checks are performed here!" + (let ((str (utf8->string (if size + (get-bytevector-n port size) + (get-bytevector-all port))))) + (alist->record (call-with-input-string str fields->alist) + (narinfo-maker str url) + '("StorePath" "URL" "Compression" + "FileHash" "FileSize" "NarHash" "NarSize" + "References" "Deriver" "System" + "Signature")))) + +(define (narinfo-sha256 narinfo) + "Return the sha256 hash of NARINFO as a bytevector, or #f if NARINFO lacks a +'Signature' field." + (let ((contents (narinfo-contents narinfo))) + (match (string-contains contents "Signature:") + (#f #f) + (index + (let ((above-signature (string-take contents index))) + (sha256 (string->utf8 above-signature))))))) + +(define* (assert-valid-narinfo narinfo + #:optional (acl (current-acl)) + #:key (verbose? #t)) + "Raise an exception if NARINFO lacks a signature, has an invalid signature, +or is signed by an unauthorized key." + (let ((hash (narinfo-sha256 narinfo))) + (if (not hash) + (if %allow-unauthenticated-substitutes? + narinfo + (leave (_ "substitute at '~a' lacks a signature~%") + (uri->string (narinfo-uri narinfo)))) + (let ((signature (narinfo-signature narinfo))) + (unless %allow-unauthenticated-substitutes? + (assert-valid-signature narinfo signature hash acl) + (when verbose? + (format (current-error-port) + "found valid signature for '~a', from '~a'~%" + (narinfo-path narinfo) + (uri->string (narinfo-uri narinfo))))) + narinfo)))) + +(define* (valid-narinfo? narinfo #:optional (acl (current-acl))) + "Return #t if NARINFO's signature is not valid." + (or %allow-unauthenticated-substitutes? + (let ((hash (narinfo-sha256 narinfo)) + (signature (narinfo-signature narinfo))) + (and hash signature + (signature-case (signature hash acl) + (valid-signature #t) + (else #f)))))) + +(define (write-narinfo narinfo port) + "Write NARINFO to PORT." + (put-bytevector port (string->utf8 (narinfo-contents narinfo)))) + +(define (narinfo->string narinfo) + "Return the external representation of NARINFO." + (call-with-output-string (cut write-narinfo narinfo <>))) + +(define (string->narinfo str cache-uri) + "Return the narinfo represented by STR. Assume CACHE-URI as the base URI of +the cache STR originates form." + (call-with-input-string str (cut read-narinfo <> cache-uri))) + +(define (obsolete? date now ttl) + "Return #t if DATE is obsolete compared to NOW + TTL seconds." + (time>? (subtract-duration now (make-time time-duration 0 ttl)) + (make-time time-monotonic 0 date))) + + +(define (narinfo-cache-file path) + "Return the name of the local file that contains an entry for PATH." + (string-append %narinfo-cache-directory "/" + (store-path-hash-part path))) + +(define (cached-narinfo path) + "Check locally if we have valid info about PATH. Return two values: a +Boolean indicating whether we have valid cached info, and that info, which may +be either #f (when PATH is unavailable) or the narinfo for PATH." + (define now + (current-time time-monotonic)) + + (define cache-file + (narinfo-cache-file path)) + + (catch 'system-error + (lambda () + (call-with-input-file cache-file + (lambda (p) + (match (read p) + (('narinfo ('version 1) + ('cache-uri cache-uri) + ('date date) ('value #f)) + ;; A cached negative lookup. + (if (obsolete? date now %narinfo-negative-ttl) + (values #f #f) + (values #t #f))) + (('narinfo ('version 1) + ('cache-uri cache-uri) + ('date date) ('value value)) + ;; A cached positive lookup + (if (obsolete? date now %narinfo-ttl) + (values #f #f) + (values #t (string->narinfo value cache-uri)))) + (('narinfo ('version v) _ ...) + (values #f #f)))))) + (lambda _ + (values #f #f)))) + +(define (cache-narinfo! cache path narinfo) + "Cache locally NARNIFO for PATH, which originates from CACHE. NARINFO may +be #f, in which case it indicates that PATH is unavailable at CACHE." + (define now + (current-time time-monotonic)) + + (define (cache-entry cache-uri narinfo) + `(narinfo (version 1) + (cache-uri ,cache-uri) + (date ,(time-second now)) + (value ,(and=> narinfo narinfo->string)))) + + (with-atomic-file-output (narinfo-cache-file path) + (lambda (out) + (write (cache-entry (cache-url cache) narinfo) out))) + narinfo) + +(define (narinfo-request cache-url path) + "Return an HTTP request for the narinfo of PATH at CACHE-URL." + (let ((url (string-append cache-url "/" (store-path-hash-part path) + ".narinfo"))) + (build-request (string->uri url) #:method 'GET))) + +(define (http-multiple-get base-url requests proc) + "Send all of REQUESTS to the server at BASE-URL. Call PROC for each +response, passing it the request object, the response, and a port from which +to read the response body. Return the list of results." + (let connect ((requests requests) + (result '())) + ;; (format (current-error-port) "connecting (~a requests left)..." + ;; (length requests)) + (let ((p (open-socket-for-uri base-url))) + ;; Send all of REQUESTS in a row. + (setvbuf p _IOFBF (expt 2 16)) + (for-each (cut write-request <> p) requests) + (force-output p) + + ;; Now start processing responses. + (let loop ((requests requests) + (result result)) + (match requests + (() + (reverse result)) + ((head tail ...) + (let* ((resp (read-response p)) + (body (response-body-port resp))) + ;; The server can choose to stop responding at any time, in which + ;; case we have to try again. Check whether that is the case. + (match (assq 'connection (response-headers resp)) + (('connection 'close) + (connect requests result)) ;try again + (_ + (loop tail ;keep going + (cons (proc head resp body) result))))))))))) + +(define (read-to-eof port) + "Read from PORT until EOF is reached. The data are discarded." + (dump-port port (%make-void-port "w"))) + +(define (narinfo-from-file file url) + "Attempt to read a narinfo from FILE, using URL as the cache URL. Return #f +if file doesn't exist, and the narinfo otherwise." + (catch 'system-error + (lambda () + (call-with-input-file file + (cut read-narinfo <> url))) + (lambda args + (if (= ENOENT (system-error-errno args)) + #f + (apply throw args))))) + +(define (fetch-narinfos cache paths) + "Retrieve all the narinfos for PATHS from CACHE and return them." + (define url + (cache-url cache)) + + (define update-progress! + (let ((done 0)) + (lambda () + (display #\cr (current-error-port)) + (force-output (current-error-port)) + (format (current-error-port) + (_ "updating list of substitutes from '~a'... ~5,1f%") + url (* 100. (/ done (length paths)))) + (set! done (+ 1 done))))) + + (define (handle-narinfo-response request response port) + (let ((len (response-content-length response))) + ;; Make sure to read no more than LEN bytes since subsequent bytes may + ;; belong to the next response. + (case (response-code response) + ((200) ; hit + (let ((narinfo (read-narinfo port url #:size len))) + (cache-narinfo! cache (narinfo-path narinfo) narinfo) + (update-progress!) + narinfo)) + ((404) ; failure + (let* ((path (uri-path (request-uri request))) + (hash-part (string-drop-right path 8))) ; drop ".narinfo" + (if len + (get-bytevector-n port len) + (read-to-eof port)) + (cache-narinfo! cache + (find (cut string-contains <> hash-part) paths) + #f) + (update-progress!)) + #f) + (else ; transient failure + (if len + (get-bytevector-n port len) + (read-to-eof port)) + #f)))) + + (and (string=? (cache-store-directory cache) (%store-prefix)) + (let ((uri (string->uri url))) + (case (and=> uri uri-scheme) + ((http) + (let ((requests (map (cut narinfo-request url <>) paths))) + (update-progress!) + (let ((result (http-multiple-get url requests + handle-narinfo-response))) + (newline (current-error-port)) + result))) + ((file #f) + (let* ((base (string-append (uri-path uri) "/")) + (files (map (compose (cut string-append base <> ".narinfo") + store-path-hash-part) + paths))) + (filter-map (cut narinfo-from-file <> url) files))) + (else + (leave (_ "~s: unsupported server URI scheme~%") + (if uri (uri-scheme uri) url))))))) + +(define (lookup-narinfos cache paths) + "Return the narinfos for PATHS, invoking the server at CACHE when no +information is available locally." + (let-values (((cached missing) + (fold2 (lambda (path cached missing) + (let-values (((valid? value) + (cached-narinfo path))) + (if valid? + (values (cons value cached) missing) + (values cached (cons path missing))))) + '() + '() + paths))) + (if (null? missing) + cached + (let* ((cache (force cache)) + (missing (if cache + (fetch-narinfos cache missing) + '()))) + (append cached missing))))) + +(define (lookup-narinfo cache path) + "Return the narinfo for PATH in CACHE, or #f when no substitute for PATH was +found." + (match (lookup-narinfos cache (list path)) + ((answer) answer))) + +(define (remove-expired-cached-narinfos) + "Remove expired narinfo entries from the cache. The sole purpose of this +function is to make sure `%narinfo-cache-directory' doesn't grow +indefinitely." + (define now + (current-time time-monotonic)) + + (define (expired? file) + (catch 'system-error + (lambda () + (call-with-input-file file + (lambda (port) + (match (read port) + (('narinfo ('version 1) ('cache-uri _) ('date date) + ('value #f)) + (obsolete? date now %narinfo-negative-ttl)) + (('narinfo ('version 1) ('cache-uri _) ('date date) + ('value _)) + (obsolete? date now %narinfo-ttl)) + (_ #t))))) + (lambda args + ;; FILE may have been deleted. + #t))) + + (for-each (lambda (file) + (let ((file (string-append %narinfo-cache-directory + "/" file))) + (when (expired? file) + ;; Wrap in `false-if-exception' because FILE might have been + ;; deleted in the meantime (TOCTTOU). + (false-if-exception (delete-file file))))) + (scandir %narinfo-cache-directory + (lambda (file) + (= (string-length file) 32))))) + +(define (maybe-remove-expired-cached-narinfo) + "Remove expired narinfo entries from the cache if deemed necessary." + (define now + (current-time time-monotonic)) + + (define expiry-file + (string-append %narinfo-cache-directory "/last-expiry-cleanup")) + + (define last-expiry-date + (or (false-if-exception + (call-with-input-file expiry-file read)) + 0)) + + (when (obsolete? last-expiry-date now %narinfo-expired-cache-entry-removal-delay) + (remove-expired-cached-narinfos) + (call-with-output-file expiry-file + (cute write (time-second now) <>)))) + +(define (progress-report-port report-progress port) + "Return a port that calls REPORT-PROGRESS every time something is read from +PORT. REPORT-PROGRESS is a two-argument procedure such as that returned by +`progress-proc'." + (define total 0) + (define (read! bv start count) + (let ((n (match (get-bytevector-n! port bv start count) + ((? eof-object?) 0) + (x x)))) + (set! total (+ total n)) + (report-progress total (const n)) + ;; XXX: We're not in control, so we always return anyway. + n)) + + ;; Since `http-fetch' in Guile 2.0.5 returns all the data once it's done, + ;; don't pretend to report any progress in that case. + (if (guile-version>? "2.0.5") + (make-custom-binary-input-port "progress-port-proc" + read! #f #f + (cut close-port port)) + (begin + (format (current-error-port) (_ "Downloading, please wait...~%")) + (format (current-error-port) + (_ "(Please consider upgrading Guile to get proper progress report.)~%")) + port))) + +(define-syntax with-networking + (syntax-rules () + "Catch DNS lookup errors and gracefully exit." + ;; Note: no attempt is made to catch other networking errors, because DNS + ;; lookup errors are typically the first one, and because other errors are + ;; a subset of `system-error', which is harder to filter. + ((_ exp ...) + (catch 'getaddrinfo-error + (lambda () exp ...) + (lambda (key error) + (leave (_ "host name lookup error: ~a~%") + (gai-strerror error))))))) + + +;;; +;;; Help. +;;; + +(define (show-help) + (display (_ "Usage: guix substitute [OPTION]... +Internal tool to substitute a pre-built binary to a local build.\n")) + (display (_ " + --query report on the availability of substitutes for the + store file names passed on the standard input")) + (display (_ " + --substitute STORE-FILE DESTINATION + download STORE-FILE and store it as a Nar in file + DESTINATION")) + (newline) + (display (_ " + -h, --help display this help and exit")) + (display (_ " + -V, --version display version information and exit")) + (newline) + (show-bug-report-information)) + + + +;;; +;;; Entry point. +;;; + +(define (check-acl-initialized) + "Warn if the ACL is uninitialized." + (define (singleton? acl) + ;; True if ACL contains just the user's public key. + (and (file-exists? %public-key-file) + (let ((key (call-with-input-file %public-key-file + (compose string->canonical-sexp + get-string-all)))) + (match acl + ((thing) + (equal? (canonical-sexp->string thing) + (canonical-sexp->string key))) + (_ + #f))))) + + (let ((acl (acl->public-keys (current-acl)))) + (when (or (null? acl) (singleton? acl)) + (warning (_ "ACL for archive imports seems to be uninitialized, \ +substitutes may be unavailable\n"))))) + +(define (daemon-options) + "Return a list of name/value pairs denoting build daemon options." + (define %not-newline + (char-set-complement (char-set #\newline))) + + (match (getenv "_NIX_OPTIONS") + (#f ;should not happen when called by the daemon + '()) + (newline-separated + ;; Here we get something of the form "OPTION1=VALUE1\nOPTION2=VALUE2\n". + (filter-map (lambda (option=value) + (match (string-index option=value #\=) + (#f ;invalid option setting + #f) + (equal-sign + (cons (string-take option=value equal-sign) + (string-drop option=value (+ 1 equal-sign)))))) + (string-tokenize newline-separated %not-newline))))) + +(define (find-daemon-option option) + "Return the value of build daemon option OPTION, or #f if it could not be +found." + (assoc-ref (daemon-options) option)) + +(define %cache-url + (match (and=> ;; TODO: Uncomment the following lines when multiple + ;; substitute sources are supported. + ;; (find-daemon-option "untrusted-substitute-urls") ;client + ;; " " + (find-daemon-option "substitute-urls") ;admin + string-tokenize) + ((url) + url) + ((head tail ..1) + ;; Currently we don't handle multiple substitute URLs. + (warning (_ "these substitute URLs will not be used:~{ ~a~}~%") + tail) + head) + (#f + ;; This can only happen when this script is not invoked by the + ;; daemon. + "http://hydra.gnu.org"))) + +(define (guix-substitute . args) + "Implement the build daemon's substituter protocol." + (mkdir-p %narinfo-cache-directory) + (maybe-remove-expired-cached-narinfo) + (check-acl-initialized) + + ;; Starting from commit 22144afa in Nix, we are allowed to bail out directly + ;; when we know we cannot substitute, but we must emit a newline on stdout + ;; when everything is alright. + (let ((uri (string->uri %cache-url))) + (case (uri-scheme uri) + ((http) + ;; Exit gracefully if there's no network access. + (let ((host (uri-host uri))) + (catch 'getaddrinfo-error + (lambda () + (getaddrinfo host)) + (lambda (key error) + (warning (_ "failed to look up host '~a' (~a), \ +substituter disabled~%") + host (gai-strerror error)) + (exit 0))))) + (else #t))) + + ;; Say hello (see above.) + (newline) + (force-output (current-output-port)) + + (with-networking + (with-error-handling ; for signature errors + (match args + (("--query") + (let ((cache (open-cache* %cache-url)) + (acl (current-acl))) + (define (valid? obj) + (and (narinfo? obj) (valid-narinfo? obj acl))) + + (let loop ((command (read-line))) + (or (eof-object? command) + (begin + (match (string-tokenize command) + (("have" paths ..1) + ;; Return the subset of PATHS available in CACHE. + (let ((substitutable + (if cache + (lookup-narinfos cache paths) + '()))) + (for-each (lambda (narinfo) + (format #t "~a~%" (narinfo-path narinfo))) + (filter valid? substitutable)) + (newline))) + (("info" paths ..1) + ;; Reply info about PATHS if it's in CACHE. + (let ((substitutable + (if cache + (lookup-narinfos cache paths) + '()))) + (for-each (lambda (narinfo) + (format #t "~a\n~a\n~a\n" + (narinfo-path narinfo) + (or (and=> (narinfo-deriver narinfo) + (cute string-append + (%store-prefix) "/" + <>)) + "") + (length (narinfo-references narinfo))) + (for-each (cute format #t "~a/~a~%" + (%store-prefix) <>) + (narinfo-references narinfo)) + (format #t "~a\n~a\n" + (or (narinfo-file-size narinfo) 0) + (or (narinfo-size narinfo) 0))) + (filter valid? substitutable)) + (newline))) + (wtf + (error "unknown `--query' command" wtf))) + (loop (read-line))))))) + (("--substitute" store-path destination) + ;; Download STORE-PATH and add store it as a Nar in file DESTINATION. + (let* ((cache (open-cache* %cache-url)) + (narinfo (lookup-narinfo cache store-path)) + (uri (narinfo-uri narinfo))) + ;; Make sure it is signed and everything. + (assert-valid-narinfo narinfo) + + ;; Tell the daemon what the expected hash of the Nar itself is. + (format #t "~a~%" (narinfo-hash narinfo)) + + (format (current-error-port) "downloading `~a'~:[~*~; (~,1f MiB installed)~]...~%" + store-path + + ;; Use the Nar size as an estimate of the installed size. + (narinfo-size narinfo) + (and=> (narinfo-size narinfo) + (cute / <> (expt 2. 20)))) + (let*-values (((raw download-size) + ;; Note that Hydra currently generates Nars on the fly + ;; and doesn't specify a Content-Length, so + ;; DOWNLOAD-SIZE is #f in practice. + (fetch uri #:buffered? #f #:timeout? #f)) + ((progress) + (let* ((comp (narinfo-compression narinfo)) + (dl-size (or download-size + (and (equal? comp "none") + (narinfo-size narinfo)))) + (progress (progress-proc (uri-abbreviation uri) + dl-size + (current-error-port)))) + (progress-report-port progress raw))) + ((input pids) + (decompressed-port (and=> (narinfo-compression narinfo) + string->symbol) + progress))) + ;; Unpack the Nar at INPUT into DESTINATION. + (restore-file input destination) + + ;; Skip a line after what 'progress-proc' printed. + (newline (current-error-port)) + + (every (compose zero? cdr waitpid) pids)))) + (("--version") + (show-version-and-exit "guix substitute")) + (("--help") + (show-help)) + (opts + (leave (_ "~a: unrecognized options~%") opts)))))) + + +;;; Local Variables: +;;; eval: (put 'with-timeout 'scheme-indent-function 1) +;;; End: + +;;; substitute.scm ends here diff --git a/guix/tests.scm b/guix/tests.scm index 0896e842da..080ee9cc74 100644 --- a/guix/tests.scm +++ b/guix/tests.scm @@ -126,7 +126,7 @@ Deriver: ~a~%" (define* (call-with-derivation-narinfo drv thunk #:key (sha256 (make-bytevector 32 0))) "Call THUNK in a context where fake substituter data, as read by 'guix -substitute-binary', has been installed for DRV. SHA256 is the hash of the +substitute', has been installed for DRV. SHA256 is the hash of the expected output of DRV." (let* ((output (derivation->output-path drv)) (dir (%substitute-directory)) @@ -178,7 +178,7 @@ CONTENTS." (lambda () (let ((hash (call-with-input-file (string-append dir "/example.nar") port-sha256))) - ;; Create fake substituter data, to be read by `substitute-binary'. + ;; Create fake substituter data, to be read by 'guix substitute'. (call-with-derivation-narinfo drv thunk #:sha256 (or sha256 hash)))) diff --git a/guix/ui.scm b/guix/ui.scm index ae37c8e6ca..4929f93590 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -815,7 +815,7 @@ parameter of 'args-fold'." (define (show-guix-help) (define (internal? command) - (member command '("substitute-binary" "authenticate" "offload"))) + (member command '("substitute" "authenticate" "offload"))) (format #t (_ "Usage: guix COMMAND ARGS... Run COMMAND with ARGS.\n")) diff --git a/nix/scripts/substitute-binary.in b/nix/scripts/substitute-binary.in deleted file mode 100644 index 48d7bb8ff1..0000000000 --- a/nix/scripts/substitute-binary.in +++ /dev/null @@ -1,11 +0,0 @@ -#!@SHELL@ -# A shorthand for "guix substitute-binary", for use by the daemon. - -if test "x$GUIX_UNINSTALLED" = "x" -then - prefix="@prefix@" - exec_prefix="@exec_prefix@" - exec "@bindir@/guix" substitute-binary "$@" -else - exec guix substitute-binary "$@" -fi diff --git a/nix/scripts/substitute.in b/nix/scripts/substitute.in new file mode 100644 index 0000000000..5a2eeb7259 --- /dev/null +++ b/nix/scripts/substitute.in @@ -0,0 +1,11 @@ +#!@SHELL@ +# A shorthand for "guix substitute", for use by the daemon. + +if test "x$GUIX_UNINSTALLED" = "x" +then + prefix="@prefix@" + exec_prefix="@exec_prefix@" + exec "@bindir@/guix" substitute "$@" +else + exec guix substitute "$@" +fi diff --git a/pre-inst-env.in b/pre-inst-env.in index ef9a3ce3c3..fe56da6944 100644 --- a/pre-inst-env.in +++ b/pre-inst-env.in @@ -44,7 +44,7 @@ export PATH # Daemon helpers. NIX_ROOT_FINDER="$abs_top_builddir/nix/scripts/list-runtime-roots" -NIX_SUBSTITUTERS="$abs_top_builddir/nix/scripts/substitute-binary" +NIX_SUBSTITUTERS="$abs_top_builddir/nix/scripts/substitute" NIX_BUILD_HOOK="$abs_top_builddir/nix/scripts/offload" NIX_LIBEXEC_DIR="@abs_top_builddir@/nix/scripts" # for 'guix-authenticate' diff --git a/tests/store.scm b/tests/store.scm index 9ed78be085..8e929bbc4d 100644 --- a/tests/store.scm +++ b/tests/store.scm @@ -367,7 +367,7 @@ (with-store s (let* ((d (package-derivation s %bootstrap-guile (%current-system))) (o (derivation->output-path d))) - ;; Create fake substituter data, to be read by `substitute-binary'. + ;; Create fake substituter data, to be read by 'guix substitute'. (with-derivation-narinfo d ;; Remove entry from the local cache. (false-if-exception @@ -375,7 +375,7 @@ "/guix/substitute-binary/" (store-path-hash-part o)))) - ;; Make sure `substitute-binary' correctly communicates the above + ;; Make sure 'guix substitute' correctly communicates the above ;; data. (set-build-options s #:use-substitutes? #t) (and (has-substitutes? s o) @@ -439,7 +439,7 @@ (with-derivation-substitute d c (sha256 => (make-bytevector 32 0)) ;select a hash that doesn't match C - ;; Make sure we use `substitute-binary'. + ;; Make sure we use 'guix substitute'. (set-build-options s #:use-substitutes? #t #:fallback? #f) @@ -464,9 +464,9 @@ #:guile-for-build (package-derivation s %bootstrap-guile (%current-system)))) (o (derivation->output-path d))) - ;; Create fake substituter data, to be read by `substitute-binary'. + ;; Create fake substituter data, to be read by 'guix substitute'. (with-derivation-narinfo d - ;; Make sure we use `substitute-binary'. + ;; Make sure we use 'guix substitute'. (set-build-options s #:use-substitutes? #t) (and (has-substitutes? s o) (guard (c ((nix-protocol-error? c) diff --git a/tests/substitute-binary.scm b/tests/substitute-binary.scm deleted file mode 100644 index 7c1204c1ab..0000000000 --- a/tests/substitute-binary.scm +++ /dev/null @@ -1,284 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Nikita Karetnikov -;;; Copyright © 2014 Ludovic Courtès -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see . - -(define-module (test-substitute-binary) - #:use-module (guix scripts substitute-binary) - #:use-module (guix base64) - #:use-module (guix hash) - #:use-module (guix serialization) - #:use-module (guix pk-crypto) - #:use-module (guix pki) - #:use-module (guix config) - #:use-module (guix base32) - #:use-module ((guix store) #:select (%store-prefix)) - #:use-module ((guix ui) #:select (guix-warning-port)) - #:use-module ((guix build utils) #:select (delete-file-recursively)) - #:use-module (rnrs bytevectors) - #:use-module (rnrs io ports) - #:use-module (web uri) - #:use-module (ice-9 regex) - #:use-module (srfi srfi-26) - #:use-module (srfi srfi-34) - #:use-module (srfi srfi-35) - #:use-module ((srfi srfi-64) #:hide (test-error))) - -(define-syntax-rule (test-quit name error-rx exp) - "Emit a test that passes when EXP throws to 'quit' with value 1, and when -it writes to GUIX-WARNING-PORT a messages that matches ERROR-RX." - (test-equal name - '(1 #t) - (let ((error-output (open-output-string))) - (parameterize ((guix-warning-port error-output)) - (catch 'quit - (lambda () - exp - #f) - (lambda (key value) - (list value - (let ((message (get-output-string error-output))) - (->bool (string-match error-rx message)))))))))) - -(define %public-key - ;; This key is known to be in the ACL by default. - (call-with-input-file (string-append %config-directory "/signing-key.pub") - (compose string->canonical-sexp get-string-all))) - -(define %private-key - (call-with-input-file (string-append %config-directory "/signing-key.sec") - (compose string->canonical-sexp get-string-all))) - -(define* (signature-body bv #:key (public-key %public-key)) - "Return the signature of BV as the base64-encoded body of a narinfo's -'Signature' field." - (base64-encode - (string->utf8 - (canonical-sexp->string - (signature-sexp (bytevector->hash-data (sha256 bv) - #:key-type 'rsa) - %private-key - public-key))))) - -(define %wrong-public-key - (string->canonical-sexp "(public-key - (rsa - (n #00E05873AC2B168760343145918E954EE9AB73C026355693B192E01EE835261AA689E9EF46642E895BCD65C648524059FC450E4BA77A68F4C52D0E39EF0CC9359709AB6AAB153B63782201871325B0FDA19CB401CD99FD0C31A91CA9000AA90A77E82B89E036FB63BC1D3961207469B3B12468977148D376F8012BB12A4B11A8F1#) - (e #010001#) - ) - )")) - -(define* (signature-field bv-or-str - #:key (version "1") (public-key %public-key)) - "Return the 'Signature' field value of bytevector/string BV-OR-STR, using -PUBLIC-KEY as the signature's principal, and using VERSION as the signature -version identifier.." - (string-append version ";example.gnu.org;" - (signature-body (if (string? bv-or-str) - (string->utf8 bv-or-str) - bv-or-str) - #:public-key public-key))) - - - -(test-begin "substitute-binary") - -(test-quit "not a number" - "signature version" - (narinfo-signature->canonical-sexp - (signature-field "foo" #:version "not a number"))) - -(test-quit "wrong version number" - "unsupported.*version" - (narinfo-signature->canonical-sexp - (signature-field "foo" #:version "2"))) - -(test-assert "valid narinfo-signature->canonical-sexp" - (canonical-sexp? (narinfo-signature->canonical-sexp (signature-field "foo")))) - - - -(define %narinfo - ;; Skeleton of the narinfo used below. - (string-append "StorePath: " (%store-prefix) - "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo -URL: example.nar -Compression: none -NarHash: sha256:" (bytevector->nix-base32-string - (sha256 (string->utf8 "Substitutable data."))) " -NarSize: 42 -References: bar baz -Deriver: " (%store-prefix) "/foo.drv -System: mips64el-linux\n")) - -(define (call-with-narinfo narinfo thunk) - "Call THUNK in a context where $GUIX_BINARY_SUBSTITUTE_URL is populated with -a file for NARINFO." - (let ((narinfo-directory (and=> (string->uri (getenv - "GUIX_BINARY_SUBSTITUTE_URL")) - uri-path)) - (cache-directory (string-append (getenv "XDG_CACHE_HOME") - "/guix/substitute-binary/"))) - (dynamic-wind - (lambda () - (when (file-exists? cache-directory) - (delete-file-recursively cache-directory)) - (call-with-output-file (string-append narinfo-directory - "/nix-cache-info") - (lambda (port) - (format port "StoreDir: ~a\nWantMassQuery: 0\n" - (%store-prefix)))) - (call-with-output-file (string-append narinfo-directory "/" - "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" - ".narinfo") - (cut display narinfo <>)) - - ;; Prepare the nar. - (call-with-output-file - (string-append narinfo-directory "/example.out") - (cut display "Substitutable data." <>)) - (call-with-output-file - (string-append narinfo-directory "/example.nar") - (cute write-file - (string-append narinfo-directory "/example.out") <>)) - - (set! (@@ (guix scripts substitute-binary) - %allow-unauthenticated-substitutes?) - #f)) - thunk - (lambda () - (delete-file-recursively cache-directory))))) - -(define-syntax-rule (with-narinfo narinfo body ...) - (call-with-narinfo narinfo (lambda () body ...))) - -;; Transmit these options to 'guix substitute-binary'. -(set! (@@ (guix scripts substitute-binary) %cache-url) - (getenv "GUIX_BINARY_SUBSTITUTE_URL")) - -(test-equal "query narinfo without signature" - "" ; not substitutable - - (with-narinfo %narinfo - (string-trim-both - (with-output-to-string - (lambda () - (with-input-from-string (string-append "have " (%store-prefix) - "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") - (lambda () - (guix-substitute-binary "--query")))))))) - -(test-equal "query narinfo with invalid hash" - ;; The hash in the signature differs from the hash of %NARINFO. - "" - - (with-narinfo (string-append %narinfo "Signature: " - (signature-field "different body") - "\n") - (string-trim-both - (with-output-to-string - (lambda () - (with-input-from-string (string-append "have " (%store-prefix) - "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") - (lambda () - (guix-substitute-binary "--query")))))))) - -(test-equal "query narinfo signed with authorized key" - (string-append (%store-prefix) "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") - - (with-narinfo (string-append %narinfo "Signature: " - (signature-field %narinfo) - "\n") - (string-trim-both - (with-output-to-string - (lambda () - (with-input-from-string (string-append "have " (%store-prefix) - "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") - (lambda () - (guix-substitute-binary "--query")))))))) - -(test-equal "query narinfo signed with unauthorized key" - "" ; not substitutable - - (with-narinfo (string-append %narinfo "Signature: " - (signature-field - %narinfo - #:public-key %wrong-public-key) - "\n") - (string-trim-both - (with-output-to-string - (lambda () - (with-input-from-string (string-append "have " (%store-prefix) - "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") - (lambda () - (guix-substitute-binary "--query")))))))) - -(test-quit "substitute, no signature" - "lacks a signature" - (with-narinfo %narinfo - (guix-substitute-binary "--substitute" - (string-append (%store-prefix) - "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") - "foo"))) - -(test-quit "substitute, invalid hash" - "hash" - ;; The hash in the signature differs from the hash of %NARINFO. - (with-narinfo (string-append %narinfo "Signature: " - (signature-field "different body") - "\n") - (guix-substitute-binary "--substitute" - (string-append (%store-prefix) - "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") - "foo"))) - -(test-quit "substitute, unauthorized key" - "unauthorized" - (with-narinfo (string-append %narinfo "Signature: " - (signature-field - %narinfo - #:public-key %wrong-public-key) - "\n") - (guix-substitute-binary "--substitute" - (string-append (%store-prefix) - "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") - "foo"))) - -(test-equal "substitute, authorized key" - "Substitutable data." - (with-narinfo (string-append %narinfo "Signature: " - (signature-field %narinfo)) - (dynamic-wind - (const #t) - (lambda () - (guix-substitute-binary "--substitute" - (string-append (%store-prefix) - "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") - "substitute-retrieved") - (call-with-input-file "substitute-retrieved" get-string-all)) - (lambda () - (false-if-exception (delete-file "substitute-retrieved")))))) - -(test-end "substitute-binary") - - -(exit (= (test-runner-fail-count (test-runner-current)) 0)) - -;;; Local Variables: -;;; eval: (put 'with-narinfo 'scheme-indent-function 1) -;;; eval: (put 'test-quit 'scheme-indent-function 2) -;;; End: diff --git a/tests/substitute.scm b/tests/substitute.scm new file mode 100644 index 0000000000..5697592423 --- /dev/null +++ b/tests/substitute.scm @@ -0,0 +1,284 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Nikita Karetnikov +;;; Copyright © 2014, 2015 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (test-substitute) + #:use-module (guix scripts substitute) + #:use-module (guix base64) + #:use-module (guix hash) + #:use-module (guix serialization) + #:use-module (guix pk-crypto) + #:use-module (guix pki) + #:use-module (guix config) + #:use-module (guix base32) + #:use-module ((guix store) #:select (%store-prefix)) + #:use-module ((guix ui) #:select (guix-warning-port)) + #:use-module ((guix build utils) #:select (delete-file-recursively)) + #:use-module (rnrs bytevectors) + #:use-module (rnrs io ports) + #:use-module (web uri) + #:use-module (ice-9 regex) + #:use-module (srfi srfi-26) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) + #:use-module ((srfi srfi-64) #:hide (test-error))) + +(define-syntax-rule (test-quit name error-rx exp) + "Emit a test that passes when EXP throws to 'quit' with value 1, and when +it writes to GUIX-WARNING-PORT a messages that matches ERROR-RX." + (test-equal name + '(1 #t) + (let ((error-output (open-output-string))) + (parameterize ((guix-warning-port error-output)) + (catch 'quit + (lambda () + exp + #f) + (lambda (key value) + (list value + (let ((message (get-output-string error-output))) + (->bool (string-match error-rx message)))))))))) + +(define %public-key + ;; This key is known to be in the ACL by default. + (call-with-input-file (string-append %config-directory "/signing-key.pub") + (compose string->canonical-sexp get-string-all))) + +(define %private-key + (call-with-input-file (string-append %config-directory "/signing-key.sec") + (compose string->canonical-sexp get-string-all))) + +(define* (signature-body bv #:key (public-key %public-key)) + "Return the signature of BV as the base64-encoded body of a narinfo's +'Signature' field." + (base64-encode + (string->utf8 + (canonical-sexp->string + (signature-sexp (bytevector->hash-data (sha256 bv) + #:key-type 'rsa) + %private-key + public-key))))) + +(define %wrong-public-key + (string->canonical-sexp "(public-key + (rsa + (n #00E05873AC2B168760343145918E954EE9AB73C026355693B192E01EE835261AA689E9EF46642E895BCD65C648524059FC450E4BA77A68F4C52D0E39EF0CC9359709AB6AAB153B63782201871325B0FDA19CB401CD99FD0C31A91CA9000AA90A77E82B89E036FB63BC1D3961207469B3B12468977148D376F8012BB12A4B11A8F1#) + (e #010001#) + ) + )")) + +(define* (signature-field bv-or-str + #:key (version "1") (public-key %public-key)) + "Return the 'Signature' field value of bytevector/string BV-OR-STR, using +PUBLIC-KEY as the signature's principal, and using VERSION as the signature +version identifier.." + (string-append version ";example.gnu.org;" + (signature-body (if (string? bv-or-str) + (string->utf8 bv-or-str) + bv-or-str) + #:public-key public-key))) + + + +(test-begin "substitute") + +(test-quit "not a number" + "signature version" + (narinfo-signature->canonical-sexp + (signature-field "foo" #:version "not a number"))) + +(test-quit "wrong version number" + "unsupported.*version" + (narinfo-signature->canonical-sexp + (signature-field "foo" #:version "2"))) + +(test-assert "valid narinfo-signature->canonical-sexp" + (canonical-sexp? (narinfo-signature->canonical-sexp (signature-field "foo")))) + + + +(define %narinfo + ;; Skeleton of the narinfo used below. + (string-append "StorePath: " (%store-prefix) + "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo +URL: example.nar +Compression: none +NarHash: sha256:" (bytevector->nix-base32-string + (sha256 (string->utf8 "Substitutable data."))) " +NarSize: 42 +References: bar baz +Deriver: " (%store-prefix) "/foo.drv +System: mips64el-linux\n")) + +(define (call-with-narinfo narinfo thunk) + "Call THUNK in a context where $GUIX_BINARY_SUBSTITUTE_URL is populated with +a file for NARINFO." + (let ((narinfo-directory (and=> (string->uri (getenv + "GUIX_BINARY_SUBSTITUTE_URL")) + uri-path)) + (cache-directory (string-append (getenv "XDG_CACHE_HOME") + "/guix/substitute-binary/"))) + (dynamic-wind + (lambda () + (when (file-exists? cache-directory) + (delete-file-recursively cache-directory)) + (call-with-output-file (string-append narinfo-directory + "/nix-cache-info") + (lambda (port) + (format port "StoreDir: ~a\nWantMassQuery: 0\n" + (%store-prefix)))) + (call-with-output-file (string-append narinfo-directory "/" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + ".narinfo") + (cut display narinfo <>)) + + ;; Prepare the nar. + (call-with-output-file + (string-append narinfo-directory "/example.out") + (cut display "Substitutable data." <>)) + (call-with-output-file + (string-append narinfo-directory "/example.nar") + (cute write-file + (string-append narinfo-directory "/example.out") <>)) + + (set! (@@ (guix scripts substitute) + %allow-unauthenticated-substitutes?) + #f)) + thunk + (lambda () + (delete-file-recursively cache-directory))))) + +(define-syntax-rule (with-narinfo narinfo body ...) + (call-with-narinfo narinfo (lambda () body ...))) + +;; Transmit these options to 'guix substitute'. +(set! (@@ (guix scripts substitute) %cache-url) + (getenv "GUIX_BINARY_SUBSTITUTE_URL")) + +(test-equal "query narinfo without signature" + "" ; not substitutable + + (with-narinfo %narinfo + (string-trim-both + (with-output-to-string + (lambda () + (with-input-from-string (string-append "have " (%store-prefix) + "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") + (lambda () + (guix-substitute "--query")))))))) + +(test-equal "query narinfo with invalid hash" + ;; The hash in the signature differs from the hash of %NARINFO. + "" + + (with-narinfo (string-append %narinfo "Signature: " + (signature-field "different body") + "\n") + (string-trim-both + (with-output-to-string + (lambda () + (with-input-from-string (string-append "have " (%store-prefix) + "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") + (lambda () + (guix-substitute "--query")))))))) + +(test-equal "query narinfo signed with authorized key" + (string-append (%store-prefix) "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") + + (with-narinfo (string-append %narinfo "Signature: " + (signature-field %narinfo) + "\n") + (string-trim-both + (with-output-to-string + (lambda () + (with-input-from-string (string-append "have " (%store-prefix) + "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") + (lambda () + (guix-substitute "--query")))))))) + +(test-equal "query narinfo signed with unauthorized key" + "" ; not substitutable + + (with-narinfo (string-append %narinfo "Signature: " + (signature-field + %narinfo + #:public-key %wrong-public-key) + "\n") + (string-trim-both + (with-output-to-string + (lambda () + (with-input-from-string (string-append "have " (%store-prefix) + "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") + (lambda () + (guix-substitute "--query")))))))) + +(test-quit "substitute, no signature" + "lacks a signature" + (with-narinfo %narinfo + (guix-substitute "--substitute" + (string-append (%store-prefix) + "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") + "foo"))) + +(test-quit "substitute, invalid hash" + "hash" + ;; The hash in the signature differs from the hash of %NARINFO. + (with-narinfo (string-append %narinfo "Signature: " + (signature-field "different body") + "\n") + (guix-substitute "--substitute" + (string-append (%store-prefix) + "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") + "foo"))) + +(test-quit "substitute, unauthorized key" + "unauthorized" + (with-narinfo (string-append %narinfo "Signature: " + (signature-field + %narinfo + #:public-key %wrong-public-key) + "\n") + (guix-substitute "--substitute" + (string-append (%store-prefix) + "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") + "foo"))) + +(test-equal "substitute, authorized key" + "Substitutable data." + (with-narinfo (string-append %narinfo "Signature: " + (signature-field %narinfo)) + (dynamic-wind + (const #t) + (lambda () + (guix-substitute "--substitute" + (string-append (%store-prefix) + "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo") + "substitute-retrieved") + (call-with-input-file "substitute-retrieved" get-string-all)) + (lambda () + (false-if-exception (delete-file "substitute-retrieved")))))) + +(test-end "substitute") + + +(exit (= (test-runner-fail-count (test-runner-current)) 0)) + +;;; Local Variables: +;;; eval: (put 'with-narinfo 'scheme-indent-function 1) +;;; eval: (put 'test-quit 'scheme-indent-function 2) +;;; End: -- cgit v1.2.3 From 614c2188420a266ec512c9c04af3bb2ea46c4dc4 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 25 Mar 2015 10:44:19 +0100 Subject: substitute: Rename cache directory from "substitute-binary" to "substitute". * guix/scripts/substitute.scm (%narinfo-cache-directory): Change "substitute-binary" to "substitute". * tests/store.scm ("substitute query"): Likewise. * tests/substitute.scm (call-with-narinfo): Likewise. --- guix/scripts/substitute.scm | 4 ++-- tests/store.scm | 2 +- tests/substitute.scm | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index e99c29945c..adf94a7ac3 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -69,8 +69,8 @@ (define %narinfo-cache-directory ;; A local cache of narinfos, to avoid going to the network. (or (and=> (getenv "XDG_CACHE_HOME") - (cut string-append <> "/guix/substitute-binary")) - (string-append %state-directory "/substitute-binary/cache"))) + (cut string-append <> "/guix/substitute")) + (string-append %state-directory "/substitute/cache"))) (define %allow-unauthenticated-substitutes? ;; Whether to allow unchecked substitutes. This is useful for testing diff --git a/tests/store.scm b/tests/store.scm index 8e929bbc4d..f778c2086d 100644 --- a/tests/store.scm +++ b/tests/store.scm @@ -372,7 +372,7 @@ ;; Remove entry from the local cache. (false-if-exception (delete-file (string-append (getenv "XDG_CACHE_HOME") - "/guix/substitute-binary/" + "/guix/substitute/" (store-path-hash-part o)))) ;; Make sure 'guix substitute' correctly communicates the above diff --git a/tests/substitute.scm b/tests/substitute.scm index 5697592423..85698127fa 100644 --- a/tests/substitute.scm +++ b/tests/substitute.scm @@ -132,7 +132,7 @@ a file for NARINFO." "GUIX_BINARY_SUBSTITUTE_URL")) uri-path)) (cache-directory (string-append (getenv "XDG_CACHE_HOME") - "/guix/substitute-binary/"))) + "/guix/substitute/"))) (dynamic-wind (lambda () (when (file-exists? cache-directory) -- cgit v1.2.3 From 4c153a9125fa0913077b06b5ed537958ae4ca163 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 25 Mar 2015 08:20:49 -0400 Subject: gnu: icecat: Apply fixes for CVE-2015-{0817,0818} and other selected bugs. * gnu/packages/patches/icecat-CVE-2015-0817.patch, gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch, gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch, gnu/packages/patches/icecat-bug-1127780.patch, gnu/packages/patches/icecat-bug-1144991.patch, gnu/packages/patches/icecat-bug-1145870.patch, gnu/packages/patches/icecat-bug-1146339.patch: New files. * gnu-system.am (dist_patch_DATA): Add them. * gnu/packages/gnuzilla.scm (icecat): Add patches. --- gnu-system.am | 7 + gnu/packages/gnuzilla.scm | 9 +- gnu/packages/patches/icecat-CVE-2015-0817.patch | 44 ++++++ .../patches/icecat-CVE-2015-0818-pt1.patch | 67 +++++++++ .../patches/icecat-CVE-2015-0818-pt2.patch | 28 ++++ gnu/packages/patches/icecat-bug-1127780.patch | 25 ++++ gnu/packages/patches/icecat-bug-1144991.patch | 76 ++++++++++ gnu/packages/patches/icecat-bug-1145870.patch | 43 ++++++ gnu/packages/patches/icecat-bug-1146339.patch | 162 +++++++++++++++++++++ 9 files changed, 460 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/icecat-CVE-2015-0817.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch create mode 100644 gnu/packages/patches/icecat-bug-1127780.patch create mode 100644 gnu/packages/patches/icecat-bug-1144991.patch create mode 100644 gnu/packages/patches/icecat-bug-1145870.patch create mode 100644 gnu/packages/patches/icecat-bug-1146339.patch diff --git a/gnu-system.am b/gnu-system.am index 153d395b57..1f2ebdf29e 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -432,6 +432,13 @@ dist_patch_DATA = \ gnu/packages/patches/guix-test-networking.patch \ gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \ gnu/packages/patches/hop-bigloo-4.0b.patch \ + gnu/packages/patches/icecat-bug-1127780.patch \ + gnu/packages/patches/icecat-bug-1144991.patch \ + gnu/packages/patches/icecat-bug-1145870.patch \ + gnu/packages/patches/icecat-bug-1146339.patch \ + gnu/packages/patches/icecat-CVE-2015-0817.patch \ + gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch \ + gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch \ gnu/packages/patches/irrlicht-mesa-10.patch \ gnu/packages/patches/jbig2dec-ignore-testtest.patch \ gnu/packages/patches/kmod-module-directory.patch \ diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 1d450cda64..1e9deb8bff 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -224,7 +224,14 @@ standards.") version "/" name "-" version ".tar.bz2")) (sha256 (base32 - "1rr4axghaypdkrf60i1qp6dz4cd29ya02fs3vyffvp4x9kgcq2dd")))) + "1rr4axghaypdkrf60i1qp6dz4cd29ya02fs3vyffvp4x9kgcq2dd")) + (patches (map search-patch '("icecat-bug-1127780.patch" + "icecat-CVE-2015-0817.patch" + "icecat-bug-1144991.patch" + "icecat-CVE-2015-0818-pt1.patch" + "icecat-bug-1145870.patch" + "icecat-CVE-2015-0818-pt2.patch" + "icecat-bug-1146339.patch"))))) (build-system gnu-build-system) (inputs `(("alsa-lib" ,alsa-lib) diff --git a/gnu/packages/patches/icecat-CVE-2015-0817.patch b/gnu/packages/patches/icecat-CVE-2015-0817.patch new file mode 100644 index 0000000000..bb530a535d --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0817.patch @@ -0,0 +1,44 @@ +From cedbdf8290018fbef65458e9e438c72adf2c2775 Mon Sep 17 00:00:00 2001 +From: Steve Fink +Date: Thu, 19 Mar 2015 15:46:24 -0700 +Subject: [PATCH] Bug 1145255. r=luke, a=lmandel + +--- + js/src/jit/AsmJS.cpp | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +diff --git a/js/src/jit/AsmJS.cpp b/js/src/jit/AsmJS.cpp +index 302b5ab..1b8eed6 100644 +--- a/js/src/jit/AsmJS.cpp ++++ b/js/src/jit/AsmJS.cpp +@@ -14,6 +14,7 @@ + + #include "jsmath.h" + #include "jsprf.h" ++#include "jsutil.h" + #include "jsworkers.h" + #include "prmjtime.h" + +@@ -3432,9 +3433,17 @@ FoldMaskedArrayIndex(FunctionCompiler &f, ParseNode **indexExpr, int32_t *mask, + if (IsLiteralOrConstInt(f, maskNode, &mask2)) { + // Flag the access to skip the bounds check if the mask ensures that an 'out of + // bounds' access can not occur based on the current heap length constraint. +- if (mask2 == 0 || +- CountLeadingZeroes32(f.m().minHeapLength() - 1) <= CountLeadingZeroes32(mask2)) { ++ if (mask2 == 0) { + *needsBoundsCheck = NO_BOUNDS_CHECK; ++ } else { ++ uint32_t minHeap = f.m().minHeapLength(); ++ uint32_t minHeapZeroes = CountLeadingZeroes32(minHeap - 1); ++ uint32_t maskZeroes = CountLeadingZeroes32(mask2); ++ if ((minHeapZeroes < maskZeroes) || ++ (IsPowerOfTwo(minHeap) && minHeapZeroes == maskZeroes)) ++ { ++ *needsBoundsCheck = NO_BOUNDS_CHECK; ++ } + } + *mask &= mask2; + *indexExpr = indexNode; +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch b/gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch new file mode 100644 index 0000000000..5d396eed6b --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch @@ -0,0 +1,67 @@ +From 79dddb16aaa58f5b5cef49dac6d234f500af3baf Mon Sep 17 00:00:00 2001 +From: Olli Pettay +Date: Thu, 19 Mar 2015 21:53:32 -0400 +Subject: [PATCH] Bug 1144988 - Don't let other pages to load while doing + scroll-to-anchor. r=bz, a=lmandel + +--- + docshell/base/nsDocShell.cpp | 23 ++++++++++++++--------- + docshell/base/nsDocShell.h | 1 + + 2 files changed, 15 insertions(+), 9 deletions(-) + +diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp +index 887c910..14ff3f2 100644 +--- a/docshell/base/nsDocShell.cpp ++++ b/docshell/base/nsDocShell.cpp +@@ -4204,8 +4204,8 @@ nsDocShell::IsPrintingOrPP(bool aDisplayErrorDialog) + bool + nsDocShell::IsNavigationAllowed(bool aDisplayPrintErrorDialog) + { +- bool isAllowed = !IsPrintingOrPP(aDisplayPrintErrorDialog) && !mFiredUnloadEvent; +- if (!isAllowed) { ++ bool isAllowed = !IsPrintingOrPP(aDisplayPrintErrorDialog) && ++ !mFiredUnloadEvent && !mBlockNavigation; if (!isAllowed) { + return false; + } + if (!mContentViewer) { +@@ -9321,13 +9321,18 @@ nsDocShell::InternalLoad(nsIURI * aURI, + GetCurScrollPos(ScrollOrientation_X, &cx); + GetCurScrollPos(ScrollOrientation_Y, &cy); + +- // ScrollToAnchor doesn't necessarily cause us to scroll the window; +- // the function decides whether a scroll is appropriate based on the +- // arguments it receives. But even if we don't end up scrolling, +- // ScrollToAnchor performs other important tasks, such as informing +- // the presShell that we have a new hash. See bug 680257. +- rv = ScrollToAnchor(curHash, newHash, aLoadType); +- NS_ENSURE_SUCCESS(rv, rv); ++ { ++ AutoRestore scrollingToAnchor(mBlockNavigation); ++ mBlockNavigation = true; ++ ++ // ScrollToAnchor doesn't necessarily cause us to scroll the window; ++ // the function decides whether a scroll is appropriate based on the ++ // arguments it receives. But even if we don't end up scrolling, ++ // ScrollToAnchor performs other important tasks, such as informing ++ // the presShell that we have a new hash. See bug 680257. ++ rv = ScrollToAnchor(curHash, newHash, aLoadType); ++ NS_ENSURE_SUCCESS(rv, rv); ++ } + + // Reset mLoadType to its original value once we exit this block, + // because this short-circuited load might have started after a +diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h +index c191777..be353ee 100644 +--- a/docshell/base/nsDocShell.h ++++ b/docshell/base/nsDocShell.h +@@ -835,6 +835,7 @@ protected: + bool mInPrivateBrowsing; + bool mUseRemoteTabs; + bool mDeviceSizeIsPageSize; ++ bool mBlockNavigation; + + // Because scriptability depends on the mAllowJavascript values of our + // ancestors, we cache the effective scriptability and recompute it when +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch b/gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch new file mode 100644 index 0000000000..4eac5df4db --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch @@ -0,0 +1,28 @@ +From 83364c747c421b191f9d4012896a9e5a1d5223ad Mon Sep 17 00:00:00 2001 +From: Kyle Huey +Date: Fri, 20 Mar 2015 19:15:13 -0700 +Subject: [PATCH] Bug 1144988. r=bz a=lmandel + +--- + docshell/base/nsDocShell.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp +index 4cddcef..bdf88a5cf 100644 +--- a/docshell/base/nsDocShell.cpp ++++ b/docshell/base/nsDocShell.cpp +@@ -1322,9 +1322,10 @@ nsDocShell::LoadURI(nsIURI * aURI, + + // Note: we allow loads to get through here even if mFiredUnloadEvent is + // true; that case will get handled in LoadInternal or LoadHistoryEntry. +- if (IsPrintingOrPP()) { ++ if (IsPrintingOrPP() || mBlockNavigation) { + return NS_OK; // JS may not handle returning of an error code + } ++ + nsCOMPtr referrer; + nsCOMPtr postStream; + nsCOMPtr headersStream; +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-bug-1127780.patch b/gnu/packages/patches/icecat-bug-1127780.patch new file mode 100644 index 0000000000..c433616087 --- /dev/null +++ b/gnu/packages/patches/icecat-bug-1127780.patch @@ -0,0 +1,25 @@ +From cf1de3d04302841aaa05aed8364da3399cbca9b4 Mon Sep 17 00:00:00 2001 +From: Bobby Holley +Date: Tue, 17 Feb 2015 17:47:12 -0500 +Subject: [PATCH] Bug 1127780 - Add null check. r=bz, a=bkerensa + +--- + js/xpconnect/wrappers/XrayWrapper.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/js/xpconnect/wrappers/XrayWrapper.h b/js/xpconnect/wrappers/XrayWrapper.h +index ead095f1..cc8c580 100644 +--- a/js/xpconnect/wrappers/XrayWrapper.h ++++ b/js/xpconnect/wrappers/XrayWrapper.h +@@ -131,7 +131,7 @@ class XrayWrapper : public Base { + { + if (!Base::getPrototypeOf(cx, wrapper, protop)) + return false; +- if (WrapperFactory::IsXrayWrapper(protop)) ++ if (!protop || WrapperFactory::IsXrayWrapper(protop)) + return true; + + protop.set(JS_GetObjectPrototype(cx, wrapper)); +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-bug-1144991.patch b/gnu/packages/patches/icecat-bug-1144991.patch new file mode 100644 index 0000000000..5632e37eb3 --- /dev/null +++ b/gnu/packages/patches/icecat-bug-1144991.patch @@ -0,0 +1,76 @@ +From ae49ed04f54c2f78d6ba7e545e0099602a3270fa Mon Sep 17 00:00:00 2001 +From: Boris Zbarsky +Date: Thu, 19 Mar 2015 18:58:44 -0400 +Subject: [PATCH] Bug 1144991 - Be a bit more restrictive about when a + URI_IS_UI_RESOURCE source is allowed to link to a URI_IS_UI_RESOURCE URI that + doesn't have the same scheme. r=bholley, a=abillings + +--- + caps/src/nsScriptSecurityManager.cpp | 38 +++++++++++++++++++++++++----------- + 1 file changed, 27 insertions(+), 11 deletions(-) + +diff --git a/caps/src/nsScriptSecurityManager.cpp b/caps/src/nsScriptSecurityManager.cpp +index 3587358..6577b95 100644 +--- a/caps/src/nsScriptSecurityManager.cpp ++++ b/caps/src/nsScriptSecurityManager.cpp +@@ -770,12 +770,31 @@ nsScriptSecurityManager::CheckLoadURIWithPrincipal(nsIPrincipal* aPrincipal, + NS_ENSURE_SUCCESS(rv, rv); + if (hasFlags) { + if (aFlags & nsIScriptSecurityManager::ALLOW_CHROME) { ++ ++ // For now, don't change behavior for resource:// or moz-icon:// and ++ // just allow them. + if (!targetScheme.EqualsLiteral("chrome")) { +- // for now don't change behavior for resource: or moz-icon: + return NS_OK; + } + +- // allow load only if chrome package is whitelisted ++ // Allow a URI_IS_UI_RESOURCE source to link to a URI_IS_UI_RESOURCE ++ // target if ALLOW_CHROME is set. ++ // ++ // ALLOW_CHROME is a flag that we pass on all loads _except_ docshell ++ // loads (since docshell loads run the loaded content with its origin ++ // principal). So we're effectively allowing resource://, chrome://, ++ // and moz-icon:// source URIs to load resource://, chrome://, and ++ // moz-icon:// files, so long as they're not loading it as a document. ++ bool sourceIsUIResource; ++ rv = NS_URIChainHasFlags(sourceBaseURI, ++ nsIProtocolHandler::URI_IS_UI_RESOURCE, ++ &sourceIsUIResource); ++ NS_ENSURE_SUCCESS(rv, rv); ++ if (sourceIsUIResource) { ++ return NS_OK; ++ } ++ ++ // Allow the load only if the chrome package is whitelisted. + nsCOMPtr reg(do_GetService( + NS_CHROMEREGISTRY_CONTRACTID)); + if (reg) { +@@ -787,17 +806,14 @@ nsScriptSecurityManager::CheckLoadURIWithPrincipal(nsIPrincipal* aPrincipal, + } + } + +- // resource: and chrome: are equivalent, securitywise +- // That's bogus!! Fix this. But watch out for +- // the view-source stylesheet? +- bool sourceIsChrome; +- rv = NS_URIChainHasFlags(sourceBaseURI, +- nsIProtocolHandler::URI_IS_UI_RESOURCE, +- &sourceIsChrome); +- NS_ENSURE_SUCCESS(rv, rv); +- if (sourceIsChrome) { ++ // Special-case the hidden window: it's allowed to load ++ // URI_IS_UI_RESOURCE no matter what. Bug 1145470 tracks removing this. ++ nsAutoCString sourceSpec; ++ if (NS_SUCCEEDED(sourceBaseURI->GetSpec(sourceSpec)) && ++ sourceSpec.EqualsLiteral("resource://gre-resources/hiddenWindow.html")) { + return NS_OK; + } ++ + if (reportErrors) { + ReportError(nullptr, errorTag, sourceURI, aTargetURI); + } +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-bug-1145870.patch b/gnu/packages/patches/icecat-bug-1145870.patch new file mode 100644 index 0000000000..34a018c697 --- /dev/null +++ b/gnu/packages/patches/icecat-bug-1145870.patch @@ -0,0 +1,43 @@ +From a40e2ebc2ab57dacb539d4e49ed4193764ff7112 Mon Sep 17 00:00:00 2001 +From: Kyle Huey +Date: Fri, 20 Mar 2015 19:05:56 -0700 +Subject: [PATCH] Bug 1145870. r=bz a=lmandel + +--- + docshell/base/nsDocShell.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp +index 14ff3f2..4cddcef 100644 +--- a/docshell/base/nsDocShell.cpp ++++ b/docshell/base/nsDocShell.cpp +@@ -8900,6 +8900,8 @@ nsDocShell::InternalLoad(nsIURI * aURI, + + NS_ENSURE_TRUE(!mIsBeingDestroyed, NS_ERROR_NOT_AVAILABLE); + ++ NS_ENSURE_TRUE(!mBlockNavigation, NS_ERROR_UNEXPECTED); ++ + // wyciwyg urls can only be loaded through history. Any normal load of + // wyciwyg through docshell is illegal. Disallow such loads. + if (aLoadType & LOAD_CMD_NORMAL) { +@@ -12570,7 +12572,7 @@ nsDocShell::OnLinkClick(nsIContent* aContent, + { + NS_ASSERTION(NS_IsMainThread(), "wrong thread"); + +- if (!IsOKToLoadURI(aURI)) { ++ if (!IsOKToLoadURI(aURI) || mBlockNavigation) { + return NS_OK; + } + +@@ -12626,7 +12628,7 @@ nsDocShell::OnLinkClickSync(nsIContent *aContent, + *aRequest = nullptr; + } + +- if (!IsOKToLoadURI(aURI)) { ++ if (!IsOKToLoadURI(aURI) || mBlockNavigation) { + return NS_OK; + } + +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-bug-1146339.patch b/gnu/packages/patches/icecat-bug-1146339.patch new file mode 100644 index 0000000000..9d858523b9 --- /dev/null +++ b/gnu/packages/patches/icecat-bug-1146339.patch @@ -0,0 +1,162 @@ +From 4ca86283a71427f27e810d77c8e75418f6428457 Mon Sep 17 00:00:00 2001 +From: Olli Pettay +Date: Mon, 23 Mar 2015 22:23:53 -0400 +Subject: [PATCH] Bug 1146339 - Do anchor scrolling right before dispatching + popstate/hashchange. r=bz, a=lmandel + +--- + docshell/base/nsDocShell.cpp | 64 +++++++++++++++++++++----------------------- + docshell/base/nsDocShell.h | 1 - + 2 files changed, 30 insertions(+), 35 deletions(-) + +diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp +index bdf88a5cf..efb6a6e 100644 +--- a/docshell/base/nsDocShell.cpp ++++ b/docshell/base/nsDocShell.cpp +@@ -1322,7 +1322,7 @@ nsDocShell::LoadURI(nsIURI * aURI, + + // Note: we allow loads to get through here even if mFiredUnloadEvent is + // true; that case will get handled in LoadInternal or LoadHistoryEntry. +- if (IsPrintingOrPP() || mBlockNavigation) { ++ if (IsPrintingOrPP()) { + return NS_OK; // JS may not handle returning of an error code + } + +@@ -4206,7 +4206,8 @@ bool + nsDocShell::IsNavigationAllowed(bool aDisplayPrintErrorDialog) + { + bool isAllowed = !IsPrintingOrPP(aDisplayPrintErrorDialog) && +- !mFiredUnloadEvent && !mBlockNavigation; if (!isAllowed) { ++ !mFiredUnloadEvent; ++ if (!isAllowed) { + return false; + } + if (!mContentViewer) { +@@ -8901,8 +8902,6 @@ nsDocShell::InternalLoad(nsIURI * aURI, + + NS_ENSURE_TRUE(!mIsBeingDestroyed, NS_ERROR_NOT_AVAILABLE); + +- NS_ENSURE_TRUE(!mBlockNavigation, NS_ERROR_UNEXPECTED); +- + // wyciwyg urls can only be loaded through history. Any normal load of + // wyciwyg through docshell is illegal. Disallow such loads. + if (aLoadType & LOAD_CMD_NORMAL) { +@@ -9324,19 +9323,6 @@ nsDocShell::InternalLoad(nsIURI * aURI, + GetCurScrollPos(ScrollOrientation_X, &cx); + GetCurScrollPos(ScrollOrientation_Y, &cy); + +- { +- AutoRestore scrollingToAnchor(mBlockNavigation); +- mBlockNavigation = true; +- +- // ScrollToAnchor doesn't necessarily cause us to scroll the window; +- // the function decides whether a scroll is appropriate based on the +- // arguments it receives. But even if we don't end up scrolling, +- // ScrollToAnchor performs other important tasks, such as informing +- // the presShell that we have a new hash. See bug 680257. +- rv = ScrollToAnchor(curHash, newHash, aLoadType); +- NS_ENSURE_SUCCESS(rv, rv); +- } +- + // Reset mLoadType to its original value once we exit this block, + // because this short-circuited load might have started after a + // normal, network load, and we don't want to clobber its load type. +@@ -9424,16 +9410,6 @@ nsDocShell::InternalLoad(nsIURI * aURI, + mOSHE->SetCacheKey(cacheKey); + } + +- /* restore previous position of scroller(s), if we're moving +- * back in history (bug 59774) +- */ +- if (mOSHE && (aLoadType == LOAD_HISTORY || aLoadType == LOAD_RELOAD_NORMAL)) +- { +- nscoord bx, by; +- mOSHE->GetScrollPosition(&bx, &by); +- SetCurScrollPosEx(bx, by); +- } +- + /* Restore the original LSHE if we were loading something + * while short-circuited load was initiated. + */ +@@ -9471,12 +9447,36 @@ nsDocShell::InternalLoad(nsIURI * aURI, + + SetDocCurrentStateObj(mOSHE); + ++ // Inform the favicon service that the favicon for oldURI also ++ // applies to aURI. ++ CopyFavicon(currentURI, aURI, mInPrivateBrowsing); ++ ++ nsRefPtr win = mScriptGlobal ? ++ mScriptGlobal->GetCurrentInnerWindowInternal() : nullptr; ++ ++ // ScrollToAnchor doesn't necessarily cause us to scroll the window; ++ // the function decides whether a scroll is appropriate based on the ++ // arguments it receives. But even if we don't end up scrolling, ++ // ScrollToAnchor performs other important tasks, such as informing ++ // the presShell that we have a new hash. See bug 680257. ++ rv = ScrollToAnchor(curHash, newHash, aLoadType); ++ NS_ENSURE_SUCCESS(rv, rv); ++ ++ /* restore previous position of scroller(s), if we're moving ++ * back in history (bug 59774) ++ */ ++ if (mOSHE && (aLoadType == LOAD_HISTORY || ++ aLoadType == LOAD_RELOAD_NORMAL)) { ++ nscoord bx, by; ++ mOSHE->GetScrollPosition(&bx, &by); ++ SetCurScrollPosEx(bx, by); ++ } ++ + // Dispatch the popstate and hashchange events, as appropriate. + // + // The event dispatch below can cause us to re-enter script and + // destroy the docshell, nulling out mScriptGlobal. Hold a stack + // reference to avoid null derefs. See bug 914521. +- nsRefPtr win = mScriptGlobal; + if (win) { + // Fire a hashchange event URIs differ, and only in their hashes. + bool doHashchange = sameExceptHashes && !curHash.Equals(newHash); +@@ -9492,10 +9492,6 @@ nsDocShell::InternalLoad(nsIURI * aURI, + } + } + +- // Inform the favicon service that the favicon for oldURI also +- // applies to aURI. +- CopyFavicon(currentURI, aURI, mInPrivateBrowsing); +- + return NS_OK; + } + } +@@ -12573,7 +12569,7 @@ nsDocShell::OnLinkClick(nsIContent* aContent, + { + NS_ASSERTION(NS_IsMainThread(), "wrong thread"); + +- if (!IsOKToLoadURI(aURI) || mBlockNavigation) { ++ if (!IsOKToLoadURI(aURI)) { + return NS_OK; + } + +@@ -12629,7 +12625,7 @@ nsDocShell::OnLinkClickSync(nsIContent *aContent, + *aRequest = nullptr; + } + +- if (!IsOKToLoadURI(aURI) || mBlockNavigation) { ++ if (!IsOKToLoadURI(aURI)) { + return NS_OK; + } + +diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h +index be353ee..c191777 100644 +--- a/docshell/base/nsDocShell.h ++++ b/docshell/base/nsDocShell.h +@@ -835,7 +835,6 @@ protected: + bool mInPrivateBrowsing; + bool mUseRemoteTabs; + bool mDeviceSizeIsPageSize; +- bool mBlockNavigation; + + // Because scriptability depends on the mAllowJavascript values of our + // ancestors, we cache the effective scriptability and recompute it when +-- +2.2.1 + -- cgit v1.2.3 From 12b0dbd472d1020565b2d1e3f4c72fca635db0a8 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 25 Mar 2015 21:26:31 +0100 Subject: gnu: cross-base: Make the libc static-bash bug more apparent. The 'static-bash' input of cross libcs has always been compiled natively. This patch makes the issue more visible. * gnu/packages/cross-base.scm (cross-libc): Add 'inputs' field, and add (package-inputs glibc) to 'native-inputs'. --- gnu/packages/cross-base.scm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm index 5a67d4b6ac..dbcc5bc268 100644 --- a/gnu/packages/cross-base.scm +++ b/gnu/packages/cross-base.scm @@ -298,8 +298,13 @@ XBINUTILS and the cross tool chain." ;; "linux-headers" input to point to the right thing. (propagated-inputs `(("linux-headers" ,xlinux-headers))) + ;; FIXME: 'static-bash' should really be an input, not a native input, but + ;; to do that will require building an intermediate cross libc. + (inputs '()) + (native-inputs `(("cross-gcc" ,xgcc) ("cross-binutils" ,xbinutils) + ,@(package-inputs glibc) ;FIXME: static-bash ,@(package-native-inputs glibc))))) -- cgit v1.2.3 From a31a6d22d64b2627437e0e25529cf37caf79f4dd Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 24 Mar 2015 19:52:22 +0800 Subject: gnu: Add gnome-mines. * gnu/packages/gnome.scm (gnome-mines): New variable. --- gnu/packages/gnome.scm | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 3b70e27816..0e674da899 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1621,3 +1621,48 @@ library.") ;; This is the license of the rsvg bindings. The license of each module ;; of gnome-python-desktop is given in 'COPYING'. (license license:lgpl2.1+))) + +(define-public gnome-mines + (package + (name "gnome-mines") + (version "3.14.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0nbgvzlsznn3v83pdcx2d52r4ig1mvaijh633rjddx9rgq2ja7kv")))) + (build-system glib-or-gtk-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before configure patch-/bin/true + (lambda _ + (substitute* "configure" + (("/bin/true") (which "true"))))) + (add-after install wrap-pixbuf + ;; Use librsvg's loaders.cache to support SVG files. + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (prog (string-append out "/bin/gnome-mines")) + (rsvg (assoc-ref inputs "librsvg")) + (pixbuf (find-files rsvg "^loaders\\.cache$"))) + (wrap-program prog + `("GDK_PIXBUF_MODULE_FILE" = ,pixbuf)))))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("desktop-file-utils" ,desktop-file-utils) + ("intltool" ,intltool) + ("itstool" ,itstool))) + (inputs + `(("gtk+" ,gtk+) + ("librsvg" ,librsvg))) + (home-page "https://wiki.gnome.org/Apps/Mines") + (synopsis "Minesweeper game") + (description + "Mines (previously gnomine) is a puzzle game where you locate mines +floating in an ocean using only your brain and a little bit of luck.") + (license license:gpl2+))) -- cgit v1.2.3 From e4160d0585862ab7e4c0b941d69781be2466e056 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 25 Mar 2015 23:09:22 -0400 Subject: gnu: openssh: Update to 6.8p1. * gnu/packages/ssh.scm (openssh): Update to 6.8p1. Make 'patch-tests' substitution more robust. --- gnu/packages/ssh.scm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index 10697850f4..29251291dc 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -122,7 +122,7 @@ a server that supports the SSH-2 protocol.") (define-public openssh (package (name "openssh") - (version "6.7p1") + (version "6.8p1") (source (origin (method url-fetch) (uri (let ((tail (string-append name "-" version ".tar.gz"))) @@ -131,7 +131,7 @@ a server that supports the SSH-2 protocol.") (string-append "ftp://ftp2.fr.openbsd.org/pub/OpenBSD/OpenSSH/portable/" tail)))) (sha256 (base32 - "01smf9pvn2sk5qs80gkmc9acj07ckawi1b3xxyysp3c5mr73ky5j")))) + "03hnrqvjq6ghg1mp3gkarfxh6g3x1n1vjrzpbc5lh9717vklrxiz")))) (build-system gnu-build-system) (inputs `(("groff" ,groff) ("openssl" ,openssl) @@ -149,9 +149,10 @@ a server that supports the SSH-2 protocol.") (alist-cons-before 'check 'patch-tests (lambda _ - ;; remove tests that require the user sshd + ;; remove 't-exec' regress target which requires user 'sshd' (substitute* "regress/Makefile" - (("t10 t-exec") "t10"))) + (("^(REGRESS_TARGETS=.*) t-exec(.*)" all pre post) + (string-append pre post)))) (alist-replace 'install (lambda* (#:key (make-flags '()) #:allow-other-keys) -- cgit v1.2.3 From af5b817ea9f4320b4cbffc85b3f57223a5b9463c Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Mar 2015 19:20:11 +0100 Subject: gnu: openblas: build for all supported CPUs. * gnu/packages/maths.scm (openblas)[arguments]: Add "DYNAMIC_ARCH=1" to make flags. Remove "#:substitutable? #f". --- gnu/packages/maths.scm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 49667cc71b..417af4a91b 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -1033,11 +1033,14 @@ constant parts of it.") (build-system gnu-build-system) (arguments '(#:tests? #f ;no "check" target - #:substitutable? #f ;force local build because of CPU detection #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "SHELL=bash" - "NO_LAPACK=1") + "NO_LAPACK=1" + ;; Build the library for all supported CPUs. This allows + ;; switching CPU targets at runtime with the environment variable + ;; OPENBLAS_CORETYPE=, where "type" is a supported CPU type. + "DYNAMIC_ARCH=1") ;; no configure script #:phases (alist-delete 'configure %standard-phases))) (inputs -- cgit v1.2.3 From aad6f5bcda28bd598f4937df8f97e651b4a97e8f Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 16 Mar 2015 07:54:13 +0100 Subject: gnu: Add IBus. * gnu/packages/ibus.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/ibus.scm | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 gnu/packages/ibus.scm diff --git a/gnu-system.am b/gnu-system.am index 1f2ebdf29e..d20a5967ef 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -146,6 +146,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/haskell.scm \ gnu/packages/hugs.scm \ gnu/packages/hurd.scm \ + gnu/packages/ibus.scm \ gnu/packages/icu4c.scm \ gnu/packages/idutils.scm \ gnu/packages/image.scm \ diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm new file mode 100644 index 0000000000..813d0040ee --- /dev/null +++ b/gnu/packages/ibus.scm @@ -0,0 +1,92 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages ibus) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (guix build-system glib-or-gtk) + #:use-module (gnu packages) + #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) + #:use-module (gnu packages gtk) + #:use-module (gnu packages iso-codes) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python)) + +(define-public ibus + (package + (name "ibus") + (version "1.5.5") + (source (origin + (method url-fetch) + (uri (string-append "https://ibus.googlecode.com/files/ibus-" + version ".tar.gz")) + (sha256 + (base32 + "1v4a9xv2k26g6ggk4282ynfvh68j2r5hg1cdpvnryfa8c2pkdaq2")))) + (build-system glib-or-gtk-build-system) + (arguments + `(#:tests? #f ; tests fail because there's no connection to dbus + #:make-flags + (list "CC=gcc" + (string-append "pyoverridesdir=" + (assoc-ref %outputs "out") + "/lib/python2.7/site-packages/gi/overrides/")) + #:phases + (alist-cons-before + 'configure 'disable-dconf-update + (lambda _ + (substitute* "data/dconf/Makefile.in" + (("dconf update") "echo dconf update")) + #t) + (alist-cons-after + 'wrap-program 'wrap-with-additional-paths + (lambda* (#:key outputs #:allow-other-keys) + ;; Make sure 'ibus-setup' runs with the correct PYTHONPATH and + ;; GI_TYPELIB_PATH. + (let ((out (assoc-ref outputs "out"))) + (wrap-program (string-append out "/bin/ibus-setup") + `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))) + `("GI_TYPELIB_PATH" ":" prefix + (,(getenv "GI_TYPELIB_PATH") + ,(string-append out "/lib/girepository-1.0")))))) + %standard-phases)))) + (inputs + `(("dbus" ,dbus) + ("dconf" ,dconf) + ("gconf" ,gconf) + ("glib" ,glib) + ("gtk2" ,gtk+-2) + ("intltool" ,intltool) + ("libnotify" ,libnotify) + ("iso-codes" ,iso-codes) + ("pygobject2" ,python2-pygobject) + ("python2" ,python-2))) + (native-inputs + `(("glib" ,glib "bin") ; for glib-genmarshal + ("gobject-introspection" ,gobject-introspection) ; for g-ir-compiler + ("pkg-config" ,pkg-config))) + (synopsis "Input method framework") + (description + "IBus is an input framework providing a full-featured and user-friendly +input method user interface. It comes with multilingual input support. It +may also simplify input method development.") + (home-page "http://ibus.googlecode.com/") + (license lgpl2.1+))) -- cgit v1.2.3 From e7682771686e2aa90bf4c244a6995db21d0070ae Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sun, 22 Mar 2015 16:23:47 +0300 Subject: gnu: Add LIRC. * gnu/packages/lirc.scm: New file. * gnu/packages/patches/lirc-localstatedir.patch: New file. * gnu-system.am: Add them. --- gnu-system.am | 2 + gnu/packages/lirc.scm | 61 +++++++++++++++++++++++++++ gnu/packages/patches/lirc-localstatedir.patch | 13 ++++++ 3 files changed, 76 insertions(+) create mode 100644 gnu/packages/lirc.scm create mode 100644 gnu/packages/patches/lirc-localstatedir.patch diff --git a/gnu-system.am b/gnu-system.am index d20a5967ef..2e36dae0df 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -181,6 +181,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/lightning.scm \ gnu/packages/links.scm \ gnu/packages/linux.scm \ + gnu/packages/lirc.scm \ gnu/packages/lisp.scm \ gnu/packages/llvm.scm \ gnu/packages/lout.scm \ @@ -459,6 +460,7 @@ dist_patch_DATA = \ gnu/packages/patches/libvpx-fix-armhf-link.patch \ gnu/packages/patches/libvpx-fix-ssse3-quantize.patch \ gnu/packages/patches/libvpx-vp9-out-of-bounds-access.patch \ + gnu/packages/patches/lirc-localstatedir.patch \ gnu/packages/patches/lm-sensors-hwmon-attrs.patch \ gnu/packages/patches/lua51-liblua-so.patch \ gnu/packages/patches/luajit-no_ldconfig.patch \ diff --git a/gnu/packages/lirc.scm b/gnu/packages/lirc.scm new file mode 100644 index 0000000000..c070e1aaa4 --- /dev/null +++ b/gnu/packages/lirc.scm @@ -0,0 +1,61 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Alex Kost +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages lirc) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages linux) + #:use-module (gnu packages xorg) + #:use-module (gnu packages python)) + +(define-public lirc + (package + (name "lirc") + (version "0.9.2a") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/lirc/lirc-" + version ".tar.bz2")) + (sha256 + (base32 + "011nwpxm5d12rsapljg3pjf9pgb0j8ngmc3zg69q4kv61hkx2zim")) + (patches (list (search-patch "lirc-localstatedir.patch"))))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--localstatedir=/var"))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libx11" ,libx11) + ("alsa-lib" ,alsa-lib) + ("python" ,python))) + (home-page "http://www.lirc.org/") + (synopsis "Linux Infrared Remote Control") + (description + "LIRC allows computers to send and receive IR signals of many commonly +used remote controls. The most important part of LIRC is the 'lircd' daemon +that decodes IR signals received by the device drivers. The second daemon +program 'lircmd' allows to translate IR signals to mouse movements. The +user space applications allow you to control your computer with a remote +control: you can send X events to applications, start programs and much more +on just one button press.") + (license license:gpl2+))) diff --git a/gnu/packages/patches/lirc-localstatedir.patch b/gnu/packages/patches/lirc-localstatedir.patch new file mode 100644 index 0000000000..43a41a743f --- /dev/null +++ b/gnu/packages/patches/lirc-localstatedir.patch @@ -0,0 +1,13 @@ +Do not try to create $localstatedir as we cannot do this when it is /var. + +--- lirc-0.9.2a/daemons/Makefile.in ++++ lirc-0.9.2a/daemons/Makefile.in +@@ -790,9 +790,6 @@ + uninstall-local uninstall-sbinPROGRAMS + + +-install-exec-local: +- test -d $(DESTDIR)$(varrundir)/$(PACKAGE) \ +- || mkdir -p $(DESTDIR)$(varrundir)/$(PACKAGE) + uninstall-local: + -$(RM) $(DESTDIR)$(varrundir)/$(PACKAGE)/lircd -- cgit v1.2.3 From aa4ed92314166a099d3a51681f6d155b384dd4ed Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sun, 22 Mar 2015 16:33:17 +0300 Subject: services: Add 'lirc-service'. * gnu/services/lirc.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. * doc/guix.texi (Various Services): New node. Document 'lirc-service'. --- doc/guix.texi | 21 ++++++++++++++++ gnu-system.am | 1 + gnu/services/lirc.scm | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 gnu/services/lirc.scm diff --git a/doc/guix.texi b/doc/guix.texi index 17365036e8..3c72e6596e 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -154,6 +154,7 @@ Services * Base Services:: Essential system services. * Networking Services:: Network setup, SSH daemon, etc. * X Window:: Graphical display. +* Various Services:: Other services. Packaging Guidelines @@ -4350,6 +4351,7 @@ declaration. * Base Services:: Essential system services. * Networking Services:: Network setup, SSH daemon, etc. * X Window:: Graphical display. +* Various Services:: Other services. @end menu @node Base Services @@ -4686,6 +4688,25 @@ appropriate screen resolution; otherwise, it must be a list of resolutions---e.g., @code{((1024 768) (640 480))}. @end deffn +@node Various Services +@subsubsection Various Services + +The @code{(gnu services lirc)} module provides the following service. + +@deffn {Monadic Procedure} lirc-service [#:lirc lirc] @ + [#:device #f] [#:driver #f] [#:config-file #f] @ + [#:extra-options '()] +Return a service that runs @url{http://www.lirc.org,LIRC}, a daemon that +decodes infrared signals from remote controls. + +Optionally, @var{device}, @var{driver} and @var{config-file} +(configuration file name) may be specified. See @command{lircd} manual +for details. + +Finally, @var{extra-options} is a list of additional command-line options +passed to @command{lircd}. +@end deffn + @node Setuid Programs @subsection Setuid Programs diff --git a/gnu-system.am b/gnu-system.am index 2e36dae0df..6fdd60d9b7 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -325,6 +325,7 @@ GNU_SYSTEM_MODULES = \ gnu/services/base.scm \ gnu/services/dbus.scm \ gnu/services/dmd.scm \ + gnu/services/lirc.scm \ gnu/services/networking.scm \ gnu/services/ssh.scm \ gnu/services/xorg.scm \ diff --git a/gnu/services/lirc.scm b/gnu/services/lirc.scm new file mode 100644 index 0000000000..857f362db7 --- /dev/null +++ b/gnu/services/lirc.scm @@ -0,0 +1,68 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Alex Kost +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu services lirc) + #:use-module (gnu services) + #:use-module (gnu packages lirc) + #:use-module (guix monads) + #:use-module (guix store) + #:use-module (guix gexp) + #:export (lirc-service)) + +;;; Commentary: +;;; +;;; LIRC services. +;;; +;;; Code: + +(define* (lirc-service #:key (lirc lirc) + device driver config-file + (extra-options '())) + "Return a service that runs @url{http://www.lirc.org,LIRC}, a daemon that +decodes infrared signals from remote controls. + +The daemon will use specified @var{device}, @var{driver} and +@var{config-file} (configuration file name). + +Finally, @var{extra-options} is a list of additional command-line options +passed to @command{lircd}." + (with-monad %store-monad + (return + (service + (provision '(lircd)) + (documentation "Run the LIRC daemon.") + (requirement '(user-processes)) + (start #~(make-forkexec-constructor + (list (string-append #$lirc "/sbin/lircd") + "--nodaemon" + #$@(if device + #~("--device" #$device) + #~()) + #$@(if driver + #~("--driver" #$driver) + #~()) + #$@(if config-file + #~(#$config-file) + #~()) + #$@extra-options))) + (stop #~(make-kill-destructor)) + (activate #~(begin + (use-modules (guix build utils)) + (mkdir-p "/var/run/lirc"))))))) + +;;; lirc.scm ends here -- cgit v1.2.3 From 52b76622e4a3ca8b830d1e1ccb911844ed92905b Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Wed, 25 Mar 2015 21:48:28 +0300 Subject: services: guix-service: Add service documentation. * gnu/services/base.scm (guix-service): Add 'documentation' field to the service. --- gnu/services/base.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/services/base.scm b/gnu/services/base.scm index a9126032bb..24e6d32359 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -640,6 +640,7 @@ passed to @command{guix-daemon}." (with-monad %store-monad (return (service + (documentation "Run the Guix daemon.") (provision '(guix-daemon)) (requirement '(user-processes)) (start -- cgit v1.2.3 From 0afc0afede54c9d9a0c88ea6f3731f9ccaf5de93 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 26 Mar 2015 16:37:47 +0100 Subject: gnu: nano: Update to 2.4.0. * gnu/packages/nano.scm (nano): Update to 2.4.0. --- gnu/packages/nano.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm index 1bb6fea889..150e1e0641 100644 --- a/gnu/packages/nano.scm +++ b/gnu/packages/nano.scm @@ -27,7 +27,7 @@ (define-public nano (package (name "nano") - (version "2.3.6") + (version "2.4.0") (source (origin (method url-fetch) @@ -35,7 +35,7 @@ version ".tar.gz")) (sha256 (base32 - "0d4ml0v9yi37pjs211xs38w9whsj6530wz3kmrvwgh8jigqz6jx7")))) + "1gbm9bcv4k55y01r5q8a8a9s3yrrgq3z5jxxiij3wl404r8gnxjh")))) (build-system gnu-build-system) (inputs `(("gettext" ,gnu-gettext) -- cgit v1.2.3 From 9355498dd79d127f5107a82cfa840fe1a5cd46cb Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 26 Mar 2015 16:38:16 +0100 Subject: gnu: tor: Update to 0.2.5.11. * gnu/packages/tor.scm (tor): Update to 0.2.5.11. --- gnu/packages/tor.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm index 73becbba92..dcb6dab83e 100644 --- a/gnu/packages/tor.scm +++ b/gnu/packages/tor.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2014, 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. @@ -32,14 +32,14 @@ (define-public tor (package (name "tor") - (version "0.2.5.10") + (version "0.2.5.11") (source (origin (method url-fetch) (uri (string-append "https://www.torproject.org/dist/tor-" version ".tar.gz")) (sha256 (base32 - "0fx8qnwh2f8ykfx0np4hyznjfi4xfy96z59pk96y3zyjvjjh5pdk")))) + "0sb7ai8r9c0nvdagjrbfqpri6x4njfxv954fxrjv46rzkkpgmq5f")))) (build-system gnu-build-system) (inputs `(("zlib" ,zlib) -- cgit v1.2.3 From e1ac691dfa5e8b7e374a9b7ec18cb69f3a6622c8 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 26 Mar 2015 16:40:35 +0100 Subject: gnu: global: Update to 6.4. * gnu/packages/code.scm (global): Update to 6.4. --- gnu/packages/code.scm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index ad61b85afc..ed9ba0e31f 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -23,6 +23,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system gnu) #:use-module (gnu packages compression) + #:use-module (gnu packages databases) #:use-module (gnu packages emacs) #:use-module (gnu packages pcre) #:use-module (gnu packages pkg-config) @@ -86,21 +87,24 @@ highlighting your own code that seemed comprehensible when you wrote it.") (define-public global ; a global variable (package (name "global") - (version "6.3.4") + (version "6.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/global/global-" version ".tar.gz")) (sha256 (base32 - "0hcplcayyjf42d8ygzla6142b5dq4ybq4wg3n3cgx3b5yfhvic85")))) + "13i4zwx6gaibc4j79wd0hgxysw8ibxz9c018zxhydnxlyadzcnri")))) (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses) - ("libltdl" ,libltdl))) + ("libltdl" ,libltdl) + ("sqlite" ,sqlite))) (arguments `(#:configure-flags (list (string-append "--with-ncurses=" - (assoc-ref %build-inputs "ncurses"))) + (assoc-ref %build-inputs "ncurses")) + (string-append "--with-sqlite3=" + (assoc-ref %build-inputs "sqlite"))) #:phases (alist-cons-after 'install 'post-install -- cgit v1.2.3 From 24066017a979aeb59b380d802af58d3fbfc3edd9 Mon Sep 17 00:00:00 2001 From: Tomáš Čech Date: Thu, 26 Mar 2015 16:08:13 +0100 Subject: gnu: wpa-supplicant: Install DBUS access configuration. * gnu/packages/admin.scm (wpa-supplicant): Install DBUS configuration file. --- gnu/packages/admin.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 95b0c9f007..4d4cef7cf3 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -783,7 +783,15 @@ This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.") CONFIG_CTRL_IFACE_DBUS_INTRO=y\n" port) (close-port port)) #t) - ,phases)))))) + (alist-cons-after + 'install-man-pages 'install-dbus-conf + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (dir (string-append out "/etc/dbus-1/system.d"))) + (mkdir-p dir) + (copy-file "dbus/dbus-wpa_supplicant.conf" + (string-append dir "/wpa_supplicant.conf")))) + ,phases))))))) (define-public wakelan (package -- cgit v1.2.3 From 6170834d47e4d3b2f1373053eba2a6b136a9875b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 26 Mar 2015 23:09:35 +0100 Subject: gnu: glibc: Fix cross-compilation regression. Fixes a regression introduced in 12b0dbd. See . * gnu/packages/base.scm (glibc)[arguments] : Add #:native-inputs parameter. Look up "static-bash" first in INPUTS, then in NATIVE-INPUTS. --- gnu/packages/base.scm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 69d1205259..94a93a245d 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -431,7 +431,8 @@ included.") #:tests? #f ; XXX #:phases (alist-cons-before 'configure 'pre-configure - (lambda* (#:key inputs outputs #:allow-other-keys) + (lambda* (#:key inputs native-inputs outputs + #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin"))) ;; Use `pwd', not `/bin/pwd'. @@ -455,8 +456,13 @@ included.") ;; Copy a statically-linked Bash in the output, with ;; no references to other store paths. + ;; FIXME: Normally we would look it up only in INPUTS but + ;; cross-base uses it as a native input. (mkdir-p bin) - (copy-file (string-append (assoc-ref inputs "static-bash") + (copy-file (string-append (or (assoc-ref inputs + "static-bash") + (assoc-ref native-inputs + "static-bash")) "/bin/bash") (string-append bin "/bash")) (remove-store-references (string-append bin "/bash")) -- cgit v1.2.3 From 122c87ead0452a3042f1d42db9986a41218732cf Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Thu, 26 Mar 2015 23:34:21 +0100 Subject: Fix remaining references to "substitute-binary". * nix/nix-daemon/guix-daemon.cc (main): Change substitute-binary to substitute. * po/guix/POTFILES.in: Likewise. * tests/guix-daemon.sh: Likewise. * tests/guix-system.sh: Likewise. --- nix/nix-daemon/guix-daemon.cc | 2 +- po/guix/POTFILES.in | 2 +- tests/guix-daemon.sh | 4 ++-- tests/guix-system.sh | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/nix/nix-daemon/guix-daemon.cc b/nix/nix-daemon/guix-daemon.cc index ca39c2f497..f096ed5a97 100644 --- a/nix/nix-daemon/guix-daemon.cc +++ b/nix/nix-daemon/guix-daemon.cc @@ -310,7 +310,7 @@ main (int argc, char *argv[]) if (subs == "default") { string subst = - settings.nixLibexecDir + "/guix/substitute-binary"; + settings.nixLibexecDir + "/guix/substitute"; setenv ("NIX_SUBSTITUTERS", subst.c_str (), 1); } } diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in index 619f6f99fc..39115f970b 100644 --- a/po/guix/POTFILES.in +++ b/po/guix/POTFILES.in @@ -9,7 +9,7 @@ guix/scripts/package.scm guix/scripts/gc.scm guix/scripts/hash.scm guix/scripts/pull.scm -guix/scripts/substitute-binary.scm +guix/scripts/substitute.scm guix/scripts/authenticate.scm guix/scripts/system.scm guix/scripts/lint.scm diff --git a/tests/guix-daemon.sh b/tests/guix-daemon.sh index a73c9e22e3..87f17def12 100644 --- a/tests/guix-daemon.sh +++ b/tests/guix-daemon.sh @@ -17,7 +17,7 @@ # along with GNU Guix. If not, see . # -# Test the daemon and its interaction with 'guix substitute-binary'. +# Test the daemon and its interaction with 'guix substitute'. # set -e @@ -51,7 +51,7 @@ Deriver: $drv EOF # Remove the cached narinfo. -rm -f "$XDG_CACHE_HOME/guix/substitute-binary/$hash_part" +rm -f "$XDG_CACHE_HOME/guix/substitute/$hash_part" # Make sure we see the substitute. guile -c ' diff --git a/tests/guix-system.sh b/tests/guix-system.sh index 76e722fbc1..1b77d1a0db 100644 --- a/tests/guix-system.sh +++ b/tests/guix-system.sh @@ -17,7 +17,7 @@ # along with GNU Guix. If not, see . # -# Test the daemon and its interaction with 'guix substitute-binary'. +# Test the daemon and its interaction with 'guix substitute'. # set -e -- cgit v1.2.3 From ee3b55ea6d68ee998ac183ab1cb6f02f18fc8ed8 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Fri, 20 Mar 2015 15:52:52 +0100 Subject: gnu: Add libva. * gnu/packages/video.scm (libva): New variable. --- gnu/packages/video.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index a7f39b8249..cca26f1840 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -69,6 +69,7 @@ #:use-module (gnu packages textutils) #:use-module (gnu packages version-control) #:use-module (gnu packages web) + #:use-module (gnu packages xdisorg) #:use-module (gnu packages xiph) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -195,6 +196,35 @@ developed according to the official standards for DV video: IEC 61834 and SMPTE 314M.") (license lgpl2.1+))) +(define-public libva + (package + (name "libva") + (version "1.5.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://www.freedesktop.org/software/vaapi/releases/libva/libva-" + version".tar.bz2")) + (sha256 + (base32 "01d01mm9fgpwzqycmjjcj3in3vvzcibi3f64icsw2sksmmgb4495")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libdrm" ,libdrm) + ("libx11" ,libx11) + ("libxext" ,libxext) + ("libxfixes" ,libxfixes) + ("mesa" ,mesa))) + (home-page "http://www.freedesktop.org/wiki/Software/vaapi/") + (synopsis "Video acceleration library") + (description "The main motivation for VA-API (Video Acceleration API) is +to enable hardware accelerated video decode/encode at various +entry-points (VLD, IDCT, Motion Compensation etc.) for prevailing coding +standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") + (license expat))) + (define-public ffmpeg (package (name "ffmpeg") -- cgit v1.2.3 From 9b5db9be7f109dbdeda56b42853550f7b749b385 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Sat, 21 Mar 2015 19:36:25 +0100 Subject: gnu: freeglut: Add mesa to propagated inputs. * gnu/packages/gl.scm (freeglut): Add mesa to propagated inputs. --- gnu/packages/gl.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index e9b2c535a8..dc90a1231d 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -84,7 +84,10 @@ as ASCII text.") ("libxxf86vm" ,libxxf86vm) ("inputproto" ,inputproto) ("xinput" ,xinput))) - (propagated-inputs `(("glu" ,glu))) + (propagated-inputs + ;; Headers from Mesa and GLU are needed. + `(("glu" ,glu) + ("mesa" ,mesa))) (home-page "http://freeglut.sourceforge.net/") (synopsis "Alternative to the OpenGL Utility Toolkit (GLUT)") (description -- cgit v1.2.3 From 060ad3def45745e26c4ce75883eb1d3ae22d6839 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Sat, 21 Mar 2015 19:40:21 +0100 Subject: gnu: Add libwebp. * gnu/packages/image.scm (libwebp): New variable. --- gnu/packages/image.scm | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 11cb63a895..9c7e50494f 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -29,6 +29,7 @@ #:use-module (gnu packages doxygen) #:use-module (gnu packages fontutils) #:use-module (gnu packages ghostscript) + #:use-module (gnu packages gl) #:use-module (gnu packages maths) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -475,3 +476,39 @@ algorithms and data structures. It is particularly strong for multi-dimensional image processing.") (license license:expat) (home-page "https://hci.iwr.uni-heidelberg.de/vigra"))) + +(define-public libwebp + (package + (name "libwebp") + (version "0.4.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://downloads.webmproject.org/releases/webp/libwebp-" version + ".tar.gz")) + (sha256 + (base32 "1i4hfczjm3b1qj1g4cc9hgb69l47f3nkgf6hk7nz4dm9zmc0vgpg")))) + (build-system gnu-build-system) + (inputs + `(("freeglut" ,freeglut) + ("giflib" ,giflib) + ("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("libtiff" ,libtiff))) + (arguments + '(#:configure-flags '("--enable-libwebpmux" + "--enable-libwebpdemux" + "--enable-libwebpdecoder"))) + (home-page "https://developers.google.com/speed/webp/") + (synopsis "Lossless and lossy image compression") + (description + "WebP is a new image format that provides lossless and lossy compression +for images. WebP lossless images are 26% smaller in size compared to +PNGs. WebP lossy images are 25-34% smaller in size compared to JPEG images at +equivalent SSIM index. WebP supports lossless transparency (also known as +alpha channel) with just 22% additional bytes. Transparency is also supported +with lossy compression and typically provides 3x smaller file sizes compared +to PNG when lossy compression is acceptable for the red/green/blue color +channels.") + (license license:bsd-3))) -- cgit v1.2.3 From 894e2cba52acd91e56066fb584c782d75dc32f3a Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Sat, 21 Mar 2015 19:41:54 +0100 Subject: gnu: Add leptonica. * gnu/packages/image.scm (leptonica): New variable. --- gnu/packages/image.scm | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 9c7e50494f..93dd2ac4e6 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -24,6 +24,7 @@ (define-module (gnu packages image) #:use-module (gnu packages) #:use-module (gnu packages algebra) + #:use-module (gnu packages autotools) #:use-module (gnu packages boost) #:use-module (gnu packages compression) #:use-module (gnu packages doxygen) @@ -164,6 +165,65 @@ the W3C's XML-based Scaleable Vector Graphic (SVG) format.") ;; 'COPYING' is the GPLv2, but file headers say LGPLv2.0+. (license license:lgpl2.0+))) +(define-public leptonica + (package + (name "leptonica") + (version "1.71") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.leptonica.com/source/leptonica-" + version ".tar.gz")) + (sha256 + (base32 "0j5qgrff6im5n9waflbi7w643q1p6mahyf2z35gb4vj9h5p76pfc")) + (modules '((guix build utils))) + ;; zlib and openjpg should be under Libs, not Libs.private. See: + ;; https://code.google.com/p/tesseract-ocr/issues/detail?id=1436 + (snippet + '(substitute* "lept.pc.in" + (("^(Libs\\.private: .*)@ZLIB_LIBS@(.*)" all pre post) + (string-append pre post)) + (("^(Libs\\.private: .*)@JPEG_LIBS@(.*)" all pre post) + (string-append pre post)) + (("^Libs: .*" all) + (string-append all " @ZLIB_LIBS@ @JPEG_LIBS@")))))) + (build-system gnu-build-system) + (native-inputs + `(("gnuplot" ,gnuplot))) ;needed for test suite + (inputs + `(("giflib" ,giflib) + ("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("libtiff" ,libtiff) + ("libwebp" ,libwebp))) + (propagated-inputs + `(("openjpeg" ,openjpeg) + ("zlib" ,zlib))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; Prevent make from trying to regenerate config.h.in. + (add-after + unpack set-config-h-in-file-time + (lambda _ + (set-file-time "config/config.h.in" (stat "configure")))) + (add-after + unpack patch-reg-wrapper + (lambda _ + (substitute* "prog/reg_wrapper.sh" + ((" /bin/sh ") + (string-append " " (which "sh") " ")))))))) + (home-page "http://www.leptonica.com/") + (synopsis "Library and tools for image processing and analysis") + (description + "Leptonica is a C library and set of command-line tools for efficient +image processing and image analysis operations. It supports rasterop, affine +transformations, binary and grayscale morphology, rank order, and convolution, +seedfill and connected components, image transformations combining changes in +scale and pixel depth, and pixelwise masking, blending, enhancement, and +arithmetic ops.") + (license license:bsd-2))) + (define-public jbig2dec (package (name "jbig2dec") -- cgit v1.2.3 From 9e617a5419bbb2e4dabe95d07f9bf94c9d041c22 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Fri, 20 Mar 2015 16:22:34 +0100 Subject: gnu: Rename (gnu packages ocrad) to (gnu packages ocr). * gnu/packages/ocrad.scm: Deleted. * gnu/packages/ocr.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Change ocrad.scm to ocr.scm. --- gnu-system.am | 2 +- gnu/packages/ocr.scm | 46 ++++++++++++++++++++++++++++++++++++++++++++++ gnu/packages/ocrad.scm | 46 ---------------------------------------------- 3 files changed, 47 insertions(+), 47 deletions(-) create mode 100644 gnu/packages/ocr.scm delete mode 100644 gnu/packages/ocrad.scm diff --git a/gnu-system.am b/gnu-system.am index 6fdd60d9b7..46807b67c7 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -221,7 +221,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/nutrition.scm \ gnu/packages/nvi.scm \ gnu/packages/ocaml.scm \ - gnu/packages/ocrad.scm \ + gnu/packages/ocr.scm \ gnu/packages/onc-rpc.scm \ gnu/packages/openbox.scm \ gnu/packages/openldap.scm \ diff --git a/gnu/packages/ocr.scm b/gnu/packages/ocr.scm new file mode 100644 index 0000000000..8408b43367 --- /dev/null +++ b/gnu/packages/ocr.scm @@ -0,0 +1,46 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages ocr) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module ((gnu packages compression) + #:select (lzip))) + +(define-public ocrad + (package + (name "ocrad") + (version "0.24") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/ocrad/ocrad-" + version ".tar.lz")) + (sha256 + (base32 + "0hhlx072d00bi9qia0nj5izsq4qkscpfz2mpbyfc72msl3hfvslv")))) + (build-system gnu-build-system) + (native-inputs `(("lzip" ,lzip))) + (home-page "http://www.gnu.org/software/ocrad/") + (synopsis "Optical character recognition based on feature extraction") + (description + "GNU Ocrad is an optical character recognition program based on a +feature extraction method. It can read images in PBM, PGM or PPM formats and +it produces text in 8-bit or UTF-8 formats.") + (license gpl3+))) diff --git a/gnu/packages/ocrad.scm b/gnu/packages/ocrad.scm deleted file mode 100644 index 8ad4f32670..0000000000 --- a/gnu/packages/ocrad.scm +++ /dev/null @@ -1,46 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Ludovic Courtès -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see . - -(define-module (gnu packages ocrad) - #:use-module (guix licenses) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix build-system gnu) - #:use-module ((gnu packages compression) - #:select (lzip))) - -(define-public ocrad - (package - (name "ocrad") - (version "0.24") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/ocrad/ocrad-" - version ".tar.lz")) - (sha256 - (base32 - "0hhlx072d00bi9qia0nj5izsq4qkscpfz2mpbyfc72msl3hfvslv")))) - (build-system gnu-build-system) - (native-inputs `(("lzip" ,lzip))) - (home-page "http://www.gnu.org/software/ocrad/") - (synopsis "Optical character recognition based on feature extraction") - (description - "GNU Ocrad is an optical character recognition program based on a -feature extraction method. It can read images in PBM, PGM or PPM formats and -it produces text in 8-bit or UTF-8 formats.") - (license gpl3+))) -- cgit v1.2.3 From d814be32d5205fc946ba4dce724b6202718df268 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Sat, 21 Mar 2015 20:11:56 +0100 Subject: gnu: Add tesseract-ocr. * gnu/packages/ocr.scm (tesseract-ocr): New variable. --- gnu/packages/ocr.scm | 55 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/gnu/packages/ocr.scm b/gnu/packages/ocr.scm index 8408b43367..32da42b95f 100644 --- a/gnu/packages/ocr.scm +++ b/gnu/packages/ocr.scm @@ -17,12 +17,14 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages ocr) - #:use-module (guix licenses) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) - #:use-module ((gnu packages compression) - #:select (lzip))) + #:use-module (gnu packages autotools) + #:use-module (gnu packages compression) + #:use-module (gnu packages image) + #:use-module (gnu packages pkg-config)) (define-public ocrad (package @@ -43,4 +45,49 @@ "GNU Ocrad is an optical character recognition program based on a feature extraction method. It can read images in PBM, PGM or PPM formats and it produces text in 8-bit or UTF-8 formats.") - (license gpl3+))) + (license license:gpl3+))) + +(define-public tesseract-ocr + (package + (name "tesseract-ocr") + (version "3.02.02") + (source + (origin + (method url-fetch) + (uri (string-append + "https://tesseract-ocr.googlecode.com/files/tesseract-ocr-" + version ".tar.gz")) + (sha256 + (base32 "0g81m9y4iydp7kgr56mlkvjdwpp3mb01q385yhdnyvra7z5kkk96")) + (modules '((guix build utils))) + ;; Leptonica added a pkg-config file in the meanwhile. + (snippet + '(substitute* "tesseract.pc.in" + (("^# Requires: lept ## .*") + "Requires: lept\n"))))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool))) + (propagated-inputs + `(("leptonica" ,leptonica))) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after + unpack autogen + (lambda _ + (zero? (system* "sh" "autogen.sh"))))) + #:configure-flags + (let ((leptonica (assoc-ref %build-inputs "leptonica"))) + (list (string-append "LIBLEPT_HEADERSDIR=" leptonica "/include"))))) + (home-page "https://code.google.com/p/tesseract-ocr/") + (synopsis "Optical character recognition engine") + (description + "Tesseract is an optical character recognition (OCR) engine with very +high accuracy. It supports many languages, output text formatting, hOCR +positional information and page layout analysis. Several image formats are +supported through the Leptonica library. It can also detect whether text is +monospaced or proportional.") + (license license:asl2.0))) -- cgit v1.2.3 From 6f6c8b653792599f2e866887b29c86dd51638d15 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Sat, 21 Mar 2015 23:09:11 +0100 Subject: gnu: Add vapoursynth. * gnu/packages/video.scm (vapoursynth): New variable. --- gnu/packages/video.scm | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index cca26f1840..c202c6f140 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -56,6 +56,7 @@ #:use-module (gnu packages lua) #:use-module (gnu packages mp3) #:use-module (gnu packages ncurses) + #:use-module (gnu packages ocr) #:use-module (gnu packages openssl) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -1095,6 +1096,47 @@ capabilities.") (alist-delete 'install %standard-phases))))))))) +(define-public vapoursynth + (package + (name "vapoursynth") + (version "26") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/vapoursynth/vapoursynth/archive/R" + version ".tar.gz")) + (sha256 + (base32 + "1qbg5kg0kgrxldd0ckn1s7vy7vx2ig8nqzv6djp38fxccpzw3x9k")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("cython" ,python-cython) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config) + ("python" ,python) + ("yasm" ,yasm))) + (inputs + `(("ffmpeg" ,ffmpeg) + ("libass" ,libass) + ("tesseract-ocr" ,tesseract-ocr))) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after + unpack autogen + (lambda _ + (zero? (system* "sh" "autogen.sh"))))))) + (home-page "http://www.vapoursynth.com/") + (synopsis "Video processing framework") + (description "VapourSynth is a C++ library and Python module for video +manipulation. It aims to be a modern rewrite of Avisynth, supporting +multithreading, generalized colorspaces, per frame properties, and videos with +format changes.") + ;; As seen from the source files. + (license lgpl2.1+))) + (define-public xvid (package (name "xvid") -- cgit v1.2.3 From 1c1178cd17d037638255ae5ecd52a6c48d8a2e41 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Thu, 19 Mar 2015 23:46:21 +0100 Subject: gnu: Add mpv. * gnu/packages/video.scm (mpv): New variable. --- gnu/packages/video.scm | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index c202c6f140..4c3c3ec44b 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -30,6 +30,7 @@ #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system python) + #:use-module (guix build-system waf) #:use-module (gnu packages) #:use-module (gnu packages algebra) #:use-module (gnu packages audio) @@ -667,6 +668,91 @@ several areas.") ;; is under lgpl3+, thus the whole project becomes gpl3+. (license gpl3+))) +(define-public mpv + (package + (name "mpv") + (version "0.8.3") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/mpv-player/mpv/archive/v" version + ".tar.gz")) + (sha256 + (base32 + "1kw9hr957cxqgm2i94bgqc6sskm6bwhm0akzckilhs460b43h409")) + (file-name (string-append name "-" version ".tar.gz")))) + (build-system waf-build-system) + (native-inputs + `(("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python-docutils" ,python-docutils))) + ;; Missing features: libguess, LIRC, Wayland, VDPAU, V4L2 + (inputs + `(("alsa-lib" ,alsa-lib) + ("enca" ,enca) + ("ffmpeg" ,ffmpeg) + ("jack" ,jack-2) + ("ladspa" ,ladspa) + ("lcms" ,lcms) + ("libass" ,libass) + ("libbluray" ,libbluray) + ("libcaca" ,libcaca) + ("libbs2b" ,libbs2b) + ("libcdio-paranoia" ,libcdio-paranoia) + ("libdvdread" ,libdvdread) + ("libdvdnav" ,libdvdnav) + ("libjpeg" ,libjpeg) + ("libva" ,libva) + ("libx11" ,libx11) + ("libxext" ,libxext) + ("libxinerama" ,libxinerama) + ("libxrandr" ,libxrandr) + ("libxscrnsaver" ,libxscrnsaver) + ("libxv" ,libxv) + ("lua" ,lua) + ("mesa" ,mesa) + ("mpg123" ,mpg123) + ("pulseaudio" ,pulseaudio) + ("rsound" ,rsound) + ("samba" ,samba) + ("vapoursynth" ,vapoursynth) + ("waf" ,(origin + (method url-fetch) + ;; Keep this in sync with the version in the bootstrap.py + ;; script of the source tarball. + (uri "http://www.freehackers.org/~tnagy/release/waf-1.8.4") + (sha256 + (base32 + "1a7skwgpl91adhcwlmdr76xzdpidh91hvcmj34zz6548bpx3a87h")))) + ("youtube-dl" ,youtube-dl) + ("zlib" ,zlib))) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before + configure setup-waf + (lambda* (#:key inputs #:allow-other-keys) + (copy-file (assoc-ref inputs "waf") "waf") + (setenv "CC" "gcc"))) + (add-before + configure patch-wscript + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "wscript" + ;; XXX Remove this when our Samba package provides a .pc file. + (("check_pkg_config\\('smbclient'\\)") + "check_cc(lib='smbclient')") + ;; XXX Remove this when our Lua package provides a .pc file. + (("check_lua") + "check_cc(lib='lua')"))))) + ;; No check function defined. + #:tests? #f)) + (home-page "http://mpv.io/") + (synopsis "Audio and video player") + (description "mpv is a general-purpose audio and video player. It is a +fork of mplayer2 and MPlayer. It shares some features with the former +projects while introducing many more.") + (license gpl2+))) + (define-public libvpx (package (name "libvpx") -- cgit v1.2.3 From 2babe98e4e24ed91bbda9ad2e89731c1f345a75e Mon Sep 17 00:00:00 2001 From: Jason Self Date: Sat, 28 Mar 2015 19:26:02 -0700 Subject: gnu: linux-libre: Update to 3.18.10 * gnu/packages/linux.scm (linux-libre): Update to version 3.18.10. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index bd9ae0e08d..c48fefa7c2 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -198,7 +198,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." #f))) (define-public linux-libre - (let* ((version "3.18.9") + (let* ((version "3.18.10") (build-phase '(lambda* (#:key system inputs #:allow-other-keys #:rest args) ;; Apply the neat patch. @@ -271,7 +271,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." (uri (linux-libre-urls version)) (sha256 (base32 - "0n3p9ci8w71hd168df7xlccafxzb3agr8rk3xmvnj7dnbfiddqv6")))) + "0ckbi94b56klp59wsfcmlkbyrj7hj7kb7ys2jjsrqsk39dd77zg5")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) ("bc" ,bc) -- cgit v1.2.3 From 3bfc99c74cfc0cf6613f7c39c1f39bbe08b586d0 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 27 Mar 2015 16:12:01 -0500 Subject: gnu: Add Catch. * gnu/packages/check.scm (catch-framework): New variable. --- gnu/packages/check.scm | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index afaf5571e5..3e686cc743 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012 Nikita Karetnikov ;;; Copyright © 2015 Paul van der Walt +;;; Copyright © 2015 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,7 +24,9 @@ #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) - #:use-module (guix build-system gnu)) + #:use-module (guix git-download) + #:use-module (guix build-system gnu) + #:use-module (guix build-system trivial)) (define-public check (package @@ -99,3 +102,43 @@ with a flexible variety of user interfaces.") unit testing. Test output is in XML for automatic testing and GUI based for supervised tests.") (license lgpl2.1))) ; no copyright notices. LGPL2.1 is in the tarball + +(define-public catch-framework + (package + (name "catch") + (version "1.0.53") ;Sub-minor is the build number + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/philsquared/Catch") + ;; Semi-arbitrary. Contains mostly documentation fixes + ;; since build 53. + (commit "b9ec8a1"))) + (file-name (string-append name "-" version)) + (sha256 + (base32 + "05iijiwjwcjbza7qamwd32d0jypi0lpywmilmmj2xh280mcl4dbd")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder (begin + (use-modules (guix build utils)) + (let* ((source (assoc-ref %build-inputs "source")) + (output (assoc-ref %outputs "out")) + (incdir (string-append output "/include")) + (docdir (string-append output "/share/doc/catch-" + ,version))) + (begin + (for-each mkdir-p (list incdir docdir)) + (copy-file (string-append source + "/single_include/catch.hpp") + (string-append incdir + "/catch.hpp")) + (copy-recursively (string-append source "/docs") + docdir)))))) + (home-page "http://catch-lib.net/") + (synopsis "Automated test framework for C++ and Objective-C") + (description + "Catch stands for C++ Automated Test Cases in Headers and is a +multi-paradigm automated test framework for C++ and Objective-C.") + (license boost1.0))) -- cgit v1.2.3 From b4a9c92467c49d21601b1736f72648c6425c7150 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 27 Mar 2015 16:15:02 -0500 Subject: gnu: Add UnQLite. * gnu/packages/databases.scm (unqlite): New variable. --- gnu/packages/databases.scm | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 29b7dbba55..ee97977777 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -38,7 +38,7 @@ #:use-module (gnu packages python) #:use-module ((guix licenses) #:select (gpl2 gpl3+ lgpl2.1+ lgpl3+ x11-style non-copyleft - public-domain)) + bsd-2 public-domain)) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) @@ -538,3 +538,29 @@ Driver.") (license lgpl2.1+) ;; COPYING contains copy of lgpl2.1 - but copyright notices just say "LGPL" (home-page "http://www.unixodbc.org"))) + +(define-public unqlite + (package + (name "unqlite") + (version "1.1.6") + (source (origin + (method url-fetch) + ;; Contains bug fixes against the official release, and has an + ;; autotooled build system. + (uri (string-append "https://github.com/aidin36/tocc/releases/" + "download/v1.0.0/" + "unqlite-unofficial-" version ".tar.gz")) + (sha256 + (base32 + "1sbpvhg15gadq0mpcy16q7k3rkg4b4dicpnn5xifpkpn02sqik3s")))) + (build-system gnu-build-system) + (arguments `(#:tests? #f)) ;No check target + (home-page "http://www.unqlite.org") + (synopsis "In-memory key/value and document store") + (description + "UnQLite is an in-process software library which implements a +self-contained, serverless, zero-configuration, transactional NoSQL +database engine. UnQLite is a document store database similar to +MongoDB, Redis, CouchDB, etc. as well as a standard Key/Value store +similar to BerkelyDB, LevelDB, etc.") + (license bsd-2))) -- cgit v1.2.3 From 065b79549737a23731b30249c1e5889d6618231a Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 27 Mar 2015 16:16:41 -0500 Subject: gnu: Add tocc. * gnu/packages/search.scm (libtocc, tocc): New variables. --- gnu/packages/search.scm | 69 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm index f56a85e005..d1133248df 100644 --- a/gnu/packages/search.scm +++ b/gnu/packages/search.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2015 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,11 +19,13 @@ (define-module (gnu packages search) #:use-module ((guix licenses) - #:select (gpl2+ bsd-3 x11)) + #:select (gpl2+ gpl3+ bsd-3 x11)) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (gnu packages compression) + #:use-module (gnu packages check) + #:use-module (gnu packages databases) #:use-module (gnu packages linux) #:export (xapian)) @@ -55,4 +58,68 @@ rich set of boolean query operators.") (home-page "http://xapian.org/") (license (list gpl2+ bsd-3 x11)))) +(define-public libtocc + (package + (name "libtocc") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/aidin36/tocc/releases/download/" + "v" version "/tocc-" version ".tar.gz")) + (sha256 + (base32 + "1kd2jd74m8ksc8s7hh0haz0q0c3n0mr39bbky262kk4l58f1g068")))) + (build-system gnu-build-system) + (native-inputs `(("catch" ,catch-framework))) + (inputs `(("unqlite" ,unqlite))) + (arguments + `(#:phases (modify-phases %standard-phases + (add-before + configure chdir-source + (lambda _ (chdir "libtocc/src"))) + (replace + check + (lambda _ + (with-directory-excursion "../tests" + (and (zero? (system* "./configure" + (string-append "CONFIG_SHELL=" + (which "sh")) + (string-append "SHELL=" + (which "sh")) + "CPPFLAGS=-I../src" + "LDFLAGS=-L../src/.libs")) + (zero? (system* "make")) + (zero? (system* "./libtocctests"))))))))) + (home-page "http://t-o-c-c.com/") + (synopsis "Tool for Obsessive Compulsive Classifiers") + (description + "libtocc is the engine of the Tocc project, a tag-based file management +system. The goal of Tocc is to provide a better system for classifying files +that is more flexible than classic file systems that are based on a tree of +files and directories.") + (license gpl3+))) + +(define-public tocc + (package + (name "tocc") + (version (package-version libtocc)) + (source (package-source libtocc)) + (build-system gnu-build-system) + (inputs + `(("libtocc" ,libtocc) + ("unqlite" ,unqlite))) + (arguments + `(#:tests? #f ;No tests + #:phases (modify-phases %standard-phases + (add-after + unpack chdir-source + (lambda _ (chdir "cli/src")))))) + (home-page "http://t-o-c-c.com/") + (synopsis "Command-line interface to libtocc") + (description + "Tocc is a tag-based file management system. This package contains the +command line tool for interacting with libtocc.") + (license gpl3+))) + ;;; search.scm ends here -- cgit v1.2.3 From b39fc6f7bcbe2c87247be48393a5a4105e08cc6d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 28 Mar 2015 21:16:36 +0100 Subject: doc: Update gexp wrt. extensibility. This is a followup to bcb1328. * doc/guix.texi (G-Expressions): Move paragraph about extensibility below. Remove assumptions that things are either packages or derivations. --- doc/guix.texi | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 3c72e6596e..18e6733083 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2490,13 +2490,9 @@ Gexps are meant to be written to a file and run or manipulated by other processes. @item -When a package or derivation is unquoted inside a gexp, the result is as -if its output file name had been introduced. - -Actually this mechanism is not limited to package and derivation -objects; @dfn{compilers} able to ``lower'' other high-level objects to -derivations can be defined, such that these objects can also be inserted -into gexps. +When a high-level object such as a package or derivation is unquoted +inside a gexp, the result is as if its output file name had been +introduced. @item Gexps carry information about the packages or derivations they refer to, @@ -2504,6 +2500,11 @@ and these dependencies are automatically added as inputs to the build processes that use them. @end itemize +Actually this mechanism is not limited to package and derivation +objects; @dfn{compilers} able to ``lower'' other high-level objects to +derivations can be defined, such that these objects can also be inserted +into gexps. + To illustrate the idea, here is an example of a gexp: @example @@ -2563,24 +2564,24 @@ or more of the following forms: @table @code @item #$@var{obj} @itemx (ungexp @var{obj}) -Introduce a reference to @var{obj}. @var{obj} may be a package or a +Introduce a reference to @var{obj}. @var{obj} may have one of the +supported types, for example a package or a derivation, in which case the @code{ungexp} form is replaced by its output file name---e.g., @code{"/gnu/store/@dots{}-coreutils-8.22}. -If @var{obj} is a list, it is traversed and any package or derivation -references are substituted similarly. +If @var{obj} is a list, it is traversed and references to supported +objects are substituted similarly. If @var{obj} is another gexp, its contents are inserted and its dependencies are added to those of the containing gexp. If @var{obj} is another kind of object, it is inserted as is. -@item #$@var{package-or-derivation}:@var{output} -@itemx (ungexp @var{package-or-derivation} @var{output}) +@item #$@var{obj}:@var{output} +@itemx (ungexp @var{obj} @var{output}) This is like the form above, but referring explicitly to the -@var{output} of @var{package-or-derivation}---this is useful when -@var{package-or-derivation} produces multiple outputs (@pxref{Packages -with Multiple Outputs}). +@var{output} of @var{obj}---this is useful when @var{obj} produces +multiple outputs (@pxref{Packages with Multiple Outputs}). @item #+@var{obj} @itemx #+@var{obj}:output -- cgit v1.2.3 From d9ae938f2c950f3bf1896fb07189c3e28b4d8029 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 28 Mar 2015 21:26:33 +0100 Subject: gexp: Add 'local-file'. * guix/gexp.scm (): New record type. (local-file): New procedure. (local-file-compiler): New compiler. (gexp->sexp) : Handle the case where 'lower' returns a file name. (text-file*): Update docstring.local-file doc * tests/gexp.scm ("one local file", "gexp->derivation, local-file"): New tests. * doc/guix.texi (G-Expressions): Mention local files early. Document 'local-file'. Update 'text-file*' documentation. --- doc/guix.texi | 24 +++++++++++++++++++++--- guix/gexp.scm | 47 +++++++++++++++++++++++++++++++++++++++++++---- tests/gexp.scm | 26 ++++++++++++++++++++++++++ 3 files changed, 90 insertions(+), 7 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 18e6733083..4e549ac2ef 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2503,7 +2503,10 @@ processes that use them. Actually this mechanism is not limited to package and derivation objects; @dfn{compilers} able to ``lower'' other high-level objects to derivations can be defined, such that these objects can also be inserted -into gexps. +into gexps. Another useful type of high-level object that can be +inserted in a gexp is @dfn{local files}, which allows files from the +local file system to be added to the store and referred to by +derivations and such (see @code{local-file} below.) To illustrate the idea, here is an example of a gexp: @@ -2666,6 +2669,20 @@ refer to. Any reference to another store item will lead to a build error. The other arguments are as for @code{derivation} (@pxref{Derivations}). @end deffn +@deffn {Scheme Procedure} local-file @var{file} [@var{name}] @ + [#:recursive? #t] +Return an object representing local file @var{file} to add to the store; this +object can be used in a gexp. @var{file} will be added to the store under @var{name}--by +default the base name of @var{file}. + +When @var{recursive?} is true, the contents of @var{file} are added recursively; if @var{file} +designates a flat file and @var{recursive?} is true, its contents are added, and its +permission bits are kept. + +This is the declarative counterpart of the @code{interned-file} monadic +procedure (@pxref{The Store Monad, @code{interned-file}}). +@end deffn + @deffn {Monadic Procedure} gexp->script @var{name} @var{exp} Return an executable script @var{name} that runs @var{exp} using @var{guile} with @var{modules} in its search path. @@ -2703,8 +2720,9 @@ or a subset thereof. @deffn {Monadic Procedure} text-file* @var{name} @var{text} @dots{} Return as a monadic value a derivation that builds a text file containing all of @var{text}. @var{text} may list, in addition to -strings, packages, derivations, and store file names; the resulting -store file holds references to all these. +strings, objects of any type that can be used in a gexp: packages, +derivations, local file objects, etc. The resulting store file holds +references to all these. This variant should be preferred over @code{text-file} anytime the file to create will reference items from the store. This is typically the diff --git a/guix/gexp.scm b/guix/gexp.scm index 01290dba18..2492974d8f 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -31,6 +31,8 @@ gexp-input gexp-input? + local-file + local-file? gexp->derivation gexp->file @@ -133,6 +135,37 @@ cross-compiling.)" (with-monad %store-monad (return drv))) + +;;; +;;; Local files. +;;; + +(define-record-type + (%local-file file name recursive?) + local-file? + (file local-file-file) ;string + (name local-file-name) ;string + (recursive? local-file-recursive?)) ;Boolean + +(define* (local-file file #:optional (name (basename file)) + #:key (recursive? #t)) + "Return an object representing local file FILE to add to the store; this +object can be used in a gexp. FILE will be added to the store under NAME--by +default the base name of FILE. + +When RECURSIVE? is true, the contents of FILE are added recursively; if FILE +designates a flat file and RECURSIVE? is true, its contents are added, and its +permission bits are kept. + +This is the declarative counterpart of the 'interned-file' monadic procedure." + (%local-file file name recursive?)) + +(define-gexp-compiler (local-file-compiler (file local-file?) system target) + ;; "Compile" FILE by adding it to the store. + (match file + (($ file name recursive?) + (interned-file file name #:recursive? recursive?)))) + ;;; ;;; Inputs & outputs. @@ -453,8 +486,13 @@ and in the current monad setting (system type, etc.)" (($ (? struct? thing) output n?) (let ((lower (lookup-compiler thing)) (target (if (or n? native?) #f target))) - (mlet %store-monad ((drv (lower thing system target))) - (return (derivation->output-path drv output))))) + (mlet %store-monad ((obj (lower thing system target))) + ;; OBJ must be either a derivation or a store file name. + (return (match obj + ((? derivation? drv) + (derivation->output-path drv output)) + ((? string? file) + file)))))) (($ x) (return x)) (x @@ -809,8 +847,9 @@ its search path." (define* (text-file* name #:rest text) "Return as a monadic value a derivation that builds a text file containing -all of TEXT. TEXT may list, in addition to strings, packages, derivations, -and store file names; the resulting store file holds references to all these." +all of TEXT. TEXT may list, in addition to strings, objects of any type that +can be used in a gexp: packages, derivations, local file objects, etc. The +resulting store file holds references to all these." (define builder (gexp (call-with-output-file (ungexp output "out") (lambda (port) diff --git a/tests/gexp.scm b/tests/gexp.scm index 0540969503..f81ef39860 100644 --- a/tests/gexp.scm +++ b/tests/gexp.scm @@ -97,6 +97,18 @@ %store (package-source coreutils)))) (gexp->sexp* exp))))) +(test-assert "one local file" + (let* ((file (search-path %load-path "guix.scm")) + (local (local-file file)) + (exp (gexp (display (ungexp local)))) + (intd (add-to-store %store (basename file) #t + "sha256" file))) + (and (gexp? exp) + (match (gexp-inputs exp) + (((x "out")) + (eq? x local))) + (equal? `(display ,intd) (gexp->sexp* exp))))) + (test-assert "same input twice" (let ((exp (gexp (begin (display (ungexp coreutils)) @@ -336,6 +348,20 @@ (mlet %store-monad ((drv mdrv)) (return (string=? system (derivation-system drv)))))) +(test-assertm "gexp->derivation, local-file" + (mlet* %store-monad ((file -> (search-path %load-path "guix.scm")) + (intd (interned-file file)) + (local -> (local-file file)) + (exp -> (gexp (begin + (stat (ungexp local)) + (symlink (ungexp local) + (ungexp output))))) + (drv (gexp->derivation "local-file" exp))) + (mbegin %store-monad + (built-derivations (list drv)) + (return (string=? (readlink (derivation->output-path drv)) + intd))))) + (test-assertm "gexp->derivation, cross-compilation" (mlet* %store-monad ((target -> "mips64el-linux") (exp -> (gexp (list (ungexp coreutils) -- cgit v1.2.3 From 2242ff45fa25656a0b4420fc901e22058513e338 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 28 Mar 2015 18:24:03 +0100 Subject: gexp: Slightly simplify 'lower-inputs'. * guix/gexp.scm (lower-inputs): Simplify first case by removing the 'input' binding. --- guix/gexp.scm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/guix/gexp.scm b/guix/gexp.scm index 2492974d8f..de8b7bbb46 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -204,12 +204,12 @@ the cross-compilation target triplet." (with-monad %store-monad (sequence %store-monad (map (match-lambda - ((and ((? struct? thing) sub-drv ...) input) - (mlet* %store-monad ((lower -> (lookup-compiler thing)) - (drv (lower thing system target))) - (return `(,drv ,@sub-drv)))) - (input - (return input))) + (((? struct? thing) sub-drv ...) + (mlet* %store-monad ((lower -> (lookup-compiler thing)) + (drv (lower thing system target))) + (return `(,drv ,@sub-drv)))) + (input + (return input))) inputs)))) (define* (lower-reference-graphs graphs #:key system target) -- cgit v1.2.3 From 18ad5bff7a3835d620ada1572ffef8a9efc97372 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 29 Mar 2015 21:34:02 -0400 Subject: gnu: xbindkeys: Pass --build to configure. * gnu/packages/xdisorg.scm (xbindkeys)[arguments]: Pass --build to configure. --- gnu/packages/xdisorg.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 99e2fce926..bf15b38f09 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014 Andreas Enge -;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2014 Eric Bavier ;;; Copyright © 2014, 2015 Alex Kost ;;; Copyright © 2013, 2015 Ludovic Courtès @@ -26,6 +26,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages compression) @@ -442,6 +443,13 @@ transparent text on your screen.") (inputs `(("libx11" ,libx11) ("guile" ,guile-2.0))) + (arguments `(#:configure-flags + '(;; FIXME: xbindkeys-1.8.6's config.guess fails on mips64el. + ,@(if (%current-target-system) + '() + (let ((triplet + (nix-system->gnu-triplet (%current-system)))) + (list (string-append "--build=" triplet))))))) (home-page "http://www.nongnu.org/xbindkeys/") (synopsis "Associate a combination of keys with a shell command") (description -- cgit v1.2.3 From e930c2a350ea7dd33df1293ea3b87c2206e9343c Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 29 Mar 2015 21:35:34 -0400 Subject: gnu: liba52: Pass --build to configure. * gnu/packages/video.scm (liba52)[arguments]: Pass --build to configure. --- gnu/packages/video.scm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 4c3c3ec44b..bc589a6edb 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -24,6 +24,7 @@ #:use-module ((guix licenses) #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ bsd-3 public-domain fsf-free isc)) + #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) @@ -93,6 +94,13 @@ (base32 "0czccp4fcpf2ykp16xcrzdfmnircz1ynhls334q374xknd5747d2")))) (build-system gnu-build-system) + (arguments `(#:configure-flags + '(;; FIXME: liba52-0.7.4's config.guess fails on mips64el. + ,@(if (%current-target-system) + '() + (let ((triplet + (nix-system->gnu-triplet (%current-system)))) + (list (string-append "--build=" triplet))))))) (home-page "http://liba52.sourceforge.net/") (synopsis "ATSC A/52 stream decoder") (description "liba52 is a library for decoding ATSC A/52 streams. The -- cgit v1.2.3 From 41fd23334d9932c978579576fd86c5f89894c015 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 30 Mar 2015 05:33:33 -0400 Subject: gnu: tzdata: Update to 2015b. * gnu/packages/base.scm (tzdata): Update to 2015b. --- gnu/packages/base.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index ac059870e2..89b2773867 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -611,7 +611,7 @@ command.") (define-public tzdata (package (name "tzdata") - (version "2014j") + (version "2015b") (source (origin (method url-fetch) (uri (string-append @@ -619,7 +619,7 @@ command.") version ".tar.gz")) (sha256 (base32 - "038fvj6zf51k6z9sbbxbj87ajaf69l3whal2vwshbm4l0qr71n52")))) + "0qmdr1yqqn94b5a54axwszfzimyxg27i6xsfmp0sswd3nfjw2sjm")))) (build-system gnu-build-system) (arguments '(#:tests? #f @@ -666,7 +666,7 @@ command.") version ".tar.gz")) (sha256 (base32 - "1qpd12imy7q5hb5fhk48mfw65s0xlrkmms0zr2gk0mj88qjn3m3z")))))) + "0xjxlgzva13y8qi3vfbb3nq5pii8ax9wi4yc7vj9134rbciz2s76")))))) (home-page "http://www.iana.org/time-zones") (synopsis "Database of current and historical time zones") (description "The Time Zone Database (often called tz or zoneinfo) -- cgit v1.2.3 From b47be0214d1cee6326bac70b485c27c4e2b9d9fc Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Mon, 2 Mar 2015 01:06:35 +0100 Subject: gnu: portaudio: Patch for Audacity compatibility. * gnu/packages/audio.scm (portaudio): Add a patch for Audacity compatibility. * gnu/packages/patches/portaudio-audacity-compat.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + gnu/packages/audio.scm | 19 +- .../patches/portaudio-audacity-compat.patch | 324 +++++++++++++++++++++ 3 files changed, 341 insertions(+), 3 deletions(-) create mode 100644 gnu/packages/patches/portaudio-audacity-compat.patch diff --git a/gnu-system.am b/gnu-system.am index 46807b67c7..13e6ab62fb 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -499,6 +499,7 @@ dist_patch_DATA = \ gnu/packages/patches/pingus-sdl-libs-config.patch \ gnu/packages/patches/plotutils-libpng-jmpbuf.patch \ gnu/packages/patches/polkit-drop-test.patch \ + gnu/packages/patches/portaudio-audacity-compat.patch \ gnu/packages/patches/procps-make-3.82.patch \ gnu/packages/patches/pulseaudio-fix-mult-test.patch \ gnu/packages/patches/pybugz-encode-error.patch \ diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index dec167f917..aa94dda7c7 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -1088,15 +1088,28 @@ portions of LAME.") (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version) ".tgz")) (sha256 - (base32 "0mwddk4qzybaf85wqfhxqlf0c5im9il8z03rd4n127k8y2jj9q4g")))) + (base32 "0mwddk4qzybaf85wqfhxqlf0c5im9il8z03rd4n127k8y2jj9q4g")) + (patches (list (search-patch "portaudio-audacity-compat.patch"))))) (build-system gnu-build-system) (inputs ;; TODO: Add ASIHPI. `(("alsa-lib" ,alsa-lib) ("jack" ,jack-2))) (native-inputs - `(("pkg-config" ,pkg-config))) - (arguments '(#:tests? #f)) ;no 'check' target + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) + (arguments + '(#:phases + ;; Autoreconf is necessary because the audacity-compat patch modifies + ;; .in files. + (alist-cons-after + 'unpack 'autoreconf + (lambda _ + (zero? (system* "autoreconf" "-vif"))) + %standard-phases) + #:tests? #f)) ;no 'check' target (home-page "http://www.portaudio.com/") (synopsis "Audio I/O library") (description diff --git a/gnu/packages/patches/portaudio-audacity-compat.patch b/gnu/packages/patches/portaudio-audacity-compat.patch new file mode 100644 index 0000000000..9f239ada35 --- /dev/null +++ b/gnu/packages/patches/portaudio-audacity-compat.patch @@ -0,0 +1,324 @@ +Description: Add features needed to make portmixer work with audacity. +Author: Audacity Team +Last-Update: 2011-12-07 + +See . + +--- a/include/pa_win_ds.h ++++ b/include/pa_win_ds.h +@@ -89,6 +89,21 @@ + + }PaWinDirectSoundStreamInfo; + ++/** Retrieve the GUID of the input device. ++ ++ @param stream The stream to query. ++ ++ @return A pointer to the GUID, or NULL if none. ++*/ ++LPGUID PaWinDS_GetStreamInputGUID( PaStream* s ); ++ ++/** Retrieve the GUID of the output device. ++ ++ @param stream The stream to query. ++ ++ @return A pointer to the GUID, or NULL if none. ++*/ ++LPGUID PaWinDS_GetStreamOutputGUID( PaStream* s ); + + + #ifdef __cplusplus +--- a/include/portaudio.h ++++ b/include/portaudio.h +@@ -1146,6 +1146,15 @@ + signed long Pa_GetStreamWriteAvailable( PaStream* stream ); + + ++/** Retrieve the host type handling an open stream. ++ ++ @return Returns a non-negative value representing the host API type ++ handling an open stream or, a PaErrorCode (which are always negative) ++ if PortAudio is not initialized or an error is encountered. ++*/ ++PaHostApiTypeId Pa_GetStreamHostApiType( PaStream* stream ); ++ ++ + /* Miscellaneous utilities */ + + +--- /dev/null ++++ b/include/pa_unix_oss.h +@@ -0,0 +1,104 @@ ++#ifndef PA_UNIX_OSS_H ++#define PA_UNIX_OSS_H ++ ++/* ++ * $Id: portaudio.patch,v 1.10 2009-06-30 04:52:59 llucius Exp $ ++ * PortAudio Portable Real-Time Audio Library ++ * OSS-specific extensions ++ * ++ * Copyright (c) 1999-2000 Ross Bencina and Phil Burk ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining ++ * a copy of this software and associated documentation files ++ * (the "Software"), to deal in the Software without restriction, ++ * including without limitation the rights to use, copy, modify, merge, ++ * publish, distribute, sublicense, and/or sell copies of the Software, ++ * and to permit persons to whom the Software is furnished to do so, ++ * subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * Any person wishing to distribute modifications to the Software is ++ * requested to send the modifications to the original developer so that ++ * they can be incorporated into the canonical version. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ++ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF ++ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ++ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ * ++ */ ++ ++/** @file ++ * OSS-specific PortAudio API extension header file. ++ */ ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++const char *PaOSS_GetStreamInputDevice( PaStream *s ); ++ ++const char *PaOSS_GetStreamOutputDevice( PaStream *s ); ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif ++#ifndef PA_UNIX_OSS_H ++#define PA_UNIX_OSS_H ++ ++/* ++ * $Id: portaudio.patch,v 1.10 2009-06-30 04:52:59 llucius Exp $ ++ * PortAudio Portable Real-Time Audio Library ++ * OSS-specific extensions ++ * ++ * Copyright (c) 1999-2000 Ross Bencina and Phil Burk ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining ++ * a copy of this software and associated documentation files ++ * (the "Software"), to deal in the Software without restriction, ++ * including without limitation the rights to use, copy, modify, merge, ++ * publish, distribute, sublicense, and/or sell copies of the Software, ++ * and to permit persons to whom the Software is furnished to do so, ++ * subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * Any person wishing to distribute modifications to the Software is ++ * requested to send the modifications to the original developer so that ++ * they can be incorporated into the canonical version. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ++ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF ++ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ++ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ * ++ */ ++ ++/** @file ++ * OSS-specific PortAudio API extension header file. ++ */ ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++const char *PaOSS_GetStreamInputDevice( PaStream *s ); ++ ++const char *PaOSS_GetStreamOutputDevice( PaStream *s ); ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif +--- a/src/common/pa_front.c ++++ b/src/common/pa_front.c +@@ -1216,8 +1216,10 @@ + hostApiInputParametersPtr, hostApiOutputParametersPtr, + sampleRate, framesPerBuffer, streamFlags, streamCallback, userData ); + +- if( result == paNoError ) ++ if( result == paNoError ) { + AddOpenStream( *stream ); ++ PA_STREAM_REP(*stream)->hostApiType = hostApi->info.type; ++ } + + + PA_LOGAPI(("Pa_OpenStream returned:\n" )); +@@ -1729,6 +1731,32 @@ + return result; + } + ++PaHostApiTypeId Pa_GetStreamHostApiType( PaStream* stream ) ++{ ++ PaError error = PaUtil_ValidateStreamPointer( stream ); ++ PaHostApiTypeId result; ++ ++#ifdef PA_LOG_API_CALLS ++ PaUtil_DebugPrint("Pa_GetStreamHostApiType called:\n" ); ++ PaUtil_DebugPrint("\tPaStream* stream: 0x%p\n", stream ); ++#endif ++ ++ if( error == paNoError ) ++ { ++ result = PA_STREAM_REP(stream)->hostApiType; ++ } ++ else ++ { ++ result = (PaHostApiTypeId) error; ++ } ++ ++#ifdef PA_LOG_API_CALLS ++ PaUtil_DebugPrint("Pa_GetStreamHostApiType returned:\n" ); ++ PaUtil_DebugPrint("\tPaError: %d ( %s )\n\n", result, Pa_GetErrorText( result ) ); ++#endif ++ ++ return result; ++} + + PaError Pa_GetSampleSize( PaSampleFormat format ) + { +--- a/src/common/pa_stream.c ++++ b/src/common/pa_stream.c +@@ -93,6 +93,8 @@ + streamRepresentation->streamInfo.inputLatency = 0.; + streamRepresentation->streamInfo.outputLatency = 0.; + streamRepresentation->streamInfo.sampleRate = 0.; ++ ++ streamRepresentation->hostApiType = 0; + } + + +--- a/src/common/pa_stream.h ++++ b/src/common/pa_stream.h +@@ -152,6 +152,7 @@ + PaStreamFinishedCallback *streamFinishedCallback; + void *userData; + PaStreamInfo streamInfo; ++ PaHostApiTypeId hostApiType; + } PaUtilStreamRepresentation; + + +--- a/src/hostapi/coreaudio/pa_mac_core_blocking.c ++++ b/src/hostapi/coreaudio/pa_mac_core_blocking.c +@@ -66,6 +66,9 @@ + #ifdef MOSX_USE_NON_ATOMIC_FLAG_BITS + # define OSAtomicOr32( a, b ) ( (*(b)) |= (a) ) + # define OSAtomicAnd32( a, b ) ( (*(b)) &= (a) ) ++#elif MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_3 ++# define OSAtomicOr32( a, b ) BitOrAtomic( a, (UInt32 *) b ) ++# define OSAtomicAnd32( a, b ) BitAndAtomic( a, (UInt32 *) b ) + #else + # include + #endif +--- a/src/hostapi/alsa/pa_linux_alsa.c ++++ b/src/hostapi/alsa/pa_linux_alsa.c +@@ -611,6 +611,7 @@ + StreamDirection streamDir; + + snd_pcm_channel_area_t *channelAreas; /* Needed for channel adaption */ ++ int card; + } PaAlsaStreamComponent; + + /* Implementation specific stream structure */ +@@ -1806,6 +1807,7 @@ + { + PaError result = paNoError; + PaSampleFormat userSampleFormat = params->sampleFormat, hostSampleFormat = paNoError; ++ snd_pcm_info_t* pcmInfo; + assert( params->channelCount > 0 ); + + /* Make sure things have an initial value */ +@@ -1826,6 +1828,9 @@ + self->device = params->device; + + PA_ENSURE( AlsaOpen( &alsaApi->baseHostApiRep, params, streamDir, &self->pcm ) ); ++ ++ snd_pcm_info_alloca( &pcmInfo ); ++ self->card = snd_pcm_info_get_card( pcmInfo ); + self->nfds = alsa_snd_pcm_poll_descriptors_count( self->pcm ); + + PA_ENSURE( hostSampleFormat = PaUtil_SelectClosestAvailableFormat( GetAvailableFormats( self->pcm ), userSampleFormat ) ); +@@ -4519,9 +4524,7 @@ + /* XXX: More descriptive error? */ + PA_UNLESS( stream->capture.pcm, paDeviceUnavailable ); + +- alsa_snd_pcm_info_alloca( &pcmInfo ); +- PA_ENSURE( alsa_snd_pcm_info( stream->capture.pcm, pcmInfo ) ); +- *card = alsa_snd_pcm_info_get_card( pcmInfo ); ++ *card = stream->capture.card; + + error: + return result; +@@ -4537,9 +4540,7 @@ + /* XXX: More descriptive error? */ + PA_UNLESS( stream->playback.pcm, paDeviceUnavailable ); + +- alsa_snd_pcm_info_alloca( &pcmInfo ); +- PA_ENSURE( alsa_snd_pcm_info( stream->playback.pcm, pcmInfo ) ); +- *card = alsa_snd_pcm_info_get_card( pcmInfo ); ++ *card = stream->playback.card; + + error: + return result; +--- a/src/hostapi/oss/pa_unix_oss.c ++++ b/src/hostapi/oss/pa_unix_oss.c +@@ -2028,3 +2028,26 @@ + #endif + } + ++const char *PaOSS_GetStreamInputDevice( PaStream* s ) ++{ ++ PaOssStream *stream = (PaOssStream*)s; ++ ++ if( stream->capture ) ++ { ++ return stream->capture->devName; ++ } ++ ++ return NULL; ++} ++ ++const char *PaOSS_GetStreamOutputDevice( PaStream* s ) ++{ ++ PaOssStream *stream = (PaOssStream*)s; ++ ++ if( stream->playback ) ++ { ++ return stream->playback->devName; ++ } ++ ++ return NULL; ++} +--- a/configure.in ++++ b/configure.in +@@ -365,6 +365,7 @@ + DLL_LIBS="$DLL_LIBS -lossaudio" + LIBS="$LIBS -lossaudio" + fi ++ INCLUDES="$INCLUDES pa_unix_oss.h" + AC_DEFINE(PA_USE_OSS,1) + fi + -- cgit v1.2.3 From 147479c9182b4938f7e5536381a108923ae5bbdf Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Fri, 20 Feb 2015 21:52:21 +0100 Subject: gnu: Add audacity. * gnu/packages/audacity.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. * gnu/packages/patches/audacity-fix-ffmpeg-binding.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 2 + gnu/packages/audacity.scm | 102 +++++++++++++++++++++ .../patches/audacity-fix-ffmpeg-binding.patch | 32 +++++++ 3 files changed, 136 insertions(+) create mode 100644 gnu/packages/audacity.scm create mode 100644 gnu/packages/patches/audacity-fix-ffmpeg-binding.patch diff --git a/gnu-system.am b/gnu-system.am index 13e6ab62fb..d3e4dafc4e 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -38,6 +38,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/asciidoc.scm \ gnu/packages/aspell.scm \ gnu/packages/attr.scm \ + gnu/packages/audacity.scm \ gnu/packages/audio.scm \ gnu/packages/autogen.scm \ gnu/packages/autotools.scm \ @@ -369,6 +370,7 @@ dist_patch_DATA = \ gnu/packages/patches/ath9k-htc-firmware-binutils.patch \ gnu/packages/patches/ath9k-htc-firmware-gcc.patch \ gnu/packages/patches/ath9k-htc-firmware-objcopy.patch \ + gnu/packages/patches/audacity-fix-ffmpeg-binding.patch \ gnu/packages/patches/automake-skip-amhello-tests.patch \ gnu/packages/patches/avahi-localstatedir.patch \ gnu/packages/patches/avrdude-fix-libusb.patch \ diff --git a/gnu/packages/audacity.scm b/gnu/packages/audacity.scm new file mode 100644 index 0000000000..4f7bc686e3 --- /dev/null +++ b/gnu/packages/audacity.scm @@ -0,0 +1,102 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages audacity) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages audio) + #:use-module (gnu packages base) + #:use-module (gnu packages gtk) + #:use-module (gnu packages linux) + #:use-module (gnu packages mp3) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages python) + #:use-module (gnu packages xiph) + #:use-module (gnu packages xml) + #:use-module (gnu packages video) + #:use-module (gnu packages wxwidgets)) + +(define-public audacity + (package + (name "audacity") + (version "2.1.0") + (source + (origin + (method url-fetch) + (uri + (string-append + "mirror://sourceforge/audacity/audacity-minsrc-" version ".tar.xz")) + (sha256 + (base32 "1cs2w3fwqylpqmfwkvlgdx5lhclpckfil7pqibl37qlbnf4qvndh")) + (patches (list (search-patch "audacity-fix-ffmpeg-binding.patch"))))) + (build-system gnu-build-system) + (inputs + ;; TODO: Add portSMF and libwidgetextra once they're packaged. In-tree + ;; versions shipping with Audacity are used for now. + `(("wxwidgets" ,wxwidgets-2) + ("gtk" ,gtk+-2) + ("alsa-lib" ,alsa-lib) + ("jack" ,jack-2) + ("expat" ,expat) + ("ffmpeg" ,ffmpeg) + ("lame" ,lame) + ("flac" ,flac) + ("libid3tag" ,libid3tag) + ("libmad" ,libmad) + ("libsbsms" ,libsbsms) + ("libsndfile" ,libsndfile) + ("soundtouch" ,soundtouch) + ("soxr" ,soxr) ;replaces libsamplerate + ("twolame" ,twolame) + ("vamp" ,vamp) + ("libvorbis" ,libvorbis) + ("lv2" ,lv2) + ("lilv" ,lilv) + ("portaudio" ,portaudio))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("python" ,python-2) + ("which" ,which))) + (arguments + '(#:configure-flags + (let ((libid3tag (assoc-ref %build-inputs "libid3tag")) + (libmad (assoc-ref %build-inputs "libmad"))) + (list + ;; Loading FFmpeg dynamically is problematic. + "--disable-dynamic-loading" + ;; libid3tag and libmad provide no .pc files, so pkg-config fails to + ;; find them. Force their inclusion. + (string-append "ID3TAG_CFLAGS=-I" libid3tag "/include") + (string-append "ID3TAG_LIBS=-L" libid3tag "/lib -lid3tag -lz") + (string-append "LIBMAD_CFLAGS=-I" libmad "/include") + (string-append "LIBMAD_LIBS=-L" libmad "/lib -lmad"))) + ;; The test suite is not "well exercised" according to the developers, + ;; and fails with various errors. See + ;; . + #:tests? #f)) + (home-page "http://audacity.sourceforge.net/") + (synopsis "Software for recording and editing sounds") + (description + "Audacity is a multi-track audio editor designed for recording, playing +and editing digital audio. It features digital effects and spectrum analysis +tools.") + (license license:gpl2+))) diff --git a/gnu/packages/patches/audacity-fix-ffmpeg-binding.patch b/gnu/packages/patches/audacity-fix-ffmpeg-binding.patch new file mode 100644 index 0000000000..d6d65338d9 --- /dev/null +++ b/gnu/packages/patches/audacity-fix-ffmpeg-binding.patch @@ -0,0 +1,32 @@ +This resolves some "declaration of C function conflicts with previous +declaration" errors during compilation. + +--- a/src/FFmpeg.h 2015-02-21 00:33:33.853857529 +0100 ++++ b/src/FFmpeg.h 2015-02-21 00:35:09.626497205 +0100 +@@ -688,7 +688,7 @@ + FFMPEG_FUNCTION_WITH_RETURN( + AVOutputFormat*, + av_oformat_next, +- (AVOutputFormat *f), ++ (const AVOutputFormat *f), + (f) + ); + FFMPEG_FUNCTION_WITH_RETURN( +@@ -755,7 +755,7 @@ + FFMPEG_FUNCTION_WITH_RETURN( + int, + av_fifo_size, +- (AVFifoBuffer *f), ++ (const AVFifoBuffer *f), + (f) + ); + FFMPEG_FUNCTION_WITH_RETURN( +@@ -801,7 +801,7 @@ + FFMPEG_FUNCTION_WITH_RETURN( + AVDictionaryEntry *, + av_dict_get, +- (AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags), ++ (const AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags), + (m, key, prev, flags) + ); + FFMPEG_FUNCTION_WITH_RETURN( -- cgit v1.2.3 From 8d30be32fa01a191d341804b7614a722da950f84 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 30 Mar 2015 05:59:51 -0400 Subject: Revert "gnu: tzdata: Update to 2015b." This reverts commit 41fd23334d9932c978579576fd86c5f89894c015. --- gnu/packages/base.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 89b2773867..ac059870e2 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -611,7 +611,7 @@ command.") (define-public tzdata (package (name "tzdata") - (version "2015b") + (version "2014j") (source (origin (method url-fetch) (uri (string-append @@ -619,7 +619,7 @@ command.") version ".tar.gz")) (sha256 (base32 - "0qmdr1yqqn94b5a54axwszfzimyxg27i6xsfmp0sswd3nfjw2sjm")))) + "038fvj6zf51k6z9sbbxbj87ajaf69l3whal2vwshbm4l0qr71n52")))) (build-system gnu-build-system) (arguments '(#:tests? #f @@ -666,7 +666,7 @@ command.") version ".tar.gz")) (sha256 (base32 - "0xjxlgzva13y8qi3vfbb3nq5pii8ax9wi4yc7vj9134rbciz2s76")))))) + "1qpd12imy7q5hb5fhk48mfw65s0xlrkmms0zr2gk0mj88qjn3m3z")))))) (home-page "http://www.iana.org/time-zones") (synopsis "Database of current and historical time zones") (description "The Time Zone Database (often called tz or zoneinfo) -- cgit v1.2.3 From a06af9f5284f7b5b649f5dc32131de18115ec92e Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 30 Mar 2015 05:33:33 -0400 Subject: gnu: tzdata: Update to 2015b. * gnu/packages/base.scm (tzdata): Update to 2015b. --- gnu/packages/base.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 94a93a245d..3ed853a179 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -617,7 +617,7 @@ command.") (define-public tzdata (package (name "tzdata") - (version "2014j") + (version "2015b") (source (origin (method url-fetch) (uri (string-append @@ -625,7 +625,7 @@ command.") version ".tar.gz")) (sha256 (base32 - "038fvj6zf51k6z9sbbxbj87ajaf69l3whal2vwshbm4l0qr71n52")))) + "0qmdr1yqqn94b5a54axwszfzimyxg27i6xsfmp0sswd3nfjw2sjm")))) (build-system gnu-build-system) (arguments '(#:tests? #f @@ -672,7 +672,7 @@ command.") version ".tar.gz")) (sha256 (base32 - "1qpd12imy7q5hb5fhk48mfw65s0xlrkmms0zr2gk0mj88qjn3m3z")))))) + "0xjxlgzva13y8qi3vfbb3nq5pii8ax9wi4yc7vj9134rbciz2s76")))))) (home-page "http://www.iana.org/time-zones") (synopsis "Database of current and historical time zones") (description "The Time Zone Database (often called tz or zoneinfo) -- cgit v1.2.3 From 96af558907fecb22086a4ebc260b20f34fb25335 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 30 Mar 2015 15:20:55 +0200 Subject: elf: Add missing argument in 'elf-segment'. * guix/elf.scm (elf-segment): Add missing argument N. --- guix/elf.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/guix/elf.scm b/guix/elf.scm index a4b0e819a5..4283dbd2e4 100644 --- a/guix/elf.scm +++ b/guix/elf.scm @@ -1,6 +1,6 @@ ;;; Guile ELF reader and writer -;; Copyright (C) 2011, 2012, 2013, 2014 Free Software Foundation, Inc. +;; Copyright (C) 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc. ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -571,6 +571,7 @@ ((4) parse-elf32-program-header) ((8) parse-elf64-program-header) (else (error "unhandled pointer size"))) + n (elf-bytes elf) (+ (elf-phoff elf) (* n (elf-phentsize elf))) (elf-byte-order elf))) -- cgit v1.2.3 From e9f1fa39a280cd2272a8a904f51fe478d4717cd0 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 30 Mar 2015 15:37:35 +0200 Subject: gnu: Add missing copyright line. * gnu/packages/graphics.scm: Add copyright line for 87bafa0. --- gnu/packages/graphics.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index c92dd1b354..f574628698 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Ludovic Courtès +;;; Copyright © 2015 Tomáš Čech ;;; ;;; This file is part of GNU Guix. ;;; -- cgit v1.2.3 From f73b8e3d0a14961418255d53708bd10271ef5f00 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 31 Mar 2015 13:59:37 +0200 Subject: install: Create /var/tmp. Suggested by Mark H Weaver . * gnu/build/install.scm (directives): Add /var/tmp. --- gnu/build/install.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/build/install.scm b/gnu/build/install.scm index aa901f6971..51895d58ec 100644 --- a/gnu/build/install.scm +++ b/gnu/build/install.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -118,6 +118,7 @@ STORE." (directory "/bin") (directory "/tmp" 0 0 #o1777) ; sticky bit + (directory "/var/tmp" 0 0 #o1777) (directory "/root" 0 0) ; an exception (directory "/home" 0 0))) -- cgit v1.2.3 From 9af288a6805661627f964d9e9eae4518aaad266e Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Mon, 30 Mar 2015 10:37:11 +0200 Subject: gnu: ngircd: Fix test suite. * gnu/packages/messaging.scm (ngircd): Overwrite getpid.sh with a more reliable version. --- gnu/packages/messaging.scm | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 462c500248..fd857b1ec3 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -201,7 +201,22 @@ dictionaries. HexChat can be extended with multiple addons.") 'configure 'post-configure (lambda _ (substitute* "src/ngircd/Makefile" - (("/bin/sh") (which "sh")))) + (("/bin/sh") (which "sh"))) + ;; The default getpid.sh does a sloppy grep over 'ps -ax' output, + ;; which fails arbitrarily. + (with-output-to-file "src/testsuite/getpid.sh" + (lambda () + (display + (string-append + "#!" (which "sh") "\n" + "ps -C \"$1\" -o pid=\n")))) + ;; Our variant of getpid.sh does not work for interpreter names if a + ;; shebang script is run directly as "./foo", so patch cases where + ;; the test suite relies on this. + (substitute* "src/testsuite/start-server.sh" + ;; It runs 'getpid.sh sh' to test if it works at all. Run it on + ;; 'make' instead. + (("getpid.sh sh") "getpid.sh make"))) %standard-phases))) (home-page "http://ngircd.barton.de/") (synopsis "Lightweight Internet Relay Chat server for small networks") -- cgit v1.2.3 From 8e913213d9d072ddf75c48b8db8f32b46d5a2a3c Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 20 Mar 2015 16:17:55 +0100 Subject: gnu: Add cutadapt. * gnu/packages/bioinformatics.scm (cutadapt): New variable. --- gnu/packages/bioinformatics.scm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index ca8dcb761a..883eb19f6a 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -19,6 +19,7 @@ (define-module (gnu packages bioinformatics) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) + #:use-module (guix utils) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system gnu) @@ -401,6 +402,46 @@ files between different genome assemblies. It supports most commonly used file formats including SAM/BAM, Wiggle/BigWig, BED, GFF/GTF, VCF.") (license license:gpl2+))) +(define-public cutadapt + (package + (name "cutadapt") + (version "1.8") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/marcelm/cutadapt/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "161bp87y6gd6r5bmvjpn2b1k942i3fizfpa139f0jn6jv1wcp5h5")))) + (build-system python-build-system) + (arguments + ;; tests must be run after install + `(#:phases (alist-cons-after + 'install 'check + (lambda* (#:key inputs outputs #:allow-other-keys) + (setenv "PYTHONPATH" + (string-append + (getenv "PYTHONPATH") + ":" (assoc-ref outputs "out") + "/lib/python" + (string-take (string-take-right + (assoc-ref inputs "python") 5) 3) + "/site-packages")) + (zero? (system* "nosetests" "-P" "tests"))) + (alist-delete 'check %standard-phases)))) + (native-inputs + `(("python-cython" ,python-cython) + ("python-nose" ,python-nose) + ("python-setuptools" ,python-setuptools))) + (home-page "https://code.google.com/p/cutadapt/") + (synopsis "Remove adapter sequences from nucleotide sequencing reads") + (description + "Cutadapt finds and removes adapter sequences, primers, poly-A tails and +other types of unwanted sequence from high-throughput sequencing reads.") + (license license:expat))) + (define-public flexbar (package (name "flexbar") -- cgit v1.2.3 From de07c0db4a48cdedc28d7f5b2dcd368f1885e8c9 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 20 Mar 2015 16:50:33 +0100 Subject: gnu: Add vcftools. * gnu/packages/bioinformatics.scm (vcftools): New variable. --- gnu/packages/bioinformatics.scm | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 883eb19f6a..651018e0f5 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -970,3 +970,43 @@ chimeric (fusion) transcripts, and is also capable of mapping full-length RNA sequences.") ;; STAR is licensed under GPLv3 or later; htslib is MIT-licensed. (license license:gpl3+))) + +(define-public vcftools + (package + (name "vcftools") + (version "0.1.12b") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/vcftools/vcftools_" + version ".tar.gz")) + (sha256 + (base32 + "148al9h7f8g8my2qdnpax51kdd2yjrivlx6frvakf4lz5r8j88wx")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no "check" target + #:make-flags (list + (string-append "PREFIX=" (assoc-ref %outputs "out")) + (string-append "MANDIR=" (assoc-ref %outputs "out") + "/share/man/man1")) + #:phases + (alist-cons-after + 'unpack 'patch-manpage-install + (lambda _ + (substitute* "Makefile" + (("cp \\$\\{PREFIX\\}/cpp/vcftools.1") "cp ./cpp/vcftools.1"))) + (alist-delete 'configure %standard-phases)))) + (inputs + `(("perl" ,perl) + ("zlib" ,zlib))) + (home-page "http://vcftools.sourceforge.net/") + (synopsis "Tools for working with VCF files") + (description + "VCFtools is a program package designed for working with VCF files, such +as those generated by the 1000 Genomes Project. The aim of VCFtools is to +provide easily accessible methods for working with complex genetic variation +data in the form of VCF files.") + ;; The license is declared as LGPLv3 in the README and + ;; at http://vcftools.sourceforge.net/license.html + (license license:lgpl3))) -- cgit v1.2.3 From 3cff95cbee7525a99347e3a3e9f2a9cebe55086e Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 31 Mar 2015 12:34:37 +0200 Subject: gnu: Add python-decorator. * gnu/packages/python.scm (python-decorator, python2-decorator): New variables. --- gnu/packages/python.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 23afec7950..f7eb478c3c 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -2837,6 +2837,34 @@ PNG, PostScript, PDF, and SVG file output.") (define-public python2-cairocffi (package-with-python2 python-cairocffi)) +(define-public python-decorator + (package + (name "python-decorator") + (version "3.4.2") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/d/decorator/decorator-" + version ".tar.gz")) + (sha256 + (base32 "0i2bnlkh0p9gs76hb28mafandcrig2fmv56w9ai6mshxwqn0083k")))) + (build-system python-build-system) + (arguments '(#:tests? #f)) ; no test target + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (home-page "http://pypi.python.org/pypi/decorator/") + (synopsis "Python module to simplify usage of decorators") + (description + "The aim of the decorator module is to simplify the usage of decorators +for the average programmer, and to popularize decorators usage giving examples +of useful decorators, such as memoize, tracing, redirecting_stdout, locked, +etc. The core of this module is a decorator factory.") + (license license:expat))) + +(define-public python2-decorator + (package-with-python2 python-decorator)) + (define-public python-ipython (package (name "python-ipython") -- cgit v1.2.3 From 32f77c0445b811481e011674ba6cfdfb22ead3c1 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 31 Mar 2015 12:35:09 +0200 Subject: gnu: Add python-networkx. * gnu/packages/python.scm (python-networkx, python2-networkx): New variables. --- gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index f7eb478c3c..c5cae6de45 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -3335,6 +3335,35 @@ interfaces in an easy and portable manner.") (define-public python2-netifaces (package-with-python2 python-netifaces)) +(define-public python-networkx + (package + (name "python-networkx") + (version "1.9.1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/n/networkx/networkx-" + version ".tar.gz")) + (sha256 + (base32 "0n8wy0yq1kmdq4wh68mlhwhkndvwzx48lg41a1z0sxxms0wfp033")))) + (build-system python-build-system) + ;; python-decorator is needed at runtime + (propagated-inputs + `(("python-decorator" ,python-decorator))) + (native-inputs + `(("python-setuptools" ,python-setuptools) + ("python-nose" ,python-nose))) + (home-page "http://networkx.github.io/") + (synopsis "Python module for creating and manipulating graphs and networks") + (description + "NetworkX is a Python package for the creation, manipulation, and study +of the structure, dynamics, and functions of complex networks.") + (license bsd-3))) + +(define-public python2-networkx + (package-with-python2 python-networkx)) + (define-public snakemake (package (name "snakemake") -- cgit v1.2.3 From 49261e45d8a9e2ff42a10950306c92b547ea3e8f Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 31 Mar 2015 12:37:31 +0200 Subject: gnu: pbtranscript-tofu: Delete pre-built libraries. * gnu/packages/bioinformatics.scm (pbtranscript-tofu)[arguments]: Delete "build" directory and any shared objects after unpacking. --- gnu/packages/bioinformatics.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 651018e0f5..f6db5a8e65 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -750,15 +750,18 @@ files and writing bioinformatics applications.") (chdir "pbtranscript-tofu/pbtranscript/") ;; Delete clutter (delete-file-recursively "dist/") + (delete-file-recursively "build/") (delete-file-recursively "setuptools_cython-0.2.1-py2.6.egg/") (delete-file-recursively "pbtools.pbtranscript.egg-info") (delete-file "Cython-0.20.1.tar.gz") (delete-file "setuptools_cython-0.2.1-py2.7.egg") (delete-file "setuptools_cython-0.2.1.tar.gz") (delete-file "setup.cfg") + (for-each delete-file + (find-files "." "\\.so$")) ;; files should be writable for install phase (for-each (lambda (f) (chmod f #o755)) - (find-files "." "\\.py"))) + (find-files "." "\\.py$"))) %standard-phases))) (inputs `(("python-cython" ,python2-cython) -- cgit v1.2.3 From c5372108f28a1e7d1114c6c7d73016531eb4f451 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 31 Mar 2015 13:46:27 +0200 Subject: gnu: pbtranscript-tofu: Add missing inputs. * gnu/packages/bioinformatics.scm (pbtranscript-tofu)[inputs]: Add missing runtime inputs. --- gnu/packages/bioinformatics.scm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index f6db5a8e65..3725f3ffe5 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -767,6 +767,8 @@ files and writing bioinformatics applications.") `(("python-cython" ,python2-cython) ("python-numpy" ,python2-numpy) ("python-bx-python" ,python2-bx-python) + ("python-networkx" ,python2-networkx) + ("python-scipy" ,python2-scipy) ("python-pbcore" ,python2-pbcore))) (native-inputs `(("python-nose" ,python2-nose) -- cgit v1.2.3 From fbbcf6989b63df38765c327d1fbaed3f7260a660 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 31 Mar 2015 14:30:05 -0400 Subject: gnu: xterm: Update to 317. * gnu/packages/xorg.scm (xterm): Update to 317. --- gnu/packages/xorg.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 776c858c16..cfb4cc1643 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -4884,14 +4884,14 @@ user-friendly mechanism to start the X server.") (define-public xterm (package (name "xterm") - (version "315") + (version "317") (source (origin (method url-fetch) (uri (string-append "ftp://ftp.invisible-island.net/xterm/" "xterm-" version ".tgz")) (sha256 (base32 - "00kxg36hzp011x98ib6x503pbhj1ldh6hb82l5x3a68s554h1rpy")))) + "0v9mirqws1vb8wxbdgn1w166ln7xmapg1913c7kzjs3mwkdv1rfj")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--enable-wide-chars" "--enable-256-color" -- cgit v1.2.3 From 4e7b6b4838318ca127ae588a7a28c8608b0c8721 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 31 Mar 2015 21:59:05 +0200 Subject: tests: Fix module name for 'lint'. * tests/lint.scm: Change module name to 'test-lint'. --- tests/lint.scm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/lint.scm b/tests/lint.scm index c0599224b7..2312b80934 100644 --- a/tests/lint.scm +++ b/tests/lint.scm @@ -18,8 +18,7 @@ ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . - -(define-module (test-packages) +(define-module (test-lint) #:use-module (guix tests) #:use-module (guix download) #:use-module (guix build-system gnu) -- cgit v1.2.3 From 15aa2c38429a5785ed08519c88ff89a0b7027f0f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 31 Mar 2015 22:10:08 +0200 Subject: Add (guix build gremlin). * guix/build/gremlin.scm, tests/gremlin.scm: New files. * Makefile.am (MODULES): Add guix/build/gremlin.scm. (SCM_TESTS): Add tests/gremlin.scm. --- Makefile.am | 2 + guix/build/gremlin.scm | 236 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/gremlin.scm | 57 ++++++++++++ 3 files changed, 295 insertions(+) create mode 100644 guix/build/gremlin.scm create mode 100644 tests/gremlin.scm diff --git a/Makefile.am b/Makefile.am index 4a1f8d0a88..cf709986ed 100644 --- a/Makefile.am +++ b/Makefile.am @@ -82,6 +82,7 @@ MODULES = \ guix/build/cvs.scm \ guix/build/svn.scm \ guix/build/syscalls.scm \ + guix/build/gremlin.scm \ guix/build/emacs-utils.scm \ guix/build/graft.scm \ guix/packages.scm \ @@ -178,6 +179,7 @@ SCM_TESTS = \ tests/union.scm \ tests/profiles.scm \ tests/syscalls.scm \ + tests/gremlin.scm \ tests/lint.scm if HAVE_GUILE_JSON diff --git a/guix/build/gremlin.scm b/guix/build/gremlin.scm new file mode 100644 index 0000000000..e8429129e1 --- /dev/null +++ b/guix/build/gremlin.scm @@ -0,0 +1,236 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (guix build gremlin) + #:use-module (guix elf) + #:use-module (ice-9 match) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-9) + #:use-module (srfi srfi-26) + #:use-module (system foreign) + #:use-module (rnrs bytevectors) + #:use-module (rnrs io ports) + #:export (elf-dynamic-info + elf-dynamic-info? + elf-dynamic-info-sopath + elf-dynamic-info-needed + elf-dynamic-info-rpath + elf-dynamic-info-runpath + + validate-needed-in-runpath)) + +;;; Commentary: +;;; +;;; A gremlin is sort-of like an elf, you know, and this module provides tools +;;; to deal with dynamic-link information from ELF files. +;;; +;;; Code: + +(define (dynamic-link-segment elf) + "Return the 'PT_DYNAMIC' segment of ELF--i.e., the segment that contains +dynamic linking information." + (find (lambda (segment) + (= (elf-segment-type segment) PT_DYNAMIC)) + (elf-segments elf))) + +(define (word-reader size byte-order) + "Return a procedure to read a word of SIZE bytes according to BYTE-ORDER." + (case size + ((8) + (lambda (bv index) + (bytevector-u64-ref bv index byte-order))) + ((4) + (lambda (bv index) + (bytevector-u32-ref bv index byte-order))))) + + +;; Dynamic entry: +;; +;; typedef struct +;; { +;; Elf64_Sxword d_tag; /* Dynamic entry type */ +;; union +;; { +;; Elf64_Xword d_val; /* Integer value */ +;; Elf64_Addr d_ptr; /* Address value */ +;; } d_un; +;; } Elf64_Dyn; + +(define (raw-dynamic-entries elf segment) + "Return as a list of type/value pairs all the dynamic entries found in +SEGMENT, the 'PT_DYNAMIC' segment of ELF. In the result, each car is a DT_ +value, and the interpretation of the cdr depends on the type." + (define start + (elf-segment-offset segment)) + (define bytes + (elf-bytes elf)) + (define word-size + (elf-word-size elf)) + (define byte-order + (elf-byte-order elf)) + (define read-word + (word-reader word-size byte-order)) + + (let loop ((offset 0) + (result '())) + (if (>= offset (elf-segment-memsz segment)) + (reverse result) + (let ((type (read-word bytes (+ start offset))) + (value (read-word bytes (+ start offset word-size)))) + (if (= type DT_NULL) ;finished? + (reverse result) + (loop (+ offset (* 2 word-size)) + (alist-cons type value result))))))) + +(define (vma->offset elf vma) + "Convert VMA, a virtual memory address, to an offset within ELF. + +Do that by looking at the loadable program segment (PT_LOAD) of ELF that +contains VMA and by taking into account that segment's virtual address and +offset." + ;; See 'offset_from_vma' in Binutils. + (define loads + (filter (lambda (segment) + (= (elf-segment-type segment) PT_LOAD)) + (elf-segments elf))) + + (let ((load (find (lambda (segment) + (let ((vaddr (elf-segment-vaddr segment))) + (and (>= vma vaddr) + (< vma (+ (elf-segment-memsz segment) + vaddr))))) + loads))) + (+ (- vma (elf-segment-vaddr load)) + (elf-segment-offset load)))) + +(define (dynamic-entries elf segment) + "Return all the dynamic entries found in SEGMENT, the 'PT_DYNAMIC' segment +of ELF, as a list of type/value pairs. The type is a DT_ value, and the value +may be a string or an integer depending on the entry type (for instance, the +value of DT_NEEDED entries is a string.)" + (define entries + (raw-dynamic-entries elf segment)) + + (define string-table-offset + (any (match-lambda + ((type . value) + (and (= type DT_STRTAB) value)) + (_ #f)) + entries)) + + (define (interpret-dynamic-entry type value) + (cond ((memv type (list DT_NEEDED DT_SONAME DT_RPATH DT_RUNPATH)) + (if string-table-offset + (pointer->string + (bytevector->pointer (elf-bytes elf) + (vma->offset + elf + (+ string-table-offset value)))) + value)) + (else + value))) + + (map (match-lambda + ((type . value) + (cons type (interpret-dynamic-entry type value)))) + entries)) + + +;;; +;;; High-level interface. +;;; + +(define-record-type + (%elf-dynamic-info soname needed rpath runpath) + elf-dynamic-info? + (soname elf-dynamic-info-soname) + (needed elf-dynamic-info-needed) + (rpath elf-dynamic-info-rpath) + (runpath elf-dynamic-info-runpath)) + +(define search-path->list + (let ((not-colon (char-set-complement (char-set #\:)))) + (lambda (str) + "Split STR on ':' characters." + (string-tokenize str not-colon)))) + +(define (elf-dynamic-info elf) + "Return dynamic-link information for ELF as an object, or +#f if ELF lacks dynamic-link information." + (match (dynamic-link-segment elf) + (#f #f) + ((? elf-segment? dynamic) + (let ((entries (dynamic-entries elf dynamic))) + (%elf-dynamic-info (assv-ref entries DT_SONAME) + (filter-map (match-lambda + ((type . value) + (and (= type DT_NEEDED) value)) + (_ #f)) + entries) + (or (and=> (assv-ref entries DT_RPATH) + search-path->list) + '()) + (or (and=> (assv-ref entries DT_RUNPATH) + search-path->list) + '())))))) + +(define %libc-libraries + ;; List of libraries as of glibc 2.21 (there are more but those are + ;; typically mean to be LD_PRELOADed and thus do not appear as NEEDED.) + '("libanl.so" + "libcrypt.so" + "libc.so" + "libdl.so" + "libm.so" + "libpthread.so" + "libresolv.so" + "librt.so" + "libutil.so")) + +(define (libc-library? lib) + "Return #t if LIB is one of the libraries shipped with the GNU C Library." + (find (lambda (libc-lib) + (string-prefix? libc-lib lib)) + %libc-libraries)) + +(define* (validate-needed-in-runpath file + #:key (always-found? libc-library?)) + "Return #t if all the libraries listed as FILE's 'DT_NEEDED' entries are +present in its RUNPATH, or if FILE lacks dynamic-link information. Return #f +otherwise. Libraries whose name matches ALWAYS-FOUND? are considered to be +always available." + (let* ((elf (call-with-input-file file + (compose parse-elf get-bytevector-all))) + (dyninfo (elf-dynamic-info elf))) + (when dyninfo + (let* ((runpath (elf-dynamic-info-runpath dyninfo)) + (needed (remove always-found? + (elf-dynamic-info-needed dyninfo))) + (not-found (remove (cut search-path runpath <>) + needed))) + (for-each (lambda (lib) + (format (current-error-port) + "error: '~a' depends on '~a', which cannot \ +be found in RUNPATH ~s~%" + file lib runpath)) + not-found) + ;; (when (null? not-found) + ;; (format (current-error-port) "~a is OK~%" file)) + (null? not-found))))) + +;;; gremlin.scm ends here diff --git a/tests/gremlin.scm b/tests/gremlin.scm new file mode 100644 index 0000000000..225a72ff9f --- /dev/null +++ b/tests/gremlin.scm @@ -0,0 +1,57 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (test-gremlin) + #:use-module (guix elf) + #:use-module (guix build utils) + #:use-module (guix build gremlin) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-64) + #:use-module (rnrs io ports) + #:use-module (ice-9 match)) + +(define %guile-executable + (match (command-line) + ((program . _) + (and (file-exists? program) (elf-file? program) + program)) + (_ + #f))) + +(define read-elf + (compose parse-elf get-bytevector-all)) + + +(test-begin "gremlin") + +(unless %guile-executable (test-skip 1)) +(test-assert "elf-dynamic-info-needed, executable" + (let* ((elf (call-with-input-file %guile-executable read-elf)) + (dyninfo (elf-dynamic-info elf))) + (or (not dyninfo) ;static executable + (lset<= string=? + (list (string-append "libguile-" (effective-version)) + "libgc" "libunistring" "libffi") + (map (lambda (lib) + (string-take lib (string-contains lib ".so"))) + (elf-dynamic-info-needed dyninfo)))))) + +(test-end "gremlin") + + +(exit (= (test-runner-fail-count (test-runner-current)) 0)) -- cgit v1.2.3 From f8503e2b2588391c4c0f8d8dd11ef3e9449a2884 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 31 Mar 2015 22:43:01 +0200 Subject: utils: 'modify-phases' no longer introduces quotes. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Suggested by Taylan Ulrich Bayırlı/Kammer . * guix/build/utils.scm (%modify-phases): Remove quotes. * guix/build/cmake-build-system.scm (%standard-phases): Adjust accordingly. * guix/build/glib-or-gtk-build-system.scm (%standard-phases): Likewise. * guix/build/gnu-dist.scm (%dist-phases): Likewise. * guix/build/perl-build-system.scm (%standard-phases): Likewise. * guix/build/python-build-system.scm (%standard-phases): Likewise. * guix/build/ruby-build-system.scm (%standard-phases): Likewise. * guix/build/waf-build-system.scm (%standard-phases): Likewise. * gnu/packages/bash.scm, gnu/packages/code.scm, gnu/packages/gl.scm, gnu/packages/gnome.scm, gnu/packages/graphics.scm, gnu/packages/image.scm, gnu/packages/key-mon.scm, gnu/packages/ocr.scm, gnu/packages/plotutils.scm, gnu/packages/search.scm, gnu/packages/video.scm: Likewise. --- gnu/packages/bash.scm | 4 ++-- gnu/packages/code.scm | 8 ++++---- gnu/packages/gl.scm | 12 ++++++------ gnu/packages/gnome.scm | 4 ++-- gnu/packages/graphics.scm | 4 ++-- gnu/packages/image.scm | 4 ++-- gnu/packages/key-mon.scm | 2 +- gnu/packages/ocr.scm | 2 +- gnu/packages/plotutils.scm | 6 +++--- gnu/packages/search.scm | 6 +++--- gnu/packages/video.scm | 6 +++--- guix/build/cmake-build-system.scm | 4 ++-- guix/build/glib-or-gtk-build-system.scm | 6 +++--- guix/build/gnu-dist.scm | 10 +++++----- guix/build/perl-build-system.scm | 8 ++++---- guix/build/python-build-system.scm | 12 ++++++------ guix/build/ruby-build-system.scm | 10 +++++----- guix/build/utils.scm | 8 ++++---- guix/build/waf-build-system.scm | 8 ++++---- 19 files changed, 62 insertions(+), 62 deletions(-) diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm index d98ef0582b..02cb45c955 100644 --- a/gnu/packages/bash.scm +++ b/gnu/packages/bash.scm @@ -193,8 +193,8 @@ number/base32-hash tuples, directly usable in the 'patch-series' form." #:tests? #f #:phases (modify-phases %standard-phases - (add-after install post-install ,post-install-phase) - (add-after install install-headers + (add-after 'install 'post-install ,post-install-phase) + (add-after 'install 'install-headers ,install-headers-phase)))) (synopsis "The GNU Bourne-Again SHell") (description diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index ed9ba0e31f..9d2bde829d 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -142,8 +142,8 @@ a large, deeply nested project.") (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases - (delete configure) - (add-before build make-dotl-files-older + (delete 'configure) + (add-before 'build 'make-dotl-files-older (lambda _ ;; Make the '.l' files as old as the '.c' ;; files to avoid triggering the rule that @@ -155,7 +155,7 @@ a large, deeply nested project.") (set-file-time file ref)) (find-files "." "\\.[chl]$")) #t)) - (add-before install make-target-directories + (add-before 'install 'make-target-directories (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (mkdir-p (string-append out "/bin")) @@ -163,7 +163,7 @@ a large, deeply nested project.") "/share/man/man1")) (mkdir-p (string-append out "/share/doc"))))) - (replace check + (replace 'check (lambda _ (setenv "HOME" (getcwd)) (setenv "PATH" diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index dc90a1231d..66f172927f 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -149,7 +149,7 @@ Polygon meshes, and Extruded polygon meshes") (arguments '(#:phases (modify-phases %standard-phases - (add-after unpack autogen + (add-after 'unpack 'autogen (lambda _ (zero? (system* "sh" "autogen.sh"))))))) (home-page "https://github.com/divVerent/s2tc") @@ -282,10 +282,10 @@ emulation to complete hardware acceleration for modern GPUs.") (arguments '(#:phases (modify-phases %standard-phases - (delete configure) - (delete build) - (delete check) - (replace install + (delete 'configure) + (delete 'build) + (delete 'check) + (replace 'install (lambda* (#:key outputs #:allow-other-keys) (copy-recursively "include" (string-append (assoc-ref outputs "out") @@ -318,7 +318,7 @@ emulation to complete hardware acceleration for modern GPUs.") '(#:phases (modify-phases %standard-phases (replace - install + 'install (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (mkdir-p (string-append out "/bin")) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 0e674da899..bf19b9ec82 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1639,11 +1639,11 @@ library.") (arguments '(#:phases (modify-phases %standard-phases - (add-before configure patch-/bin/true + (add-before 'configure 'patch-/bin/true (lambda _ (substitute* "configure" (("/bin/true") (which "true"))))) - (add-after install wrap-pixbuf + (add-after 'install 'wrap-pixbuf ;; Use librsvg's loaders.cache to support SVG files. (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index f574628698..14badc949c 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -181,14 +181,14 @@ output.") (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases - (replace configure + (replace 'configure (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (chdir "trunk") (zero? (system* "qmake" (string-append "prefix=" out)))))) - (add-after install wrap-program + (add-after 'install 'wrap-program (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin")) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 93dd2ac4e6..ece0e8c54a 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -204,11 +204,11 @@ the W3C's XML-based Scaleable Vector Graphic (SVG) format.") (modify-phases %standard-phases ;; Prevent make from trying to regenerate config.h.in. (add-after - unpack set-config-h-in-file-time + 'unpack 'set-config-h-in-file-time (lambda _ (set-file-time "config/config.h.in" (stat "configure")))) (add-after - unpack patch-reg-wrapper + 'unpack 'patch-reg-wrapper (lambda _ (substitute* "prog/reg_wrapper.sh" ((" /bin/sh ") diff --git a/gnu/packages/key-mon.scm b/gnu/packages/key-mon.scm index d29f30258d..c890f85f8d 100644 --- a/gnu/packages/key-mon.scm +++ b/gnu/packages/key-mon.scm @@ -42,7 +42,7 @@ (arguments `(#:python ,python-2 ;uses the Python 2 'print' syntax #:phases (modify-phases %standard-phases - (add-after install wrap + (add-after 'install 'wrap (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin")) diff --git a/gnu/packages/ocr.scm b/gnu/packages/ocr.scm index 32da42b95f..b94a7f51cb 100644 --- a/gnu/packages/ocr.scm +++ b/gnu/packages/ocr.scm @@ -76,7 +76,7 @@ it produces text in 8-bit or UTF-8 formats.") '(#:phases (modify-phases %standard-phases (add-after - unpack autogen + 'unpack 'autogen (lambda _ (zero? (system* "sh" "autogen.sh"))))) #:configure-flags diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm index 245dfe9c67..6166226dce 100644 --- a/gnu/packages/plotutils.scm +++ b/gnu/packages/plotutils.scm @@ -118,13 +118,13 @@ using the Cairo drawing library.") '(#:tests? #f #:phases (modify-phases %standard-phases - (replace configure (lambda _ (chdir "src"))) - (add-before install make-target-directories + (replace 'configure (lambda _ (chdir "src"))) + (add-before 'install 'make-target-directories (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (mkdir-p (string-append out "/bin")) #t))) - (add-after install install-prefabs + (add-after 'install 'install-prefabs (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (dir (string-append out diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm index d1133248df..4a4ad20759 100644 --- a/gnu/packages/search.scm +++ b/gnu/packages/search.scm @@ -76,10 +76,10 @@ rich set of boolean query operators.") (arguments `(#:phases (modify-phases %standard-phases (add-before - configure chdir-source + 'configure 'chdir-source (lambda _ (chdir "libtocc/src"))) (replace - check + 'check (lambda _ (with-directory-excursion "../tests" (and (zero? (system* "./configure" @@ -113,7 +113,7 @@ files and directories.") `(#:tests? #f ;No tests #:phases (modify-phases %standard-phases (add-after - unpack chdir-source + 'unpack 'chdir-source (lambda _ (chdir "cli/src")))))) (home-page "http://t-o-c-c.com/") (synopsis "Command-line interface to libtocc") diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index bc589a6edb..8223a3fa70 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -738,12 +738,12 @@ several areas.") '(#:phases (modify-phases %standard-phases (add-before - configure setup-waf + 'configure 'setup-waf (lambda* (#:key inputs #:allow-other-keys) (copy-file (assoc-ref inputs "waf") "waf") (setenv "CC" "gcc"))) (add-before - configure patch-wscript + 'configure 'patch-wscript (lambda* (#:key inputs #:allow-other-keys) (substitute* "wscript" ;; XXX Remove this when our Samba package provides a .pc file. @@ -1219,7 +1219,7 @@ capabilities.") '(#:phases (modify-phases %standard-phases (add-after - unpack autogen + 'unpack 'autogen (lambda _ (zero? (system* "sh" "autogen.sh"))))))) (home-page "http://www.vapoursynth.com/") diff --git a/guix/build/cmake-build-system.scm b/guix/build/cmake-build-system.scm index d8d437c653..f57622e0f4 100644 --- a/guix/build/cmake-build-system.scm +++ b/guix/build/cmake-build-system.scm @@ -73,8 +73,8 @@ ;; Everything is as with the GNU Build System except for the `configure' ;; and 'check' phases. (modify-phases gnu:%standard-phases - (replace check check) - (replace configure configure))) + (replace 'check check) + (replace 'configure configure))) (define* (cmake-build #:key inputs (phases %standard-phases) #:allow-other-keys #:rest args) diff --git a/guix/build/glib-or-gtk-build-system.scm b/guix/build/glib-or-gtk-build-system.scm index c57bc3e731..9c0104365d 100644 --- a/guix/build/glib-or-gtk-build-system.scm +++ b/guix/build/glib-or-gtk-build-system.scm @@ -240,9 +240,9 @@ needed." (define %standard-phases (modify-phases gnu:%standard-phases - (add-after install glib-or-gtk-compile-schemas compile-glib-schemas) - (add-after install glib-or-gtk-icon-cache generate-icon-cache) - (add-after install glib-or-gtk-wrap wrap-all-programs))) + (add-after 'install 'glib-or-gtk-compile-schemas compile-glib-schemas) + (add-after 'install 'glib-or-gtk-icon-cache generate-icon-cache) + (add-after 'install 'glib-or-gtk-wrap wrap-all-programs))) (define* (glib-or-gtk-build #:key inputs (phases %standard-phases) #:allow-other-keys #:rest args) diff --git a/guix/build/gnu-dist.scm b/guix/build/gnu-dist.scm index 887b5e94e9..ad69c6cf16 100644 --- a/guix/build/gnu-dist.scm +++ b/guix/build/gnu-dist.scm @@ -83,10 +83,10 @@ (define %dist-phases ;; Phases for building a source tarball. (modify-phases %standard-phases - (delete strip) - (replace install install-dist) - (replace build build) - (add-before configure autoreconf autoreconf) - (replace unpack copy-source))) + (delete 'strip) + (replace 'install install-dist) + (replace 'build build) + (add-before 'configure 'autoreconf autoreconf) + (replace 'unpack copy-source))) ;;; gnu-dist.scm ends here diff --git a/guix/build/perl-build-system.scm b/guix/build/perl-build-system.scm index 9ca5353bb9..8f480eae16 100644 --- a/guix/build/perl-build-system.scm +++ b/guix/build/perl-build-system.scm @@ -72,10 +72,10 @@ ;; Everything is as with the GNU Build System except for the `configure', ;; `build', `check', and `install' phases. (modify-phases gnu:%standard-phases - (replace install install) - (replace check check) - (replace build build) - (replace configure configure))) + (replace 'install install) + (replace 'check check) + (replace 'build build) + (replace 'configure configure))) (define* (perl-build #:key inputs (phases %standard-phases) #:allow-other-keys #:rest args) diff --git a/guix/build/python-build-system.scm b/guix/build/python-build-system.scm index 9f853134bd..26a7254db9 100644 --- a/guix/build/python-build-system.scm +++ b/guix/build/python-build-system.scm @@ -123,12 +123,12 @@ installed with setuptools." ;; 'configure' and 'build' phases are not needed. Everything is done during ;; 'install'. (modify-phases gnu:%standard-phases - (delete configure) - (replace install install) - (replace check check) - (replace build build) - (add-after install wrap wrap) - (add-before strip rename-pth-file rename-pth-file))) + (delete 'configure) + (replace 'install install) + (replace 'check check) + (replace 'build build) + (add-after 'install 'wrap wrap) + (add-before 'strip 'rename-pth-file rename-pth-file))) (define* (python-build #:key inputs (phases %standard-phases) #:allow-other-keys #:rest args) diff --git a/guix/build/ruby-build-system.scm b/guix/build/ruby-build-system.scm index a143df467f..531cf382ae 100644 --- a/guix/build/ruby-build-system.scm +++ b/guix/build/ruby-build-system.scm @@ -72,11 +72,11 @@ directory." (define %standard-phases (modify-phases gnu:%standard-phases - (delete configure) - (add-after unpack gitify gitify) - (replace build build) - (replace install install) - (replace check check))) + (delete 'configure) + (add-after 'unpack 'gitify gitify) + (replace 'build build) + (replace 'install install) + (replace 'check check))) (define* (ruby-build #:key inputs (phases %standard-phases) #:allow-other-keys #:rest args) diff --git a/guix/build/utils.scm b/guix/build/utils.scm index a5a6167a8c..5d5566d1e3 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -446,13 +446,13 @@ an expression evaluating to a procedure." (define-syntax %modify-phases (syntax-rules (delete replace add-before add-after) ((_ phases (delete old-phase-name)) - (alist-delete 'old-phase-name phases)) + (alist-delete old-phase-name phases)) ((_ phases (replace old-phase-name new-phase)) - (alist-replace 'old-phase-name new-phase phases)) + (alist-replace old-phase-name new-phase phases)) ((_ phases (add-before old-phase-name new-phase-name new-phase)) - (alist-cons-before 'old-phase-name 'new-phase-name new-phase phases)) + (alist-cons-before old-phase-name new-phase-name new-phase phases)) ((_ phases (add-after old-phase-name new-phase-name new-phase)) - (alist-cons-after 'old-phase-name 'new-phase-name new-phase phases)))) + (alist-cons-after old-phase-name new-phase-name new-phase phases)))) ;;; diff --git a/guix/build/waf-build-system.scm b/guix/build/waf-build-system.scm index d172c5a836..85f0abcfd6 100644 --- a/guix/build/waf-build-system.scm +++ b/guix/build/waf-build-system.scm @@ -70,10 +70,10 @@ (define %standard-phases (modify-phases gnu:%standard-phases - (replace configure configure) - (replace build build) - (replace check check) - (replace install install))) + (replace 'configure configure) + (replace 'build build) + (replace 'check check) + (replace 'install install))) (define* (waf-build #:key inputs (phases %standard-phases) #:allow-other-keys #:rest args) -- cgit v1.2.3 From 1968262a237e398f12a25eb2cbda4c944a2ce1bf Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 31 Mar 2015 22:55:41 +0200 Subject: utils: 'find-files' takes an arbitrary predicate as its second argument. * guix/build/utils.scm (file-name-predicate): New procedure. (find-files): Rename second parameter to 'pred'. When 'pred' is not a procedure, call 'file-name-predicate'. Use PRED instead of 'regexp-exec' in the leaf procedure. --- guix/build/utils.scm | 64 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 27 deletions(-) diff --git a/guix/build/utils.scm b/guix/build/utils.scm index 5d5566d1e3..74165c717f 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -44,6 +44,7 @@ mkdir-p copy-recursively delete-file-recursively + file-name-predicate find-files search-path-as-list @@ -263,33 +264,42 @@ errors." ;; Don't follow symlinks. lstat))) -(define (find-files dir regexp) - "Return the lexicographically sorted list of files under DIR whose basename -matches REGEXP." - (define file-rx - (if (regexp? regexp) - regexp - (make-regexp regexp))) - - ;; Sort the result to get deterministic results. - (sort (file-system-fold (const #t) - (lambda (file stat result) ; leaf - (if (regexp-exec file-rx (basename file)) - (cons file result) - result)) - (lambda (dir stat result) ; down - result) - (lambda (dir stat result) ; up - result) - (lambda (file stat result) ; skip - result) - (lambda (file stat errno result) - (format (current-error-port) "find-files: ~a: ~a~%" - file (strerror errno)) - result) - '() - dir) - string Date: Tue, 31 Mar 2015 23:06:51 +0200 Subject: gnu: Update bootstrap binaries for x86_64 and i686. Fixes . Reported by Ricardo Wurmus . * gnu/packages/bootstrap/i686-linux/bash, gnu/packages/bootstrap/i686-linux/mkdir, gnu/packages/bootstrap/i686-linux/tar, gnu/packages/bootstrap/i686-linux/xz, gnu/packages/bootstrap/x86_64-linux/bash, gnu/packages/bootstrap/x86_64-linux/mkdir, gnu/packages/bootstrap/x86_64-linux/tar, gnu/packages/bootstrap/x86_64-linux/xz: Update from and , respectively. The libc in those binaries has no dynamic NSS support, which could otherwise lead to crashes when they tried to load NSS modules of the host system. --- gnu/packages/bootstrap/i686-linux/bash | Bin 1331220 -> 1351732 bytes gnu/packages/bootstrap/i686-linux/mkdir | Bin 725756 -> 714316 bytes gnu/packages/bootstrap/i686-linux/tar | Bin 1140196 -> 1285420 bytes gnu/packages/bootstrap/i686-linux/xz | Bin 865372 -> 861836 bytes gnu/packages/bootstrap/x86_64-linux/bash | Bin 1419928 -> 1425560 bytes gnu/packages/bootstrap/x86_64-linux/mkdir | Bin 799312 -> 792448 bytes gnu/packages/bootstrap/x86_64-linux/tar | Bin 1229888 -> 1369912 bytes gnu/packages/bootstrap/x86_64-linux/xz | Bin 926000 -> 927264 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/gnu/packages/bootstrap/i686-linux/bash b/gnu/packages/bootstrap/i686-linux/bash index 9882d4adc7..4b99d7eb4a 100755 Binary files a/gnu/packages/bootstrap/i686-linux/bash and b/gnu/packages/bootstrap/i686-linux/bash differ diff --git a/gnu/packages/bootstrap/i686-linux/mkdir b/gnu/packages/bootstrap/i686-linux/mkdir index 0ddab232b7..6623a38404 100755 Binary files a/gnu/packages/bootstrap/i686-linux/mkdir and b/gnu/packages/bootstrap/i686-linux/mkdir differ diff --git a/gnu/packages/bootstrap/i686-linux/tar b/gnu/packages/bootstrap/i686-linux/tar index 6bee702cf5..d33cd391f1 100755 Binary files a/gnu/packages/bootstrap/i686-linux/tar and b/gnu/packages/bootstrap/i686-linux/tar differ diff --git a/gnu/packages/bootstrap/i686-linux/xz b/gnu/packages/bootstrap/i686-linux/xz index 5a126e4fc5..f94dbde77c 100755 Binary files a/gnu/packages/bootstrap/i686-linux/xz and b/gnu/packages/bootstrap/i686-linux/xz differ diff --git a/gnu/packages/bootstrap/x86_64-linux/bash b/gnu/packages/bootstrap/x86_64-linux/bash index 3b0227fbb1..b9c410b7cf 100755 Binary files a/gnu/packages/bootstrap/x86_64-linux/bash and b/gnu/packages/bootstrap/x86_64-linux/bash differ diff --git a/gnu/packages/bootstrap/x86_64-linux/mkdir b/gnu/packages/bootstrap/x86_64-linux/mkdir index 7207ad8a46..f8250ae693 100755 Binary files a/gnu/packages/bootstrap/x86_64-linux/mkdir and b/gnu/packages/bootstrap/x86_64-linux/mkdir differ diff --git a/gnu/packages/bootstrap/x86_64-linux/tar b/gnu/packages/bootstrap/x86_64-linux/tar index 9104da7b53..90e492f89d 100755 Binary files a/gnu/packages/bootstrap/x86_64-linux/tar and b/gnu/packages/bootstrap/x86_64-linux/tar differ diff --git a/gnu/packages/bootstrap/x86_64-linux/xz b/gnu/packages/bootstrap/x86_64-linux/xz index 488e319b37..6bfe3c6d96 100755 Binary files a/gnu/packages/bootstrap/x86_64-linux/xz and b/gnu/packages/bootstrap/x86_64-linux/xz differ -- cgit v1.2.3 From f6e7e20b03daba53cc63edd0661b2f4ead722f26 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 31 Mar 2015 14:13:29 -0400 Subject: gnu: pulseaudio: Increase timeout on cpu-mix-test. * gnu/packages/patches/pulseaudio-longer-test-timeout.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/pulseaudio.scm (pulseaudio)[source]: Add patch. --- gnu-system.am | 1 + gnu/packages/patches/pulseaudio-longer-test-timeout.patch | 13 +++++++++++++ gnu/packages/pulseaudio.scm | 6 ++++-- 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 gnu/packages/patches/pulseaudio-longer-test-timeout.patch diff --git a/gnu-system.am b/gnu-system.am index d3e4dafc4e..cb68e72bc3 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -504,6 +504,7 @@ dist_patch_DATA = \ gnu/packages/patches/portaudio-audacity-compat.patch \ gnu/packages/patches/procps-make-3.82.patch \ gnu/packages/patches/pulseaudio-fix-mult-test.patch \ + gnu/packages/patches/pulseaudio-longer-test-timeout.patch \ gnu/packages/patches/pybugz-encode-error.patch \ gnu/packages/patches/pybugz-stty.patch \ gnu/packages/patches/pyqt-configure.patch \ diff --git a/gnu/packages/patches/pulseaudio-longer-test-timeout.patch b/gnu/packages/patches/pulseaudio-longer-test-timeout.patch new file mode 100644 index 0000000000..fa81f749d2 --- /dev/null +++ b/gnu/packages/patches/pulseaudio-longer-test-timeout.patch @@ -0,0 +1,13 @@ +Increase the timeout on 'cpu-mix-test' to accommodate slower machines. + +--- pulseaudio-6.0/src/tests/cpu-mix-test.c.ORIG 2015-02-12 09:10:35.000000000 -0500 ++++ pulseaudio-6.0/src/tests/cpu-mix-test.c 2015-03-31 13:45:05.316878322 -0400 +@@ -212,7 +212,7 @@ + #if defined (__arm__) && defined (__linux__) && defined (HAVE_NEON) + tcase_add_test(tc, mix_neon_test); + #endif +- tcase_set_timeout(tc, 120); ++ tcase_set_timeout(tc, 240); + suite_add_tcase(s, tc); + + sr = srunner_create(s); diff --git a/gnu/packages/pulseaudio.scm b/gnu/packages/pulseaudio.scm index d76f74b775..edf01e59fa 100644 --- a/gnu/packages/pulseaudio.scm +++ b/gnu/packages/pulseaudio.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès -;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2014, 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -128,7 +128,9 @@ rates. ") '(substitute* "src/daemon/default.pa.in" (("load-module module-console-kit" all) (string-append "#" all "\n")))) - (patches (list (search-patch "pulseaudio-fix-mult-test.patch"))))) + (patches + (list (search-patch "pulseaudio-fix-mult-test.patch") + (search-patch "pulseaudio-longer-test-timeout.patch"))))) (build-system gnu-build-system) (arguments `(#:configure-flags (list "--localstatedir=/var" ;"--sysconfdir=/etc" -- cgit v1.2.3 From ed835ad71042441f185cbb5678f260a0dc4b434a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 1 Apr 2015 10:36:17 +0200 Subject: gnu: node: Remove unneeded import. * gnu/packages/node.scm: Remove import of (guix build gnu-build-system). --- gnu/packages/node.scm | 1 - 1 file changed, 1 deletion(-) diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index b2a5d033d2..ba92abce1e 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -29,7 +29,6 @@ #:use-module (guix packages) #:use-module (guix derivations) #:use-module (guix download) - #:use-module (guix build gnu-build-system) #:use-module (guix build-system gnu)) (define-public node -- cgit v1.2.3 From 9495e73689b4d650146523830ee2da164fc50448 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 31 Mar 2015 16:28:51 +0200 Subject: gnu: Add argtable. * gnu/packages/popt.scm (argtable): New variable. --- gnu/packages/popt.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/popt.scm b/gnu/packages/popt.scm index 9ccca5c8b5..7739c7a276 100644 --- a/gnu/packages/popt.scm +++ b/gnu/packages/popt.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,6 +23,34 @@ #:use-module (guix build-system gnu) #:use-module (guix licenses)) +(define-public argtable + (package + (name "argtable") + (version "2.13") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/argtable/argtable" + (string-join (string-split version #\.) "-") + ".tar.gz")) + (sha256 + (base32 + "1gyxf4bh9jp5gb3l6g5qy90zzcf3vcpk0irgwbv1lc6mrskyhxwg")))) + (build-system gnu-build-system) + (home-page "http://argtable.sourceforge.net/") + (synopsis "Command line option parsing library") + (description + "Argtable is an ANSI C library for parsing GNU style command line +options. It enables a program's command line syntax to be defined in the +source code as an array of argtable structs. The command line is then parsed +according to that specification and the resulting values are returned in those +same structs where they are accessible to the main program. Both tagged (-v, +--verbose, --foo=bar) and untagged arguments are supported, as are multiple +instances of each argument. Syntax error handling is automatic and the library +also provides the means for generating a textual description of the command +line syntax.") + (license lgpl2.0+))) + (define-public popt (package (name "popt") -- cgit v1.2.3 From bfe3c6857251c1fff24317da602b9cd762c1c112 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 27 Mar 2015 10:09:10 +0100 Subject: gnu: Add clustal omega. * gnu/packages/bioinformatics.scm (clustal-omega): New variable. --- gnu/packages/bioinformatics.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 3725f3ffe5..9813d07e9c 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -33,6 +33,7 @@ #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages popt) #:use-module (gnu packages python) #:use-module (gnu packages tbb) #:use-module (gnu packages vim) @@ -360,6 +361,30 @@ multiple sequence alignments.") "CLIPper is a tool to define peaks in CLIP-seq datasets.") (license license:gpl2))) +(define-public clustal-omega + (package + (name "clustal-omega") + (version "1.2.1") + (source (origin + (method url-fetch) + (uri (string-append + "http://www.clustal.org/omega/clustal-omega-" + version ".tar.gz")) + (sha256 + (base32 + "02ibkx0m0iwz8nscg998bh41gg251y56cgh86bvyrii5m8kjgwqf")))) + (build-system gnu-build-system) + (inputs + `(("argtable" ,argtable))) + (home-page "http://www.clustal.org/omega/") + (synopsis "Multiple sequence aligner for protein and DNA/RNA") + (description + "Clustal-Omega is a general purpose multiple sequence alignment (MSA) +program for protein and DNA/RNA. It produces high quality MSAs and is capable +of handling data-sets of hundreds of thousands of sequences in reasonable +time.") + (license license:gpl2+))) + (define-public crossmap (package (name "crossmap") -- cgit v1.2.3 From d83ccc9b428fededaa6ec29a0df7b2728ad734f3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 1 Apr 2015 13:46:01 +0200 Subject: gremlin: Add libnsl to libc's library list. * guix/build/gremlin.scm (%libc-libraries): Add "libnsl.so". --- guix/build/gremlin.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/guix/build/gremlin.scm b/guix/build/gremlin.scm index e8429129e1..253713b587 100644 --- a/guix/build/gremlin.scm +++ b/guix/build/gremlin.scm @@ -197,6 +197,7 @@ value of DT_NEEDED entries is a string.)" "libc.so" "libdl.so" "libm.so" + "libnsl.so" ;NEEDED by nscd "libpthread.so" "libresolv.so" "librt.so" -- cgit v1.2.3 From 7be8c63e0de635f8c669dc19d7ac1d3cdbe28894 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 1 Apr 2015 14:02:49 +0200 Subject: gremlin: Guard against invalid ELF segments. * guix/build/gremlin.scm (&elf-error, &invalid-segment-size): New error condition types. (dynamic-link-segment): Compare SEGMENT's offset + size to ELF's total size. (validate-needed-in-runpath): Wrap body in 'guard' form. --- guix/build/gremlin.scm | 78 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 57 insertions(+), 21 deletions(-) diff --git a/guix/build/gremlin.scm b/guix/build/gremlin.scm index 253713b587..24a7b558af 100644 --- a/guix/build/gremlin.scm +++ b/guix/build/gremlin.scm @@ -22,10 +22,17 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-9) #:use-module (srfi srfi-26) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) #:use-module (system foreign) #:use-module (rnrs bytevectors) #:use-module (rnrs io ports) - #:export (elf-dynamic-info + #:export (elf-error? + elf-error-elf + invalid-segment-size? + invalid-segment-size-segment + + elf-dynamic-info elf-dynamic-info? elf-dynamic-info-sopath elf-dynamic-info-needed @@ -41,12 +48,31 @@ ;;; ;;; Code: +(define-condition-type &elf-error &error + elf-error? + (elf elf-error-elf)) + +(define-condition-type &invalid-segment-size &elf-error + invalid-segment-size? + (segment invalid-segment-size-segment)) + + (define (dynamic-link-segment elf) "Return the 'PT_DYNAMIC' segment of ELF--i.e., the segment that contains dynamic linking information." - (find (lambda (segment) - (= (elf-segment-type segment) PT_DYNAMIC)) - (elf-segments elf))) + (let ((size (bytevector-length (elf-bytes elf)))) + (find (lambda (segment) + (unless (<= (+ (elf-segment-offset segment) + (elf-segment-filesz segment)) + size) + ;; This happens on separate debug output files created by + ;; 'strip --only-keep-debug' (Binutils 2.25.) + (raise (condition (&invalid-segment-size + (elf elf) + (segment segment))))) + + (= (elf-segment-type segment) PT_DYNAMIC)) + (elf-segments elf)))) (define (word-reader size byte-order) "Return a procedure to read a word of SIZE bytes according to BYTE-ORDER." @@ -215,23 +241,33 @@ value of DT_NEEDED entries is a string.)" present in its RUNPATH, or if FILE lacks dynamic-link information. Return #f otherwise. Libraries whose name matches ALWAYS-FOUND? are considered to be always available." - (let* ((elf (call-with-input-file file - (compose parse-elf get-bytevector-all))) - (dyninfo (elf-dynamic-info elf))) - (when dyninfo - (let* ((runpath (elf-dynamic-info-runpath dyninfo)) - (needed (remove always-found? - (elf-dynamic-info-needed dyninfo))) - (not-found (remove (cut search-path runpath <>) - needed))) - (for-each (lambda (lib) - (format (current-error-port) - "error: '~a' depends on '~a', which cannot \ + (guard (c ((invalid-segment-size? c) + (let ((segment (invalid-segment-size-segment c))) + (format (current-error-port) + "~a: error: offset + size of segment ~a (type ~a) \ +exceeds total size~%" + file + (elf-segment-index segment) + (elf-segment-type segment)) + #f))) + + (let* ((elf (call-with-input-file file + (compose parse-elf get-bytevector-all))) + (dyninfo (elf-dynamic-info elf))) + (when dyninfo + (let* ((runpath (elf-dynamic-info-runpath dyninfo)) + (needed (remove always-found? + (elf-dynamic-info-needed dyninfo))) + (not-found (remove (cut search-path runpath <>) + needed))) + (for-each (lambda (lib) + (format (current-error-port) + "error: '~a' depends on '~a', which cannot \ be found in RUNPATH ~s~%" - file lib runpath)) - not-found) - ;; (when (null? not-found) - ;; (format (current-error-port) "~a is OK~%" file)) - (null? not-found))))) + file lib runpath)) + not-found) + ;; (when (null? not-found) + ;; (format (current-error-port) "~a is OK~%" file)) + (null? not-found)))))) ;;; gremlin.scm ends here -- cgit v1.2.3 From bb42c78a23a96ef79c2b5e3b98c55eef53eac9fe Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 1 Apr 2015 15:34:19 +0200 Subject: build-system: Factorize the list of modules imported on the build side. * guix/build-system/gnu.scm (%default-modules): Rename to... (%gnu-build-system-modules): ... this. (%default-modules): New variable. (dist-package, gnu-build): Use %GNU-BUILD-SYSTEM-MODULES for #:imported-modules. (gnu-cross-build): Likewise, and use %DEFAULT-MODULES for #:modules. * guix/build-system/cmake.scm (%cmake-build-system-modules): New variable. (cmake-build): Use it for #:imported-modules. * guix/build-system/glib-or-gtk.scm (%default-imported-modules): Rename to... (%glib-or-gtk-build-system-modules): ... this. Refer to %GNU-BUILD-SYSTEM-MODULES. Adjust uses. * guix/build-system/perl.scm (%perl-build-system-modules): New variable. (perl-build): Use it for #:imported-modules. * guix/build-system/python.scm (%python-build-system-modules): New variable. (python-build): Use it for #:imported-modules. * guix/build-system/ruby.scm (%ruby-build-system-modules): New variable. (ruby-build): Use it for #:imported-modules. * guix/build-system/waf.scm (%waf-build-system-modules): New variable. (waf-build): Use it for #:imported-modules. --- guix/build-system/cmake.scm | 14 +++++++++----- guix/build-system/glib-or-gtk.scm | 14 +++++++------- guix/build-system/gnu.scm | 20 ++++++++++++-------- guix/build-system/perl.scm | 14 +++++++++----- guix/build-system/python.scm | 12 ++++++++---- guix/build-system/ruby.scm | 14 +++++++++----- guix/build-system/waf.scm | 12 ++++++++---- 7 files changed, 62 insertions(+), 38 deletions(-) diff --git a/guix/build-system/cmake.scm b/guix/build-system/cmake.scm index 0425e9fb39..2e6784251e 100644 --- a/guix/build-system/cmake.scm +++ b/guix/build-system/cmake.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2013 Cyril Roelandt ;;; ;;; This file is part of GNU Guix. @@ -25,7 +25,8 @@ #:use-module (guix build-system gnu) #:use-module (guix packages) #:use-module (ice-9 match) - #:export (cmake-build + #:export (%cmake-build-system-modules + cmake-build cmake-build-system)) ;; Commentary: @@ -35,6 +36,11 @@ ;; ;; Code: +(define %cmake-build-system-modules + ;; Build-side modules imported by default. + `((guix build cmake-build-system) + ,@%gnu-build-system-modules)) + (define (default-cmake) "Return the default CMake package." @@ -86,9 +92,7 @@ (phases '(@ (guix build cmake-build-system) %standard-phases)) (system (%current-system)) - (imported-modules '((guix build cmake-build-system) - (guix build gnu-build-system) - (guix build utils))) + (imported-modules %cmake-build-system-modules) (modules '((guix build cmake-build-system) (guix build utils)))) "Build SOURCE using CMAKE, and with INPUTS. This assumes that SOURCE diff --git a/guix/build-system/glib-or-gtk.scm b/guix/build-system/glib-or-gtk.scm index 7a90587136..85d01961a5 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 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2013 Cyril Roelandt ;;; Copyright © 2014 Federico Beffa ;;; @@ -26,7 +26,8 @@ #:use-module (guix build-system gnu) #:use-module (guix packages) #:use-module (ice-9 match) - #:export (glib-or-gtk-build + #:export (%glib-or-gtk-build-system-modules + glib-or-gtk-build glib-or-gtk-build-system)) ;; Commentary: @@ -67,11 +68,10 @@ '((guix build glib-or-gtk-build-system) (guix build utils))) -(define %default-imported-modules +(define %glib-or-gtk-build-system-modules ;; Build-side modules imported and used by default. - '((guix build gnu-build-system) - (guix build glib-or-gtk-build-system) - (guix build utils))) + `((guix build glib-or-gtk-build-system) + ,@%gnu-build-system-modules)) (define (default-glib) "Return the default glib package from which we use @@ -136,7 +136,7 @@ %standard-phases)) (glib-or-gtk-wrap-excluded-outputs ''()) (system (%current-system)) - (imported-modules %default-imported-modules) + (imported-modules %glib-or-gtk-build-system-modules) (modules %default-modules) allowed-references) "Build SOURCE with INPUTS. See GNU-BUILD for more details." diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm index c91ad2ee0c..e4cbd29395 100644 --- a/guix/build-system/gnu.scm +++ b/guix/build-system/gnu.scm @@ -24,7 +24,8 @@ #:use-module (guix packages) #:use-module (srfi srfi-1) #:use-module (ice-9 match) - #:export (gnu-build + #:export (%gnu-build-system-modules + gnu-build gnu-build-system standard-packages package-with-explicit-inputs @@ -41,11 +42,16 @@ ;; ;; Code: -(define %default-modules +(define %gnu-build-system-modules ;; Build-side modules imported and used by default. '((guix build gnu-build-system) (guix build utils))) +(define %default-modules + ;; Modules in scope in the build-side environment. + '((guix build gnu-build-system) + (guix build utils))) + (define* (package-with-explicit-inputs p inputs #:optional (loc (current-source-location)) @@ -182,7 +188,7 @@ runs `make distcheck' and whose result is one or more source tarballs." (let* ((args (default-keyword-arguments (package-arguments p) `(#:phases #f #:modules ,%default-modules - #:imported-modules ,%default-modules)))) + #:imported-modules ,%gnu-build-system-modules)))) (substitute-keyword-arguments args ((#:modules modules) `((guix build gnu-dist) @@ -280,7 +286,7 @@ standard packages used as implicit inputs of the GNU build system." (phases '%standard-phases) (locale "en_US.UTF-8") (system (%current-system)) - (imported-modules %default-modules) + (imported-modules %gnu-build-system-modules) (modules %default-modules) (substitutable? #t) allowed-references) @@ -414,10 +420,8 @@ is one of `host' or `target'." (phases '%standard-phases) (locale "en_US.UTF-8") (system (%current-system)) - (imported-modules '((guix build gnu-build-system) - (guix build utils))) - (modules '((guix build gnu-build-system) - (guix build utils))) + (imported-modules %gnu-build-system-modules) + (modules %default-modules) (substitutable? #t) allowed-references) "Cross-build NAME for TARGET, where TARGET is a GNU triplet. INPUTS are diff --git a/guix/build-system/perl.scm b/guix/build-system/perl.scm index e0f86438a8..7833153676 100644 --- a/guix/build-system/perl.scm +++ b/guix/build-system/perl.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,7 +24,8 @@ #:use-module (guix build-system gnu) #:use-module (guix packages) #:use-module (ice-9 match) - #:export (perl-build + #:export (%perl-build-system-modules + perl-build perl-build-system)) ;; Commentary: @@ -35,6 +36,11 @@ ;; ;; Code: +(define %perl-build-system-modules + ;; Build-side modules imported by default. + `((guix build perl-build-system) + ,@%gnu-build-system-modules)) + (define (default-perl) "Return the default Perl package." @@ -83,9 +89,7 @@ (outputs '("out")) (system (%current-system)) (guile #f) - (imported-modules '((guix build perl-build-system) - (guix build gnu-build-system) - (guix build utils))) + (imported-modules %perl-build-system-modules) (modules '((guix build perl-build-system) (guix build utils)))) "Build SOURCE using PERL, and with INPUTS. This assumes that SOURCE diff --git a/guix/build-system/python.scm b/guix/build-system/python.scm index 37108650d0..d498cf618b 100644 --- a/guix/build-system/python.scm +++ b/guix/build-system/python.scm @@ -27,7 +27,8 @@ #:use-module (guix build-system gnu) #:use-module (ice-9 match) #:use-module (srfi srfi-26) - #:export (package-with-python2 + #:export (%python-build-system-modules + package-with-python2 python-build python-build-system)) @@ -38,6 +39,11 @@ ;; ;; Code: +(define %python-build-system-modules + ;; Build-side modules imported by default. + `((guix build python-build-system) + ,@%gnu-build-system-modules)) + (define (default-python) "Return the default Python package." ;; Lazily resolve the binding to avoid a circular dependency. @@ -132,9 +138,7 @@ prepended to the name." (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules '((guix build python-build-system) - (guix build gnu-build-system) - (guix build utils))) + (imported-modules %python-build-system-modules) (modules '((guix build python-build-system) (guix build utils)))) "Build SOURCE using PYTHON, and with INPUTS. This assumes that SOURCE diff --git a/guix/build-system/ruby.scm b/guix/build-system/ruby.scm index 08301ec609..83bc93d901 100644 --- a/guix/build-system/ruby.scm +++ b/guix/build-system/ruby.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 David Thompson -;;; Copyright © 2014 Ludovic Courtès +;;; Copyright © 2014, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,9 +25,15 @@ #:use-module (guix build-system) #:use-module (guix build-system gnu) #:use-module (ice-9 match) - #:export (ruby-build + #:export (%ruby-build-system-modules + ruby-build ruby-build-system)) +(define %ruby-build-system-modules + ;; Build-side modules imported by default. + `((guix build ruby-build-system) + ,@%gnu-build-system-modules)) + (define (default-ruby) "Return the default Ruby package." ;; Lazily resolve the binding to avoid a circular dependency. @@ -72,9 +78,7 @@ (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules '((guix build ruby-build-system) - (guix build gnu-build-system) - (guix build utils))) + (imported-modules %ruby-build-system-modules) (modules '((guix build ruby-build-system) (guix build utils)))) "Build SOURCE using RUBY and INPUTS." diff --git a/guix/build-system/waf.scm b/guix/build-system/waf.scm index 494cb957ac..c67f649fa7 100644 --- a/guix/build-system/waf.scm +++ b/guix/build-system/waf.scm @@ -27,7 +27,8 @@ #:select (default-python default-python2)) #:use-module (ice-9 match) #:use-module (srfi srfi-26) - #:export (waf-build + #:export (%waf-build-system-modules + waf-build waf-build-system)) ;; Commentary: @@ -38,6 +39,11 @@ ;; ;; Code: +(define %waf-build-system-modules + ;; Build-side modules imported by default. + `((guix build waf-build-system) + ,@%gnu-build-system-modules)) + (define* (lower name #:key source inputs native-inputs outputs system target (python (default-python)) @@ -75,9 +81,7 @@ (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules '((guix build waf-build-system) - (guix build gnu-build-system) - (guix build utils))) + (imported-modules %waf-build-system-modules) (modules '((guix build waf-build-system) (guix build utils)))) "Build SOURCE with INPUTS. This assumes that SOURCE provides a 'waf' file -- cgit v1.2.3 From 8f3c3e84c2af8185483119adbdaebc253f149dfb Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 1 Apr 2015 15:39:47 +0200 Subject: gnu: Remove unneeded uses of #:imported-modules. * gnu/packages/certs.scm (nss-certs)[arguments]: Remove #:imported-modules. * gnu/packages/gnuzilla.scm (nss)[arguments]: Likewise. * gnu/packages/texlive.scm (texlive-texmf)[arguments]: Likewise. * gnu/packages/xfce.scm (xfce)[arguments]: Likewise. --- gnu/packages/certs.scm | 2 -- gnu/packages/gnuzilla.scm | 4 +--- gnu/packages/texlive.scm | 2 -- gnu/packages/xfce.scm | 3 --- 4 files changed, 1 insertion(+), 10 deletions(-) diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm index db89466328..947d2b53f1 100644 --- a/gnu/packages/certs.scm +++ b/gnu/packages/certs.scm @@ -85,8 +85,6 @@ (rnrs io ports) (srfi srfi-26) (ice-9 regex)) - #:imported-modules ((guix build gnu-build-system) - (guix build utils)) #:phases (alist-cons-after 'unpack 'install diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 1e9deb8bff..70b03b400a 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2015 Andreas Enge -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2015 Sou Bunnbu ;;; @@ -153,8 +153,6 @@ in the Mozilla clients.") (ice-9 ftw) (ice-9 match) (srfi srfi-26)) - #:imported-modules ((guix build gnu-build-system) - (guix build utils)) #:phases (alist-replace 'configure diff --git a/gnu/packages/texlive.scm b/gnu/packages/texlive.scm index 56149ab58e..14ee9c37ad 100644 --- a/gnu/packages/texlive.scm +++ b/gnu/packages/texlive.scm @@ -176,8 +176,6 @@ This package contains the binaries.") `(#:modules ((guix build gnu-build-system) (guix build utils) (srfi srfi-26)) - #:imported-modules ((guix build gnu-build-system) - (guix build utils)) #:phases (alist-cons-before 'texmf-config 'install diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index a08f004119..b39b903e9b 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -569,9 +569,6 @@ on your desktop.") (guix build glib-or-gtk-build-system) (guix build utils) (srfi srfi-26)) - #:imported-modules ((guix build gnu-build-system) - (guix build glib-or-gtk-build-system) - (guix build utils)) #:phases (alist-replace 'install -- cgit v1.2.3 From 8ff3df5baa061d1de4fb999921a7db33bcbeb2ff Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 1 Apr 2015 15:41:55 +0200 Subject: gnu: Refer to %GNU-BUILD-SYSTEM-MODULES instead of listing modules. * gnu/packages/cdrom.scm (cdparanoia)[arguments]: Refer to %GNU-BUILD-SYSTEM-MODULES instead of providing the actual list. * gnu/packages/emacs.scm (magit, emacs-w3m, emacs-wget, emms): Likewise. * gnu/packages/haskell.scm (ghc): Likewise. * gnu/packages/samba.scm (samba): Likewise. * gnu/packages/video.scm (ffmpeg): Likewise. --- gnu/packages/cdrom.scm | 3 +-- gnu/packages/emacs.scm | 12 ++++-------- gnu/packages/haskell.scm | 3 +-- gnu/packages/samba.scm | 5 ++--- gnu/packages/video.scm | 3 +-- 5 files changed, 9 insertions(+), 17 deletions(-) diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm index 9af0ea7b09..e93503f25a 100644 --- a/gnu/packages/cdrom.scm +++ b/gnu/packages/cdrom.scm @@ -169,8 +169,7 @@ files.") (guix build utils) (guix build rpath) (srfi srfi-26)) - #:imported-modules ((guix build gnu-build-system) - (guix build utils) + #:imported-modules (,@%gnu-build-system-modules (guix build rpath)) #:phases (alist-cons-after diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index b844661fa1..dd4eb23cb4 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -247,8 +247,7 @@ when typing parentheses directly or commenting out code line by line.") `(#:modules ((guix build gnu-build-system) (guix build utils) (guix build emacs-utils)) - #:imported-modules ((guix build gnu-build-system) - (guix build utils) + #:imported-modules (,@%gnu-build-system-modules (guix build emacs-utils)) #:tests? #f ; no check target #:phases @@ -308,8 +307,7 @@ operations.") '(#:modules ((guix build gnu-build-system) (guix build utils) (guix build emacs-utils)) - #:imported-modules ((guix build gnu-build-system) - (guix build utils) + #:imported-modules (,@%gnu-build-system-modules (guix build emacs-utils)) #:configure-flags (let ((out (assoc-ref %outputs "out"))) @@ -376,8 +374,7 @@ operations.") '(#:modules ((guix build gnu-build-system) (guix build utils) (guix build emacs-utils)) - #:imported-modules ((guix build gnu-build-system) - (guix build utils) + #:imported-modules (,%gnu-build-system-modules (guix build emacs-utils)) #:tests? #f ; no check target #:phases @@ -444,8 +441,7 @@ operations.") '(#:modules ((guix build gnu-build-system) (guix build utils) (guix build emacs-utils)) - #:imported-modules ((guix build gnu-build-system) - (guix build utils) + #:imported-modules (,%gnu-build-system-modules (guix build emacs-utils)) #:phases (alist-replace diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 183d0eb4cb..a5656d0b91 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -110,8 +110,7 @@ (guix build rpath) (srfi srfi-26) (srfi srfi-1)) - #:imported-modules ((guix build gnu-build-system) - (guix build utils) + #:imported-modules (,%gnu-build-system-modules (guix build rpath)) #:configure-flags (list diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index c147abcaab..d26d2d7789 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Ludovic Courtès +;;; Copyright © 2013, 2015 Ludovic Courtès ;;; Copyright © 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. @@ -127,8 +127,7 @@ anywhere.") (guix build utils) (guix build rpath) (srfi srfi-26)) - #:imported-modules ((guix build gnu-build-system) - (guix build utils) + #:imported-modules (,%gnu-build-system-modules (guix build rpath)) ;; This flag is required to allow for "make test". diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 8223a3fa70..b8b9d4bd9c 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -283,8 +283,7 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") (guix build utils) (guix build rpath) (srfi srfi-26)) - #:imported-modules ((guix build gnu-build-system) - (guix build utils) + #:imported-modules (,@%gnu-build-system-modules (guix build rpath)) #:phases (alist-replace -- cgit v1.2.3 From 4ba3a84d07168f85f13984e6bd143afc4b70a319 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 1 Apr 2015 15:43:54 +0200 Subject: utils: Make the second 'find-files' argument optional. * guix/build/utils.scm (find-files): Make 'pred' optional. --- guix/build/utils.scm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/guix/build/utils.scm b/guix/build/utils.scm index 74165c717f..5d229b5f83 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -273,11 +273,12 @@ name matches REGEXP." (lambda (file stat) (regexp-exec file-rx (basename file))))) -(define (find-files dir pred) +(define* (find-files dir #:optional (pred (const #t))) "Return the lexicographically sorted list of files under DIR for which PRED returns true. PRED is passed two arguments: the absolute file name, and its -stat buffer. PRED can also be a regular expression, in which case it is -equivalent to (file-name-predicate PRED)." +stat buffer; the default predicate always returns true. PRED can also be a +regular expression, in which case it is equivalent to (file-name-predicate +PRED)." (let ((pred (if (procedure? pred) pred (file-name-predicate pred)))) -- cgit v1.2.3 From 112da5887550ab929112dbe4ce9df535fc0a7006 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 1 Apr 2015 16:47:49 +0200 Subject: build-system/gnu: Add 'validate-runpath' phase. * guix/build/gnu-build-system.scm (every*, validate-runpath): New procedures. (%standard-phases): Add 'validate-runpath'. * guix/build-system/gnu.scm (%gnu-build-system-modules): Add (guix build gremlin) and (guix elf). (gnu-build): Add #:validate-runpath?. [builder]: Pass it. (gnu-cross-build): Likewise. * gnu/packages/base.scm (glibc)[arguments]: Add #:validate-runpath? #f. --- gnu/packages/base.scm | 6 ++++ guix/build-system/gnu.scm | 8 +++++- guix/build/gnu-build-system.scm | 62 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+), 1 deletion(-) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 3ed853a179..3ff3172f0f 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -393,6 +393,12 @@ included.") ;; . #:parallel-build? #f + ;; The libraries have an empty RUNPATH, but some, such as the versioned + ;; libraries (libdl-2.21.so, etc.) have ld.so marked as NEEDED. Since + ;; these libraries are always going to be found anyway, just skip + ;; RUNPATH checks. + #:validate-runpath? #f + #:configure-flags (list "--enable-add-ons" "--sysconfdir=/etc" diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm index e4cbd29395..3ccdef1328 100644 --- a/guix/build-system/gnu.scm +++ b/guix/build-system/gnu.scm @@ -45,7 +45,9 @@ (define %gnu-build-system-modules ;; Build-side modules imported and used by default. '((guix build gnu-build-system) - (guix build utils))) + (guix build utils) + (guix build gremlin) + (guix elf))) (define %default-modules ;; Modules in scope in the build-side environment. @@ -283,6 +285,7 @@ standard packages used as implicit inputs of the GNU build system." (strip-flags ''("--strip-debug")) (strip-directories ''("lib" "lib64" "libexec" "bin" "sbin")) + (validate-runpath? #t) (phases '%standard-phases) (locale "en_US.UTF-8") (system (%current-system)) @@ -345,6 +348,7 @@ are allowed to refer to." #:parallel-tests? ,parallel-tests? #:patch-shebangs? ,patch-shebangs? #:strip-binaries? ,strip-binaries? + #:validate-runpath? ,validate-runpath? #:strip-flags ,strip-flags #:strip-directories ,strip-directories))) @@ -417,6 +421,7 @@ is one of `host' or `target'." (strip-flags ''("--strip-debug")) (strip-directories ''("lib" "lib64" "libexec" "bin" "sbin")) + (validate-runpath? #t) (phases '%standard-phases) (locale "en_US.UTF-8") (system (%current-system)) @@ -490,6 +495,7 @@ platform." #:parallel-tests? ,parallel-tests? #:patch-shebangs? ,patch-shebangs? #:strip-binaries? ,strip-binaries? + #:validate-runpath? ,validate-runpath? #:strip-flags ,strip-flags #:strip-directories ,strip-directories)))) diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index 5ae537150f..5220bda71f 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -18,12 +18,15 @@ (define-module (guix build gnu-build-system) #:use-module (guix build utils) + #:use-module (guix build gremlin) + #:use-module (guix elf) #:use-module (ice-9 ftw) #:use-module (ice-9 match) #:use-module (ice-9 regex) #:use-module (ice-9 format) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) + #:use-module (rnrs io ports) #:export (%standard-phases gnu-build)) @@ -398,6 +401,64 @@ makefiles." strip-directories))) outputs)))) +(define (every* pred lst) + "This is like 'every', but process all the elements of LST instead of +stopping as soon as PRED returns false. This is useful when PRED has side +effects, such as displaying warnings or error messages." + (let loop ((lst lst) + (result #t)) + (match lst + (() + result) + ((head . tail) + (loop tail (and (pred head) result)))))) + +(define* (validate-runpath #:key + validate-runpath? + (elf-directories '("lib" "lib64" "libexec" + "bin" "sbin")) + outputs #:allow-other-keys) + "When VALIDATE-RUNPATH? is true, validate that all the ELF files in +ELF-DIRECTORIES have their dependencies found in their 'RUNPATH'. + +Since the ELF parser needs to have a copy of files in memory, better run this +phase after stripping." + (define (sub-directory parent) + (lambda (directory) + (let ((directory (string-append parent "/" directory))) + (and (directory-exists? directory) directory)))) + + (define (validate directory) + (define (file=? file1 file2) + (let ((st1 (stat file1)) + (st2 (stat file2))) + (= (stat:ino st1) (stat:ino st2)))) + + ;; There are always symlinks from '.so' to '.so.1' and so on, so delete + ;; duplicates. + (let ((files (delete-duplicates (find-files directory (lambda (file stat) + (elf-file? file))) + file=?))) + (format (current-error-port) + "validating RUNPATH of ~a binaries in ~s...~%" + (length files) directory) + (every* validate-needed-in-runpath files))) + + (if validate-runpath? + (let ((dirs (append-map (match-lambda + (("debug" . _) + ;; The "debug" output is full of ELF files + ;; that are not worth checking. + '()) + ((name . output) + (filter-map (sub-directory output) + elf-directories))) + outputs))) + (every* validate dirs)) + (begin + (format (current-error-port) "skipping RUNPATH validation~%") + #t))) + (define* (validate-documentation-location #:key outputs #:allow-other-keys) "Documentation should go to 'share/info' and 'share/man', not just 'info/' @@ -486,6 +547,7 @@ DOCUMENTATION-COMPRESSOR-FLAGS." patch-source-shebangs configure patch-generated-file-shebangs build check install patch-shebangs strip + validate-runpath validate-documentation-location compress-documentation))) -- cgit v1.2.3 From 1bb76f75232c755ff70a43bffa28745f9a32aceb Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sat, 28 Mar 2015 15:42:23 +0300 Subject: services: syslog-service: Add 'config-file' argument. * gnu/services/base.scm (syslog-service): Add 'config-file' keyword argument. * doc/guix.texi (Base Services): Document it. --- doc/guix.texi | 5 +++-- gnu/services/base.scm | 8 +++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 4e549ac2ef..556f1389d4 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4508,8 +4508,9 @@ external name servers do not even need to be queried. @end defvr -@deffn {Monadic Procedure} syslog-service -Return a service that runs @code{syslogd} with reasonable default +@deffn {Monadic Procedure} syslog-service [#:config-file #f] +Return a service that runs @code{syslogd}. If configuration file name +@var{config-file} is not specified, use some reasonable default settings. @end deffn diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 24e6d32359..cd1ba0b7b9 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -526,8 +526,10 @@ given @var{config}---an @code{} object. Optionally, (respawn? #f))))) -(define (syslog-service) - "Return a service that runs @code{syslogd} with reasonable default settings." +(define* (syslog-service #:key config-file) + "Return a service that runs @code{syslogd}. +If configuration file name @var{config-file} is not specified, use some +reasonable default settings." ;; Snippet adapted from the GNU inetutils manual. (define contents " @@ -561,7 +563,7 @@ given @var{config}---an @code{} object. Optionally, (start #~(make-forkexec-constructor (list (string-append #$inetutils "/libexec/syslogd") - "--no-detach" "--rcfile" #$syslog.conf))) + "--no-detach" "--rcfile" #$(or config-file syslog.conf)))) (stop #~(make-kill-destructor)))))) (define* (guix-build-accounts count #:key -- cgit v1.2.3 From 5fd5e83da60626650c2c3136a4913b0401a446e9 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 1 Apr 2015 17:37:07 -0400 Subject: gnu: linux-libre: Update to 3.19.3. The changes to linux-libre-*.conf are by Jason Self . * gnu/packages/patches/linux-libre-libreboot-fix.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/linux.scm (linux-libre): Update to version 3.19.3. Add patch. * gnu/packages/linux-libre-i686.conf, gnu/packages/linux-libre-x86_64.conf: Update for 3.19.x. Co-Authored-By: Jason Self --- gnu-system.am | 1 + gnu/packages/linux-libre-i686.conf | 209 ++++++++++++++------ gnu/packages/linux-libre-x86_64.conf | 217 ++++++++++++++------- gnu/packages/linux.scm | 6 +- .../patches/linux-libre-libreboot-fix.patch | 37 ++++ 5 files changed, 344 insertions(+), 126 deletions(-) create mode 100644 gnu/packages/patches/linux-libre-libreboot-fix.patch diff --git a/gnu-system.am b/gnu-system.am index cb68e72bc3..b760fa0d31 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -463,6 +463,7 @@ dist_patch_DATA = \ gnu/packages/patches/libvpx-fix-armhf-link.patch \ gnu/packages/patches/libvpx-fix-ssse3-quantize.patch \ gnu/packages/patches/libvpx-vp9-out-of-bounds-access.patch \ + gnu/packages/patches/linux-libre-libreboot-fix.patch \ gnu/packages/patches/lirc-localstatedir.patch \ gnu/packages/patches/lm-sensors-hwmon-attrs.patch \ gnu/packages/patches/lua51-liblua-so.patch \ diff --git a/gnu/packages/linux-libre-i686.conf b/gnu/packages/linux-libre-i686.conf index 3c82b91614..2274ea2879 100644 --- a/gnu/packages/linux-libre-i686.conf +++ b/gnu/packages/linux-libre-i686.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 3.18.4-gnu Kernel Configuration +# Linux/x86 3.19.0-gnu Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -88,6 +88,7 @@ CONFIG_GENERIC_IRQ_LEGACY_ALLOC_HWIRQ=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_GENERIC_IRQ_CHIP=y CONFIG_IRQ_DOMAIN=y +CONFIG_GENERIC_MSI_IRQ=y # CONFIG_IRQ_DOMAIN_DEBUG is not set CONFIG_IRQ_FORCED_THREADING=y CONFIG_SPARSE_IRQ=y @@ -127,7 +128,6 @@ CONFIG_TASK_IO_ACCOUNTING=y # RCU Subsystem # CONFIG_TREE_RCU=y -# CONFIG_PREEMPT_RCU is not set # CONFIG_TASKS_RCU is not set CONFIG_RCU_STALL_COMMON=y CONFIG_RCU_FANOUT=32 @@ -148,7 +148,7 @@ CONFIG_CGROUP_DEVICE=y CONFIG_CPUSETS=y CONFIG_PROC_PID_CPUSET=y CONFIG_CGROUP_CPUACCT=y -CONFIG_RESOURCE_COUNTERS=y +CONFIG_PAGE_COUNTER=y CONFIG_MEMCG=y CONFIG_MEMCG_SWAP=y # CONFIG_MEMCG_SWAP_ENABLED is not set @@ -179,6 +179,7 @@ CONFIG_RD_LZMA=y CONFIG_RD_XZ=y CONFIG_RD_LZO=y CONFIG_RD_LZ4=y +CONFIG_INIT_FALLBACK=y # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y CONFIG_ANON_INODES=y @@ -282,6 +283,7 @@ CONFIG_OLD_SIGACTION=y # GCOV-based kernel profiling # # CONFIG_GCOV_KERNEL is not set +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y CONFIG_HAVE_GENERIC_DMA_COHERENT=y CONFIG_SLABINFO=y CONFIG_RT_MUTEXES=y @@ -293,6 +295,11 @@ CONFIG_MODULE_UNLOAD=y CONFIG_MODVERSIONS=y CONFIG_MODULE_SRCVERSION_ALL=y # CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_SIG_SHA1 is not set +# CONFIG_MODULE_SIG_SHA224 is not set +# CONFIG_MODULE_SIG_SHA256 is not set +# CONFIG_MODULE_SIG_SHA384 is not set +# CONFIG_MODULE_SIG_SHA512 is not set # CONFIG_MODULE_COMPRESS is not set CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y @@ -450,6 +457,7 @@ CONFIG_SCHED_MC=y # CONFIG_PREEMPT_NONE is not set CONFIG_PREEMPT_VOLUNTARY=y # CONFIG_PREEMPT is not set +CONFIG_X86_UP_APIC_MSI=y CONFIG_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y @@ -545,6 +553,7 @@ CONFIG_X86_PAT=y CONFIG_ARCH_USES_PG_UNCACHED=y CONFIG_ARCH_RANDOM=y CONFIG_X86_SMAP=y +# CONFIG_X86_INTEL_MPX is not set CONFIG_EFI=y CONFIG_EFI_STUB=y CONFIG_SECCOMP=y @@ -585,7 +594,6 @@ CONFIG_PM_SLEEP_SMP=y CONFIG_PM_WAKELOCKS=y CONFIG_PM_WAKELOCKS_LIMIT=100 CONFIG_PM_WAKELOCKS_GC=y -CONFIG_PM_RUNTIME=y CONFIG_PM=y CONFIG_PM_DEBUG=y CONFIG_PM_ADVANCED_DEBUG=y @@ -634,6 +642,7 @@ CONFIG_ACPI_APEI_PCIEAER=y CONFIG_ACPI_APEI_EINJ=m # CONFIG_ACPI_APEI_ERST_DEBUG is not set CONFIG_ACPI_EXTLOG=m +# CONFIG_PMIC_OPREGION is not set CONFIG_SFI=y CONFIG_X86_APM_BOOT=y CONFIG_APM=m @@ -662,7 +671,7 @@ CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y # -# x86 CPU frequency scaling drivers +# CPU frequency scaling drivers # CONFIG_X86_INTEL_PSTATE=y CONFIG_X86_PCC_CPUFREQ=y @@ -734,7 +743,6 @@ CONFIG_PCI_ATS=y CONFIG_PCI_IOV=y CONFIG_PCI_PRI=y CONFIG_PCI_PASID=y -CONFIG_PCI_IOAPIC=y CONFIG_PCI_LABEL=y # @@ -856,6 +864,7 @@ CONFIG_SYN_COOKIES=y CONFIG_NET_IPVTI=m CONFIG_NET_UDP_TUNNEL=m CONFIG_NET_FOU=m +CONFIG_NET_FOU_IP_TUNNELS=y CONFIG_GENEVE=m CONFIG_INET_AH=m CONFIG_INET_ESP=m @@ -967,6 +976,7 @@ CONFIG_NF_NAT_FTP=m CONFIG_NF_NAT_IRC=m CONFIG_NF_NAT_SIP=m CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_REDIRECT=m CONFIG_NETFILTER_SYNPROXY=m CONFIG_NF_TABLES=m CONFIG_NF_TABLES_INET=m @@ -979,6 +989,7 @@ CONFIG_NFT_COUNTER=m CONFIG_NFT_LOG=m CONFIG_NFT_LIMIT=m CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m CONFIG_NFT_NAT=m CONFIG_NFT_QUEUE=m CONFIG_NFT_REJECT=m @@ -1147,6 +1158,7 @@ CONFIG_NF_NAT_IPV4=m CONFIG_NFT_CHAIN_NAT_IPV4=m CONFIG_NF_NAT_MASQUERADE_IPV4=m CONFIG_NFT_MASQ_IPV4=m +CONFIG_NFT_REDIR_IPV4=m CONFIG_NF_NAT_SNMP_BASIC=m CONFIG_NF_NAT_PROTO_GRE=m CONFIG_NF_NAT_PPTP=m @@ -1187,6 +1199,7 @@ CONFIG_NF_NAT_IPV6=m CONFIG_NFT_CHAIN_NAT_IPV6=m CONFIG_NF_NAT_MASQUERADE_IPV6=m CONFIG_NFT_MASQ_IPV6=m +CONFIG_NFT_REDIR_IPV6=m CONFIG_IP6_NF_IPTABLES=m CONFIG_IP6_NF_MATCH_AH=m CONFIG_IP6_NF_MATCH_EUI64=m @@ -1286,6 +1299,7 @@ CONFIG_BRIDGE_IGMP_SNOOPING=y CONFIG_BRIDGE_VLAN_FILTERING=y CONFIG_HAVE_NET_DSA=y CONFIG_NET_DSA=m +CONFIG_NET_DSA_HWMON=y CONFIG_NET_DSA_TAG_BRCM=y CONFIG_NET_DSA_TAG_DSA=y CONFIG_NET_DSA_TAG_EDSA=y @@ -1381,6 +1395,7 @@ CONFIG_NET_ACT_PEDIT=m CONFIG_NET_ACT_SIMP=m CONFIG_NET_ACT_SKBEDIT=m CONFIG_NET_ACT_CSUM=m +CONFIG_NET_ACT_VLAN=m # CONFIG_NET_CLS_IND is not set CONFIG_NET_SCH_FIFO=y CONFIG_DCB=y @@ -1392,15 +1407,16 @@ CONFIG_BATMAN_ADV_NC=y CONFIG_BATMAN_ADV_MCAST=y # CONFIG_BATMAN_ADV_DEBUG is not set CONFIG_OPENVSWITCH=m -CONFIG_OPENVSWITCH_GRE=y -CONFIG_OPENVSWITCH_VXLAN=y -CONFIG_OPENVSWITCH_GENEVE=y +CONFIG_OPENVSWITCH_GRE=m +CONFIG_OPENVSWITCH_VXLAN=m +CONFIG_OPENVSWITCH_GENEVE=m CONFIG_VSOCKETS=m CONFIG_VMWARE_VMCI_VSOCKETS=m CONFIG_NETLINK_MMAP=y CONFIG_NETLINK_DIAG=m CONFIG_NET_MPLS_GSO=m CONFIG_HSR=m +# CONFIG_NET_SWITCHDEV is not set CONFIG_RPS=y CONFIG_RFS_ACCEL=y CONFIG_XPS=y @@ -1549,7 +1565,7 @@ CONFIG_VLSI_FIR=m CONFIG_VIA_FIR=m CONFIG_MCS_FIR=m CONFIG_BT=m -CONFIG_BT_6LOWPAN=m +CONFIG_BT_BREDR=y CONFIG_BT_RFCOMM=m CONFIG_BT_RFCOMM_TTY=y CONFIG_BT_BNEP=m @@ -1557,6 +1573,8 @@ CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_CMTP=m CONFIG_BT_HIDP=m +CONFIG_BT_LE=y +CONFIG_BT_6LOWPAN=m # # Bluetooth device drivers @@ -1609,6 +1627,7 @@ CONFIG_MAC80211=m CONFIG_MAC80211_HAS_RC=y CONFIG_MAC80211_RC_MINSTREL=y CONFIG_MAC80211_RC_MINSTREL_HT=y +CONFIG_MAC80211_RC_MINSTREL_VHT=y CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" CONFIG_MAC80211_MESH=y @@ -1660,7 +1679,8 @@ CONFIG_NFC_MRVL=m CONFIG_NFC_MRVL_USB=m CONFIG_NFC_ST21NFCA=m CONFIG_NFC_ST21NFCA_I2C=m -# CONFIG_NFC_ST21NFCB is not set +CONFIG_NFC_ST21NFCB=m +CONFIG_NFC_ST21NFCB_I2C=m # # Device Drivers @@ -1680,7 +1700,9 @@ CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="" CONFIG_FW_LOADER_USER_HELPER=y # CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +CONFIG_WANT_DEV_COREDUMP=y CONFIG_ALLOW_DEV_COREDUMP=y +CONFIG_DEV_COREDUMP=y # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set CONFIG_SYS_HYPERVISOR=y @@ -1689,6 +1711,7 @@ CONFIG_GENERIC_CPU_AUTOPROBE=y CONFIG_REGMAP=y CONFIG_REGMAP_I2C=y CONFIG_REGMAP_SPI=y +CONFIG_REGMAP_SPMI=m CONFIG_REGMAP_MMIO=y CONFIG_REGMAP_IRQ=y CONFIG_DMA_SHARED_BUFFER=y @@ -2150,7 +2173,7 @@ CONFIG_SCSI_LPFC=m CONFIG_SCSI_SIM710=m CONFIG_SCSI_SYM53C416=m CONFIG_SCSI_DC395x=m -CONFIG_SCSI_DC390T=m +CONFIG_SCSI_AM53C974=m CONFIG_SCSI_T128=m CONFIG_SCSI_U14_34F=m CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y @@ -2158,6 +2181,7 @@ CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y CONFIG_SCSI_U14_34F_MAX_TAGS=8 CONFIG_SCSI_ULTRASTOR=m CONFIG_SCSI_NSP32=m +CONFIG_SCSI_WD719X=m CONFIG_SCSI_DEBUG=m CONFIG_SCSI_PMCRAID=m CONFIG_SCSI_PM8001=m @@ -2374,6 +2398,7 @@ CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m CONFIG_NET_TEAM_MODE_LOADBALANCE=m CONFIG_MACVLAN=m CONFIG_MACVTAP=m +CONFIG_IPVLAN=m CONFIG_VXLAN=m CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE_DYNAMIC=y @@ -2453,6 +2478,7 @@ CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y CONFIG_NET_DSA_MV88E6131=m CONFIG_NET_DSA_MV88E6123_61_65=m CONFIG_NET_DSA_MV88E6171=m +CONFIG_NET_DSA_MV88E6352=m CONFIG_NET_DSA_BCM_SF2=m CONFIG_ETHERNET=y CONFIG_MDIO=m @@ -2490,6 +2516,7 @@ CONFIG_B44=m CONFIG_B44_PCI_AUTOSELECT=y CONFIG_B44_PCICORE_AUTOSELECT=y CONFIG_B44_PCI=y +CONFIG_BCMGENET=m CONFIG_BNX2=m CONFIG_CNIC=m CONFIG_TIGON3=m @@ -2556,7 +2583,7 @@ CONFIG_IXGBEVF=m CONFIG_I40E=m CONFIG_I40E_VXLAN=y CONFIG_I40E_DCB=y -# CONFIG_I40E_FCOE is not set +CONFIG_I40E_FCOE=y CONFIG_I40EVF=m CONFIG_FM10K=m CONFIG_FM10K_VXLAN=y @@ -2628,6 +2655,7 @@ CONFIG_8139TOO_8129=y CONFIG_R8169=m CONFIG_NET_VENDOR_RDC=y CONFIG_R6040=m +CONFIG_NET_VENDOR_ROCKER=y CONFIG_NET_VENDOR_SAMSUNG=y CONFIG_SXGBE_ETH=m CONFIG_NET_VENDOR_SEEQ=y @@ -2649,10 +2677,8 @@ CONFIG_SMSC911X=m CONFIG_SMSC9420=m CONFIG_NET_VENDOR_STMICRO=y CONFIG_STMMAC_ETH=m -CONFIG_STMMAC_PLATFORM=y +CONFIG_STMMAC_PLATFORM=m # CONFIG_STMMAC_PCI is not set -# CONFIG_STMMAC_DEBUG_FS is not set -# CONFIG_STMMAC_DA is not set CONFIG_NET_VENDOR_SUN=y CONFIG_HAPPYMEAL=m CONFIG_SUNGEM=m @@ -2807,6 +2833,7 @@ CONFIG_ATH9K_STATION_STATISTICS=y CONFIG_ATH9K_WOW=y CONFIG_ATH9K_RFKILL=y CONFIG_ATH9K_CHANNEL_CONTEXT=y +CONFIG_ATH9K_PCOEM=y CONFIG_ATH9K_HTC=m CONFIG_ATH9K_HTC_DEBUGFS=y CONFIG_CARL9170=m @@ -2893,7 +2920,7 @@ CONFIG_IWLDVM=m CONFIG_IWLMVM=m CONFIG_IWLWIFI_OPMODE_MODULAR=y # CONFIG_IWLWIFI_BCAST_FILTERING is not set -CONFIG_IWLWIFI_UAPSD=y +# CONFIG_IWLWIFI_UAPSD is not set # # Debugging Options @@ -3037,7 +3064,6 @@ CONFIG_X25_ASY=m CONFIG_SBNI=m # CONFIG_SBNI_MULTILINE is not set CONFIG_IEEE802154_DRIVERS=m -# CONFIG_IEEE802154_FAKEHARD is not set CONFIG_IEEE802154_FAKELB=m CONFIG_IEEE802154_AT86RF230=m CONFIG_IEEE802154_MRF24J40=m @@ -3259,6 +3285,9 @@ CONFIG_MOUSE_SERIAL=m CONFIG_MOUSE_APPLETOUCH=m CONFIG_MOUSE_BCM5974=m CONFIG_MOUSE_CYAPA=m +CONFIG_MOUSE_ELAN_I2C=m +CONFIG_MOUSE_ELAN_I2C_I2C=y +CONFIG_MOUSE_ELAN_I2C_SMBUS=y # CONFIG_MOUSE_INPORT is not set CONFIG_MOUSE_LOGIBM=m CONFIG_MOUSE_PC110PAD=m @@ -3327,8 +3356,10 @@ CONFIG_TOUCHSCREEN_DYNAPRO=m CONFIG_TOUCHSCREEN_HAMPSHIRE=m CONFIG_TOUCHSCREEN_EETI=m CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GOODIX=m CONFIG_TOUCHSCREEN_ILI210X=m CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_ELAN=m CONFIG_TOUCHSCREEN_ELO=m CONFIG_TOUCHSCREEN_WACOM_W8001=m CONFIG_TOUCHSCREEN_WACOM_I2C=m @@ -3557,6 +3588,7 @@ CONFIG_IPMI_HANDLER=m CONFIG_IPMI_DEVICE_INTERFACE=m CONFIG_IPMI_SI=m CONFIG_IPMI_SI_PROBE_DEFAULTS=y +CONFIG_IPMI_SSIF=m CONFIG_IPMI_WATCHDOG=m CONFIG_IPMI_POWEROFF=m CONFIG_HW_RANDOM=y @@ -3677,6 +3709,7 @@ CONFIG_I2C_XILINX=m # External I2C/SMBus adapter drivers # CONFIG_I2C_DIOLAN_U2C=m +CONFIG_I2C_DLN2=m CONFIG_I2C_PARPORT=m CONFIG_I2C_PARPORT_LIGHT=m CONFIG_I2C_ROBOTFUZZ_OSIF=m @@ -3691,6 +3724,7 @@ CONFIG_I2C_PCA_ISA=m CONFIG_I2C_CROS_EC_TUNNEL=m CONFIG_SCx200_ACB=m CONFIG_I2C_STUB=m +# CONFIG_I2C_SLAVE is not set # CONFIG_I2C_DEBUG_CORE is not set # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set @@ -3769,8 +3803,12 @@ CONFIG_PINCTRL=y # # Pin controllers # +CONFIG_PINMUX=y +CONFIG_PINCONF=y +CONFIG_GENERIC_PINCONF=y # CONFIG_DEBUG_PINCTRL is not set CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_CHERRYVIEW=m CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y CONFIG_GPIOLIB=y CONFIG_GPIO_DEVRES=y @@ -3787,7 +3825,6 @@ CONFIG_GPIO_MAX730X=m # Memory mapped GPIO drivers: # CONFIG_GPIO_GENERIC_PLATFORM=m -CONFIG_GPIO_DWAPB=m CONFIG_GPIO_IT8761E=m CONFIG_GPIO_F7188X=m CONFIG_GPIO_SCH311X=m @@ -3859,6 +3896,7 @@ CONFIG_GPIO_MSIC=y # USB GPIO expanders: # CONFIG_GPIO_VIPERBOARD=m +CONFIG_GPIO_DLN2=m CONFIG_W1=m CONFIG_W1_CON=y @@ -3984,6 +4022,7 @@ CONFIG_SENSORS_HIH6130=m CONFIG_SENSORS_IBMAEM=m CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IIO_HWMON=m +CONFIG_SENSORS_I5500=m CONFIG_SENSORS_CORETEMP=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_JC42=m @@ -4030,12 +4069,14 @@ CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_NTC_THERMISTOR=m CONFIG_SENSORS_NCT6683=m CONFIG_SENSORS_NCT6775=m +CONFIG_SENSORS_NCT7802=m CONFIG_SENSORS_PCF8591=m CONFIG_PMBUS=m CONFIG_SENSORS_PMBUS=m CONFIG_SENSORS_ADM1275=m CONFIG_SENSORS_LM25066=m CONFIG_SENSORS_LTC2978=m +CONFIG_SENSORS_LTC2978_REGULATOR=y CONFIG_SENSORS_MAX16064=m CONFIG_SENSORS_MAX34440=m CONFIG_SENSORS_MAX8688=m @@ -4241,6 +4282,7 @@ CONFIG_MFD_DA9052_SPI=y CONFIG_MFD_DA9052_I2C=y CONFIG_MFD_DA9055=y CONFIG_MFD_DA9063=y +CONFIG_MFD_DLN2=m CONFIG_MFD_MC13XXX=m CONFIG_MFD_MC13XXX_SPI=m CONFIG_MFD_MC13XXX_I2C=m @@ -4321,7 +4363,7 @@ CONFIG_MFD_WM831X_I2C=y CONFIG_MFD_WM831X_SPI=y CONFIG_MFD_WM8350=y CONFIG_MFD_WM8350_I2C=y -CONFIG_MFD_WM8994=y +CONFIG_MFD_WM8994=m CONFIG_REGULATOR=y # CONFIG_REGULATOR_DEBUG is not set CONFIG_REGULATOR_FIXED_VOLTAGE=m @@ -4462,16 +4504,9 @@ CONFIG_IR_NUVOTON=m CONFIG_IR_REDRAT3=m CONFIG_IR_STREAMZAP=m CONFIG_IR_WINBOND_CIR=m +CONFIG_IR_IGORPLUGUSB=m CONFIG_IR_IGUANA=m CONFIG_IR_TTUSBIR=m -CONFIG_IR_IMG=m -# CONFIG_IR_IMG_RAW is not set -CONFIG_IR_IMG_HW=y -CONFIG_IR_IMG_NEC=y -CONFIG_IR_IMG_JVC=y -CONFIG_IR_IMG_SONY=y -CONFIG_IR_IMG_SHARP=y -CONFIG_IR_IMG_SANYO=y CONFIG_RC_LOOPBACK=m CONFIG_IR_GPIO_CIR=m CONFIG_MEDIA_USB_SUPPORT=y @@ -4547,7 +4582,6 @@ CONFIG_VIDEO_PVRUSB2_SYSFS=y CONFIG_VIDEO_PVRUSB2_DVB=y # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set CONFIG_VIDEO_HDPVR=m -CONFIG_VIDEO_TLG2300=m CONFIG_VIDEO_USBVISION=m CONFIG_VIDEO_STK1160_COMMON=m CONFIG_VIDEO_STK1160_AC97=y @@ -4710,6 +4744,7 @@ CONFIG_DVB_MANTIS=m CONFIG_DVB_HOPPER=m CONFIG_DVB_NGENE=m CONFIG_DVB_DDBRIDGE=m +CONFIG_DVB_SMIPCIE=m CONFIG_V4L_PLATFORM_DRIVERS=y CONFIG_VIDEO_CAFE_CCIC=m CONFIG_VIDEO_VIA_CAMERA=m @@ -4721,17 +4756,12 @@ CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m CONFIG_VIDEO_SH_VEU=m CONFIG_V4L_TEST_DRIVERS=y CONFIG_VIDEO_VIVID=m -CONFIG_VIDEO_MEM2MEM_TESTDEV=m +CONFIG_VIDEO_VIM2M=m # # Supported MMC/SDIO adapters # CONFIG_SMS_SDIO_DRV=m -CONFIG_MEDIA_PARPORT_SUPPORT=y -CONFIG_VIDEO_BWQCAM=m -CONFIG_VIDEO_CQCAM=m -CONFIG_VIDEO_PMS=m -CONFIG_VIDEO_W9966=m CONFIG_RADIO_ADAPTERS=y CONFIG_RADIO_TEA575X=m CONFIG_RADIO_SI470X=y @@ -4933,6 +4963,7 @@ CONFIG_MEDIA_TUNER_TDA18212=m CONFIG_MEDIA_TUNER_E4000=m CONFIG_MEDIA_TUNER_FC2580=m CONFIG_MEDIA_TUNER_M88TS2022=m +CONFIG_MEDIA_TUNER_M88RS6000T=m CONFIG_MEDIA_TUNER_TUA9001=m CONFIG_MEDIA_TUNER_SI2157=m CONFIG_MEDIA_TUNER_IT913X=m @@ -5044,6 +5075,10 @@ CONFIG_DVB_S5H1411=m CONFIG_DVB_S921=m CONFIG_DVB_DIB8000=m CONFIG_DVB_MB86A20S=m + +# +# ISDB-S (satellite) & ISDB-T (terrestrial) frontends +# CONFIG_DVB_TC90522=m # @@ -5063,6 +5098,7 @@ CONFIG_DVB_ISL6405=m CONFIG_DVB_ISL6421=m CONFIG_DVB_ISL6423=m CONFIG_DVB_A8293=m +CONFIG_DVB_SP2=m CONFIG_DVB_LGS8GXX=m CONFIG_DVB_ATBM8830=m CONFIG_DVB_TDA665x=m @@ -5106,6 +5142,7 @@ CONFIG_DRM_TTM=m # # I2C encoder or helper chips # +CONFIG_DRM_I2C_ADV7511=m CONFIG_DRM_I2C_CH7006=m CONFIG_DRM_I2C_SIL164=m CONFIG_DRM_I2C_NXP_TDA998X=m @@ -5523,7 +5560,7 @@ CONFIG_SND_BCD2000=m CONFIG_SND_FIREWIRE=y CONFIG_SND_FIREWIRE_LIB=m CONFIG_SND_DICE=m -CONFIG_SND_FIREWIRE_SPEAKERS=m +CONFIG_SND_OXFW=m CONFIG_SND_ISIGHT=m CONFIG_SND_SCS1X=m CONFIG_SND_FIREWORKS=m @@ -5551,6 +5588,9 @@ CONFIG_SND_SOC_FSL_ESAI=m CONFIG_SND_SOC_IMX_AUDMUX=m CONFIG_SND_MFLD_MACHINE=m CONFIG_SND_SST_MFLD_PLATFORM=m +CONFIG_SND_SST_IPC=m +CONFIG_SND_SST_IPC_PCI=m +CONFIG_SND_SST_IPC_ACPI=m CONFIG_SND_SOC_INTEL_SST=m CONFIG_SND_SOC_INTEL_SST_ACPI=m CONFIG_SND_SOC_INTEL_HASWELL=m @@ -5559,6 +5599,8 @@ CONFIG_SND_SOC_INTEL_HASWELL_MACH=m CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH=m CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH=m CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m +CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m CONFIG_SND_SOC_I2C_AND_SPI=m # @@ -5571,12 +5613,16 @@ CONFIG_SND_SOC_AK4642=m CONFIG_SND_SOC_AK5386=m CONFIG_SND_SOC_ALC5623=m CONFIG_SND_SOC_CS35L32=m +CONFIG_SND_SOC_CS42L51=m +CONFIG_SND_SOC_CS42L51_I2C=m CONFIG_SND_SOC_CS42L52=m CONFIG_SND_SOC_CS42L56=m CONFIG_SND_SOC_CS42L73=m CONFIG_SND_SOC_CS4265=m CONFIG_SND_SOC_CS4270=m CONFIG_SND_SOC_CS4271=m +CONFIG_SND_SOC_CS4271_I2C=m +CONFIG_SND_SOC_CS4271_SPI=m CONFIG_SND_SOC_CS42XX8=m CONFIG_SND_SOC_CS42XX8_I2C=m CONFIG_SND_SOC_HDMI_CODEC=m @@ -5589,7 +5635,10 @@ CONFIG_SND_SOC_PCM512x_I2C=m CONFIG_SND_SOC_PCM512x_SPI=m CONFIG_SND_SOC_RL6231=m CONFIG_SND_SOC_RT286=m +CONFIG_SND_SOC_RT5631=m CONFIG_SND_SOC_RT5640=m +CONFIG_SND_SOC_RT5670=m +# CONFIG_SND_SOC_RT5677_SPI is not set CONFIG_SND_SOC_SGTL5000=m CONFIG_SND_SOC_SI476X=m CONFIG_SND_SOC_SIGMADSP=m @@ -5604,8 +5653,13 @@ CONFIG_SND_SOC_SSM4567=m CONFIG_SND_SOC_STA350=m CONFIG_SND_SOC_TAS2552=m CONFIG_SND_SOC_TAS5086=m +CONFIG_SND_SOC_TFA9879=m +CONFIG_SND_SOC_TLV320AIC23=m +CONFIG_SND_SOC_TLV320AIC23_I2C=m +CONFIG_SND_SOC_TLV320AIC23_SPI=m CONFIG_SND_SOC_TLV320AIC31XX=m CONFIG_SND_SOC_TLV320AIC3X=m +CONFIG_SND_SOC_TS3A227E=m CONFIG_SND_SOC_WM8510=m CONFIG_SND_SOC_WM8523=m CONFIG_SND_SOC_WM8580=m @@ -5631,6 +5685,7 @@ CONFIG_AC97_BUS=m # HID support # CONFIG_HID=m +CONFIG_HID_BATTERY_STRENGTH=y CONFIG_HIDRAW=y CONFIG_UHID=m CONFIG_HID_GENERIC=m @@ -5672,6 +5727,7 @@ CONFIG_HID_LCPOWER=m CONFIG_HID_LENOVO=m CONFIG_HID_LOGITECH=m CONFIG_HID_LOGITECH_DJ=m +CONFIG_HID_LOGITECH_HIDPP=m CONFIG_LOGITECH_FF=y CONFIG_LOGIRUMBLEPAD2_FF=y CONFIG_LOGIG940_FF=y @@ -5692,6 +5748,7 @@ CONFIG_HID_PICOLCD_BACKLIGHT=y CONFIG_HID_PICOLCD_LCD=y CONFIG_HID_PICOLCD_LEDS=y CONFIG_HID_PICOLCD_CIR=y +CONFIG_HID_PLANTRONICS=m CONFIG_HID_PRIMAX=m CONFIG_HID_ROCCAT=m CONFIG_HID_SAITEK=m @@ -5838,9 +5895,10 @@ CONFIG_USB_MUSB_HDRC=m # CONFIG_USB_MUSB_HOST is not set # CONFIG_USB_MUSB_GADGET is not set CONFIG_USB_MUSB_DUAL_ROLE=y -CONFIG_USB_MUSB_TUSB6010=m -CONFIG_USB_MUSB_UX500=m -# CONFIG_USB_UX500_DMA is not set + +# +# Platform Glue Layer +# CONFIG_MUSB_PIO_ONLY=y CONFIG_USB_DWC3=m # CONFIG_USB_DWC3_HOST is not set @@ -5858,14 +5916,13 @@ CONFIG_USB_DWC3_PCI=m # CONFIG_USB_DWC3_DEBUG is not set CONFIG_DWC3_HOST_USB3_LPM_ENABLE=y CONFIG_USB_DWC2=y -CONFIG_USB_DWC2_HOST=m -CONFIG_USB_DWC2_PLATFORM=y -CONFIG_USB_DWC2_PCI=y +CONFIG_USB_DWC2_HOST=y # -# Gadget mode requires USB Gadget support to be enabled +# Gadget/Dual-role mode requires USB Gadget support to be enabled # -CONFIG_USB_DWC2_PERIPHERAL=m +CONFIG_USB_DWC2_PLATFORM=y +CONFIG_USB_DWC2_PCI=y # CONFIG_USB_DWC2_DEBUG is not set # CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set CONFIG_USB_CHIPIDEA=m @@ -6004,6 +6061,12 @@ CONFIG_USB_PXA27X=m CONFIG_USB_MV_UDC=m CONFIG_USB_MV_U3D=m # CONFIG_USB_M66592 is not set +CONFIG_USB_BDC_UDC=m + +# +# Platform Support +# +CONFIG_USB_BDC_PCI=m CONFIG_USB_AMD5536UDC=m CONFIG_USB_NET2272=m CONFIG_USB_NET2272_DMA=y @@ -6027,7 +6090,10 @@ CONFIG_USB_F_RNDIS=m CONFIG_USB_F_MASS_STORAGE=m CONFIG_USB_F_FS=m CONFIG_USB_F_UAC1=m +CONFIG_USB_F_UAC2=m CONFIG_USB_F_UVC=m +CONFIG_USB_F_MIDI=m +CONFIG_USB_F_HID=m CONFIG_USB_CONFIGFS=m CONFIG_USB_CONFIGFS_SERIAL=y CONFIG_USB_CONFIGFS_ACM=y @@ -6041,6 +6107,10 @@ CONFIG_USB_CONFIGFS_PHONET=y CONFIG_USB_CONFIGFS_MASS_STORAGE=y CONFIG_USB_CONFIGFS_F_LB_SS=y CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_USB_CONFIGFS_F_UAC1=y +CONFIG_USB_CONFIGFS_F_UAC2=y +CONFIG_USB_CONFIGFS_F_MIDI=y +CONFIG_USB_CONFIGFS_F_HID=y CONFIG_USB_ZERO=m CONFIG_USB_AUDIO=m CONFIG_GADGET_UAC1=y @@ -6105,6 +6175,7 @@ CONFIG_MMC_USHC=m CONFIG_MMC_USDHI6ROL0=m CONFIG_MMC_REALTEK_PCI=m CONFIG_MMC_REALTEK_USB=m +CONFIG_MMC_TOSHIBA_PCI=m CONFIG_MEMSTICK=m # CONFIG_MEMSTICK_DEBUG is not set @@ -6145,6 +6216,7 @@ CONFIG_LEDS_LP5523=m CONFIG_LEDS_LP5562=m CONFIG_LEDS_LP8501=m CONFIG_LEDS_LP8788=m +CONFIG_LEDS_LP8860=m CONFIG_LEDS_CLEVO_MAIL=m CONFIG_LEDS_PCA955X=m CONFIG_LEDS_PCA963X=m @@ -6194,6 +6266,7 @@ CONFIG_INFINIBAND=m CONFIG_INFINIBAND_USER_MAD=m CONFIG_INFINIBAND_USER_ACCESS=m CONFIG_INFINIBAND_USER_MEM=y +CONFIG_INFINIBAND_ON_DEMAND_PAGING=y CONFIG_INFINIBAND_ADDR_TRANS=y CONFIG_INFINIBAND_MTHCA=m # CONFIG_INFINIBAND_MTHCA_DEBUG is not set @@ -6221,6 +6294,8 @@ CONFIG_EDAC=y CONFIG_EDAC_DECODE_MCE=m CONFIG_EDAC_MCE_INJ=m CONFIG_EDAC_MM_EDAC=m +CONFIG_EDAC_AMD64=m +# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set CONFIG_EDAC_AMD76X=m CONFIG_EDAC_E7XXX=m CONFIG_EDAC_E752X=m @@ -6260,6 +6335,7 @@ CONFIG_RTC_DRV_88PM860X=m CONFIG_RTC_DRV_88PM80X=m CONFIG_RTC_DRV_DS1307=m CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1374_WDT=y CONFIG_RTC_DRV_DS1672=m CONFIG_RTC_DRV_DS3232=m CONFIG_RTC_DRV_LP8788=m @@ -6393,6 +6469,8 @@ CONFIG_VFIO_IOMMU_TYPE1=m CONFIG_VFIO=m CONFIG_VFIO_PCI=m CONFIG_VFIO_PCI_VGA=y +CONFIG_VFIO_PCI_MMAP=y +CONFIG_VFIO_PCI_INTX=y CONFIG_VIRT_DRIVERS=y CONFIG_VIRTIO=y @@ -6493,10 +6571,9 @@ CONFIG_COMEDI_PCMMIO=m CONFIG_COMEDI_PCMUIO=m CONFIG_COMEDI_MULTIQ3=m CONFIG_COMEDI_S526=m -CONFIG_COMEDI_PCI_DRIVERS=y +CONFIG_COMEDI_PCI_DRIVERS=m CONFIG_COMEDI_8255_PCI=m CONFIG_COMEDI_ADDI_WATCHDOG=m -CONFIG_COMEDI_ADDI_APCI_035=m CONFIG_COMEDI_ADDI_APCI_1032=m CONFIG_COMEDI_ADDI_APCI_1500=m CONFIG_COMEDI_ADDI_APCI_1516=m @@ -6549,7 +6626,7 @@ CONFIG_COMEDI_RTD520=m CONFIG_COMEDI_S626=m CONFIG_COMEDI_MITE=m CONFIG_COMEDI_NI_TIOCMD=m -CONFIG_COMEDI_PCMCIA_DRIVERS=y +CONFIG_COMEDI_PCMCIA_DRIVERS=m CONFIG_COMEDI_CB_DAS16_CS=m CONFIG_COMEDI_DAS08_CS=m CONFIG_COMEDI_NI_DAQ_700_CS=m @@ -6557,7 +6634,7 @@ CONFIG_COMEDI_NI_DAQ_DIO24_CS=m CONFIG_COMEDI_NI_LABPC_CS=m CONFIG_COMEDI_NI_MIO_CS=m CONFIG_COMEDI_QUATECH_DAQP_CS=m -CONFIG_COMEDI_USB_DRIVERS=y +CONFIG_COMEDI_USB_DRIVERS=m CONFIG_COMEDI_DT9812=m CONFIG_COMEDI_NI_USB6501=m CONFIG_COMEDI_USBDUX=m @@ -6692,7 +6769,6 @@ CONFIG_IIO_SIMPLE_DUMMY=m # CONFIG_IIO_SIMPLE_DUMMY_EVENTS is not set # CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set CONFIG_FB_XGI=m -CONFIG_BCM_WIMAX=m CONFIG_FT1000=m CONFIG_FT1000_USB=m CONFIG_FT1000_PCMCIA=m @@ -6724,10 +6800,17 @@ CONFIG_DVB_CXD2099=m CONFIG_VIDEO_DT3155=m # CONFIG_DT3155_CCIR is not set CONFIG_DT3155_STREAMING=y -# CONFIG_VIDEO_TCM825X is not set +CONFIG_VIDEO_TLG2300=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m +CONFIG_MEDIA_PARPORT_SUPPORT=y +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_PMS=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_SAA7191=m CONFIG_LIRC_STAGING=y CONFIG_LIRC_BT829=m -CONFIG_LIRC_IGORPLUGUSB=m CONFIG_LIRC_IMON=m CONFIG_LIRC_PARALLEL=m CONFIG_LIRC_SASEM=m @@ -6739,7 +6822,6 @@ CONFIG_LIRC_ZILOG=m # # Android # -# CONFIG_ANDROID is not set CONFIG_USB_WPAN_HCD=m CONFIG_WIMAX_GDM72XX=m CONFIG_WIMAX_GDM72XX_QOS=y @@ -6826,11 +6908,6 @@ CONFIG_PVPANIC=m CONFIG_CHROME_PLATFORMS=y CONFIG_CHROMEOS_LAPTOP=m CONFIG_CHROMEOS_PSTORE=m - -# -# SOC (System On Chip) specific Drivers -# -CONFIG_SOC_TI=y CONFIG_CLKDEV_LOOKUP=y CONFIG_HAVE_CLK_PREPARE=y CONFIG_COMMON_CLK=y @@ -6866,6 +6943,7 @@ CONFIG_DW_APB_TIMER=y # CONFIG_SH_TIMER_TMU is not set # CONFIG_EM_TIMER_STI is not set CONFIG_MAILBOX=y +CONFIG_PCC=y CONFIG_IOMMU_API=y CONFIG_IOMMU_SUPPORT=y CONFIG_DMAR_TABLE=y @@ -6886,6 +6964,7 @@ CONFIG_STE_MODEM_RPROC=m # # SOC (System On Chip) specific Drivers # +CONFIG_SOC_TI=y CONFIG_PM_DEVFREQ=y # @@ -6948,6 +7027,7 @@ CONFIG_AD7793=m CONFIG_AD7887=m CONFIG_AD7923=m CONFIG_AD799X=m +CONFIG_AXP288_ADC=m CONFIG_LP8788_ADC=m CONFIG_MAX1027=m CONFIG_MAX1363=m @@ -6955,6 +7035,7 @@ CONFIG_MCP320X=m CONFIG_MCP3422=m CONFIG_MEN_Z188_ADC=m CONFIG_NAU7802=m +CONFIG_QCOM_SPMI_IADC=m CONFIG_TI_ADC081C=m CONFIG_TI_ADC128S052=m CONFIG_TI_AM335X_ADC=m @@ -7030,6 +7111,7 @@ CONFIG_ITG3200=m # CONFIG_DHT11=m CONFIG_SI7005=m +CONFIG_SI7020=m # # Inertial measurement units @@ -7086,6 +7168,7 @@ CONFIG_IIO_SYSFS_TRIGGER=m # # Pressure sensors # +CONFIG_BMP280=m CONFIG_HID_SENSOR_PRESS=m CONFIG_MPL115=m CONFIG_MPL3115=m @@ -7157,6 +7240,11 @@ CONFIG_MCB_PCI=m CONFIG_RAS=y CONFIG_THUNDERBOLT=m +# +# Android +# +# CONFIG_ANDROID is not set + # # Firmware Drivers # @@ -7342,6 +7430,7 @@ CONFIG_SQUASHFS_FILE_DIRECT=y CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y CONFIG_SQUASHFS_XATTR=y CONFIG_SQUASHFS_ZLIB=y +# CONFIG_SQUASHFS_LZ4 is not set CONFIG_SQUASHFS_LZO=y CONFIG_SQUASHFS_XZ=y # CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set @@ -7526,6 +7615,7 @@ CONFIG_FRAME_WARN=1024 # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_READABLE_ASM is not set CONFIG_UNUSED_SYMBOLS=y +# CONFIG_PAGE_OWNER is not set CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set # CONFIG_DEBUG_SECTION_MISMATCH is not set @@ -7539,6 +7629,7 @@ CONFIG_DEBUG_KERNEL=y # # Memory Debugging # +# CONFIG_PAGE_EXTENSION is not set # CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_DEBUG_OBJECTS is not set # CONFIG_SLUB_DEBUG_ON is not set @@ -7575,7 +7666,7 @@ CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_PANIC_TIMEOUT=0 CONFIG_SCHED_DEBUG=y CONFIG_SCHEDSTATS=y -# CONFIG_SCHED_STACK_END_CHECK is not set +CONFIG_SCHED_STACK_END_CHECK=y CONFIG_TIMER_STATS=y # @@ -7692,6 +7783,7 @@ CONFIG_KGDB_SERIAL_CONSOLE=y # CONFIG_KGDB_TESTS is not set CONFIG_KGDB_LOW_LEVEL_TRAP=y CONFIG_KGDB_KDB=y +CONFIG_KDB_DEFAULT_ENABLE=0x1 CONFIG_KDB_KEYBOARD=y CONFIG_KDB_CONTINUE_CATASTROPHIC=0 CONFIG_STRICT_DEVMEM=y @@ -7781,6 +7873,7 @@ CONFIG_IMA_DEFAULT_HASH_SHA1=y CONFIG_IMA_DEFAULT_HASH="sha1" CONFIG_IMA_APPRAISE=y CONFIG_IMA_TRUSTED_KEYRING=y +# CONFIG_IMA_LOAD_X509 is not set CONFIG_EVM=y CONFIG_EVM_ATTR_FSUUID=y CONFIG_EVM_EXTRA_SMACK_XATTRS=y diff --git a/gnu/packages/linux-libre-x86_64.conf b/gnu/packages/linux-libre-x86_64.conf index 0b865808ab..cf4cd766c0 100644 --- a/gnu/packages/linux-libre-x86_64.conf +++ b/gnu/packages/linux-libre-x86_64.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 3.18.4-gnu Kernel Configuration +# Linux/x86 3.19.0-gnu Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y @@ -89,6 +89,7 @@ CONFIG_GENERIC_IRQ_LEGACY_ALLOC_HWIRQ=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_GENERIC_IRQ_CHIP=y CONFIG_IRQ_DOMAIN=y +CONFIG_GENERIC_MSI_IRQ=y # CONFIG_IRQ_DOMAIN_DEBUG is not set CONFIG_IRQ_FORCED_THREADING=y CONFIG_SPARSE_IRQ=y @@ -108,19 +109,17 @@ CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_TICK_ONESHOT=y CONFIG_NO_HZ_COMMON=y # CONFIG_HZ_PERIODIC is not set -# CONFIG_NO_HZ_IDLE is not set -CONFIG_NO_HZ_FULL=y -# CONFIG_NO_HZ_FULL_ALL is not set -CONFIG_NO_HZ_FULL_SYSIDLE=y -CONFIG_NO_HZ_FULL_SYSIDLE_SMALL=8 +CONFIG_NO_HZ_IDLE=y +# CONFIG_NO_HZ_FULL is not set CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y # # CPU/Task time and stats accounting # -CONFIG_VIRT_CPU_ACCOUNTING=y -CONFIG_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +# CONFIG_IRQ_TIME_ACCOUNTING is not set CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT_V3=y CONFIG_TASKSTATS=y @@ -132,7 +131,6 @@ CONFIG_TASK_IO_ACCOUNTING=y # RCU Subsystem # CONFIG_TREE_RCU=y -# CONFIG_PREEMPT_RCU is not set # CONFIG_TASKS_RCU is not set CONFIG_RCU_STALL_COMMON=y CONFIG_CONTEXT_TRACKING=y @@ -154,8 +152,8 @@ CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y CONFIG_ARCH_SUPPORTS_INT128=y -CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y CONFIG_NUMA_BALANCING=y +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y CONFIG_CGROUPS=y # CONFIG_CGROUP_DEBUG is not set CONFIG_CGROUP_FREEZER=y @@ -163,7 +161,7 @@ CONFIG_CGROUP_DEVICE=y CONFIG_CPUSETS=y CONFIG_PROC_PID_CPUSET=y CONFIG_CGROUP_CPUACCT=y -CONFIG_RESOURCE_COUNTERS=y +CONFIG_PAGE_COUNTER=y CONFIG_MEMCG=y CONFIG_MEMCG_SWAP=y # CONFIG_MEMCG_SWAP_ENABLED is not set @@ -194,6 +192,7 @@ CONFIG_RD_LZMA=y CONFIG_RD_XZ=y CONFIG_RD_LZO=y CONFIG_RD_LZ4=y +CONFIG_INIT_FALLBACK=y # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y CONFIG_ANON_INODES=y @@ -301,6 +300,7 @@ CONFIG_COMPAT_OLD_SIGACTION=y # GCOV-based kernel profiling # # CONFIG_GCOV_KERNEL is not set +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set CONFIG_SLABINFO=y CONFIG_RT_MUTEXES=y @@ -451,6 +451,7 @@ CONFIG_SCHED_MC=y # CONFIG_PREEMPT_NONE is not set CONFIG_PREEMPT_VOLUNTARY=y # CONFIG_PREEMPT is not set +CONFIG_X86_UP_APIC_MSI=y CONFIG_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y @@ -462,6 +463,7 @@ CONFIG_X86_MCE_INJECT=m CONFIG_X86_THERMAL_VECTOR=y CONFIG_X86_16BIT=y CONFIG_X86_ESPFIX64=y +CONFIG_X86_VSYSCALL_EMULATION=y CONFIG_I8K=m CONFIG_MICROCODE=y CONFIG_MICROCODE_INTEL=y @@ -549,6 +551,7 @@ CONFIG_X86_PAT=y CONFIG_ARCH_USES_PG_UNCACHED=y CONFIG_ARCH_RANDOM=y CONFIG_X86_SMAP=y +# CONFIG_X86_INTEL_MPX is not set CONFIG_EFI=y CONFIG_EFI_STUB=y CONFIG_EFI_MIXED=y @@ -594,7 +597,6 @@ CONFIG_PM_SLEEP_SMP=y CONFIG_PM_WAKELOCKS=y CONFIG_PM_WAKELOCKS_LIMIT=100 CONFIG_PM_WAKELOCKS_GC=y -CONFIG_PM_RUNTIME=y CONFIG_PM=y CONFIG_PM_DEBUG=y CONFIG_PM_ADVANCED_DEBUG=y @@ -645,6 +647,7 @@ CONFIG_ACPI_APEI_MEMORY_FAILURE=y CONFIG_ACPI_APEI_EINJ=m # CONFIG_ACPI_APEI_ERST_DEBUG is not set CONFIG_ACPI_EXTLOG=m +# CONFIG_PMIC_OPREGION is not set CONFIG_SFI=y # @@ -666,7 +669,7 @@ CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y # -# x86 CPU frequency scaling drivers +# CPU frequency scaling drivers # CONFIG_X86_INTEL_PSTATE=y CONFIG_X86_PCC_CPUFREQ=y @@ -727,7 +730,6 @@ CONFIG_PCI_ATS=y CONFIG_PCI_IOV=y CONFIG_PCI_PRI=y CONFIG_PCI_PASID=y -CONFIG_PCI_IOAPIC=y CONFIG_PCI_LABEL=y # @@ -840,6 +842,7 @@ CONFIG_SYN_COOKIES=y CONFIG_NET_IPVTI=m CONFIG_NET_UDP_TUNNEL=m CONFIG_NET_FOU=m +CONFIG_NET_FOU_IP_TUNNELS=y CONFIG_GENEVE=m CONFIG_INET_AH=m CONFIG_INET_ESP=m @@ -951,6 +954,7 @@ CONFIG_NF_NAT_FTP=m CONFIG_NF_NAT_IRC=m CONFIG_NF_NAT_SIP=m CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_REDIRECT=m CONFIG_NETFILTER_SYNPROXY=m CONFIG_NF_TABLES=m CONFIG_NF_TABLES_INET=m @@ -963,6 +967,7 @@ CONFIG_NFT_COUNTER=m CONFIG_NFT_LOG=m CONFIG_NFT_LIMIT=m CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m CONFIG_NFT_NAT=m CONFIG_NFT_QUEUE=m CONFIG_NFT_REJECT=m @@ -1131,6 +1136,7 @@ CONFIG_NF_NAT_IPV4=m CONFIG_NFT_CHAIN_NAT_IPV4=m CONFIG_NF_NAT_MASQUERADE_IPV4=m CONFIG_NFT_MASQ_IPV4=m +CONFIG_NFT_REDIR_IPV4=m CONFIG_NF_NAT_SNMP_BASIC=m CONFIG_NF_NAT_PROTO_GRE=m CONFIG_NF_NAT_PPTP=m @@ -1171,6 +1177,7 @@ CONFIG_NF_NAT_IPV6=m CONFIG_NFT_CHAIN_NAT_IPV6=m CONFIG_NF_NAT_MASQUERADE_IPV6=m CONFIG_NFT_MASQ_IPV6=m +CONFIG_NFT_REDIR_IPV6=m CONFIG_IP6_NF_IPTABLES=m CONFIG_IP6_NF_MATCH_AH=m CONFIG_IP6_NF_MATCH_EUI64=m @@ -1270,6 +1277,7 @@ CONFIG_BRIDGE_IGMP_SNOOPING=y CONFIG_BRIDGE_VLAN_FILTERING=y CONFIG_HAVE_NET_DSA=y CONFIG_NET_DSA=m +CONFIG_NET_DSA_HWMON=y CONFIG_NET_DSA_TAG_BRCM=y CONFIG_NET_DSA_TAG_DSA=y CONFIG_NET_DSA_TAG_EDSA=y @@ -1361,6 +1369,7 @@ CONFIG_NET_ACT_PEDIT=m CONFIG_NET_ACT_SIMP=m CONFIG_NET_ACT_SKBEDIT=m CONFIG_NET_ACT_CSUM=m +CONFIG_NET_ACT_VLAN=m # CONFIG_NET_CLS_IND is not set CONFIG_NET_SCH_FIFO=y CONFIG_DCB=y @@ -1372,15 +1381,16 @@ CONFIG_BATMAN_ADV_NC=y CONFIG_BATMAN_ADV_MCAST=y # CONFIG_BATMAN_ADV_DEBUG is not set CONFIG_OPENVSWITCH=m -CONFIG_OPENVSWITCH_GRE=y -CONFIG_OPENVSWITCH_VXLAN=y -CONFIG_OPENVSWITCH_GENEVE=y +CONFIG_OPENVSWITCH_GRE=m +CONFIG_OPENVSWITCH_VXLAN=m +CONFIG_OPENVSWITCH_GENEVE=m CONFIG_VSOCKETS=m CONFIG_VMWARE_VMCI_VSOCKETS=m CONFIG_NETLINK_MMAP=y CONFIG_NETLINK_DIAG=m CONFIG_NET_MPLS_GSO=m CONFIG_HSR=m +# CONFIG_NET_SWITCHDEV is not set CONFIG_RPS=y CONFIG_RFS_ACCEL=y CONFIG_XPS=y @@ -1523,7 +1533,7 @@ CONFIG_VLSI_FIR=m CONFIG_VIA_FIR=m CONFIG_MCS_FIR=m CONFIG_BT=m -CONFIG_BT_6LOWPAN=m +CONFIG_BT_BREDR=y CONFIG_BT_RFCOMM=m CONFIG_BT_RFCOMM_TTY=y CONFIG_BT_BNEP=m @@ -1531,6 +1541,8 @@ CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_CMTP=m CONFIG_BT_HIDP=m +CONFIG_BT_LE=y +CONFIG_BT_6LOWPAN=m # # Bluetooth device drivers @@ -1583,6 +1595,7 @@ CONFIG_MAC80211=m CONFIG_MAC80211_HAS_RC=y CONFIG_MAC80211_RC_MINSTREL=y CONFIG_MAC80211_RC_MINSTREL_HT=y +CONFIG_MAC80211_RC_MINSTREL_VHT=y CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" CONFIG_MAC80211_MESH=y @@ -1634,7 +1647,8 @@ CONFIG_NFC_MRVL=m CONFIG_NFC_MRVL_USB=m CONFIG_NFC_ST21NFCA=m CONFIG_NFC_ST21NFCA_I2C=m -# CONFIG_NFC_ST21NFCB is not set +CONFIG_NFC_ST21NFCB=m +CONFIG_NFC_ST21NFCB_I2C=m CONFIG_HAVE_BPF_JIT=y # @@ -1655,7 +1669,9 @@ CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="" CONFIG_FW_LOADER_USER_HELPER=y # CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +CONFIG_WANT_DEV_COREDUMP=y CONFIG_ALLOW_DEV_COREDUMP=y +CONFIG_DEV_COREDUMP=y # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set CONFIG_SYS_HYPERVISOR=y @@ -1664,6 +1680,7 @@ CONFIG_GENERIC_CPU_AUTOPROBE=y CONFIG_REGMAP=y CONFIG_REGMAP_I2C=y CONFIG_REGMAP_SPI=y +CONFIG_REGMAP_SPMI=m CONFIG_REGMAP_MMIO=y CONFIG_REGMAP_IRQ=y CONFIG_DMA_SHARED_BUFFER=y @@ -2108,7 +2125,8 @@ CONFIG_SCSI_QLA_ISCSI=m CONFIG_SCSI_LPFC=m # CONFIG_SCSI_LPFC_DEBUG_FS is not set CONFIG_SCSI_DC395x=m -CONFIG_SCSI_DC390T=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_WD719X=m CONFIG_SCSI_DEBUG=m CONFIG_SCSI_PMCRAID=m CONFIG_SCSI_PM8001=m @@ -2316,6 +2334,7 @@ CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m CONFIG_NET_TEAM_MODE_LOADBALANCE=m CONFIG_MACVLAN=m CONFIG_MACVTAP=m +CONFIG_IPVLAN=m CONFIG_VXLAN=m CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE_DYNAMIC=y @@ -2394,6 +2413,7 @@ CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y CONFIG_NET_DSA_MV88E6131=m CONFIG_NET_DSA_MV88E6123_61_65=m CONFIG_NET_DSA_MV88E6171=m +CONFIG_NET_DSA_MV88E6352=m CONFIG_NET_DSA_BCM_SF2=m CONFIG_ETHERNET=y CONFIG_MDIO=m @@ -2427,6 +2447,7 @@ CONFIG_B44=m CONFIG_B44_PCI_AUTOSELECT=y CONFIG_B44_PCICORE_AUTOSELECT=y CONFIG_B44_PCI=y +CONFIG_BCMGENET=m CONFIG_BNX2=m CONFIG_CNIC=m CONFIG_TIGON3=m @@ -2490,7 +2511,7 @@ CONFIG_IXGBEVF=m CONFIG_I40E=m CONFIG_I40E_VXLAN=y CONFIG_I40E_DCB=y -# CONFIG_I40E_FCOE is not set +CONFIG_I40E_FCOE=y CONFIG_I40EVF=m CONFIG_FM10K=m CONFIG_FM10K_VXLAN=y @@ -2558,6 +2579,7 @@ CONFIG_8139TOO_8129=y CONFIG_R8169=m CONFIG_NET_VENDOR_RDC=y CONFIG_R6040=m +CONFIG_NET_VENDOR_ROCKER=y CONFIG_NET_VENDOR_SAMSUNG=y CONFIG_SXGBE_ETH=m CONFIG_NET_VENDOR_SEEQ=y @@ -2578,10 +2600,8 @@ CONFIG_SMSC911X=m CONFIG_SMSC9420=m CONFIG_NET_VENDOR_STMICRO=y CONFIG_STMMAC_ETH=m -CONFIG_STMMAC_PLATFORM=y +CONFIG_STMMAC_PLATFORM=m # CONFIG_STMMAC_PCI is not set -# CONFIG_STMMAC_DEBUG_FS is not set -# CONFIG_STMMAC_DA is not set CONFIG_NET_VENDOR_SUN=y CONFIG_HAPPYMEAL=m CONFIG_SUNGEM=m @@ -2736,6 +2756,7 @@ CONFIG_ATH9K_STATION_STATISTICS=y CONFIG_ATH9K_WOW=y CONFIG_ATH9K_RFKILL=y CONFIG_ATH9K_CHANNEL_CONTEXT=y +CONFIG_ATH9K_PCOEM=y CONFIG_ATH9K_HTC=m CONFIG_ATH9K_HTC_DEBUGFS=y CONFIG_CARL9170=m @@ -2822,7 +2843,7 @@ CONFIG_IWLDVM=m CONFIG_IWLMVM=m CONFIG_IWLWIFI_OPMODE_MODULAR=y # CONFIG_IWLWIFI_BCAST_FILTERING is not set -CONFIG_IWLWIFI_UAPSD=y +# CONFIG_IWLWIFI_UAPSD is not set # # Debugging Options @@ -2960,7 +2981,6 @@ CONFIG_X25_ASY=m CONFIG_SBNI=m # CONFIG_SBNI_MULTILINE is not set CONFIG_IEEE802154_DRIVERS=m -# CONFIG_IEEE802154_FAKEHARD is not set CONFIG_IEEE802154_FAKELB=m CONFIG_IEEE802154_AT86RF230=m CONFIG_IEEE802154_MRF24J40=m @@ -3166,6 +3186,9 @@ CONFIG_MOUSE_SERIAL=m CONFIG_MOUSE_APPLETOUCH=m CONFIG_MOUSE_BCM5974=m CONFIG_MOUSE_CYAPA=m +CONFIG_MOUSE_ELAN_I2C=m +CONFIG_MOUSE_ELAN_I2C_I2C=y +CONFIG_MOUSE_ELAN_I2C_SMBUS=y CONFIG_MOUSE_VSXXXAA=m CONFIG_MOUSE_GPIO=m CONFIG_MOUSE_SYNAPTICS_I2C=m @@ -3231,8 +3254,10 @@ CONFIG_TOUCHSCREEN_DYNAPRO=m CONFIG_TOUCHSCREEN_HAMPSHIRE=m CONFIG_TOUCHSCREEN_EETI=m CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GOODIX=m CONFIG_TOUCHSCREEN_ILI210X=m CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_ELAN=m CONFIG_TOUCHSCREEN_ELO=m CONFIG_TOUCHSCREEN_WACOM_W8001=m CONFIG_TOUCHSCREEN_WACOM_I2C=m @@ -3450,6 +3475,7 @@ CONFIG_IPMI_HANDLER=m CONFIG_IPMI_DEVICE_INTERFACE=m CONFIG_IPMI_SI=m CONFIG_IPMI_SI_PROBE_DEFAULTS=y +CONFIG_IPMI_SSIF=m CONFIG_IPMI_WATCHDOG=m CONFIG_IPMI_POWEROFF=m CONFIG_HW_RANDOM=y @@ -3563,6 +3589,7 @@ CONFIG_I2C_XILINX=m # External I2C/SMBus adapter drivers # CONFIG_I2C_DIOLAN_U2C=m +CONFIG_I2C_DLN2=m CONFIG_I2C_PARPORT=m CONFIG_I2C_PARPORT_LIGHT=m CONFIG_I2C_ROBOTFUZZ_OSIF=m @@ -3575,6 +3602,7 @@ CONFIG_I2C_VIPERBOARD=m # CONFIG_I2C_CROS_EC_TUNNEL=m CONFIG_I2C_STUB=m +# CONFIG_I2C_SLAVE is not set # CONFIG_I2C_DEBUG_CORE is not set # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set @@ -3651,8 +3679,12 @@ CONFIG_PINCTRL=y # # Pin controllers # +CONFIG_PINMUX=y +CONFIG_PINCONF=y +CONFIG_GENERIC_PINCONF=y # CONFIG_DEBUG_PINCTRL is not set CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_CHERRYVIEW=m CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y CONFIG_GPIOLIB=y CONFIG_GPIO_DEVRES=y @@ -3669,7 +3701,6 @@ CONFIG_GPIO_MAX730X=m # Memory mapped GPIO drivers: # CONFIG_GPIO_GENERIC_PLATFORM=m -CONFIG_GPIO_DWAPB=m CONFIG_GPIO_IT8761E=m CONFIG_GPIO_F7188X=m CONFIG_GPIO_SCH311X=m @@ -3737,6 +3768,7 @@ CONFIG_GPIO_TPS65910=y # USB GPIO expanders: # CONFIG_GPIO_VIPERBOARD=m +CONFIG_GPIO_DLN2=m CONFIG_W1=m CONFIG_W1_CON=y @@ -3861,6 +3893,7 @@ CONFIG_SENSORS_HIH6130=m CONFIG_SENSORS_IBMAEM=m CONFIG_SENSORS_IBMPEX=m CONFIG_SENSORS_IIO_HWMON=m +CONFIG_SENSORS_I5500=m CONFIG_SENSORS_CORETEMP=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_JC42=m @@ -3907,12 +3940,14 @@ CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_NTC_THERMISTOR=m CONFIG_SENSORS_NCT6683=m CONFIG_SENSORS_NCT6775=m +CONFIG_SENSORS_NCT7802=m CONFIG_SENSORS_PCF8591=m CONFIG_PMBUS=m CONFIG_SENSORS_PMBUS=m CONFIG_SENSORS_ADM1275=m CONFIG_SENSORS_LM25066=m CONFIG_SENSORS_LTC2978=m +CONFIG_SENSORS_LTC2978_REGULATOR=y CONFIG_SENSORS_MAX16064=m CONFIG_SENSORS_MAX34440=m CONFIG_SENSORS_MAX8688=m @@ -4105,6 +4140,7 @@ CONFIG_MFD_DA9052_SPI=y CONFIG_MFD_DA9052_I2C=y CONFIG_MFD_DA9055=y CONFIG_MFD_DA9063=y +CONFIG_MFD_DLN2=m CONFIG_MFD_MC13XXX=m CONFIG_MFD_MC13XXX_SPI=m CONFIG_MFD_MC13XXX_I2C=m @@ -4183,7 +4219,7 @@ CONFIG_MFD_WM831X_I2C=y CONFIG_MFD_WM831X_SPI=y CONFIG_MFD_WM8350=y CONFIG_MFD_WM8350_I2C=y -CONFIG_MFD_WM8994=y +CONFIG_MFD_WM8994=m CONFIG_REGULATOR=y # CONFIG_REGULATOR_DEBUG is not set CONFIG_REGULATOR_FIXED_VOLTAGE=m @@ -4323,16 +4359,9 @@ CONFIG_IR_NUVOTON=m CONFIG_IR_REDRAT3=m CONFIG_IR_STREAMZAP=m CONFIG_IR_WINBOND_CIR=m +CONFIG_IR_IGORPLUGUSB=m CONFIG_IR_IGUANA=m CONFIG_IR_TTUSBIR=m -CONFIG_IR_IMG=m -# CONFIG_IR_IMG_RAW is not set -CONFIG_IR_IMG_HW=y -CONFIG_IR_IMG_NEC=y -CONFIG_IR_IMG_JVC=y -CONFIG_IR_IMG_SONY=y -CONFIG_IR_IMG_SHARP=y -CONFIG_IR_IMG_SANYO=y CONFIG_RC_LOOPBACK=m CONFIG_IR_GPIO_CIR=m CONFIG_MEDIA_USB_SUPPORT=y @@ -4408,7 +4437,6 @@ CONFIG_VIDEO_PVRUSB2_SYSFS=y CONFIG_VIDEO_PVRUSB2_DVB=y # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set CONFIG_VIDEO_HDPVR=m -CONFIG_VIDEO_TLG2300=m CONFIG_VIDEO_USBVISION=m CONFIG_VIDEO_STK1160_COMMON=m CONFIG_VIDEO_STK1160_AC97=y @@ -4571,6 +4599,7 @@ CONFIG_DVB_MANTIS=m CONFIG_DVB_HOPPER=m CONFIG_DVB_NGENE=m CONFIG_DVB_DDBRIDGE=m +CONFIG_DVB_SMIPCIE=m CONFIG_V4L_PLATFORM_DRIVERS=y CONFIG_VIDEO_CAFE_CCIC=m CONFIG_VIDEO_VIA_CAMERA=m @@ -4581,16 +4610,12 @@ CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m CONFIG_VIDEO_SH_VEU=m CONFIG_V4L_TEST_DRIVERS=y CONFIG_VIDEO_VIVID=m -CONFIG_VIDEO_MEM2MEM_TESTDEV=m +CONFIG_VIDEO_VIM2M=m # # Supported MMC/SDIO adapters # CONFIG_SMS_SDIO_DRV=m -CONFIG_MEDIA_PARPORT_SUPPORT=y -CONFIG_VIDEO_BWQCAM=m -CONFIG_VIDEO_CQCAM=m -CONFIG_VIDEO_W9966=m CONFIG_RADIO_ADAPTERS=y CONFIG_RADIO_TEA575X=m CONFIG_RADIO_SI470X=y @@ -4776,6 +4801,7 @@ CONFIG_MEDIA_TUNER_TDA18212=m CONFIG_MEDIA_TUNER_E4000=m CONFIG_MEDIA_TUNER_FC2580=m CONFIG_MEDIA_TUNER_M88TS2022=m +CONFIG_MEDIA_TUNER_M88RS6000T=m CONFIG_MEDIA_TUNER_TUA9001=m CONFIG_MEDIA_TUNER_SI2157=m CONFIG_MEDIA_TUNER_IT913X=m @@ -4887,6 +4913,10 @@ CONFIG_DVB_S5H1411=m CONFIG_DVB_S921=m CONFIG_DVB_DIB8000=m CONFIG_DVB_MB86A20S=m + +# +# ISDB-S (satellite) & ISDB-T (terrestrial) frontends +# CONFIG_DVB_TC90522=m # @@ -4906,6 +4936,7 @@ CONFIG_DVB_ISL6405=m CONFIG_DVB_ISL6421=m CONFIG_DVB_ISL6423=m CONFIG_DVB_A8293=m +CONFIG_DVB_SP2=m CONFIG_DVB_LGS8GXX=m CONFIG_DVB_ATBM8830=m CONFIG_DVB_TDA665x=m @@ -4943,6 +4974,7 @@ CONFIG_DRM_TTM=m # # I2C encoder or helper chips # +CONFIG_DRM_I2C_ADV7511=m CONFIG_DRM_I2C_CH7006=m CONFIG_DRM_I2C_SIL164=m CONFIG_DRM_I2C_NXP_TDA998X=m @@ -4975,6 +5007,7 @@ CONFIG_DRM_AST=m CONFIG_DRM_CIRRUS_QEMU=m CONFIG_DRM_QXL=m # CONFIG_DRM_BOCHS is not set +CONFIG_HSA_AMD=m # # Frame buffer Devices @@ -5311,7 +5344,7 @@ CONFIG_SND_BCD2000=m CONFIG_SND_FIREWIRE=y CONFIG_SND_FIREWIRE_LIB=m CONFIG_SND_DICE=m -CONFIG_SND_FIREWIRE_SPEAKERS=m +CONFIG_SND_OXFW=m CONFIG_SND_ISIGHT=m CONFIG_SND_SCS1X=m CONFIG_SND_FIREWORKS=m @@ -5337,6 +5370,9 @@ CONFIG_SND_SOC_FSL_SSI=m CONFIG_SND_SOC_FSL_SPDIF=m CONFIG_SND_SOC_FSL_ESAI=m CONFIG_SND_SOC_IMX_AUDMUX=m +CONFIG_SND_SST_MFLD_PLATFORM=m +CONFIG_SND_SST_IPC=m +CONFIG_SND_SST_IPC_ACPI=m CONFIG_SND_SOC_INTEL_SST=m CONFIG_SND_SOC_INTEL_SST_ACPI=m CONFIG_SND_SOC_INTEL_HASWELL=m @@ -5345,6 +5381,8 @@ CONFIG_SND_SOC_INTEL_HASWELL_MACH=m CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH=m CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH=m CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m +CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m CONFIG_SND_SOC_I2C_AND_SPI=m # @@ -5357,12 +5395,16 @@ CONFIG_SND_SOC_AK4642=m CONFIG_SND_SOC_AK5386=m CONFIG_SND_SOC_ALC5623=m CONFIG_SND_SOC_CS35L32=m +CONFIG_SND_SOC_CS42L51=m +CONFIG_SND_SOC_CS42L51_I2C=m CONFIG_SND_SOC_CS42L52=m CONFIG_SND_SOC_CS42L56=m CONFIG_SND_SOC_CS42L73=m CONFIG_SND_SOC_CS4265=m CONFIG_SND_SOC_CS4270=m CONFIG_SND_SOC_CS4271=m +CONFIG_SND_SOC_CS4271_I2C=m +CONFIG_SND_SOC_CS4271_SPI=m CONFIG_SND_SOC_CS42XX8=m CONFIG_SND_SOC_CS42XX8_I2C=m CONFIG_SND_SOC_HDMI_CODEC=m @@ -5375,7 +5417,10 @@ CONFIG_SND_SOC_PCM512x_I2C=m CONFIG_SND_SOC_PCM512x_SPI=m CONFIG_SND_SOC_RL6231=m CONFIG_SND_SOC_RT286=m +CONFIG_SND_SOC_RT5631=m CONFIG_SND_SOC_RT5640=m +CONFIG_SND_SOC_RT5670=m +# CONFIG_SND_SOC_RT5677_SPI is not set CONFIG_SND_SOC_SGTL5000=m CONFIG_SND_SOC_SI476X=m CONFIG_SND_SOC_SIGMADSP=m @@ -5389,8 +5434,13 @@ CONFIG_SND_SOC_SSM4567=m CONFIG_SND_SOC_STA350=m CONFIG_SND_SOC_TAS2552=m CONFIG_SND_SOC_TAS5086=m +CONFIG_SND_SOC_TFA9879=m +CONFIG_SND_SOC_TLV320AIC23=m +CONFIG_SND_SOC_TLV320AIC23_I2C=m +CONFIG_SND_SOC_TLV320AIC23_SPI=m CONFIG_SND_SOC_TLV320AIC31XX=m CONFIG_SND_SOC_TLV320AIC3X=m +CONFIG_SND_SOC_TS3A227E=m CONFIG_SND_SOC_WM8510=m CONFIG_SND_SOC_WM8523=m CONFIG_SND_SOC_WM8580=m @@ -5416,6 +5466,7 @@ CONFIG_AC97_BUS=m # HID support # CONFIG_HID=m +CONFIG_HID_BATTERY_STRENGTH=y CONFIG_HIDRAW=y CONFIG_UHID=m CONFIG_HID_GENERIC=m @@ -5457,6 +5508,7 @@ CONFIG_HID_LCPOWER=m CONFIG_HID_LENOVO=m CONFIG_HID_LOGITECH=m CONFIG_HID_LOGITECH_DJ=m +CONFIG_HID_LOGITECH_HIDPP=m CONFIG_LOGITECH_FF=y CONFIG_LOGIRUMBLEPAD2_FF=y CONFIG_LOGIG940_FF=y @@ -5477,6 +5529,7 @@ CONFIG_HID_PICOLCD_BACKLIGHT=y CONFIG_HID_PICOLCD_LCD=y CONFIG_HID_PICOLCD_LEDS=y CONFIG_HID_PICOLCD_CIR=y +CONFIG_HID_PLANTRONICS=m CONFIG_HID_PRIMAX=m CONFIG_HID_ROCCAT=m CONFIG_HID_SAITEK=m @@ -5623,9 +5676,10 @@ CONFIG_USB_MUSB_HDRC=m # CONFIG_USB_MUSB_HOST is not set # CONFIG_USB_MUSB_GADGET is not set CONFIG_USB_MUSB_DUAL_ROLE=y -CONFIG_USB_MUSB_TUSB6010=m -CONFIG_USB_MUSB_UX500=m -# CONFIG_USB_UX500_DMA is not set + +# +# Platform Glue Layer +# CONFIG_MUSB_PIO_ONLY=y CONFIG_USB_DWC3=m # CONFIG_USB_DWC3_HOST is not set @@ -5643,14 +5697,13 @@ CONFIG_USB_DWC3_PCI=m # CONFIG_USB_DWC3_DEBUG is not set CONFIG_DWC3_HOST_USB3_LPM_ENABLE=y CONFIG_USB_DWC2=y -CONFIG_USB_DWC2_HOST=m -CONFIG_USB_DWC2_PLATFORM=y -CONFIG_USB_DWC2_PCI=y +CONFIG_USB_DWC2_HOST=y # -# Gadget mode requires USB Gadget support to be enabled +# Gadget/Dual-role mode requires USB Gadget support to be enabled # -CONFIG_USB_DWC2_PERIPHERAL=m +CONFIG_USB_DWC2_PLATFORM=y +CONFIG_USB_DWC2_PCI=y # CONFIG_USB_DWC2_DEBUG is not set # CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set CONFIG_USB_CHIPIDEA=m @@ -5789,6 +5842,12 @@ CONFIG_USB_PXA27X=m CONFIG_USB_MV_UDC=m CONFIG_USB_MV_U3D=m # CONFIG_USB_M66592 is not set +CONFIG_USB_BDC_UDC=m + +# +# Platform Support +# +CONFIG_USB_BDC_PCI=m CONFIG_USB_AMD5536UDC=m CONFIG_USB_NET2272=m CONFIG_USB_NET2272_DMA=y @@ -5812,7 +5871,10 @@ CONFIG_USB_F_RNDIS=m CONFIG_USB_F_MASS_STORAGE=m CONFIG_USB_F_FS=m CONFIG_USB_F_UAC1=m +CONFIG_USB_F_UAC2=m CONFIG_USB_F_UVC=m +CONFIG_USB_F_MIDI=m +CONFIG_USB_F_HID=m CONFIG_USB_CONFIGFS=m CONFIG_USB_CONFIGFS_SERIAL=y CONFIG_USB_CONFIGFS_ACM=y @@ -5826,6 +5888,10 @@ CONFIG_USB_CONFIGFS_PHONET=y CONFIG_USB_CONFIGFS_MASS_STORAGE=y CONFIG_USB_CONFIGFS_F_LB_SS=y CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_USB_CONFIGFS_F_UAC1=y +CONFIG_USB_CONFIGFS_F_UAC2=y +CONFIG_USB_CONFIGFS_F_MIDI=y +CONFIG_USB_CONFIGFS_F_HID=y CONFIG_USB_ZERO=m CONFIG_USB_AUDIO=m CONFIG_GADGET_UAC1=y @@ -5891,6 +5957,7 @@ CONFIG_MMC_USHC=m CONFIG_MMC_USDHI6ROL0=m CONFIG_MMC_REALTEK_PCI=m CONFIG_MMC_REALTEK_USB=m +CONFIG_MMC_TOSHIBA_PCI=m CONFIG_MEMSTICK=m # CONFIG_MEMSTICK_DEBUG is not set @@ -5929,6 +5996,7 @@ CONFIG_LEDS_LP5523=m CONFIG_LEDS_LP5562=m CONFIG_LEDS_LP8501=m CONFIG_LEDS_LP8788=m +CONFIG_LEDS_LP8860=m CONFIG_LEDS_CLEVO_MAIL=m CONFIG_LEDS_PCA955X=m CONFIG_LEDS_PCA963X=m @@ -5977,6 +6045,7 @@ CONFIG_INFINIBAND=m CONFIG_INFINIBAND_USER_MAD=m CONFIG_INFINIBAND_USER_ACCESS=m CONFIG_INFINIBAND_USER_MEM=y +CONFIG_INFINIBAND_ON_DEMAND_PAGING=y CONFIG_INFINIBAND_ADDR_TRANS=y CONFIG_INFINIBAND_MTHCA=m # CONFIG_INFINIBAND_MTHCA_DEBUG is not set @@ -6044,6 +6113,7 @@ CONFIG_RTC_DRV_88PM860X=m CONFIG_RTC_DRV_88PM80X=m CONFIG_RTC_DRV_DS1307=m CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1374_WDT=y CONFIG_RTC_DRV_DS1672=m CONFIG_RTC_DRV_DS3232=m CONFIG_RTC_DRV_LP8788=m @@ -6175,6 +6245,8 @@ CONFIG_VFIO_IOMMU_TYPE1=m CONFIG_VFIO=m CONFIG_VFIO_PCI=m CONFIG_VFIO_PCI_VGA=y +CONFIG_VFIO_PCI_MMAP=y +CONFIG_VFIO_PCI_INTX=y CONFIG_VIRT_DRIVERS=y CONFIG_VIRTIO=y @@ -6276,10 +6348,9 @@ CONFIG_COMEDI_PCMMIO=m CONFIG_COMEDI_PCMUIO=m CONFIG_COMEDI_MULTIQ3=m CONFIG_COMEDI_S526=m -CONFIG_COMEDI_PCI_DRIVERS=y +CONFIG_COMEDI_PCI_DRIVERS=m CONFIG_COMEDI_8255_PCI=m CONFIG_COMEDI_ADDI_WATCHDOG=m -CONFIG_COMEDI_ADDI_APCI_035=m CONFIG_COMEDI_ADDI_APCI_1032=m CONFIG_COMEDI_ADDI_APCI_1500=m CONFIG_COMEDI_ADDI_APCI_1516=m @@ -6332,7 +6403,7 @@ CONFIG_COMEDI_RTD520=m CONFIG_COMEDI_S626=m CONFIG_COMEDI_MITE=m CONFIG_COMEDI_NI_TIOCMD=m -CONFIG_COMEDI_PCMCIA_DRIVERS=y +CONFIG_COMEDI_PCMCIA_DRIVERS=m CONFIG_COMEDI_CB_DAS16_CS=m CONFIG_COMEDI_DAS08_CS=m CONFIG_COMEDI_NI_DAQ_700_CS=m @@ -6340,7 +6411,7 @@ CONFIG_COMEDI_NI_DAQ_DIO24_CS=m CONFIG_COMEDI_NI_LABPC_CS=m CONFIG_COMEDI_NI_MIO_CS=m CONFIG_COMEDI_QUATECH_DAQP_CS=m -CONFIG_COMEDI_USB_DRIVERS=y +CONFIG_COMEDI_USB_DRIVERS=m CONFIG_COMEDI_DT9812=m CONFIG_COMEDI_NI_USB6501=m CONFIG_COMEDI_USBDUX=m @@ -6475,7 +6546,6 @@ CONFIG_IIO_SIMPLE_DUMMY=m # CONFIG_IIO_SIMPLE_DUMMY_EVENTS is not set # CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set CONFIG_FB_XGI=m -CONFIG_BCM_WIMAX=m CONFIG_FT1000=m CONFIG_FT1000_USB=m CONFIG_FT1000_PCMCIA=m @@ -6503,10 +6573,16 @@ CONFIG_DVB_CXD2099=m CONFIG_VIDEO_DT3155=m # CONFIG_DT3155_CCIR is not set CONFIG_DT3155_STREAMING=y -# CONFIG_VIDEO_TCM825X is not set +CONFIG_VIDEO_TLG2300=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m +CONFIG_MEDIA_PARPORT_SUPPORT=y +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_SAA7191=m CONFIG_LIRC_STAGING=y CONFIG_LIRC_BT829=m -CONFIG_LIRC_IGORPLUGUSB=m CONFIG_LIRC_IMON=m CONFIG_LIRC_PARALLEL=m CONFIG_LIRC_SASEM=m @@ -6518,7 +6594,6 @@ CONFIG_LIRC_ZILOG=m # # Android # -# CONFIG_ANDROID is not set CONFIG_USB_WPAN_HCD=m CONFIG_WIMAX_GDM72XX=m CONFIG_WIMAX_GDM72XX_QOS=y @@ -6545,7 +6620,6 @@ CONFIG_DGNC=m CONFIG_DGAP=m CONFIG_GS_FPGABOOT=m CONFIG_CRYPTO_SKEIN=y -CONFIG_CRYPTO_THREEFISH=y CONFIG_UNISYSSPAR=y CONFIG_UNISYS_VISORUTIL=m CONFIG_UNISYS_VISORCHANNEL=m @@ -6609,11 +6683,6 @@ CONFIG_PVPANIC=m CONFIG_CHROME_PLATFORMS=y CONFIG_CHROMEOS_LAPTOP=m CONFIG_CHROMEOS_PSTORE=m - -# -# SOC (System On Chip) specific Drivers -# -CONFIG_SOC_TI=y CONFIG_CLKDEV_LOOKUP=y CONFIG_HAVE_CLK_PREPARE=y CONFIG_COMMON_CLK=y @@ -6647,6 +6716,7 @@ CONFIG_CLKBLD_I8253=y # CONFIG_SH_TIMER_TMU is not set # CONFIG_EM_TIMER_STI is not set CONFIG_MAILBOX=y +CONFIG_PCC=y CONFIG_IOMMU_API=y CONFIG_IOMMU_SUPPORT=y CONFIG_AMD_IOMMU=y @@ -6671,6 +6741,7 @@ CONFIG_STE_MODEM_RPROC=m # # SOC (System On Chip) specific Drivers # +CONFIG_SOC_TI=y CONFIG_PM_DEVFREQ=y # @@ -6733,6 +6804,7 @@ CONFIG_AD7793=m CONFIG_AD7887=m CONFIG_AD7923=m CONFIG_AD799X=m +CONFIG_AXP288_ADC=m CONFIG_LP8788_ADC=m CONFIG_MAX1027=m CONFIG_MAX1363=m @@ -6740,6 +6812,7 @@ CONFIG_MCP320X=m CONFIG_MCP3422=m CONFIG_MEN_Z188_ADC=m CONFIG_NAU7802=m +CONFIG_QCOM_SPMI_IADC=m CONFIG_TI_ADC081C=m CONFIG_TI_ADC128S052=m CONFIG_TI_AM335X_ADC=m @@ -6815,6 +6888,7 @@ CONFIG_ITG3200=m # CONFIG_DHT11=m CONFIG_SI7005=m +CONFIG_SI7020=m # # Inertial measurement units @@ -6871,6 +6945,7 @@ CONFIG_IIO_SYSFS_TRIGGER=m # # Pressure sensors # +CONFIG_BMP280=m CONFIG_HID_SENSOR_PRESS=m CONFIG_MPL115=m CONFIG_MPL3115=m @@ -6942,6 +7017,11 @@ CONFIG_MCB_PCI=m CONFIG_RAS=y CONFIG_THUNDERBOLT=m +# +# Android +# +# CONFIG_ANDROID is not set + # # Firmware Drivers # @@ -7128,6 +7208,7 @@ CONFIG_SQUASHFS_FILE_DIRECT=y CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y CONFIG_SQUASHFS_XATTR=y CONFIG_SQUASHFS_ZLIB=y +# CONFIG_SQUASHFS_LZ4 is not set CONFIG_SQUASHFS_LZO=y CONFIG_SQUASHFS_XZ=y # CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set @@ -7312,6 +7393,7 @@ CONFIG_FRAME_WARN=1024 # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_READABLE_ASM is not set CONFIG_UNUSED_SYMBOLS=y +# CONFIG_PAGE_OWNER is not set CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set # CONFIG_DEBUG_SECTION_MISMATCH is not set @@ -7325,6 +7407,7 @@ CONFIG_DEBUG_KERNEL=y # # Memory Debugging # +# CONFIG_PAGE_EXTENSION is not set # CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_DEBUG_OBJECTS is not set # CONFIG_SLUB_DEBUG_ON is not set @@ -7360,7 +7443,7 @@ CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_PANIC_TIMEOUT=0 CONFIG_SCHED_DEBUG=y CONFIG_SCHEDSTATS=y -# CONFIG_SCHED_STACK_END_CHECK is not set +CONFIG_SCHED_STACK_END_CHECK=y CONFIG_TIMER_STATS=y # @@ -7478,6 +7561,7 @@ CONFIG_KGDB_SERIAL_CONSOLE=y # CONFIG_KGDB_TESTS is not set CONFIG_KGDB_LOW_LEVEL_TRAP=y CONFIG_KGDB_KDB=y +CONFIG_KDB_DEFAULT_ENABLE=0x1 CONFIG_KDB_KEYBOARD=y CONFIG_KDB_CONTINUE_CATASTROPHIC=0 CONFIG_STRICT_DEVMEM=y @@ -7567,6 +7651,7 @@ CONFIG_IMA_DEFAULT_HASH_SHA1=y CONFIG_IMA_DEFAULT_HASH="sha1" CONFIG_IMA_APPRAISE=y CONFIG_IMA_TRUSTED_KEYRING=y +# CONFIG_IMA_LOAD_X509 is not set CONFIG_EVM=y CONFIG_EVM_ATTR_FSUUID=y CONFIG_EVM_EXTRA_SMACK_XATTRS=y diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index c48fefa7c2..38b940d071 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -198,7 +198,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." #f))) (define-public linux-libre - (let* ((version "3.18.10") + (let* ((version "3.19.3") (build-phase '(lambda* (#:key system inputs #:allow-other-keys #:rest args) ;; Apply the neat patch. @@ -271,7 +271,9 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." (uri (linux-libre-urls version)) (sha256 (base32 - "0ckbi94b56klp59wsfcmlkbyrj7hj7kb7ys2jjsrqsk39dd77zg5")))) + "13nq0wzkjy7hrhnnvxlwzs1awlqd81vzriqddjn6s9ma3fzj44bn")) + (patches + (list (search-patch "linux-libre-libreboot-fix.patch"))))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) ("bc" ,bc) diff --git a/gnu/packages/patches/linux-libre-libreboot-fix.patch b/gnu/packages/patches/linux-libre-libreboot-fix.patch new file mode 100644 index 0000000000..d340a99fcb --- /dev/null +++ b/gnu/packages/patches/linux-libre-libreboot-fix.patch @@ -0,0 +1,37 @@ +This patch fixes linux-libre-3.19.x on Libreboot X60 machines. +Copied from https://bugzilla.kernel.org/show_bug.cgi?id=93171#c25 + +--- a/drivers/gpu/drm/i915/i915_irq.c ++++ a/drivers/gpu/drm/i915/i915_irq.c +@@ -3598,14 +3598,12 @@ static int i8xx_irq_postinstall(struct drm_device *dev) + ~(I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | + I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | + I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | +- I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT | +- I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT); ++ I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT); + I915_WRITE16(IMR, dev_priv->irq_mask); + + I915_WRITE16(IER, + I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | + I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | +- I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT | + I915_USER_INTERRUPT); + POSTING_READ16(IER); + +@@ -3767,14 +3765,12 @@ static int i915_irq_postinstall(struct drm_device *dev) + I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | + I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | + I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | +- I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT | +- I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT); ++ I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT); + + enable_mask = + I915_ASLE_INTERRUPT | + I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | + I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | +- I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT | + I915_USER_INTERRUPT; + + if (I915_HAS_HOTPLUG(dev)) { -- cgit v1.2.3 From c2366e3ce4596382df6811661abd8612ecabb23d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 2 Apr 2015 00:19:53 +0200 Subject: gnu: commencement: Turn off RUNPATH checks for 'gcc-final'. * gnu/packages/commencement.scm (gcc-final)[arguments]: Add #:validate-runpath? #f. --- gnu/packages/commencement.scm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index d96a8237c3..b421ab08ef 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -500,6 +500,11 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" #:allowed-references ("out" "lib" ,glibc-final) + ;; Things like libasan.so and libstdc++.so NEED ld.so and/or + ;; libgcc_s.so but RUNPATH is empty. This is a false positive, so turn + ;; it off. + #:validate-runpath? #f + ;; Build again GMP & co. within GCC's build process, because it's hard ;; to do outside (because GCC-BOOT0 is a cross-compiler, and thus ;; doesn't honor $LIBRARY_PATH, which breaks `gnu-build-system'.) -- cgit v1.2.3 From b7178dc45d21081ef38795ee2179404a02ac0b2e Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 2 Apr 2015 01:02:12 -0400 Subject: gnu: icecat: Apply fixes for CVE-2015-{0801,0807,0815,0816}. Actually, CVE-2015-0801 and CVE-2015-0816 were already patched in 4c153a9125fa0913077b06b5ed537958ae4ca163, but the corresponding CVEs were not yet announced. * gnu/packages/patches/icecat-bug-1146339.patch: Rename to ... * gnu/packages/patches/icecat-CVE-2015-0801.patch: ... this. * gnu/packages/patches/icecat-bug-1144991.patch: Rename to ... * gnu/packages/patches/icecat-CVE-2015-0816.patch: ... this. * gnu/packages/patches/icecat-CVE-2015-0807.patch, gnu/packages/patches/icecat-CVE-2015-0815-pt1.patch, gnu/packages/patches/icecat-CVE-2015-0815-pt2.patch, gnu/packages/patches/icecat-CVE-2015-0815-pt3.patch: New files. * gnu-system.am (dist_patch_DATA): Add them, and adapt to renamed files. * gnu/packages/gnuzilla.scm (icecat): Add patches, and adapt to renamed files. --- gnu-system.am | 8 +- gnu/packages/gnuzilla.scm | 10 +- gnu/packages/patches/icecat-CVE-2015-0801.patch | 162 +++++++++++++++++++++ gnu/packages/patches/icecat-CVE-2015-0807.patch | 30 ++++ .../patches/icecat-CVE-2015-0815-pt1.patch | 63 ++++++++ .../patches/icecat-CVE-2015-0815-pt2.patch | 89 +++++++++++ .../patches/icecat-CVE-2015-0815-pt3.patch | 37 +++++ gnu/packages/patches/icecat-CVE-2015-0816.patch | 76 ++++++++++ gnu/packages/patches/icecat-bug-1144991.patch | 76 ---------- gnu/packages/patches/icecat-bug-1146339.patch | 162 --------------------- 10 files changed, 470 insertions(+), 243 deletions(-) create mode 100644 gnu/packages/patches/icecat-CVE-2015-0801.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0807.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0815-pt1.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0815-pt2.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0815-pt3.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-0816.patch delete mode 100644 gnu/packages/patches/icecat-bug-1144991.patch delete mode 100644 gnu/packages/patches/icecat-bug-1146339.patch diff --git a/gnu-system.am b/gnu-system.am index b760fa0d31..c2a6e2be7d 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -438,9 +438,13 @@ dist_patch_DATA = \ gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \ gnu/packages/patches/hop-bigloo-4.0b.patch \ gnu/packages/patches/icecat-bug-1127780.patch \ - gnu/packages/patches/icecat-bug-1144991.patch \ gnu/packages/patches/icecat-bug-1145870.patch \ - gnu/packages/patches/icecat-bug-1146339.patch \ + gnu/packages/patches/icecat-CVE-2015-0801.patch \ + gnu/packages/patches/icecat-CVE-2015-0807.patch \ + gnu/packages/patches/icecat-CVE-2015-0815-pt1.patch \ + gnu/packages/patches/icecat-CVE-2015-0815-pt2.patch \ + gnu/packages/patches/icecat-CVE-2015-0815-pt3.patch \ + gnu/packages/patches/icecat-CVE-2015-0816.patch \ gnu/packages/patches/icecat-CVE-2015-0817.patch \ gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch \ gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch \ diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 1e9deb8bff..f4a68fb186 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -225,13 +225,17 @@ standards.") (sha256 (base32 "1rr4axghaypdkrf60i1qp6dz4cd29ya02fs3vyffvp4x9kgcq2dd")) - (patches (map search-patch '("icecat-bug-1127780.patch" + (patches (map search-patch '("icecat-CVE-2015-0815-pt1.patch" + "icecat-CVE-2015-0815-pt2.patch" + "icecat-bug-1127780.patch" + "icecat-CVE-2015-0807.patch" + "icecat-CVE-2015-0815-pt3.patch" "icecat-CVE-2015-0817.patch" - "icecat-bug-1144991.patch" + "icecat-CVE-2015-0816.patch" "icecat-CVE-2015-0818-pt1.patch" "icecat-bug-1145870.patch" "icecat-CVE-2015-0818-pt2.patch" - "icecat-bug-1146339.patch"))))) + "icecat-CVE-2015-0801.patch"))))) (build-system gnu-build-system) (inputs `(("alsa-lib" ,alsa-lib) diff --git a/gnu/packages/patches/icecat-CVE-2015-0801.patch b/gnu/packages/patches/icecat-CVE-2015-0801.patch new file mode 100644 index 0000000000..9d858523b9 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0801.patch @@ -0,0 +1,162 @@ +From 4ca86283a71427f27e810d77c8e75418f6428457 Mon Sep 17 00:00:00 2001 +From: Olli Pettay +Date: Mon, 23 Mar 2015 22:23:53 -0400 +Subject: [PATCH] Bug 1146339 - Do anchor scrolling right before dispatching + popstate/hashchange. r=bz, a=lmandel + +--- + docshell/base/nsDocShell.cpp | 64 +++++++++++++++++++++----------------------- + docshell/base/nsDocShell.h | 1 - + 2 files changed, 30 insertions(+), 35 deletions(-) + +diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp +index bdf88a5cf..efb6a6e 100644 +--- a/docshell/base/nsDocShell.cpp ++++ b/docshell/base/nsDocShell.cpp +@@ -1322,7 +1322,7 @@ nsDocShell::LoadURI(nsIURI * aURI, + + // Note: we allow loads to get through here even if mFiredUnloadEvent is + // true; that case will get handled in LoadInternal or LoadHistoryEntry. +- if (IsPrintingOrPP() || mBlockNavigation) { ++ if (IsPrintingOrPP()) { + return NS_OK; // JS may not handle returning of an error code + } + +@@ -4206,7 +4206,8 @@ bool + nsDocShell::IsNavigationAllowed(bool aDisplayPrintErrorDialog) + { + bool isAllowed = !IsPrintingOrPP(aDisplayPrintErrorDialog) && +- !mFiredUnloadEvent && !mBlockNavigation; if (!isAllowed) { ++ !mFiredUnloadEvent; ++ if (!isAllowed) { + return false; + } + if (!mContentViewer) { +@@ -8901,8 +8902,6 @@ nsDocShell::InternalLoad(nsIURI * aURI, + + NS_ENSURE_TRUE(!mIsBeingDestroyed, NS_ERROR_NOT_AVAILABLE); + +- NS_ENSURE_TRUE(!mBlockNavigation, NS_ERROR_UNEXPECTED); +- + // wyciwyg urls can only be loaded through history. Any normal load of + // wyciwyg through docshell is illegal. Disallow such loads. + if (aLoadType & LOAD_CMD_NORMAL) { +@@ -9324,19 +9323,6 @@ nsDocShell::InternalLoad(nsIURI * aURI, + GetCurScrollPos(ScrollOrientation_X, &cx); + GetCurScrollPos(ScrollOrientation_Y, &cy); + +- { +- AutoRestore scrollingToAnchor(mBlockNavigation); +- mBlockNavigation = true; +- +- // ScrollToAnchor doesn't necessarily cause us to scroll the window; +- // the function decides whether a scroll is appropriate based on the +- // arguments it receives. But even if we don't end up scrolling, +- // ScrollToAnchor performs other important tasks, such as informing +- // the presShell that we have a new hash. See bug 680257. +- rv = ScrollToAnchor(curHash, newHash, aLoadType); +- NS_ENSURE_SUCCESS(rv, rv); +- } +- + // Reset mLoadType to its original value once we exit this block, + // because this short-circuited load might have started after a + // normal, network load, and we don't want to clobber its load type. +@@ -9424,16 +9410,6 @@ nsDocShell::InternalLoad(nsIURI * aURI, + mOSHE->SetCacheKey(cacheKey); + } + +- /* restore previous position of scroller(s), if we're moving +- * back in history (bug 59774) +- */ +- if (mOSHE && (aLoadType == LOAD_HISTORY || aLoadType == LOAD_RELOAD_NORMAL)) +- { +- nscoord bx, by; +- mOSHE->GetScrollPosition(&bx, &by); +- SetCurScrollPosEx(bx, by); +- } +- + /* Restore the original LSHE if we were loading something + * while short-circuited load was initiated. + */ +@@ -9471,12 +9447,36 @@ nsDocShell::InternalLoad(nsIURI * aURI, + + SetDocCurrentStateObj(mOSHE); + ++ // Inform the favicon service that the favicon for oldURI also ++ // applies to aURI. ++ CopyFavicon(currentURI, aURI, mInPrivateBrowsing); ++ ++ nsRefPtr win = mScriptGlobal ? ++ mScriptGlobal->GetCurrentInnerWindowInternal() : nullptr; ++ ++ // ScrollToAnchor doesn't necessarily cause us to scroll the window; ++ // the function decides whether a scroll is appropriate based on the ++ // arguments it receives. But even if we don't end up scrolling, ++ // ScrollToAnchor performs other important tasks, such as informing ++ // the presShell that we have a new hash. See bug 680257. ++ rv = ScrollToAnchor(curHash, newHash, aLoadType); ++ NS_ENSURE_SUCCESS(rv, rv); ++ ++ /* restore previous position of scroller(s), if we're moving ++ * back in history (bug 59774) ++ */ ++ if (mOSHE && (aLoadType == LOAD_HISTORY || ++ aLoadType == LOAD_RELOAD_NORMAL)) { ++ nscoord bx, by; ++ mOSHE->GetScrollPosition(&bx, &by); ++ SetCurScrollPosEx(bx, by); ++ } ++ + // Dispatch the popstate and hashchange events, as appropriate. + // + // The event dispatch below can cause us to re-enter script and + // destroy the docshell, nulling out mScriptGlobal. Hold a stack + // reference to avoid null derefs. See bug 914521. +- nsRefPtr win = mScriptGlobal; + if (win) { + // Fire a hashchange event URIs differ, and only in their hashes. + bool doHashchange = sameExceptHashes && !curHash.Equals(newHash); +@@ -9492,10 +9492,6 @@ nsDocShell::InternalLoad(nsIURI * aURI, + } + } + +- // Inform the favicon service that the favicon for oldURI also +- // applies to aURI. +- CopyFavicon(currentURI, aURI, mInPrivateBrowsing); +- + return NS_OK; + } + } +@@ -12573,7 +12569,7 @@ nsDocShell::OnLinkClick(nsIContent* aContent, + { + NS_ASSERTION(NS_IsMainThread(), "wrong thread"); + +- if (!IsOKToLoadURI(aURI) || mBlockNavigation) { ++ if (!IsOKToLoadURI(aURI)) { + return NS_OK; + } + +@@ -12629,7 +12625,7 @@ nsDocShell::OnLinkClickSync(nsIContent *aContent, + *aRequest = nullptr; + } + +- if (!IsOKToLoadURI(aURI) || mBlockNavigation) { ++ if (!IsOKToLoadURI(aURI)) { + return NS_OK; + } + +diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h +index be353ee..c191777 100644 +--- a/docshell/base/nsDocShell.h ++++ b/docshell/base/nsDocShell.h +@@ -835,7 +835,6 @@ protected: + bool mInPrivateBrowsing; + bool mUseRemoteTabs; + bool mDeviceSizeIsPageSize; +- bool mBlockNavigation; + + // Because scriptability depends on the mAllowJavascript values of our + // ancestors, we cache the effective scriptability and recompute it when +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0807.patch b/gnu/packages/patches/icecat-CVE-2015-0807.patch new file mode 100644 index 0000000000..833bc36d6b --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0807.patch @@ -0,0 +1,30 @@ +From 1b97832a8ae9983e4f15befe142f5ea0626707f1 Mon Sep 17 00:00:00 2001 +From: Christoph Kerschbaumer +Date: Thu, 19 Feb 2015 13:43:40 -0800 +Subject: [PATCH] Bug 1111834 - CORS request after preflight should not follow + 30x redirect. r=sicking, a=lmandel + +--- + dom/base/Navigator.cpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp +index 020e370..727b7cb7 100644 +--- a/dom/base/Navigator.cpp ++++ b/dom/base/Navigator.cpp +@@ -1278,6 +1278,12 @@ Navigator::SendBeacon(const nsAString& aUrl, + !contentType.Equals(APPLICATION_WWW_FORM_URLENCODED) && + !contentType.Equals(MULTIPART_FORM_DATA) && + !contentType.Equals(TEXT_PLAIN)) { ++ ++ // we need to set the sameOriginChecker as a notificationCallback ++ // so we can tell the channel not to follow redirects ++ nsCOMPtr soc = nsContentUtils::GetSameOriginChecker(); ++ channel->SetNotificationCallbacks(soc); ++ + nsCOMPtr preflightChannel; + nsTArray unsafeHeaders; + unsafeHeaders.AppendElement(NS_LITERAL_CSTRING("Content-Type")); +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0815-pt1.patch b/gnu/packages/patches/icecat-CVE-2015-0815-pt1.patch new file mode 100644 index 0000000000..1dd5e20c67 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0815-pt1.patch @@ -0,0 +1,63 @@ +From 6fb9d1d2bee806abb2f67cee05a8573450a017df Mon Sep 17 00:00:00 2001 +From: Steve Fink +Date: Mon, 12 Jan 2015 14:19:27 -0800 +Subject: [PATCH] Bug 1137326 - Fix out of bounds error in + JS_iterateCompartments. r=terrence, a=abillings + +--- + js/src/gc/Zone.h | 11 ++++++----- + js/src/jsapi.h | 5 +++-- + 2 files changed, 9 insertions(+), 7 deletions(-) + +diff --git a/js/src/gc/Zone.h b/js/src/gc/Zone.h +index cbbde6b..612defe 100644 +--- a/js/src/gc/Zone.h ++++ b/js/src/gc/Zone.h +@@ -389,21 +389,22 @@ struct CompartmentsInZoneIter + // This is for the benefit of CompartmentsIterT::comp. + friend class mozilla::Maybe; + private: +- JSCompartment **it, **end; ++ JS::Zone *zone; ++ JSCompartment **it; + + CompartmentsInZoneIter() +- : it(nullptr), end(nullptr) ++ : zone(nullptr), it(nullptr) + {} + + public: +- explicit CompartmentsInZoneIter(JS::Zone *zone) { ++ explicit CompartmentsInZoneIter(JS::Zone *zone) : zone(zone) { + it = zone->compartments.begin(); +- end = zone->compartments.end(); + } + + bool done() const { + JS_ASSERT(it); +- return it == end; ++ return it < zone->compartments.begin() || ++ it >= zone->compartments.end(); + } + void next() { + JS_ASSERT(!done()); +diff --git a/js/src/jsapi.h b/js/src/jsapi.h +index 5ae1f86..40fdb37 100644 +--- a/js/src/jsapi.h ++++ b/js/src/jsapi.h +@@ -1780,9 +1780,10 @@ JS_LeaveCompartment(JSContext *cx, JSCompartment *oldCompartment); + typedef void (*JSIterateCompartmentCallback)(JSRuntime *rt, void *data, JSCompartment *compartment); + + /* +- * This function calls |compartmentCallback| on every compartment. Beware that ++ * This function calls |compartmentCallback| on every compartment. Beware that + * there is no guarantee that the compartment will survive after the callback +- * returns. ++ * returns. Also, if the callback can GC, there is no guarantee that every ++ * compartment will be visited. + */ + extern JS_PUBLIC_API(void) + JS_IterateCompartments(JSRuntime *rt, void *data, +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0815-pt2.patch b/gnu/packages/patches/icecat-CVE-2015-0815-pt2.patch new file mode 100644 index 0000000000..0a0cbed177 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0815-pt2.patch @@ -0,0 +1,89 @@ +From f6d39ec03896eaf5d30d79d8165263c98e957749 Mon Sep 17 00:00:00 2001 +From: Nathan Froyd +Date: Fri, 6 Feb 2015 16:19:36 -0500 +Subject: [PATCH] Bug 1036515 - Narrow the scope of unlocking mMonitor in + nsTimerImpl::PostTimerEvents. r=bsmedberg, a=abillings + +--- + xpcom/threads/TimerThread.cpp | 55 ++++++++++++++++++++++--------------------- + 1 file changed, 28 insertions(+), 27 deletions(-) + +diff --git a/xpcom/threads/TimerThread.cpp b/xpcom/threads/TimerThread.cpp +index bd586c9..b95846f 100644 +--- a/xpcom/threads/TimerThread.cpp ++++ b/xpcom/threads/TimerThread.cpp +@@ -239,43 +239,44 @@ NS_IMETHODIMP TimerThread::Run() + RemoveTimerInternal(timer); + timer = nullptr; + ++#ifdef DEBUG_TIMERS ++ if (PR_LOG_TEST(GetTimerLog(), PR_LOG_DEBUG)) { ++ PR_LOG(GetTimerLog(), PR_LOG_DEBUG, ++ ("Timer thread woke up %fms from when it was supposed to\n", ++ fabs((now - timerRef->mTimeout).ToMilliseconds()))); ++ } ++#endif ++ + { + // We release mMonitor around the Fire call to avoid deadlock. + MonitorAutoUnlock unlock(mMonitor); + +-#ifdef DEBUG_TIMERS +- if (PR_LOG_TEST(GetTimerLog(), PR_LOG_DEBUG)) { +- PR_LOG(GetTimerLog(), PR_LOG_DEBUG, +- ("Timer thread woke up %fms from when it was supposed to\n", +- fabs((now - timerRef->mTimeout).ToMilliseconds()))); +- } +-#endif + + // We are going to let the call to PostTimerEvent here handle the + // release of the timer so that we don't end up releasing the timer + // on the TimerThread instead of on the thread it targets. + timerRef = nsTimerImpl::PostTimerEvent(timerRef.forget()); ++ } + +- if (timerRef) { +- // We got our reference back due to an error. +- // Unhook the nsRefPtr, and release manually so we can get the +- // refcount. +- nsrefcnt rc = timerRef.forget().take()->Release(); +- (void)rc; +- +- // The nsITimer interface requires that its users keep a reference +- // to the timers they use while those timers are initialized but +- // have not yet fired. If this ever happens, it is a bug in the +- // code that created and used the timer. +- // +- // Further, note that this should never happen even with a +- // misbehaving user, because nsTimerImpl::Release checks for a +- // refcount of 1 with an armed timer (a timer whose only reference +- // is from the timer thread) and when it hits this will remove the +- // timer from the timer thread and thus destroy the last reference, +- // preventing this situation from occurring. +- MOZ_ASSERT(rc != 0, "destroyed timer off its target thread!"); +- } ++ if (timerRef) { ++ // We got our reference back due to an error. ++ // Unhook the nsRefPtr, and release manually so we can get the ++ // refcount. ++ nsrefcnt rc = timerRef.forget().take()->Release(); ++ (void)rc; ++ ++ // The nsITimer interface requires that its users keep a reference ++ // to the timers they use while those timers are initialized but ++ // have not yet fired. If this ever happens, it is a bug in the ++ // code that created and used the timer. ++ // ++ // Further, note that this should never happen even with a ++ // misbehaving user, because nsTimerImpl::Release checks for a ++ // refcount of 1 with an armed timer (a timer whose only reference ++ // is from the timer thread) and when it hits this will remove the ++ // timer from the timer thread and thus destroy the last reference, ++ // preventing this situation from occurring. ++ MOZ_ASSERT(rc != 0, "destroyed timer off its target thread!"); + } + + if (mShutdown) +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0815-pt3.patch b/gnu/packages/patches/icecat-CVE-2015-0815-pt3.patch new file mode 100644 index 0000000000..5ac053df78 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0815-pt3.patch @@ -0,0 +1,37 @@ +From e7fc74f6a281c12a4a406f2dd20ff2c27a61484d Mon Sep 17 00:00:00 2001 +From: Brian Hackett +Date: Sun, 8 Mar 2015 22:10:01 -0400 +Subject: [PATCH] Bug 1138199. r=billm, a=lmandel + +--- + js/src/ds/LifoAlloc.h | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/js/src/ds/LifoAlloc.h b/js/src/ds/LifoAlloc.h +index 7617cf5..b112353 100644 +--- a/js/src/ds/LifoAlloc.h ++++ b/js/src/ds/LifoAlloc.h +@@ -193,14 +193,14 @@ class LifoAlloc + + // Append used chunks to the end of this LifoAlloc. We act as if all the + // chunks in |this| are used, even if they're not, so memory may be wasted. +- void appendUsed(BumpChunk *start, BumpChunk *latest, BumpChunk *end) { +- JS_ASSERT(start && latest && end); ++ void appendUsed(BumpChunk *otherFirst, BumpChunk *otherLatest, BumpChunk *otherLast) { ++ JS_ASSERT(otherFirst && otherLatest && otherLast); + if (last) +- last->setNext(start); ++ last->setNext(otherFirst); + else +- first = latest = start; +- last = end; +- this->latest = latest; ++ first = otherFirst; ++ latest = otherLatest; ++ last = otherLast; + } + + void incrementCurSize(size_t size) { +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-0816.patch b/gnu/packages/patches/icecat-CVE-2015-0816.patch new file mode 100644 index 0000000000..5632e37eb3 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0816.patch @@ -0,0 +1,76 @@ +From ae49ed04f54c2f78d6ba7e545e0099602a3270fa Mon Sep 17 00:00:00 2001 +From: Boris Zbarsky +Date: Thu, 19 Mar 2015 18:58:44 -0400 +Subject: [PATCH] Bug 1144991 - Be a bit more restrictive about when a + URI_IS_UI_RESOURCE source is allowed to link to a URI_IS_UI_RESOURCE URI that + doesn't have the same scheme. r=bholley, a=abillings + +--- + caps/src/nsScriptSecurityManager.cpp | 38 +++++++++++++++++++++++++----------- + 1 file changed, 27 insertions(+), 11 deletions(-) + +diff --git a/caps/src/nsScriptSecurityManager.cpp b/caps/src/nsScriptSecurityManager.cpp +index 3587358..6577b95 100644 +--- a/caps/src/nsScriptSecurityManager.cpp ++++ b/caps/src/nsScriptSecurityManager.cpp +@@ -770,12 +770,31 @@ nsScriptSecurityManager::CheckLoadURIWithPrincipal(nsIPrincipal* aPrincipal, + NS_ENSURE_SUCCESS(rv, rv); + if (hasFlags) { + if (aFlags & nsIScriptSecurityManager::ALLOW_CHROME) { ++ ++ // For now, don't change behavior for resource:// or moz-icon:// and ++ // just allow them. + if (!targetScheme.EqualsLiteral("chrome")) { +- // for now don't change behavior for resource: or moz-icon: + return NS_OK; + } + +- // allow load only if chrome package is whitelisted ++ // Allow a URI_IS_UI_RESOURCE source to link to a URI_IS_UI_RESOURCE ++ // target if ALLOW_CHROME is set. ++ // ++ // ALLOW_CHROME is a flag that we pass on all loads _except_ docshell ++ // loads (since docshell loads run the loaded content with its origin ++ // principal). So we're effectively allowing resource://, chrome://, ++ // and moz-icon:// source URIs to load resource://, chrome://, and ++ // moz-icon:// files, so long as they're not loading it as a document. ++ bool sourceIsUIResource; ++ rv = NS_URIChainHasFlags(sourceBaseURI, ++ nsIProtocolHandler::URI_IS_UI_RESOURCE, ++ &sourceIsUIResource); ++ NS_ENSURE_SUCCESS(rv, rv); ++ if (sourceIsUIResource) { ++ return NS_OK; ++ } ++ ++ // Allow the load only if the chrome package is whitelisted. + nsCOMPtr reg(do_GetService( + NS_CHROMEREGISTRY_CONTRACTID)); + if (reg) { +@@ -787,17 +806,14 @@ nsScriptSecurityManager::CheckLoadURIWithPrincipal(nsIPrincipal* aPrincipal, + } + } + +- // resource: and chrome: are equivalent, securitywise +- // That's bogus!! Fix this. But watch out for +- // the view-source stylesheet? +- bool sourceIsChrome; +- rv = NS_URIChainHasFlags(sourceBaseURI, +- nsIProtocolHandler::URI_IS_UI_RESOURCE, +- &sourceIsChrome); +- NS_ENSURE_SUCCESS(rv, rv); +- if (sourceIsChrome) { ++ // Special-case the hidden window: it's allowed to load ++ // URI_IS_UI_RESOURCE no matter what. Bug 1145470 tracks removing this. ++ nsAutoCString sourceSpec; ++ if (NS_SUCCEEDED(sourceBaseURI->GetSpec(sourceSpec)) && ++ sourceSpec.EqualsLiteral("resource://gre-resources/hiddenWindow.html")) { + return NS_OK; + } ++ + if (reportErrors) { + ReportError(nullptr, errorTag, sourceURI, aTargetURI); + } +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-bug-1144991.patch b/gnu/packages/patches/icecat-bug-1144991.patch deleted file mode 100644 index 5632e37eb3..0000000000 --- a/gnu/packages/patches/icecat-bug-1144991.patch +++ /dev/null @@ -1,76 +0,0 @@ -From ae49ed04f54c2f78d6ba7e545e0099602a3270fa Mon Sep 17 00:00:00 2001 -From: Boris Zbarsky -Date: Thu, 19 Mar 2015 18:58:44 -0400 -Subject: [PATCH] Bug 1144991 - Be a bit more restrictive about when a - URI_IS_UI_RESOURCE source is allowed to link to a URI_IS_UI_RESOURCE URI that - doesn't have the same scheme. r=bholley, a=abillings - ---- - caps/src/nsScriptSecurityManager.cpp | 38 +++++++++++++++++++++++++----------- - 1 file changed, 27 insertions(+), 11 deletions(-) - -diff --git a/caps/src/nsScriptSecurityManager.cpp b/caps/src/nsScriptSecurityManager.cpp -index 3587358..6577b95 100644 ---- a/caps/src/nsScriptSecurityManager.cpp -+++ b/caps/src/nsScriptSecurityManager.cpp -@@ -770,12 +770,31 @@ nsScriptSecurityManager::CheckLoadURIWithPrincipal(nsIPrincipal* aPrincipal, - NS_ENSURE_SUCCESS(rv, rv); - if (hasFlags) { - if (aFlags & nsIScriptSecurityManager::ALLOW_CHROME) { -+ -+ // For now, don't change behavior for resource:// or moz-icon:// and -+ // just allow them. - if (!targetScheme.EqualsLiteral("chrome")) { -- // for now don't change behavior for resource: or moz-icon: - return NS_OK; - } - -- // allow load only if chrome package is whitelisted -+ // Allow a URI_IS_UI_RESOURCE source to link to a URI_IS_UI_RESOURCE -+ // target if ALLOW_CHROME is set. -+ // -+ // ALLOW_CHROME is a flag that we pass on all loads _except_ docshell -+ // loads (since docshell loads run the loaded content with its origin -+ // principal). So we're effectively allowing resource://, chrome://, -+ // and moz-icon:// source URIs to load resource://, chrome://, and -+ // moz-icon:// files, so long as they're not loading it as a document. -+ bool sourceIsUIResource; -+ rv = NS_URIChainHasFlags(sourceBaseURI, -+ nsIProtocolHandler::URI_IS_UI_RESOURCE, -+ &sourceIsUIResource); -+ NS_ENSURE_SUCCESS(rv, rv); -+ if (sourceIsUIResource) { -+ return NS_OK; -+ } -+ -+ // Allow the load only if the chrome package is whitelisted. - nsCOMPtr reg(do_GetService( - NS_CHROMEREGISTRY_CONTRACTID)); - if (reg) { -@@ -787,17 +806,14 @@ nsScriptSecurityManager::CheckLoadURIWithPrincipal(nsIPrincipal* aPrincipal, - } - } - -- // resource: and chrome: are equivalent, securitywise -- // That's bogus!! Fix this. But watch out for -- // the view-source stylesheet? -- bool sourceIsChrome; -- rv = NS_URIChainHasFlags(sourceBaseURI, -- nsIProtocolHandler::URI_IS_UI_RESOURCE, -- &sourceIsChrome); -- NS_ENSURE_SUCCESS(rv, rv); -- if (sourceIsChrome) { -+ // Special-case the hidden window: it's allowed to load -+ // URI_IS_UI_RESOURCE no matter what. Bug 1145470 tracks removing this. -+ nsAutoCString sourceSpec; -+ if (NS_SUCCEEDED(sourceBaseURI->GetSpec(sourceSpec)) && -+ sourceSpec.EqualsLiteral("resource://gre-resources/hiddenWindow.html")) { - return NS_OK; - } -+ - if (reportErrors) { - ReportError(nullptr, errorTag, sourceURI, aTargetURI); - } --- -2.2.1 - diff --git a/gnu/packages/patches/icecat-bug-1146339.patch b/gnu/packages/patches/icecat-bug-1146339.patch deleted file mode 100644 index 9d858523b9..0000000000 --- a/gnu/packages/patches/icecat-bug-1146339.patch +++ /dev/null @@ -1,162 +0,0 @@ -From 4ca86283a71427f27e810d77c8e75418f6428457 Mon Sep 17 00:00:00 2001 -From: Olli Pettay -Date: Mon, 23 Mar 2015 22:23:53 -0400 -Subject: [PATCH] Bug 1146339 - Do anchor scrolling right before dispatching - popstate/hashchange. r=bz, a=lmandel - ---- - docshell/base/nsDocShell.cpp | 64 +++++++++++++++++++++----------------------- - docshell/base/nsDocShell.h | 1 - - 2 files changed, 30 insertions(+), 35 deletions(-) - -diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp -index bdf88a5cf..efb6a6e 100644 ---- a/docshell/base/nsDocShell.cpp -+++ b/docshell/base/nsDocShell.cpp -@@ -1322,7 +1322,7 @@ nsDocShell::LoadURI(nsIURI * aURI, - - // Note: we allow loads to get through here even if mFiredUnloadEvent is - // true; that case will get handled in LoadInternal or LoadHistoryEntry. -- if (IsPrintingOrPP() || mBlockNavigation) { -+ if (IsPrintingOrPP()) { - return NS_OK; // JS may not handle returning of an error code - } - -@@ -4206,7 +4206,8 @@ bool - nsDocShell::IsNavigationAllowed(bool aDisplayPrintErrorDialog) - { - bool isAllowed = !IsPrintingOrPP(aDisplayPrintErrorDialog) && -- !mFiredUnloadEvent && !mBlockNavigation; if (!isAllowed) { -+ !mFiredUnloadEvent; -+ if (!isAllowed) { - return false; - } - if (!mContentViewer) { -@@ -8901,8 +8902,6 @@ nsDocShell::InternalLoad(nsIURI * aURI, - - NS_ENSURE_TRUE(!mIsBeingDestroyed, NS_ERROR_NOT_AVAILABLE); - -- NS_ENSURE_TRUE(!mBlockNavigation, NS_ERROR_UNEXPECTED); -- - // wyciwyg urls can only be loaded through history. Any normal load of - // wyciwyg through docshell is illegal. Disallow such loads. - if (aLoadType & LOAD_CMD_NORMAL) { -@@ -9324,19 +9323,6 @@ nsDocShell::InternalLoad(nsIURI * aURI, - GetCurScrollPos(ScrollOrientation_X, &cx); - GetCurScrollPos(ScrollOrientation_Y, &cy); - -- { -- AutoRestore scrollingToAnchor(mBlockNavigation); -- mBlockNavigation = true; -- -- // ScrollToAnchor doesn't necessarily cause us to scroll the window; -- // the function decides whether a scroll is appropriate based on the -- // arguments it receives. But even if we don't end up scrolling, -- // ScrollToAnchor performs other important tasks, such as informing -- // the presShell that we have a new hash. See bug 680257. -- rv = ScrollToAnchor(curHash, newHash, aLoadType); -- NS_ENSURE_SUCCESS(rv, rv); -- } -- - // Reset mLoadType to its original value once we exit this block, - // because this short-circuited load might have started after a - // normal, network load, and we don't want to clobber its load type. -@@ -9424,16 +9410,6 @@ nsDocShell::InternalLoad(nsIURI * aURI, - mOSHE->SetCacheKey(cacheKey); - } - -- /* restore previous position of scroller(s), if we're moving -- * back in history (bug 59774) -- */ -- if (mOSHE && (aLoadType == LOAD_HISTORY || aLoadType == LOAD_RELOAD_NORMAL)) -- { -- nscoord bx, by; -- mOSHE->GetScrollPosition(&bx, &by); -- SetCurScrollPosEx(bx, by); -- } -- - /* Restore the original LSHE if we were loading something - * while short-circuited load was initiated. - */ -@@ -9471,12 +9447,36 @@ nsDocShell::InternalLoad(nsIURI * aURI, - - SetDocCurrentStateObj(mOSHE); - -+ // Inform the favicon service that the favicon for oldURI also -+ // applies to aURI. -+ CopyFavicon(currentURI, aURI, mInPrivateBrowsing); -+ -+ nsRefPtr win = mScriptGlobal ? -+ mScriptGlobal->GetCurrentInnerWindowInternal() : nullptr; -+ -+ // ScrollToAnchor doesn't necessarily cause us to scroll the window; -+ // the function decides whether a scroll is appropriate based on the -+ // arguments it receives. But even if we don't end up scrolling, -+ // ScrollToAnchor performs other important tasks, such as informing -+ // the presShell that we have a new hash. See bug 680257. -+ rv = ScrollToAnchor(curHash, newHash, aLoadType); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ /* restore previous position of scroller(s), if we're moving -+ * back in history (bug 59774) -+ */ -+ if (mOSHE && (aLoadType == LOAD_HISTORY || -+ aLoadType == LOAD_RELOAD_NORMAL)) { -+ nscoord bx, by; -+ mOSHE->GetScrollPosition(&bx, &by); -+ SetCurScrollPosEx(bx, by); -+ } -+ - // Dispatch the popstate and hashchange events, as appropriate. - // - // The event dispatch below can cause us to re-enter script and - // destroy the docshell, nulling out mScriptGlobal. Hold a stack - // reference to avoid null derefs. See bug 914521. -- nsRefPtr win = mScriptGlobal; - if (win) { - // Fire a hashchange event URIs differ, and only in their hashes. - bool doHashchange = sameExceptHashes && !curHash.Equals(newHash); -@@ -9492,10 +9492,6 @@ nsDocShell::InternalLoad(nsIURI * aURI, - } - } - -- // Inform the favicon service that the favicon for oldURI also -- // applies to aURI. -- CopyFavicon(currentURI, aURI, mInPrivateBrowsing); -- - return NS_OK; - } - } -@@ -12573,7 +12569,7 @@ nsDocShell::OnLinkClick(nsIContent* aContent, - { - NS_ASSERTION(NS_IsMainThread(), "wrong thread"); - -- if (!IsOKToLoadURI(aURI) || mBlockNavigation) { -+ if (!IsOKToLoadURI(aURI)) { - return NS_OK; - } - -@@ -12629,7 +12625,7 @@ nsDocShell::OnLinkClickSync(nsIContent *aContent, - *aRequest = nullptr; - } - -- if (!IsOKToLoadURI(aURI) || mBlockNavigation) { -+ if (!IsOKToLoadURI(aURI)) { - return NS_OK; - } - -diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h -index be353ee..c191777 100644 ---- a/docshell/base/nsDocShell.h -+++ b/docshell/base/nsDocShell.h -@@ -835,7 +835,6 @@ protected: - bool mInPrivateBrowsing; - bool mUseRemoteTabs; - bool mDeviceSizeIsPageSize; -- bool mBlockNavigation; - - // Because scriptability depends on the mAllowJavascript values of our - // ancestors, we cache the effective scriptability and recompute it when --- -2.2.1 - -- cgit v1.2.3 From 7e3c9f741b8a5ee3551be6ba5fe1721b4fb30e8a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 2 Apr 2015 10:26:15 +0200 Subject: gnu: gcc: Fix libgcc_s directory in RUNPATH for cross-compiled binaries. * gnu/packages/gcc.scm (gcc-4.7): Add 'libdir' procedure. Use it to determine the right libdir, including when cross-compiling. This fixes a bug whereby the RUNPATH of cross-compiled binaries would be set to $crossgcc/lib instead of $crossgcc/$triplet/lib. See for an example. --- gnu/packages/gcc.scm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 27e40f2f66..68c9e98762 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -85,6 +85,14 @@ where the OS part is overloaded to denote a specific ABI---into GCC '("CC" "CXX" "LD" "AR" "NM" "RANLIB" "STRIP") '("gcc" "g++" "ld" "ar" "nm" "ranlib" "strip")) '())))) + (libdir + (let ((base '(or (assoc-ref outputs "lib") + (assoc-ref outputs "out")))) + (lambda () + ;; Return the directory that contains lib/libgcc_s.so et al. + (if (%current-target-system) + `(string-append ,base "/" ,(%current-target-system)) + base)))) (configure-flags (lambda () ;; This is terrible. Since we have two levels of quasiquotation, @@ -185,8 +193,7 @@ where the OS part is overloaded to denote a specific ABI---into GCC (alist-cons-before 'configure 'pre-configure (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((libdir (or (assoc-ref outputs "lib") - (assoc-ref outputs "out"))) + (let ((libdir ,(libdir)) (libc (assoc-ref inputs "libc"))) (when libc ;; The following is not performed for `--without-headers' -- cgit v1.2.3 From 488c34ece412c2a75a7655e8dffa2842c38f96b8 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Thu, 2 Apr 2015 14:08:37 +0800 Subject: gnu: Add fcitx. * gnu/packages/fcitx.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/fcitx.scm | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 gnu/packages/fcitx.scm diff --git a/gnu-system.am b/gnu-system.am index c2a6e2be7d..e9ee5ada3d 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -93,6 +93,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/enchant.scm \ gnu/packages/engineering.scm \ gnu/packages/enlightenment.scm \ + gnu/packages/fcitx.scm \ gnu/packages/feh.scm \ gnu/packages/file.scm \ gnu/packages/firmware.scm \ diff --git a/gnu/packages/fcitx.scm b/gnu/packages/fcitx.scm new file mode 100644 index 0000000000..925d5ac89b --- /dev/null +++ b/gnu/packages/fcitx.scm @@ -0,0 +1,87 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Sou Bunnbu +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages fcitx) + #:use-module ((guix licenses) #:select (gpl2+)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system cmake) + #:use-module (gnu packages doxygen) + #:use-module (gnu packages enchant) + #:use-module (gnu packages gettext) + #:use-module (gnu packages glib) + #:use-module (gnu packages gtk) + #:use-module (gnu packages icu4c) + #:use-module (gnu packages iso-codes) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages xml) + #:use-module (gnu packages xorg)) + +(define-public fcitx + (package + (name "fcitx") + (version "4.2.8.6") + (source (origin + (method url-fetch) + (uri (string-append "http://download.fcitx-im.org/fcitx/" + name "-" version "_dict.tar.xz")) + (sha256 + (base32 + "15ymd42kg920ri0f8fymq3i68g8k1kgpmdlnk9jf5fvnz6g4w0wi")))) + (build-system cmake-build-system) + (outputs '("out" "gtk2" "gtk3")) + (arguments + `(#:configure-flags + (list "-DENABLE_TEST=ON" + (string-append "-DXKB_RULES_XML_FILE=" + (assoc-ref %build-inputs "xkeyboard-config") + "/share/X11/xkb/rules/evdev.xml") + "-DENABLE_GTK2_IM_MODULE=ON" + "-DENABLE_GTK3_IM_MODULE=ON" + (string-append "-DGTK2_IM_MODULEDIR=" + (assoc-ref %outputs "gtk2") + "/lib/gtk-2.0/2.10.0/immodules") + (string-append "-DGTK3_IM_MODULEDIR=" + (assoc-ref %outputs "gtk3") + "/lib/gtk-3.0/3.0.0/immodules") + ;; XXX: Enable GObject Introspection and Qt4 support. + "-DENABLE_GIR=OFF" + "-DENABLE_QT=OFF" + "-DENABLE_QT_IM_MODULE=OFF"))) + (native-inputs + `(("doxygen" ,doxygen) + ("glib:bin" ,glib "bin") ; for glib-genmarshal + ("pkg-config" ,pkg-config))) + (inputs + `(("dbus" ,dbus) + ("enchant" ,enchant) + ("gettext" ,gnu-gettext) + ("gtk2" ,gtk+-2) + ("gtk3" ,gtk+) + ("icu4c" ,icu4c) + ("iso-codes" ,iso-codes) + ("libxkbfile" ,libxkbfile) + ("libxml2" ,libxml2) + ("xkeyboard-config" ,xkeyboard-config))) + (home-page "http://fcitx-im.org") + (synopsis "Input method framework") + (description + "Fcitx is an input method framework with extension support. It has +Pinyin, Quwei and some table-based (Wubi, Cangjie, Erbi, etc.) input methods +built-in.") + (license gpl2+))) -- cgit v1.2.3 From 9473af1d2c5867f6060594c863b8a6e22ccd77a4 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 1 Apr 2015 12:28:57 -0500 Subject: gnu: Add Catalyst-DispatchType-Regex. * gnu/packages/web.scm (perl-catalyst-dispatchtype-regex): New variable. --- gnu/packages/web.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index cbf3cb3465..32bc68fe4f 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -648,6 +648,36 @@ extension for Catalyst; and requirements for a variety of development-related modules.") (license (package-license perl)))) +(define-public perl-catalyst-dispatchtype-regex + (package + (name "perl-catalyst-dispatchtype-regex") + (version "5.90035") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/M/MG/MGRIMES/" + "Catalyst-DispatchType-Regex-" version ".tar.gz")) + (sha256 + (base32 + "06jq1lmpq88rmp9zik5gqczg234xac0hiyc3l698iif7zsgcyb80")))) + (build-system perl-build-system) + (native-inputs + `(("perl-module-build" ,perl-module-build) ;needs Module::Build >= 0.4004 + ("perl-namespace-autoclean" ,perl-namespace-autoclean) + ("perl-catalyst-runtime" ,perl-catalyst-runtime))) + (propagated-inputs + `(("perl-moose" ,perl-moose) + ("perl-text-simpletable" ,perl-text-simpletable))) + (home-page "http://search.cpan.org/dist/Catalyst-DispatchType-Regex") + (synopsis "Regex DispatchType for Catalyst") + (description "Dispatch type managing path-matching behaviour using +regexes. Regex dispatch types have been deprecated and removed from Catalyst +core. It is recommend that you use Chained methods or other techniques +instead. As part of the refactoring, the dispatch priority of Regex vs Regexp +vs LocalRegex vs LocalRegexp may have changed. Priority is now influenced by +when the dispatch type is first seen in your application.") + (license (package-license perl)))) + (define-public perl-catalyst-model-dbic-schema (package (name "perl-catalyst-model-dbic-schema") -- cgit v1.2.3 From c16a204a7a946a33f4e5eaa79126b9e9debd8dfd Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 1 Apr 2015 14:04:37 -0500 Subject: gnu: Add Class-Singleton. * gnu/packages/perl.scm (perl-class-singleton): New variable. --- gnu/packages/perl.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 9d41d88d26..e3e18b10b3 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -649,6 +649,26 @@ place of the original method, with a hook to easily call that original method.") (license (package-license perl)))) +(define-public perl-class-singleton + (package + (name "perl-class-singleton") + (version "1.5") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/S/SH/SHAY/" + "Class-Singleton-" version ".tar.gz")) + (sha256 + (base32 + "0y7ngrjf551bjgmijp5rsidbkq6c8hb5lmy2jcqq0fify020s8iq")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Class-Singleton") + (synopsis "Implementation of a singleton class for Perl") + (description "This module implements a Singleton class from which other +classes can be derived. By itself, the Class::Singleton module does very +little other than manage the instantiation of a single object.") + (license (package-license perl)))) + (define-public perl-class-tiny (package (name "perl-class-tiny") -- cgit v1.2.3 From 66b9c74eb9eb9ded0d06ac378d7902571e95d51b Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 1 Apr 2015 14:21:50 -0500 Subject: gnu: Add List-AllUtils. * gnu/packages/perl.scm (perl-list-allutils): New variable. --- gnu/packages/perl.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index e3e18b10b3..78f17f0509 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1983,6 +1983,30 @@ either uses the first module it finds or throws an error.") versa.") (license (package-license perl)))) +(define-public perl-list-allutils + (package + (name "perl-list-allutils") + (version "0.09") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/" + "List-AllUtils-" version ".tar.gz")) + (sha256 + (base32 + "1qmfpmly0pghc94k6ifnd1vwzlv8nks27qkqs6h4p7vcricn7zjc")))) + (build-system perl-build-system) + (native-inputs + `(("perl-test-warnings" ,perl-test-warnings))) + (propagated-inputs + `(("perl-list-moreutils" ,perl-list-moreutils) + ("perl-scalar-list-utils" ,perl-scalar-list-utils))) + (home-page "http://search.cpan.org/dist/List-AllUtils") + (synopsis "Combination of List::Util and List::MoreUtils") + (description "This module exports all of the functions that either +List::Util or List::MoreUtils defines, with preference to List::Util.") + (license (package-license perl)))) + (define-public perl-list-moreutils (package (name "perl-list-moreutils") -- cgit v1.2.3 From f12b77a82f2fac178e69d3cecd28f2a2a44dfb80 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 1 Apr 2015 14:28:17 -0500 Subject: gnu: Add DateTime-TimeZone. * gnu/packages/perl.scm (perl-datetime-timezone): New variable. --- gnu/packages/perl.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 78f17f0509..d46941d107 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1043,6 +1043,38 @@ support for per-object behavior, circular structures, visiting tied structures, and all ref types (hashes, arrays, scalars, code, globs).") (license (package-license perl)))) +(define-public perl-datetime-timezone + (package + (name "perl-datetime-timezone") + (version "1.86") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/" + "DateTime-TimeZone-" version ".tar.gz")) + (sha256 + (base32 + "1aj5liy9as7yci2s9cqv9gqna5wggah8yg2jqrc89dnrin25s26z")))) + (build-system perl-build-system) + (native-inputs + `(("perl-test-fatal" ,perl-test-fatal) + ("perl-test-requires" ,perl-test-requires))) + (propagated-inputs + `(("perl-class-singleton" ,perl-class-singleton) + ("perl-list-allutils" ,perl-list-allutils) + ("perl-module-runtime" ,perl-module-runtime) + ("perl-params-validate" ,perl-params-validate) + ("perl-try-tiny" ,perl-try-tiny))) + (home-page "http://search.cpan.org/dist/DateTime-TimeZone") + (synopsis "Time zone object for Perl") + (description "This class is the base class for all time zone objects. A +time zone is represented internally as a set of observances, each of which +describes the offset from GMT for a given time period. Note that without the +DateTime module, this module does not do much. It's primary interface is +through a DateTime object, and most users will not need to directly use +DateTime::TimeZone methods.") + (license (package-license perl)))) + (define-public perl-devel-caller (package (name "perl-devel-caller") -- cgit v1.2.3 From e210472d9fb9fd640d250dab3854a228f193c372 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 1 Apr 2015 14:55:29 -0500 Subject: gnu: Add DateTime-Locale. * gnu/packages/perl.scm (perl-datetime-locale): New variable. --- gnu/packages/perl.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index d46941d107..6cb710e921 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1043,6 +1043,28 @@ support for per-object behavior, circular structures, visiting tied structures, and all ref types (hashes, arrays, scalars, code, globs).") (license (package-license perl)))) +(define-public perl-datetime-locale + (package + (name "perl-datetime-locale") + (version "0.45") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/" + "DateTime-Locale-" version ".tar.gz")) + (sha256 + (base32 + "175grkrxiv012n6ch3z1sip4zprcili6m5zqi3njdk5c1gdvi8ca")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-list-moreutils" ,perl-list-moreutils) + ("perl-params-validate" ,perl-params-validate))) + (home-page "http://search.cpan.org/dist/DateTime-Locale") + (synopsis "Localization support for DateTime.pm") + (description "The DateTime::Locale modules provide localization data for +the DateTime.pm class.") + (license (package-license perl)))) + (define-public perl-datetime-timezone (package (name "perl-datetime-timezone") -- cgit v1.2.3 From c90361b32265b9332d7633e3df5b944486ae63a3 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 1 Apr 2015 14:56:47 -0500 Subject: gnu: Add DateTime. * gnu/packages/perl.scm (perl-datetime): New variable. --- gnu/packages/perl.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 6cb710e921..a4df03196b 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1043,6 +1043,34 @@ support for per-object behavior, circular structures, visiting tied structures, and all ref types (hashes, arrays, scalars, code, globs).") (license (package-license perl)))) +(define-public perl-datetime + (package + (name "perl-datetime") + (version "1.18") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/" + "DateTime-" version ".tar.gz")) + (sha256 + (base32 + "0fli1ls298qa8nfki15myxqqqfpxvslxk4j5r3vjk577wfgjrnms")))) + (build-system perl-build-system) + (native-inputs + `(("perl-test-fatal" ,perl-test-fatal) + ("perl-test-warnings" ,perl-test-warnings))) + (propagated-inputs + `(("perl-datetime-locale" ,perl-datetime-locale) + ("perl-datetime-timezone" ,perl-datetime-timezone) + ("perl-params-validate" ,perl-params-validate) + ("perl-try-tiny" ,perl-try-tiny))) + (home-page "http://search.cpan.org/dist/DateTime") + (synopsis "Date and time object for Perl") + (description "DateTime is a class for the representation of date/time +combinations. It represents the Gregorian calendar, extended backwards in +time before its creation (in 1582).") + (license artistic2.0))) + (define-public perl-datetime-locale (package (name "perl-datetime-locale") -- cgit v1.2.3 From 0a74d78d439ad1234052c6ed9c409c7236e6144f Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 1 Apr 2015 14:59:07 -0500 Subject: gnu: Add Catalyst-Plugin-AccessLog. * gnu/packages/web.scm (perl-catalyst-plugin-accesslog): New variable. --- gnu/packages/web.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 32bc68fe4f..0a69891824 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -723,6 +723,32 @@ when the dispatch type is first seen in your application.") Models.") (license (package-license perl)))) +(define-public perl-catalyst-plugin-accesslog + (package + (name "perl-catalyst-plugin-accesslog") + (version "1.05") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/A/AR/ARODLAND/" + "Catalyst-Plugin-AccessLog-" version ".tar.gz")) + (sha256 + (base32 + "0hqvckaw91q5yc25a33bp0d4qqxlgkp7rxlvi8n8svxd1406r55s")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-catalyst-runtime" ,perl-catalyst-runtime) + ("perl-datetime" ,perl-datetime) + ("perl-moose" ,perl-moose) + ("perl-namespace-autoclean" ,perl-namespace-autoclean))) + (arguments `(#:tests? #f)) ;Unexpected http responses + (home-page "http://search.cpan.org/dist/Catalyst-Plugin-AccessLog") + (synopsis "Request logging from within Catalyst") + (description "This Catalyst plugin enables you to create \"access logs\" +from within a Catalyst application instead of requiring a webserver to do it +for you. It will work even with Catalyst debug logging turned off.") + (license (package-license perl)))) + (define-public perl-catalyst-plugin-authentication (package (name "perl-catalyst-plugin-authentication") -- cgit v1.2.3 From ae0bdd81892ac92ed270d8980120041f3f3f2d5c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 2 Apr 2015 19:16:04 +0200 Subject: gnu: libva: Fix 'license' field. * gnu/packages/video.scm: Import (guix licenses) with the 'license:' prefix and adjust 'license' fields accordingly. Fixes a bug whereby libva was referring to the 'expat' package instead of the 'expat' license. --- gnu/packages/video.scm | 46 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index bc589a6edb..c6eb859bbb 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -21,9 +21,7 @@ (define-module (gnu packages video) #:use-module (ice-9 match) - #:use-module ((guix licenses) - #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ bsd-3 public-domain - fsf-free isc)) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix download) @@ -106,7 +104,7 @@ (description "liba52 is a library for decoding ATSC A/52 streams. The A/52 standard is used in a variety of applications, including digital television and DVD. It is also known as AC-3.") - (license gpl2+))) + (license license:gpl2+))) (define-public libass (package @@ -134,7 +132,7 @@ television and DVD. It is also known as AC-3.") (synopsis "Subtitle rendering library for the ASS/SSA format") (description "libass is a subtitle rendering library for the ASS/SSA (Advanced Substation Alpha/SubStation Alpha) subtitle format.") - (license isc))) + (license license:isc))) (define-public libcaca (package @@ -162,7 +160,7 @@ ASS/SSA (Advanced Substation Alpha/SubStation Alpha) subtitle format.") pixels, so that it can work on older video cards or text terminals. It supports Unicode, 2048 colors, dithering of color images, and advanced text canvas operations.") - (license (fsf-free "file://COPYING")))) ;WTFPL version 2 + (license (license:fsf-free "file://COPYING")))) ;WTFPL version 2 (define-public libdca (package @@ -181,7 +179,7 @@ canvas operations.") (synopsis "DTS Coherent Acoustics decoder") (description "libdca is a library for decoding DTS Coherent Acoustics streams.") - (license gpl2+))) + (license license:gpl2+))) (define-public libdv (package @@ -204,7 +202,7 @@ video, the encoding format used by most digital camcorders, typically those that support the IEEE 1394 (a.k.a. FireWire or i.Link) interface. Libdv was developed according to the official standards for DV video: IEC 61834 and SMPTE 314M.") - (license lgpl2.1+))) + (license license:lgpl2.1+))) (define-public libva (package @@ -233,7 +231,7 @@ SMPTE 314M.") to enable hardware accelerated video decode/encode at various entry-points (VLD, IDCT, Motion Compensation etc.) for prevailing coding standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") - (license expat))) + (license license:expat))) (define-public ffmpeg (package @@ -390,7 +388,7 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") (description "FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video. It includes the libavcodec audio/video codec library.") - (license gpl2+))) + (license license:gpl2+))) ;; We need this older ffmpeg because vlc-2.1.5 doesn't work with ffmpeg-2.4. (define-public ffmpeg-2.2 @@ -466,7 +464,7 @@ audio/video codec library.") (description "VLC is a cross-platform multimedia player and framework that plays most multimedia files as well as DVD, Audio CD, VCD, and various treaming protocols.") - (license gpl2+))) + (license license:gpl2+))) (define-public mplayer (package @@ -554,7 +552,7 @@ treaming protocols.") Ogg/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, RealMedia, Matroska, NUT, NuppelVideo, FLI, YUV4MPEG, FILM, RoQ, PVA files. One can watch VideoCD, SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") - (license gpl2))) + (license license:gpl2))) ;;; This is not version 2; it's a fork literally named "mplayer2". (define-public mplayer2 @@ -674,7 +672,7 @@ a fork of the original MPlayer project, and contains further development in several areas.") ;; See file Copyright. Most files are gpl2+ or compatible, but talloc.c ;; is under lgpl3+, thus the whole project becomes gpl3+. - (license gpl3+))) + (license license:gpl3+))) (define-public mpv (package @@ -759,7 +757,7 @@ several areas.") (description "mpv is a general-purpose audio and video player. It is a fork of mplayer2 and MPlayer. It shares some features with the former projects while introducing many more.") - (license gpl2+))) + (license license:gpl2+))) (define-public libvpx (package @@ -811,7 +809,7 @@ projects while introducing many more.") ("yasm" ,yasm))) (synopsis "VP8/VP9 video codec") (description "libvpx is a codec for the VP8/VP9 video compression format.") - (license bsd-3) + (license license:bsd-3) (home-page "http://www.webmproject.org/"))) (define-public youtube-dl @@ -833,7 +831,7 @@ projects while introducing many more.") (description "youtube-dl is a small command-line program to download videos from YouTube.com and a few more sites.") - (license public-domain))) + (license license:public-domain))) (define-public libbluray (package @@ -861,7 +859,7 @@ YouTube.com and a few more sites.") (description "libbluray is a library designed for Blu-Ray Disc playback for media players, like VLC or MPlayer.") - (license lgpl2.1+))) + (license license:lgpl2.1+))) (define-public libdvdread (package @@ -884,7 +882,7 @@ disks. It provides the functionality that is required to access many DVDs. It parses IFO files, reads NAV-blocks, and performs CSS authentication and descrambling (if an external libdvdcss library is installed).") - (license gpl2+))) + (license license:gpl2+))) (define-public libdvdnav (package @@ -916,7 +914,7 @@ a loop regularly calling a function to get the next block, surrounded by additional calls to tell the library of user interaction. The whole DVD virtual machine and internal playback states are completely encapsulated.") - (license gpl2+))) + (license license:gpl2+))) (define-public libdvdnav-4 (package @@ -962,7 +960,7 @@ encapsulated.") (description "libdvdcss is a simple library designed for accessing DVDs like a block device without having to bother about the decryption.") - (license gpl2+))) + (license license:gpl2+))) (define-public srt2vtt (package @@ -983,7 +981,7 @@ device without having to bother about the decryption.") (description "srt2vtt converts SubRip formatted subtitles to WebVTT format for use with HTML5 video.") (home-page "http://dthompson.us/pages/software/srt2vtt") - (license gpl3+))) + (license license:gpl3+))) (define-public avidemux (package @@ -1098,7 +1096,7 @@ DVD compatible MPEG files, MP4 and ASF, using a variety of codecs. Tasks can be automated using projects, job queue and powerful scripting capabilities.") ;; Software with various licenses is included, see License.txt. - (license gpl2+))) + (license license:gpl2+))) (define-public avidemux-2.5 (package (inherit avidemux) @@ -1229,7 +1227,7 @@ manipulation. It aims to be a modern rewrite of Avisynth, supporting multithreading, generalized colorspaces, per frame properties, and videos with format changes.") ;; As seen from the source files. - (license lgpl2.1+))) + (license license:lgpl2.1+))) (define-public xvid (package @@ -1262,4 +1260,4 @@ format changes.") codec library. It uses ASP features such as b-frames, global and quarter pixel motion compensation, lumi masking, trellis quantization, and H.263, MPEG and custom quantization matrices.") - (license gpl2+))) + (license license:gpl2+))) -- cgit v1.2.3 From 1768213c0aed6939217e55bd719f9f8a8858713c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 2 Apr 2015 21:40:01 +0200 Subject: doc: Remove bits about having to create /gnu/store manually. * doc/guix.texi (Build Environment Setup): Remove bit about creating /gnu/store. This is done automatically since 15ddeff. --- doc/guix.texi | 9 --------- 1 file changed, 9 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 556f1389d4..7ab424292e 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -383,15 +383,6 @@ Bash syntax and the @code{shadow} commands): done @end example -The @file{/gnu/store} directory (or whichever was specified with the -@code{--with-store-dir} option) must have ownership and permissions as -follows: - -@example -# chgrp guix-builder /gnu/store -# chmod 1775 /gnu/store -@end example - @noindent The @code{guix-daemon} program may then be run as @code{root} with: -- cgit v1.2.3 From c22eb9927f1ca6e8a724f9e634ce14700f888c6b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 2 Apr 2015 21:44:35 +0200 Subject: doc: Make it clear that store items must not be deleted by hand. * doc/guix.texi (Invoking guix gc): Add that this is the only way to delete files. --- doc/guix.texi | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index 7ab424292e..677fc57c1a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -1314,7 +1314,9 @@ guix package}). @cindex garbage collector Packages that are installed but not used may be @dfn{garbage-collected}. The @command{guix gc} command allows users to explicitly run the garbage -collector to reclaim space from the @file{/gnu/store} directory. +collector to reclaim space from the @file{/gnu/store} directory. It is +the @emph{only} way to remove files from @file{/gnu/store}---removing +files or directories manually may break it beyond repair! The garbage collector has a set of known @dfn{roots}: any file under @file{/gnu/store} reachable from a root is considered @dfn{live} and -- cgit v1.2.3 From 9c4b6e5484b8a33d666029444af854989ae67803 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 2 Apr 2015 22:24:43 +0200 Subject: gnu: ncurses: Install terminfo files when cross-compiling. * gnu/packages/ncurses.scm (ncurses): Remove 'cross-pre-install-phase'. When cross-compiling, it was leading to an empty $out/share/terminfo directory. --- gnu/packages/ncurses.scm | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm index 0dbc583f79..180cdde19f 100644 --- a/gnu/packages/ncurses.scm +++ b/gnu/packages/ncurses.scm @@ -43,14 +43,6 @@ (string-append "CONFIG_SHELL=" bash) (string-append "--prefix=" out) configure-flags))))) - (cross-pre-install-phase - '(lambda _ - ;; Run the native `tic' program, not the cross-built one. - (substitute* "misc/run_tic.sh" - (("\\{TIC_PATH:=.*\\}") - "{TIC_PATH:=true}") - (("cross_compiling:=no") - "cross_compiling:=yes")))) (post-install-phase '(lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) @@ -116,12 +108,9 @@ `(alist-cons-before ; cross build 'configure 'patch-makefile-SHELL ,patch-makefile-phase - (alist-cons-before - 'install 'pre-install - ,cross-pre-install-phase - (alist-cons-after - 'install 'post-install ,post-install-phase - %standard-phases))) + (alist-cons-after + 'install 'post-install ,post-install-phase + %standard-phases)) `(alist-cons-after ; native build 'install 'post-install ,post-install-phase -- cgit v1.2.3 From dac354fe10c31a3c68fa328628c9197e8bee052f Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Fri, 3 Apr 2015 16:49:40 +0800 Subject: gnu: Add libinput. * gnu/packages/freedesktop.scm (libinput): New variable. --- gnu/packages/freedesktop.scm | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index 0ee639d20a..f65a5bbf9d 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Andreas Enge +;;; Copyright © 2015 Sou Bunnbu ;;; ;;; This file is part of GNU Guix. ;;; @@ -17,10 +18,14 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages freedesktop) - #:use-module ((guix licenses) #:select (expat)) + #:use-module ((guix licenses) #:select (expat x11)) #:use-module (guix packages) #:use-module (guix download) - #:use-module (guix build-system gnu)) + #:use-module (guix build-system gnu) + #:use-module (gnu packages linux) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xorg)) (define-public xdg-utils (package @@ -43,4 +48,30 @@ (description "The xdg-utils package is a set of simple scripts that provide basic desktop integration functions in the framework of the freedesktop.org project.") - (license expat))) \ No newline at end of file + (license expat))) + +(define-public libinput + (package + (name "libinput") + (version "0.13.0") + (source (origin + (method url-fetch) + (uri (string-append "http://freedesktop.org/software/libinput/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "06n6ih2bfr957rprsgjxhi6f7m96wmf4kgac8y0ispsjvrzszv3c")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (propagated-inputs + `(("libudev" ,eudev))) ; required by libinput.pc + (inputs + `(("libevdev" ,libevdev) + ("mtdev" ,mtdev))) + (home-page "http://www.freedesktop.org/wiki/Software/libinput/") + (synopsis "Input devices handling library") + (description + "Libinput is a library to handle input devices for display servers and +other applications that need to directly deal with input devices.") + (license x11))) -- cgit v1.2.3 From 0492f4a2b9bf81af9f565404d956285a2c76dd0c Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Thu, 2 Apr 2015 15:51:05 +0300 Subject: packages: Fix typo. * gnu/packages.scm: Fix the name of an exported variable (%patch-path). --- gnu/packages.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages.scm b/gnu/packages.scm index 57a3e21bd6..13f2d9c803 100644 --- a/gnu/packages.scm +++ b/gnu/packages.scm @@ -35,7 +35,7 @@ #:use-module (srfi srfi-39) #:export (search-patch search-bootstrap-binary - %patch-directory + %patch-path %bootstrap-binaries-path %package-module-path -- cgit v1.2.3 From 946dc71f632e053083c98f845b04b1bcf1588c02 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Wed, 1 Apr 2015 22:15:15 +0300 Subject: gnu: xorg: Add patch to fix sis driver crashes. * gnu/packages/patches/xf86-video-sis-fix-exa-crash.patch: New file. * gnu/packages/xorg.scm (xf86-video-sis): Use it. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + .../patches/xf86-video-sis-fix-exa-crash.patch | 45 ++++++++++++++++++++++ gnu/packages/xorg.scm | 3 +- 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/xf86-video-sis-fix-exa-crash.patch diff --git a/gnu-system.am b/gnu-system.am index e9ee5ada3d..ebcf60f064 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -562,6 +562,7 @@ dist_patch_DATA = \ gnu/packages/patches/xf86-video-openchrome-glibc-2.20.patch \ gnu/packages/patches/xf86-video-r128-glibc-2.20.patch \ gnu/packages/patches/xf86-video-siliconmotion-remove-mibstore.patch \ + gnu/packages/patches/xf86-video-sis-fix-exa-crash.patch \ gnu/packages/patches/xf86-video-sis-update-api.patch \ gnu/packages/patches/xf86-video-tdfx-remove-mibstore.patch \ gnu/packages/patches/xf86-video-tga-remove-mibstore.patch \ diff --git a/gnu/packages/patches/xf86-video-sis-fix-exa-crash.patch b/gnu/packages/patches/xf86-video-sis-fix-exa-crash.patch new file mode 100644 index 0000000000..f5cd0b9a9e --- /dev/null +++ b/gnu/packages/patches/xf86-video-sis-fix-exa-crash.patch @@ -0,0 +1,45 @@ +Fix X server crash when sis driver is used with EXA acceleration. + +Source: http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/trusty/xserver-xorg-video-sis/trusty/revision/24/debian/patches/fix-exa-crash.diff + +The patch was originally proposed by nihui: +https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-sis/+bug/1066464/comments/13 + +--- a/src/sis310_accel.c ++++ b/src/sis310_accel.c +@@ -1874,7 +1874,7 @@ + { + ScrnInfoPtr pScrn = xf86ScreenToScrn(pDst->drawable.pScreen); + SISPtr pSiS = SISPTR(pScrn); +- unsigned char *dst = pDst->devPrivate.ptr; ++ unsigned char *dst = ((unsigned char *) pSiS->FbBase) + exaGetPixmapOffset(pDst); + int dst_pitch = exaGetPixmapPitch(pDst); + + (pSiS->SyncAccel)(pScrn); +@@ -1882,7 +1882,7 @@ + if(pDst->drawable.bitsPerPixel < 8) + return FALSE; + +- dst += (x * pDst->drawable.bitsPerPixel / 8) + (y * src_pitch); ++ dst += (x * pDst->drawable.bitsPerPixel / 8) + (y * dst_pitch); + while(h--) { + SiSMemCopyToVideoRam(pSiS, dst, (unsigned char *)src, + (w * pDst->drawable.bitsPerPixel / 8)); +@@ -1953,7 +1953,7 @@ + { + ScrnInfoPtr pScrn = xf86ScreenToScrn(pSrc->drawable.pScreen); + SISPtr pSiS = SISPTR(pScrn); +- unsigned char *src = pSrc->devPrivate.ptr; ++ unsigned char *src = ((unsigned char *) pSiS->FbBase) + exaGetPixmapOffset(pSrc); + int src_pitch = exaGetPixmapPitch(pSrc); + int size = src_pitch < dst_pitch ? src_pitch : dst_pitch; + +@@ -1964,7 +1964,7 @@ + + src += (x * pSrc->drawable.bitsPerPixel / 8) + (y * src_pitch); + while(h--) { +- SiSMemCopyFromVideoRam(pSiS, (unsigned char *)dst, src, size); ++ SiSMemCopyFromVideoRam(pSiS, (unsigned char *)dst, src, (w * pSrc->drawable.bitsPerPixel / 8)); + src += src_pitch; + dst += dst_pitch; + } diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index cfb4cc1643..998f0803fc 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -2932,7 +2932,8 @@ graphics cards.") (sha256 (base32 "1l0w84x39gq4y9j81dny9r6rma1xkqvxpsavpkd8h7h8panbcbmy")) - (patches (list (search-patch "xf86-video-sis-update-api.patch"))))) + (patches (list (search-patch "xf86-video-sis-update-api.patch") + (search-patch "xf86-video-sis-fix-exa-crash.patch"))))) (build-system gnu-build-system) (inputs `(("mesa" ,mesa) ("xf86dgaproto" ,xf86dgaproto) -- cgit v1.2.3 From c2a362be412a0defbab4c875b7a6c8a2dfca0049 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Fri, 3 Apr 2015 23:33:41 +0800 Subject: gnu: librep: Update to 0.92.5. * gnu/packages/sawfish.scm (librep): Update to 0.92.5. * gnu/packages/patches/librep-rules.mk.patch: Remove. --- gnu/packages/patches/librep-rules.mk.patch | 30 ------------------------------ gnu/packages/sawfish.scm | 5 ++--- 2 files changed, 2 insertions(+), 33 deletions(-) delete mode 100644 gnu/packages/patches/librep-rules.mk.patch diff --git a/gnu/packages/patches/librep-rules.mk.patch b/gnu/packages/patches/librep-rules.mk.patch deleted file mode 100644 index 4ea2a3ae1b..0000000000 --- a/gnu/packages/patches/librep-rules.mk.patch +++ /dev/null @@ -1,30 +0,0 @@ -rules.mk.in: Don't set prefix, datadir, libdir, datarootdir and repdir. -rules.mk.in: Use pkg-config to get the absolute path for repcommonexedir. - -Merged into upstream: . - ---- librep_0.92.4.orig/rules.mk.in 2015-01-31 23:21:59.614751496 +0800 -+++ librep_0.92.4/rules.mk.in 2015-02-02 18:56:55.097171657 +0800 -@@ -1,18 +1,10 @@ - # rules.mk - --prefix=@prefix@ --datadir=@datadir@ --libdir=@libdir@ -+repcommonexecdir?=$(shell pkg-config --variable=repcommonexecdir librep) -+rpath_repcommonexecdir:=$(repcommonexecdir) - --# shut up configure --datarootdir=@datarootdir@ -- --repdir=@repdir@ --repcommonexecdir=@repcommonexecdir@ --rpath_repcommonexecdir=@repcommonexecdir@ -- --rep_LIBTOOL=$(repcommonexecdir)/libtool --tag CC --rep_INSTALL_ALIASES=$(repcommonexecdir)/install-aliases -+rep_LIBTOOL:=$(repcommonexecdir)/libtool --tag CC -+rep_INSTALL_ALIASES:=$(repcommonexecdir)/install-aliases - - # use this like: - # foo.la : foo.lo bar.lo diff --git a/gnu/packages/sawfish.scm b/gnu/packages/sawfish.scm index f50632885f..e2cb62c62c 100644 --- a/gnu/packages/sawfish.scm +++ b/gnu/packages/sawfish.scm @@ -36,15 +36,14 @@ (define-public librep (package (name "librep") - (version "0.92.4") + (version "0.92.5") (source (origin (method url-fetch) (uri (string-append "http://download.tuxfamily.org/" name "/" name "_" version ".tar.xz")) (sha256 (base32 - "0297m24p2y8j3wavf8qqyriic7ls2392cmfn96y0pi83r5qckc25")) - (patches (list (search-patch "librep-rules.mk.patch"))))) + "0zsy5gi8kvz5vq41y5rzm6lfi3dpiwbg4diwb6d30qfi72mrpni2")))) (build-system gnu-build-system) (native-inputs `(("makeinfo" ,texinfo) -- cgit v1.2.3 From 8fdd410160acc717c97f9c8c8d910c71bcf9646a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 3 Apr 2015 11:54:01 +0200 Subject: gnu: Add 'make-ld-wrapper' procedure. * gnu/packages/base.scm (make-ld-wrapper): New procedure. Abstracted from... * gnu/packages/commencement.scm (ld-wrapper-boot3): ... here. Use it. --- gnu/packages/base.scm | 56 +++++++++++++++++++++++++++++++++++++++++++ gnu/packages/commencement.scm | 52 ++++------------------------------------ 2 files changed, 60 insertions(+), 48 deletions(-) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 3ff3172f0f..9eb90dca5b 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -358,6 +358,62 @@ included.") (license gpl3+) (home-page "http://www.gnu.org/software/binutils/"))) +(define* (make-ld-wrapper name #:key binutils guile bash + (guile-for-build guile)) + "Return a package called NAME that contains a wrapper for the 'ld' program +of BINUTILS, which adds '-rpath' flags to the actual 'ld' command line. The +wrapper uses GUILE and BASH." + (package + (name name) + (version "0") + (source #f) + (build-system trivial-build-system) + (inputs `(("binutils" ,binutils) + ("guile" ,guile) + ("bash" ,bash) + ("wrapper" ,(search-path %load-path + "gnu/packages/ld-wrapper.scm")))) + (arguments + `(#:guile ,guile-for-build + #:modules ((guix build utils)) + #:builder (begin + (use-modules (guix build utils) + (system base compile)) + + (let* ((out (assoc-ref %outputs "out")) + (bin (string-append out "/bin")) + (ld (string-append bin "/ld")) + (go (string-append bin "/ld.go"))) + + (setvbuf (current-output-port) _IOLBF) + (format #t "building ~s/bin/ld wrapper in ~s~%" + (assoc-ref %build-inputs "binutils") + out) + + (mkdir-p bin) + (copy-file (assoc-ref %build-inputs "wrapper") ld) + (substitute* ld + (("@GUILE@") + (string-append (assoc-ref %build-inputs "guile") + "/bin/guile")) + (("@BASH@") + (string-append (assoc-ref %build-inputs "bash") + "/bin/bash")) + (("@LD@") + (string-append (assoc-ref %build-inputs "binutils") + "/bin/ld"))) + (chmod ld #o555) + (compile-file ld #:output-file go))))) + (synopsis "The linker wrapper") + (description + "The linker wrapper (or 'ld-wrapper') wraps the linker to add any +missing '-rpath' flags, and to detect any misuse of libraries outside of the +store.") + (home-page "http://www.gnu.org/software/guix/") + (license gpl3+))) + +(export make-ld-wrapper) + (define-public glibc (package (name "glibc") diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index b421ab08ef..766aea4bfd 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -545,54 +545,10 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" (define ld-wrapper-boot3 ;; A linker wrapper that uses the bootstrap Guile. - (package - (name "ld-wrapper-boot3") - (version "0") - (source #f) - (build-system trivial-build-system) - (inputs `(("binutils" ,binutils-final) - ("guile" ,%bootstrap-guile) - ("bash" ,@(assoc-ref %boot2-inputs "bash")) - ("wrapper" ,(search-path %load-path - "gnu/packages/ld-wrapper.scm")))) - (arguments - `(#:guile ,%bootstrap-guile - #:modules ((guix build utils)) - #:builder (begin - (use-modules (guix build utils) - (system base compile)) - - (let* ((out (assoc-ref %outputs "out")) - (bin (string-append out "/bin")) - (ld (string-append bin "/ld")) - (go (string-append bin "/ld.go"))) - - (setvbuf (current-output-port) _IOLBF) - (format #t "building ~s/bin/ld wrapper in ~s~%" - (assoc-ref %build-inputs "binutils") - out) - - (mkdir-p bin) - (copy-file (assoc-ref %build-inputs "wrapper") ld) - (substitute* ld - (("@GUILE@") - (string-append (assoc-ref %build-inputs "guile") - "/bin/guile")) - (("@BASH@") - (string-append (assoc-ref %build-inputs "bash") - "/bin/bash")) - (("@LD@") - (string-append (assoc-ref %build-inputs "binutils") - "/bin/ld"))) - (chmod ld #o555) - (compile-file ld #:output-file go))))) - (synopsis "The linker wrapper") - (description - "The linker wrapper (or `ld-wrapper') wraps the linker to add any -missing `-rpath' flags, and to detect any misuse of libraries outside of the -store.") - (home-page #f) - (license gpl3+))) + (make-ld-wrapper "ld-wrapper-boot3" + #:binutils binutils-final + #:guile %bootstrap-guile + #:bash (car (assoc-ref %boot2-inputs "bash")))) (define %boot3-inputs ;; 4th stage inputs. -- cgit v1.2.3 From 9bab6bea86e83c1aae355a7654263a87f0a4c130 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 3 Apr 2015 22:27:45 +0200 Subject: gnu: ld-wrapper: Use a hard-coded self-reference instead of $0. * gnu/packages/ld-wrapper.scm: Use @SELF@ instead of $0. This is so that the .go file is found even when the wrapper is invoked via a symlink to it. * gnu/packages/base.scm (make-ld-wrapper): Substitute @SELF@. --- gnu/packages/base.scm | 2 ++ gnu/packages/ld-wrapper.scm | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 9eb90dca5b..c935784663 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -393,6 +393,8 @@ wrapper uses GUILE and BASH." (mkdir-p bin) (copy-file (assoc-ref %build-inputs "wrapper") ld) (substitute* ld + (("@SELF@") + ld) (("@GUILE@") (string-append (assoc-ref %build-inputs "guile") "/bin/guile")) diff --git a/gnu/packages/ld-wrapper.scm b/gnu/packages/ld-wrapper.scm index 4fa2962bb9..cc533f5464 100644 --- a/gnu/packages/ld-wrapper.scm +++ b/gnu/packages/ld-wrapper.scm @@ -8,7 +8,7 @@ # .go file (see ). main="(@ (gnu build-support ld-wrapper) ld-wrapper)" -exec @GUILE@ -c "(load-compiled \"$0.go\") (apply $main (cdr (command-line)))" "$@" +exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)))" "$@" !# ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès -- cgit v1.2.3 From 7c3d72f22d71c08c31d1ca4a612820de30d7ef91 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 3 Apr 2015 16:29:37 -0400 Subject: gnu: Remove deleted patch file from build system. * gnu-system.am (dist_patch_DATA): Remove 'gnu/packages/patches/librep-rules.mk.patch'. --- gnu-system.am | 1 - 1 file changed, 1 deletion(-) diff --git a/gnu-system.am b/gnu-system.am index ebcf60f064..b4b886ba2f 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -461,7 +461,6 @@ dist_patch_DATA = \ gnu/packages/patches/libevent-dns-tests.patch \ gnu/packages/patches/liboop-mips64-deplibs-fix.patch \ gnu/packages/patches/libmad-mips-newgcc.patch \ - gnu/packages/patches/librep-rules.mk.patch \ gnu/packages/patches/libtheora-config-guess.patch \ gnu/packages/patches/libtool-skip-tests.patch \ gnu/packages/patches/libssh-CVE-2014-0017.patch \ -- cgit v1.2.3 From 4a740d0fec9ee3813417145816c521757cd1cc64 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 3 Apr 2015 21:26:24 +0200 Subject: gnu: cross-base: Use an 'ld' wrapper also when cross-compiling. * gnu/packages/base.scm (make-ld-wrapper): Add #:target parameter and honor it. * gnu/packages/cross-base.scm (cross-gcc-arguments)[#:phases] : Refer to the ld wrapper. (cross-gcc)[native-inputs]: Add "ld-wrapper-cross". --- gnu/packages/base.scm | 20 ++++++++++++++------ gnu/packages/cross-base.scm | 14 +++++++++++--- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index c935784663..0c12505724 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -358,11 +358,14 @@ included.") (license gpl3+) (home-page "http://www.gnu.org/software/binutils/"))) -(define* (make-ld-wrapper name #:key binutils guile bash +(define* (make-ld-wrapper name #:key binutils + (guile (canonical-package guile-2.0)) + (bash (canonical-package bash)) target (guile-for-build guile)) "Return a package called NAME that contains a wrapper for the 'ld' program -of BINUTILS, which adds '-rpath' flags to the actual 'ld' command line. The -wrapper uses GUILE and BASH." +of BINUTILS, which adds '-rpath' flags to the actual 'ld' command line. When +TARGET is not #f, make a wrapper for the cross-linker for TARGET, called +'TARGET-ld'. The wrapper uses GUILE and BASH." (package (name name) (version "0") @@ -382,8 +385,10 @@ wrapper uses GUILE and BASH." (let* ((out (assoc-ref %outputs "out")) (bin (string-append out "/bin")) - (ld (string-append bin "/ld")) - (go (string-append bin "/ld.go"))) + (ld ,(if target + `(string-append bin "/" ,target "-ld") + '(string-append bin "/ld"))) + (go (string-append ld ".go"))) (setvbuf (current-output-port) _IOLBF) (format #t "building ~s/bin/ld wrapper in ~s~%" @@ -403,7 +408,10 @@ wrapper uses GUILE and BASH." "/bin/bash")) (("@LD@") (string-append (assoc-ref %build-inputs "binutils") - "/bin/ld"))) + ,(if target + (string-append "/bin/" + target "-ld") + "/bin/ld")))) (chmod ld #o555) (compile-file ld #:output-file go))))) (synopsis "The linker wrapper") diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm index dbcc5bc268..565a4a8220 100644 --- a/gnu/packages/cross-base.scm +++ b/gnu/packages/cross-base.scm @@ -130,12 +130,16 @@ may be either a libc package or #f.)" ,target)) (binutils (string-append (assoc-ref inputs "binutils-cross") - "/bin/" ,target "-"))) + "/bin/" ,target "-")) + (wrapper (string-append + (assoc-ref inputs "ld-wrapper-cross") + "/bin/" ,target "-ld"))) (for-each (lambda (file) (symlink (string-append binutils file) (string-append libexec "/" file))) - '("as" "ld" "nm")) + '("as" "nm")) + (symlink wrapper (string-append libexec "/ld")) #t)) ,phases))) (if libc @@ -214,7 +218,11 @@ GCC that does not target a libc; otherwise, target that libc." ,@(cross-gcc-arguments target libc))) (native-inputs - `(("binutils-cross" ,xbinutils) + `(("ld-wrapper-cross" ,(make-ld-wrapper + (string-append "ld-wrapper-" target) + #:target target + #:binutils xbinutils)) + ("binutils-cross" ,xbinutils) ;; Call it differently so that the builder can check whether the "libc" ;; input is #f. -- cgit v1.2.3 From 849eebbb38dfc7241494899b49e7e28ee7d661c5 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 3 Apr 2015 22:10:02 +0200 Subject: ui: Recognize 'guix help'. Suggested by Andy Wingo. * guix/ui.scm (guix-main): Add "help" case. --- guix/ui.scm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/guix/ui.scm b/guix/ui.scm index 4929f93590..67c65aa14d 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -868,6 +868,8 @@ found." (format (current-error-port) (_ "guix: unrecognized option '~a'~%") o) (show-guix-usage)) + (("help" args ...) + (show-guix-help)) ((command args ...) (apply run-guix-command (string->symbol command) -- cgit v1.2.3 From 21cc905ac20c1e9dec4610f92b3d2202f2e9dcb2 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 3 Apr 2015 22:12:26 +0200 Subject: services: lsh: Change #:initialize? to default to #t. * gnu/services/ssh.scm (lsh-service): Change #:initialize? to default to #t. * doc/guix.texi (Using the Configuration System): Remove #:initialize? #t from example. (Networking Services): Adjust accordingly. --- doc/guix.texi | 5 ++--- gnu/services/ssh.scm | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 677fc57c1a..fdf65c72b9 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3776,8 +3776,7 @@ kernel, initial RAM disk, and boot loader looks like this: (comment "Bob's sister") (home-directory "/home/alice")))) (packages (cons emacs %base-packages)) - (services (cons (lsh-service #:port 2222 #:root-login? #t - #:initialize? #t) + (services (cons (lsh-service #:port 2222 #:root-login? #t) %base-services))) @end lisp @@ -4596,7 +4595,7 @@ Furthermore, @code{(gnu services ssh)} provides the following service. [#:allow-empty-passwords? #f] [#:root-login? #f] @ [#:syslog-output? #t] [#:x11-forwarding? #t] @ [#:tcp/ip-forwarding? #t] [#:password-authentication? #t] @ - [#:public-key-authentication? #t] [#:initialize? #f] + [#:public-key-authentication? #t] [#:initialize? #t] Run the @command{lshd} program from @var{lsh} to listen on port @var{port-number}. @var{host-key} must designate a file containing the host key, and readable only by root. diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm index 9537958df7..e2f85421e9 100644 --- a/gnu/services/ssh.scm +++ b/gnu/services/ssh.scm @@ -86,7 +86,7 @@ (tcp/ip-forwarding? #t) (password-authentication? #t) (public-key-authentication? #t) - initialize?) + (initialize? #t)) "Run the @command{lshd} program from @var{lsh} to listen on port @var{port-number}. @var{host-key} must designate a file containing the host key, and readable only by root. -- cgit v1.2.3 From 8b43df2b3022e808bdc664e86abc712073849520 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 3 Apr 2015 09:20:50 +0200 Subject: build-system/glib-or-gtk: Wrap libexec programs. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * guix/build/glib-or-gtk-build-system.scm (wrap-all-programs): Also wrap binaries in libexec/, such as those launched by dbus services. Signed-off-by: Ludovic Courtès --- guix/build/glib-or-gtk-build-system.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/guix/build/glib-or-gtk-build-system.scm b/guix/build/glib-or-gtk-build-system.scm index c57bc3e731..40f1bb85fa 100644 --- a/guix/build/glib-or-gtk-build-system.scm +++ b/guix/build/glib-or-gtk-build-system.scm @@ -140,7 +140,9 @@ add a dependency of that output on GLib and GTK+." ((output . directory) (unless (member output glib-or-gtk-wrap-excluded-outputs) (let* ((bindir (string-append directory "/bin")) - (bin-list (find-files bindir ".*")) + (libexecdir (string-append directory "/libexec")) + (bin-list (append (find-files bindir ".*") + (find-files libexecdir ".*"))) (datadirs (data-directories (alist-cons output directory inputs))) (gtk-mod-dirs (gtk-module-directories -- cgit v1.2.3 From 191e9b4e013fc23d1cc30863fec4a907d36e22ea Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 3 Apr 2015 09:21:41 +0200 Subject: gnu: vte: Update to 0.40.0. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/gnome.scm (vte): Update to 0.40.0. Add 'inputs' field. Co-authored-by: Ludovic Courtès --- gnu/packages/gnome.scm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 0e674da899..bf671d9e15 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -39,6 +39,7 @@ #:use-module (gnu packages pdf) #:use-module (gnu packages popt) #:use-module (gnu packages ghostscript) + #:use-module (gnu packages gnutls) #:use-module (gnu packages iso-codes) #:use-module (gnu packages libcanberra) #:use-module (gnu packages image) @@ -1398,7 +1399,7 @@ libraries written in C.") (define-public vte (package (name "vte") - (version "0.38.2") + (version "0.40.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -1406,7 +1407,7 @@ libraries written in C.") name "-" version ".tar.xz")) (sha256 (base32 - "1rbxrigff9yszbgdw0gw4c2saz4d1hbbpz21phzxx14w49wvmnmj")))) + "0lnq0bgkmsixjwmfacb2ch9qfjqjxa8zkk1hiv3l29kgca0n3nal")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -1415,6 +1416,8 @@ libraries written in C.") ("gobject-introspection" ,gobject-introspection) ("glib" ,glib "bin") ; for glib-genmarshal, etc. ("xmllint" ,libxml2))) + (inputs + `(("gnutls" ,gnutls))) (propagated-inputs `(("gtk+" ,gtk+))) ; required by libvte-2.91.pc (arguments -- cgit v1.2.3 From 302393bc7c6e9c91df16d4f59806c728bce8e417 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 3 Apr 2015 23:27:21 +0200 Subject: gnu: vte: Propagate GnuTLS. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/gnome.scm (vte): Move GNUTLS from 'inputs' to 'propagated-inputs'. Suggested by 宋文武 . --- gnu/packages/gnome.scm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index bf671d9e15..6e03a63c46 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1416,10 +1416,9 @@ libraries written in C.") ("gobject-introspection" ,gobject-introspection) ("glib" ,glib "bin") ; for glib-genmarshal, etc. ("xmllint" ,libxml2))) - (inputs - `(("gnutls" ,gnutls))) (propagated-inputs - `(("gtk+" ,gtk+))) ; required by libvte-2.91.pc + `(("gtk+" ,gtk+) ;required by vte-2.91.pc + ("gnutls" ,gnutls))) ;ditto (arguments `(#:phases (alist-cons-before -- cgit v1.2.3 From 0f998a140e03f270fa67d43f86dbf826f2e74d60 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 4 Apr 2015 11:14:31 +0800 Subject: gnu: gstreamer: Enable GObject introspection. * gnu/packages/gstreamer.scm (gstreamer): Add gobject-introspection to 'native-inputs'. [arguments]: New field. --- gnu/packages/gstreamer.scm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index 7afb9c4218..9b113fdf40 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -88,11 +88,13 @@ arrays of data.") (base32 "1bmhbhak6i5wmmb6w86jyyv8lax4gdq983la4lk4a0krz6kim020")))) (build-system gnu-build-system) + (arguments '(#:make-flags '("CC=gcc"))) ; for g-ir-scanner. (propagated-inputs `(("glib" ,glib))) ; required by gstreamer-1.0.pc. (native-inputs `(("bison" ,bison) ("flex" ,flex) ("glib" ,glib "bin") + ("gobject-introspection" ,gobject-introspection) ("perl" ,perl) ("pkg-config" ,pkg-config) ("python-wrapper" ,python-wrapper))) -- cgit v1.2.3 From 2fb016b8f1dc0b4b56653e4248e2697af61e5686 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 4 Apr 2015 11:33:14 +0800 Subject: gnu: gstreamer: Move html documentation to 'doc' output. * gnu/packages/gstreamer.scm (gstreamer)[outputs]: New field. [arguments]: Add #:configure-flags. --- gnu/packages/gstreamer.scm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index 9b113fdf40..7d0da6add8 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -88,7 +88,13 @@ arrays of data.") (base32 "1bmhbhak6i5wmmb6w86jyyv8lax4gdq983la4lk4a0krz6kim020")))) (build-system gnu-build-system) - (arguments '(#:make-flags '("CC=gcc"))) ; for g-ir-scanner. + (outputs '("out" "doc")) + (arguments + `(#:make-flags '("CC=gcc") ; for g-ir-scanner. + #:configure-flags + (list (string-append "--with-html-dir=" + (assoc-ref %outputs "doc") + "/share/gtk-doc/html")))) (propagated-inputs `(("glib" ,glib))) ; required by gstreamer-1.0.pc. (native-inputs `(("bison" ,bison) -- cgit v1.2.3 From 34ff76fdd63ef52635d93c545d698f4d340bfa14 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 4 Apr 2015 12:05:10 +0800 Subject: gnu: gst-plugins-base: Propagate input gstreamer. * gnu/packages/gstreamer.scm (gst-plugins-base): Move "gstreamer" to 'propagated-inputs'. --- gnu/packages/gstreamer.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index 7d0da6add8..79de8a222b 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -158,6 +158,8 @@ This package provides the core library and elements.") (base32 "07ampnfa6p41s0lhia62l9h8bdx3c7vxvdz93pbx64m3wycq3gbp")))) (build-system gnu-build-system) + (propagated-inputs + `(("gstreamer" ,gstreamer))) ; required by gstreamer-plugins-base-1.0.pc (inputs `(("cdparanoia" ,cdparanoia) ("orc" ,orc) @@ -169,8 +171,7 @@ This package provides the core library and elements.") ("zlib" ,zlib) ("libXext" ,libxext) ("libxv" ,libxv) - ("alsa-lib" ,alsa-lib) - ("gstreamer" ,gstreamer))) + ("alsa-lib" ,alsa-lib))) (native-inputs `(("pkg-config" ,pkg-config) ("glib" ,glib "bin") -- cgit v1.2.3 From e9a8212959bd3df13ee18f018299e43bccfafc68 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 4 Apr 2015 12:30:25 +0800 Subject: gnu: gst-plugins-base: Move html documentation to 'doc' output. * gnu/packages/gstreamer.scm (gstreamer)[outputs]: New field. [arguments]: Add #:configure-flags. --- gnu/packages/gstreamer.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index 79de8a222b..e941f8b2a0 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -158,6 +158,7 @@ This package provides the core library and elements.") (base32 "07ampnfa6p41s0lhia62l9h8bdx3c7vxvdz93pbx64m3wycq3gbp")))) (build-system gnu-build-system) + (outputs '("out" "doc")) (propagated-inputs `(("gstreamer" ,gstreamer))) ; required by gstreamer-plugins-base-1.0.pc (inputs @@ -177,7 +178,11 @@ This package provides the core library and elements.") ("glib" ,glib "bin") ("python-wrapper" ,python-wrapper))) (arguments - '(#:phases + `(#:configure-flags + (list (string-append "--with-html-dir=" + (assoc-ref %outputs "doc") + "/share/gtk-doc/html")) + #:phases (alist-cons-before 'configure 'patch-test-pb-utils (lambda _ -- cgit v1.2.3 From 4ec48644c3b3760bcc8a72eb6956c678b57182a1 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 4 Apr 2015 12:39:31 +0800 Subject: gnu: gst-plugins-base: Enable GObjection introspection. * gnu/packages/gstreamer.scm (gst-plugins-base): Add gobject-introspection to 'native-inputs'. [arguments]<#:phases>: Rename patch-test-pb-utils to patch. Add (setenv "CC" "gcc") to patch phase. --- gnu/packages/gstreamer.scm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index e941f8b2a0..ad0cfccca9 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -176,6 +176,7 @@ This package provides the core library and elements.") (native-inputs `(("pkg-config" ,pkg-config) ("glib" ,glib "bin") + ("gobject-introspection" ,gobject-introspection) ("python-wrapper" ,python-wrapper))) (arguments `(#:configure-flags @@ -184,10 +185,12 @@ This package provides the core library and elements.") "/share/gtk-doc/html")) #:phases (alist-cons-before - 'configure 'patch-test-pb-utils + 'configure 'patch (lambda _ (substitute* "tests/check/libs/pbutils.c" - (("/bin/sh") (which "sh")))) + (("/bin/sh") (which "sh"))) + ;; for g-ir-scanner. + (setenv "CC" "gcc")) %standard-phases))) (home-page "http://gstreamer.freedesktop.org/") (synopsis -- cgit v1.2.3 From f7ee7a9b06a386863d7752ba028a79bb98d3504d Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Thu, 2 Apr 2015 13:31:47 -0500 Subject: gnu: Add Perl GD. * gnu/packages/gd.scm (perl-gd): New variable. --- gnu/packages/gd.scm | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm index e27103778c..fcca592ff7 100644 --- a/gnu/packages/gd.scm +++ b/gnu/packages/gd.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Ludovic Courtès ;;; Copyright © 2015 Mark H Weaver +;;; Copyright © 2015 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -20,8 +21,10 @@ (define-module (gnu packages gd) #:use-module (guix packages) #:use-module (guix build-system gnu) + #:use-module (guix build-system perl) #:use-module (guix download) #:use-module (gnu packages) + #:use-module (gnu packages perl) #:use-module (gnu packages image) #:use-module (gnu packages fontutils) #:use-module (gnu packages compression) @@ -66,3 +69,51 @@ most anything else, on the fly. While not restricted to use on the web, the most common applications of GD involve website development.") (license (non-copyleft "file://COPYING" "See COPYING file in the distribution.")))) + +(define-public perl-gd + (package + (name "perl-gd") + (version "2.56") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/L/LD/LDS/" + "GD-" version ".tar.gz")) + (sha256 + (base32 + "1ya8f9hpiax8j29vwaiwlvvgah0vkyvpzva28r8231nyk0f3s40z")) + (patches + (list + (search-patch "perl-gd-options-passthrough-and-fontconfig.patch"))))) + (build-system perl-build-system) + (native-inputs + `(("perl-module-build" ,perl-module-build))) ;needs Module::Build >= 0.42 + (inputs + `(("gd" ,gd) + ("zlib" ,zlib) + ("png" ,libpng) + ("ft" ,freetype) + ("jpeg" ,libjpeg) + ("fontconfig" ,fontconfig))) + (arguments + ;; We must use Build.PL for building because Makefile.PL fails to build + ;; the XS source. + `(#:module-build-flags (map (lambda (i) + (string-append "--lib_" i "_path=" + (assoc-ref %build-inputs i))) + '("zlib" "png" "ft" "jpeg" "fontconfig")) + #:phases (alist-cons-after + 'configure 'clear-autogenerated-files + (lambda _ + ;; This file is autogenerated by its .PLS script at build + ;; time, but file creation fails because that file already + ;; exists in the distribution with non-writable + ;; permissions, so delete it first. + (delete-file "bdf_scripts/bdf2gdfont.pl")) + %standard-phases))) + (home-page "http://search.cpan.org/dist/GD") + (synopsis "Perl interface to the GD graphics library") + (description "GD.pm is an autoloadable interface module for libgd, a +popular library for creating and manipulating PNG files. With this library +you can create PNG images on the fly or modify existing files.") + (license (package-license perl)))) -- cgit v1.2.3 From b56a918f77013d421cf9b0c8bfde547a637f6b61 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Thu, 2 Apr 2015 16:20:24 -0500 Subject: gnu: Add PerlMagick. * gnu/packages/imagemagick.scm (perl-image-magick): New variable. --- gnu/packages/imagemagick.scm | 46 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm index 0144212b3e..2a68627dc6 100644 --- a/gnu/packages/imagemagick.scm +++ b/gnu/packages/imagemagick.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2015 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,6 +20,7 @@ (define-module (gnu packages imagemagick) #:use-module (guix packages) #:use-module (guix build-system gnu) + #:use-module (guix build-system perl) #:use-module (guix download) #:use-module ((guix licenses) #:select (fsf-free)) #:use-module (gnu packages algebra) @@ -90,3 +92,47 @@ and TIFF. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.") (license (fsf-free "http://www.imagemagick.org/script/license.php")))) + +(define-public perl-image-magick + (package + (name "perl-image-magick") + (version "6.89") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/J/JC/JCRISTY/" + "PerlMagick-" version "-1.tar.gz")) + (sha256 + (base32 + "0n9afy1z5bhf9phrbahnkwhgcmijn8jggpbzwrivw1zhliliiy68")))) + (build-system perl-build-system) + (native-inputs `(("pkg-config" ,pkg-config))) + (inputs `(("imagemagick" ,imagemagick))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before + configure image-magick-flags + (lambda* (#:key inputs #:allow-other-keys) + (let ((im (assoc-ref inputs "imagemagick"))) + (substitute* "Makefile.PL" + (("my \\$INC_magick = .*") + "my $INC_magick = `pkg-config --cflags ImageMagick`;\n") + (("my \\$LIBS_magick = .*") + "my $LIBS_magick = `pkg-config --libs ImageMagick`;\n"))))) + (add-before + check skip-mpeg-tests + (lambda _ + ;; TODO: MPEG tests fail even though our imagemagick supports + ;; MPEG. Has been reported elsewhere, + ;; http://www.imagemagick.org/discourse-server/viewtopic.php?f=7&t=25036, + ;; so skip for now. + (delete-file "t/mpeg/read.t")))))) + (home-page "http://search.cpan.org/dist/PerlMagick") + (synopsis "Perl interface to ImageMagick") + (description "This Perl extension allows the reading, manipulation and +writing of a large number of image file formats using the ImageMagick library. +Use it to create, edit, compose, or convert bitmap images from within a Perl +script.") + ;; See Magick.pm + (license (package-license imagemagick)))) -- cgit v1.2.3 From d8ae0acc9a02db4e0185bd7c8ea8716f75df15c9 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 10:59:45 -0500 Subject: gnu: Add GD-SecurityImage. * gnu/packages/gd.scm (perl-gd-securityimage): New variable. --- gnu/packages/gd.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm index fcca592ff7..725a8e7e9e 100644 --- a/gnu/packages/gd.scm +++ b/gnu/packages/gd.scm @@ -26,6 +26,7 @@ #:use-module (gnu packages) #:use-module (gnu packages perl) #:use-module (gnu packages image) + #:use-module (gnu packages imagemagick) #:use-module (gnu packages fontutils) #:use-module (gnu packages compression) #:use-module (gnu packages pkg-config) @@ -117,3 +118,30 @@ most common applications of GD involve website development.") popular library for creating and manipulating PNG files. With this library you can create PNG images on the fly or modify existing files.") (license (package-license perl)))) + +(define-public perl-gd-securityimage + (package + (name "perl-gd-securityimage") + (version "1.73") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/B/BU/BURAK/" + "GD-SecurityImage-" version ".tar.gz")) + (sha256 + (base32 + "1kaxs67rfd4w46lxgcg3pa05a596l0h1k8n4zk2gwrrar4022wpx")))) + (build-system perl-build-system) + (native-inputs + `(("perl-module-build" ,perl-module-build))) + (propagated-inputs + `(("perl-gd" ,perl-gd) + ("perl-image-magick" ,perl-image-magick))) + (home-page "http://search.cpan.org/dist/GD-SecurityImage") + (synopsis "Security image generator.") + (description "This module provides a basic interface to create +security (captcha) images. The final output is the actual graphic data, the +mime type of the graphic, and the created random string. The module also has +some \"styles\" that are used to create the background (or foreground) of the +image.") + (license (package-license perl)))) -- cgit v1.2.3 From 57c2680e5c8aabf92703b40c4efaf5a485ebd092 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 11:03:30 -0500 Subject: gnu: Add Catalyst-Plugin-Captcha. * gnu/packages/web.scm (perl-catalyst-plugin-captcha): New variable. --- gnu/packages/web.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 0a69891824..b32cf2aaf6 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -40,6 +40,7 @@ #:use-module (gnu packages cyrus-sasl) #:use-module (gnu packages databases) #:use-module (gnu packages openssl) + #:use-module (gnu packages gd) #:use-module (gnu packages gettext) #:use-module (gnu packages icu4c) #:use-module (gnu packages lua) @@ -783,6 +784,30 @@ who they claim to be), and authorization (allowing the user to do what the system authorises them to do).") (license (package-license perl)))) +(define-public perl-catalyst-plugin-captcha + (package + (name "perl-catalyst-plugin-captcha") + (version "0.04") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/D/DI/DIEGOK/" + "Catalyst-Plugin-Captcha-" version ".tar.gz")) + (sha256 + (base32 + "0llyj3v5nx9cx46jdbbvxf1lc9s9cxq5ml22xmx3wkb201r5qgaa")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session) + ("perl-catalyst-runtime" ,perl-catalyst-runtime) + ("perl-gd-securityimage" ,perl-gd-securityimage) + ("perl-http-date" ,perl-http-date))) + (home-page "http://search.cpan.org/dist/Catalyst-Plugin-Captcha") + (synopsis "Captchas for Catalyst") + (description "This plugin creates and validates Captcha images for +Catalyst.") + (license (package-license perl)))) + (define-public perl-catalyst-plugin-configloader (package (name "perl-catalyst-plugin-configloader") -- cgit v1.2.3 From be73447995d6a14ef6b6c3e1011e7a3020d72d96 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 11:14:29 -0500 Subject: gnu: Add Catalyst-Plugin-Session-State-Cookie. * gnu/packages/web.scm (perl-catalyst-plugin-session-state-cookie): New variable. --- gnu/packages/web.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index b32cf2aaf6..3ad74e13f6 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -866,6 +866,35 @@ formats.") management in web applications together: the state, and the store.") (license (package-license perl)))) +(define-public perl-catalyst-plugin-session-state-cookie + (package + (name "perl-catalyst-plugin-session-state-cookie") + (version "0.17") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/M/MS/MSTROUT/" + "Catalyst-Plugin-Session-State-Cookie-" + version ".tar.gz")) + (sha256 + (base32 + "1rvxbfnpf9x2pc2zgpazlcgdlr2dijmxgmcs0m5nazs0w6xikssb")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session) + ("perl-catalyst-runtime" ,perl-catalyst-runtime) + ("perl-moose" ,perl-moose) + ("perl-mro-compat" ,perl-mro-compat) + ("perl-namespace-autoclean" ,perl-namespace-autoclean))) + (home-page + "http://search.cpan.org/dist/Catalyst-Plugin-Session-State-Cookie") + (synopsis "Maintain session IDs using cookies") + (description "In order for Catalyst::Plugin::Session to work, the session +ID needs to be stored on the client, and the session data needs to be stored +on the server. This plugin stores the session ID on the client using the +cookie mechanism.") + (license (package-license perl)))) + (define-public perl-catalyst-plugin-static-simple (package (name "perl-catalyst-plugin-static-simple") -- cgit v1.2.3 From a1c9547f2583d97879c01795be57c7debeaefa8e Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 11:24:52 -0500 Subject: gnu: Add Cache-FastMmap. * gnu/packages/perl.scm (perl-cache-fastmmap): New variable. --- gnu/packages/perl.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index a4df03196b..37094e28d7 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -281,6 +281,27 @@ runs of an application or invocations of a CGI-style script or simply as an easy to use abstraction of the filesystem or shared memory.") (license (package-license perl)))) +(define-public perl-cache-fastmmap + (package + (name "perl-cache-fastmmap") + (version "1.40") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/R/RO/ROBM/" + "Cache-FastMmap-" version ".tar.gz")) + (sha256 + (base32 + "0h3ckr04cdn6dvl40m4m97vl5ybf30v1lwhw3jvkr92kpksvq4hd")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Cache-FastMmap") + (synopsis "Shared memory interprocess cache via mmap") + (description "A shared memory cache through an mmap'ed file. It's core is +written in C for performance. It uses fcntl locking to ensure multiple +processes can safely access the cache at the same time. It uses a basic LRU +algorithm to keep the most used entries in the cache.") + (license (package-license perl)))) + (define-public perl-capture-tiny (package (name "perl-capture-tiny") -- cgit v1.2.3 From 47533b6f699dc572d43c8a5cf96d9d02bae4a023 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 11:25:34 -0500 Subject: gnu: Add Catalyst-Plugin-Session-Store-FastMmap. * gnu/packages/web.scm (perl-catalyst-plugin-session-store-fastmmap): New variable. --- gnu/packages/web.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 3ad74e13f6..b1593676f7 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -895,6 +895,36 @@ on the server. This plugin stores the session ID on the client using the cookie mechanism.") (license (package-license perl)))) +(define-public perl-catalyst-plugin-session-store-fastmmap + (package + (name "perl-catalyst-plugin-session-store-fastmmap") + (version "0.16") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/" + "Catalyst-Plugin-Session-Store-FastMmap-" + version ".tar.gz")) + (sha256 + (base32 + "0x3j6zv3wr41jlwr6yb2jpmcx019ibyn11y8653ffnwhpzbpzsxs")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-cache-fastmmap" ,perl-cache-fastmmap) + ("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session) + ("perl-catalyst-runtime" ,perl-catalyst-runtime) + ("perl-moosex-emulate-class-accessor-fast" + ,perl-moosex-emulate-class-accessor-fast) + ("perl-mro-compat" ,perl-mro-compat) + ("perl-path-class" ,perl-path-class))) + (home-page + "http://search.cpan.org/dist/Catalyst-Plugin-Session-Store-FastMmap") + (synopsis "FastMmap session storage backend.") + (description "Catalyst::Plugin::Session::Store::FastMmap is a fast session +storage plugin for Catalyst that uses an mmap'ed file to act as a shared +memory interprocess cache. It is based on Cache::FastMmap.") + (license (package-license perl)))) + (define-public perl-catalyst-plugin-static-simple (package (name "perl-catalyst-plugin-static-simple") -- cgit v1.2.3 From 996f41102f2ff83a045d4580da10ad15eb64ac3c Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 11:31:46 -0500 Subject: gnu: Add Catalyst-Plugin-StackTrace. * gnu/packages/web.scm (perl-catalyst-plugin-stacktrace): New variable. --- gnu/packages/web.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index b1593676f7..67167a7238 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -925,6 +925,31 @@ storage plugin for Catalyst that uses an mmap'ed file to act as a shared memory interprocess cache. It is based on Cache::FastMmap.") (license (package-license perl)))) +(define-public perl-catalyst-plugin-stacktrace + (package + (name "perl-catalyst-plugin-stacktrace") + (version "0.12") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/" + "Catalyst-Plugin-StackTrace-" version ".tar.gz")) + (sha256 + (base32 + "1b2ksz74cpigxqzf63rddar3vfmnbpwpdcbs11v0ml89pb8ar79j")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-catalyst-runtime" ,perl-catalyst-runtime) + ("perl-devel-stacktrace" ,perl-devel-stacktrace) + ("perl-mro-compat" ,perl-mro-compat))) + (home-page "http://search.cpan.org/dist/Catalyst-Plugin-StackTrace") + (synopsis "Stack trace on the Catalyst debug screen") + (description "This plugin enhances the standard Catalyst debug screen by +including a stack trace of your appliation up to the point where the error +occurred. Each stack frame is displayed along with the package name, line +number, file name, and code context surrounding the line number.") + (license (package-license perl)))) + (define-public perl-catalyst-plugin-static-simple (package (name "perl-catalyst-plugin-static-simple") -- cgit v1.2.3 From 107671a202ec343910eb74a233b15ce2a2f87f8e Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 11:58:11 -0500 Subject: gnu: Add MooseX-RelatedClassRoles. * gnu/packages/perl.scm (perl-moosex-relatedclassroles): New variable. --- gnu/packages/perl.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 37094e28d7..f5b44ccaf7 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -2616,6 +2616,28 @@ BUILD methods are called. It tries to be as non-intrusive as possible.") validation to Moose.") (license (package-license perl)))) +(define-public perl-moosex-relatedclassroles + (package + (name "perl-moosex-relatedclassroles") + (version "0.004") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/H/HD/HDP/" + "MooseX-RelatedClassRoles-" version ".tar.gz")) + (sha256 + (base32 + "17vynkf6m5d039qkr4in1c9lflr8hnwp1fgzdwhj4q6jglipmnrh")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-moose" ,perl-moose) + ("perl-moosex-role-parameterized" ,perl-moosex-role-parameterized))) + (home-page "http://search.cpan.org/dist/MooseX-RelatedClassRoles") + (synopsis "Apply roles to a related Perl class") + (description "This module applies roles to make a subclass instead of +manually setting up a subclass.") + (license (package-license perl)))) + (define-public perl-moosex-role-parameterized (package (name "perl-moosex-role-parameterized") -- cgit v1.2.3 From 227687ae656a33220878f58e922e79f170b13081 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 11:58:38 -0500 Subject: gnu: Add CatalystX-RoleApplicator. * gnu/packages/web.scm (perl-catalystx-roleapplicator): New variable. --- gnu/packages/web.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 67167a7238..619ddf70b9 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1077,6 +1077,29 @@ those traits using \"new_with_traits\" in MooseX::Traits from MooseX::Traits::Pluggable.") (license (package-license perl)))) +(define-public perl-catalystx-roleapplicator + (package + (name "perl-catalystx-roleapplicator") + (version "0.005") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/H/HD/HDP/" + "CatalystX-RoleApplicator-" version ".tar.gz")) + (sha256 + (base32 + "0vwaapxn8g5hs2xp63c4dwv9jmapmji4272fakssvgc9frklg3p2")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-catalyst-runtime" ,perl-catalyst-runtime) + ("perl-moose" ,perl-moose) + ("perl-moosex-relatedclassroles" ,perl-moosex-relatedclassroles))) + (home-page "http://search.cpan.org/dist/CatalystX-RoleApplicator") + (synopsis "Apply roles to Catalyst classes") + (description "CatalystX::RoleApplicator applies roles to Catalyst +application classes.") + (license (package-license perl)))) + (define-public perl-cgi-simple (package (name "perl-cgi-simple") -- cgit v1.2.3 From b902eb1ccdcaf4616fea00ae6e1ed19235c5e169 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 11:59:37 -0500 Subject: gnu: Add Catalyst-TraitFor-Request-ProxyBase. * gnu/packages/web.scm (perl-catalyst-traitfor-request-proxybase): New variable. --- gnu/packages/web.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 619ddf70b9..53329bb9ce 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1044,6 +1044,37 @@ run an application on the web, either by doing them itself, or by letting you \"plug in\" existing Perl modules that do what you need.") (license (package-license perl)))) +(define-public perl-catalyst-traitfor-request-proxybase + (package + (name "perl-catalyst-traitfor-request-proxybase") + (version "0.000005") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/" + "Catalyst-TraitFor-Request-ProxyBase-" + version ".tar.gz")) + (sha256 + (base32 + "02kir63d5cs2ipj3fn1qlmmx3gqi1xqzrxfr4pv5vjhjgsm0zgx7")))) + (build-system perl-build-system) + (native-inputs + `(("perl-catalyst-runtime" ,perl-catalyst-runtime) + ("perl-catalystx-roleapplicator" ,perl-catalystx-roleapplicator) + ("perl-http-message" ,perl-http-message))) + (propagated-inputs + `(("perl-moose" ,perl-moose) + ("perl-namespace-autoclean" ,perl-namespace-autoclean) + ("perl-uri" ,perl-uri))) + (home-page + "http://search.cpan.org/dist/Catalyst-TraitFor-Request-ProxyBase") + (synopsis "Replace request base with value passed by HTTP proxy") + (description "This module is a Moose::Role which allows you more +flexibility in your application's deployment configurations when deployed +behind a proxy. Using this module, the request base ($c->req->base) is +replaced with the contents of the X-Request-Base header.") + (license (package-license perl)))) + (define-public perl-catalystx-component-traits (package (name "perl-catalystx-component-traits") -- cgit v1.2.3 From cbe8f0cdd6710c7eaff196a5951a915e2389b8ff Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 13:31:19 -0500 Subject: gnu: Add Test-utf8. * gnu/packages/perl.scm (perl-test-utf8): New variable. --- gnu/packages/perl.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index f5b44ccaf7..fe6c23201d 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -4043,6 +4043,27 @@ STDOUT, STDERR, warnings, exceptions, would-be exit codes, and return values from boxed blocks of test code.") (license (package-license perl)))) +(define-public perl-test-utf8 + (package + (name "perl-test-utf8") + (version "1.01") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/M/MA/MARKF/" + "Test-utf8-" version ".tar.gz")) + (sha256 + (base32 + "0yhvf735v334qqvp9zg7i66qyk6r4cbk5s2psv93d3fdd4bindzg")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Test-utf8") + (synopsis "UTF-8 testing in Perl") + (description "This module is a collection of tests useful for dealing with +UTF-8 strings in Perl. This module has two types of tests: The validity tests +check if a string is valid and not corrupt, whereas the characteristics tests +will check that string has a given set of characteristics.") + (license (package-license perl)))) + (define-public perl-test-warn (package (name "perl-test-warn") -- cgit v1.2.3 From bc834d733900c9f0fa6c64630540075fd1d4bfeb Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 14:14:39 -0500 Subject: gnu: Add Text-CSV. * gnu/packages/perl.scm (perl-text-csv): New variable. --- gnu/packages/perl.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index fe6c23201d..8aee516592 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -4172,6 +4172,26 @@ generation of tests in nested combinations of contexts.") text sequences from strings.") (license (package-license perl)))) +(define-public perl-text-csv + (package + (name "perl-text-csv") + (version "1.33") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/M/MA/MAKAMAKA/" + "Text-CSV-" version ".tar.gz")) + (sha256 + (base32 + "05a1nayxv04n0hx7y3m8327ijm34k9nhngrbxl18zmgzpawqynww")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Text-CSV") + (synopsis "Manipulate comma-separated values") + (description "Text::CSV provides facilities for the composition and +decomposition of comma-separated values. An instance of the Text::CSV class +can combine fields into a CSV string and parse a CSV string into fields.") + (license (package-license perl)))) + (define-public perl-text-diff (package (name "perl-text-diff") -- cgit v1.2.3 From 13b2552cdbdc47eb64296c5ec88030f9652389e3 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 14:19:05 -0500 Subject: gnu: Add Test-WWW-Mechanize-Catalyst. * gnu/packages/web.scm (perl-test-www-mechanize-catalyst): New variable. --- gnu/packages/web.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 53329bb9ce..2dafc56865 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1944,6 +1944,41 @@ either mocked HTTP or a locally spawned server.") WWW::Mechanize that incorporates features for web application testing.") (license l:artistic2.0))) +(define-public perl-test-www-mechanize-catalyst + (package + (name "perl-test-www-mechanize-catalyst") + (version "0.60") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/" + "Test-WWW-Mechanize-Catalyst-" version ".tar.gz")) + (sha256 + (base32 + "0nhhfrrai3ndziz873vpa1j0vljjnib4wqafd6yyvkf58ad7v0lv")))) + (build-system perl-build-system) + (native-inputs + `(("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session) + ("perl-catalyst-plugin-session-state-cookie" + ,perl-catalyst-plugin-session-state-cookie) + ("perl-test-exception" ,perl-test-exception) + ("perl-test-pod" ,perl-test-pod) + ("perl-test-utf8" ,perl-test-utf8))) + (propagated-inputs + `(("perl-catalyst-runtime" ,perl-catalyst-runtime) + ("perl-class-load" ,perl-class-load) + ("perl-libwww" ,perl-libwww) + ("perl-moose" ,perl-moose) + ("perl-namespace-clean" ,perl-namespace-clean) + ("perl-test-www-mechanize" ,perl-test-www-mechanize) + ("perl-www-mechanize" ,perl-www-mechanize))) + (home-page "http://search.cpan.org/dist/Test-WWW-Mechanize-Catalyst") + (synopsis "Test::WWW::Mechanize for Catalyst") + (description "The Test::WWW::Mechanize::Catalyst module meshes the +Test::WWW:Mechanize module and the Catalyst web application framework to allow +testing of Catalyst applications without needing to start up a web server.") + (license (package-license perl)))) + (define-public perl-test-www-mechanize-psgi (package (name "perl-test-www-mechanize-psgi") -- cgit v1.2.3 From 83261658fb5c4b8f5f67d0f157ad3549654f4019 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 14:20:10 -0500 Subject: gnu: Add Catalyst-View-Download. * gnu/packages/web.scm (perl-catalyst-view-download): New variable. --- gnu/packages/web.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 2dafc56865..d0cad375b2 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1075,6 +1075,32 @@ behind a proxy. Using this module, the request base ($c->req->base) is replaced with the contents of the X-Request-Base header.") (license (package-license perl)))) +(define-public perl-catalyst-view-download + (package + (name "perl-catalyst-view-download") + (version "0.09") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/G/GA/GAUDEON/" + "Catalyst-View-Download-" version ".tar.gz")) + (sha256 + (base32 + "1qgq6y9iwfbhbkbgpw9czang2ami6z8jk1zlagrzdisy4igqzkvs")))) + (build-system perl-build-system) + (native-inputs + `(("perl-catalyst-runtime" ,perl-catalyst-runtime) + ("perl-test-simple" ,perl-test-simple) + ("perl-test-www-mechanize-catalyst" ,perl-test-www-mechanize-catalyst) + ("perl-text-csv" ,perl-text-csv) + ("perl-xml-simple" ,perl-xml-simple))) + (home-page "http://search.cpan.org/dist/Catalyst-View-Download") + (synopsis "Download data in many formats") + (description "The purpose of this module is to provide a method for +downloading data into many supportable formats. For example, downloading a +table based report in a variety of formats (CSV, HTML, etc.). ") + (license (package-license perl)))) + (define-public perl-catalystx-component-traits (package (name "perl-catalystx-component-traits") -- cgit v1.2.3 From 54268c43c9a6ed05dee75cf66e295268bd9d1fc0 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 14:47:37 -0500 Subject: gnu: Add Spiffy. * gnu/packages/perl.scm (perl-spiffy): New variable. --- gnu/packages/perl.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 8aee516592..35481f86a3 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -3277,6 +3277,29 @@ of execution is aborted prematurely. This effectively allows lexically-scoped collector.") (license (package-license perl)))) +(define-public perl-spiffy + (package + (name "perl-spiffy") + (version "0.46") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/I/IN/INGY/" + "Spiffy-" version ".tar.gz")) + (sha256 + (base32 + "18qxshrjh0ibpzjm2314157mxlibh3smyg64nr4mq990hh564n4g")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Spiffy") + (synopsis "Spiffy Perl Interface Framework For You") + (description "Spiffy is a framework and methodology for doing object +oriented (OO) programming in Perl. Spiffy combines the best parts of +Exporter.pm, base.pm, mixin.pm and SUPER.pm into one magic foundation class. +It attempts to fix all the nits and warts of traditional Perl OO, in a clean, +straightforward and (perhaps someday) standard way. Spiffy borrows ideas from +other OO languages like Python, Ruby, Java and Perl 6.") + (license (package-license perl)))) + (define-public perl-stream-buffered (package (name "perl-stream-buffered") -- cgit v1.2.3 From 0ca74e1d2563b9a2556be2fbb0a4b3839c31ea73 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 14:48:04 -0500 Subject: gnu: Add Test-Base. * gnu/packages/perl.scm (perl-test-base): New variable. --- gnu/packages/perl.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 35481f86a3..2666c5219d 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -3602,6 +3602,32 @@ it can be used equally well for processing any other kind of text based documents: HTML, XML, POD, PostScript, LaTeX, and so on.") (license (package-license perl)))) +(define-public perl-test-base + (package + (name "perl-test-base") + (version "0.88") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/I/IN/INGY/" + "Test-Base-" version ".tar.gz")) + (sha256 + (base32 + "0fch1cvivnszbnwhpfmwv1rin04j5xkj1n1ylfmlxg6bm72qqdjj")))) + (build-system perl-build-system) + (native-inputs + `(("perl-algorithm-diff" ,perl-algorithm-diff) + ("perl-text-diff" ,perl-text-diff))) + (propagated-inputs + `(("perl-spiffy" ,perl-spiffy) + ("perl-test-deep" ,perl-test-deep))) + (home-page "http://search.cpan.org/dist/Test-Base") + (synopsis "Data-driven testing framework for Perl") + (description "Test::Base gives a way to trivially write your own test +framework base class. It concentrates on offering reusable data driven +patterns, so that you can write tests with a minimum of code.") + (license (package-license perl)))) + (define-public perl-test-cleannamespaces (package (name "perl-test-cleannamespaces") -- cgit v1.2.3 From 41778634e2db3cade202f077c92e380e8249dc88 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 14:48:41 -0500 Subject: gnu: Add Test-YAML. * gnu/packages/perl.scm (perl-test-yaml): New variable. --- gnu/packages/perl.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 2666c5219d..b49bf2f382 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -4202,6 +4202,27 @@ installed.") generation of tests in nested combinations of contexts.") (license (package-license perl)))) ;See LICENSE +(define-public perl-test-yaml + (package + (name "perl-test-yaml") + (version "1.05") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/I/IN/INGY/" + "Test-YAML-" version ".tar.gz")) + (sha256 + (base32 + "079nayc0fp2fwjv8s2yr069bdffln699j6z3lqr5dpx1v2qg82ck")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-test-base" ,perl-test-base))) + (home-page "http://search.cpan.org/dist/Test-YAML") + (synopsis "Testing module for YAML implementations") + (description "Test::YAML is a subclass of Test::Base with YAML specific +support.") + (license (package-license perl)))) + (define-public perl-text-balanced (package (name "perl-text-balanced") -- cgit v1.2.3 From 419dd41152dc84e57fbab4e488cfd579f7cd8961 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 14:49:06 -0500 Subject: gnu: Add Perl YAML. * gnu/packages/perl.scm (perl-yaml): New variable. --- gnu/packages/perl.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index b49bf2f382..902192bb6f 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -4563,6 +4563,27 @@ it. With this module, you can add your own magic to any variable without having to write a single line of XS.") (license (package-license perl)))) +(define-public perl-yaml + (package + (name "perl-yaml") + (version "1.14") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/I/IN/INGY/" + "YAML-" version ".tar.gz")) + (sha256 + (base32 + "0sswbkyisgny7ksw34n7zdaxrhsbbn7dgjb9gjybpzhcnml476kc")))) + (build-system perl-build-system) + (native-inputs + `(("perl-test-yaml" ,perl-test-yaml))) + (home-page "http://search.cpan.org/dist/YAML") + (synopsis "YAML for Perl") + (description "The YAML.pm module implements a YAML Loader and Dumper based +on the YAML 1.0 specification.") + (license (package-license perl)))) + (define-public perl-yaml-tiny (package (name "perl-yaml-tiny") -- cgit v1.2.3 From c985cfe624dd388ef342399360e308386fe8c94f Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 3 Apr 2015 14:49:48 -0500 Subject: gnu: Add Catalyst-View-JSON. * gnu/packages/web.scm (perl-catalyst-view-json): New variable. --- gnu/packages/web.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index d0cad375b2..42d58c8989 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1101,6 +1101,31 @@ downloading data into many supportable formats. For example, downloading a table based report in a variety of formats (CSV, HTML, etc.). ") (license (package-license perl)))) +(define-public perl-catalyst-view-json + (package + (name "perl-catalyst-view-json") + (version "0.35") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/" + "Catalyst-View-JSON-" version ".tar.gz")) + (sha256 + (base32 + "184pyghlrkl7p387bnyvswi2d9myvdg4v3lax6xrd59shskvpmkm")))) + (build-system perl-build-system) + (native-inputs + `(("perl-yaml" ,perl-yaml))) + (inputs + `(("perl-catalyst-runtime" ,perl-catalyst-runtime) + ("perl-json-maybexs" ,perl-json-maybexs) + ("perl-mro-compat" ,perl-mro-compat))) + (home-page "http://search.cpan.org/dist/Catalyst-View-JSON") + (synopsis "Catalyst JSON view") + (description "Catalyst::View::JSON is a Catalyst View handler that returns +stash data in JSON format.") + (license (package-license perl)))) + (define-public perl-catalystx-component-traits (package (name "perl-catalystx-component-traits") -- cgit v1.2.3 From 5868a8bf9debed5cc3e62da23cf042189f7f7f69 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Sat, 28 Mar 2015 20:09:37 +0100 Subject: gnu: ghc: Fix i686 build. * gnu/packages/haskell.scm (ghc-bootstrap-7.8.4): Replace with ... (ghc-bootstrap-i686-7.8.4, ghc-bootstrap-x86_64-7.8.4): ... these. (ghc)[native-inputs]: Select the appropriate bootstrap. --- gnu/packages/haskell.scm | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 183d0eb4cb..beecccb3bf 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -33,22 +33,23 @@ #:use-module (gnu packages ncurses) #:use-module (gnu packages python)) -;; We use bootstrap binaries with a fix version which can be used to build -;; more versions of the GHC compiler. -(define ghc-bootstrap-7.8.4 +(define ghc-bootstrap-x86_64-7.8.4 (origin (method url-fetch) - (uri (string-append "https://www.haskell.org/ghc/dist/" - "7.8.4/ghc-7.8.4-" - (if (string-match "x86_64" (%current-system)) - "x86_64" - "i386") - "-unknown-linux-deb7.tar.xz")) + (uri + "https://www.haskell.org/ghc/dist/7.8.4/ghc-7.8.4-x86_64-unknown-linux-deb7.tar.xz") (sha256 (base32 - (if (string-match "x86_64" (%current-system)) - "13azsl53xgj20mi1hj9x0xb32vvcvs6cpmvwx6znxhas7blh0bpn" - "0wj5s435j0zgww70bj1d3f6wvnnpzlxwvwcyh2qv4qjq5z8j64kg"))))) + "13azsl53xgj20mi1hj9x0xb32vvcvs6cpmvwx6znxhas7blh0bpn")))) + +(define ghc-bootstrap-i686-7.8.4 + (origin + (method url-fetch) + (uri + "https://www.haskell.org/ghc/dist/7.8.4/ghc-7.8.4-i386-unknown-linux-deb7.tar.xz") + (sha256 + (base32 + "0wj5s435j0zgww70bj1d3f6wvnnpzlxwvwcyh2qv4qjq5z8j64kg")))) ;; 43 tests out of 3965 fail. ;; @@ -99,7 +100,10 @@ ("ghostscript" ,ghostscript) ; for tests ("patchelf" ,patchelf) ;; GHC is built with GHC. Therefore we need bootstrap binaries. - ("ghc-binary" ,ghc-bootstrap-7.8.4))) + ("ghc-binary" + ,(if (string-match "x86_64" (or (%current-target-system) (%current-system))) + ghc-bootstrap-x86_64-7.8.4 + ghc-bootstrap-i686-7.8.4)))) (arguments `(#:test-target "test" ;; We get a smaller number of test failures by disabling parallel test -- cgit v1.2.3 From 14dfdf2e0e4d1f18bcc1becf87aef932d5721d91 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 09:36:56 +0100 Subject: build-system: Add haskell-build-system. * guix/build-system/haskell.scm: New file. * guix/build/haskell-build-system.scm: New file. * doc/guix.texi: Add section on 'haskell-build-system'. --- doc/guix.texi | 19 ++++ guix/build-system/haskell.scm | 135 ++++++++++++++++++++++ guix/build/haskell-build-system.scm | 220 ++++++++++++++++++++++++++++++++++++ 3 files changed, 374 insertions(+) create mode 100644 guix/build-system/haskell.scm create mode 100644 guix/build/haskell-build-system.scm diff --git a/doc/guix.texi b/doc/guix.texi index fdf65c72b9..f7f22e5b8a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -1955,6 +1955,25 @@ Python package is used to run the script can be specified with the @code{#:python} parameter. @end defvr +@defvr {Scheme Variable} haskell-build-system +This variable is exported by @code{(guix build-system haskell)}. It +implements the Cabal build procedure used by Haskell packages, which +involves running @code{runhaskell Setup.hs configure +--prefix=/gnu/store/@dots{}} and @code{runhaskell Setup.hs build}. +Instead of installing the package by running @code{runhaskell Setup.hs +install}, to avoid trying to register libraries in the read-only +compiler store directory, the build system uses @code{runhaskell +Setup.hs copy}, followed by @code{runhaskell Setup.hs register}. In +addition, the build system generates the package documentation by +running @code{runhaskell Setup.hs haddock}, unless @code{#:haddock? #f} +is passed. Optional Haddock parameters can be passed with the help of +the @code{#:haddock-flags} parameter. If the file @code{Setup.hs} is +not found, the build system looks for @code{Setup.lhs} instead. + +Which Haskell compiler is used can be specified with the @code{#:haskell} +parameter which defaults to @code{ghc}. +@end defvr + Lastly, for packages that do not need anything as sophisticated, a ``trivial'' build system is provided. It is trivial in the sense that it provides basically no support: it does not pull any implicit inputs, diff --git a/guix/build-system/haskell.scm b/guix/build-system/haskell.scm new file mode 100644 index 0000000000..79faa5a09e --- /dev/null +++ b/guix/build-system/haskell.scm @@ -0,0 +1,135 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Federico Beffa +;;; +;;; 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 build-system haskell) + #:use-module (guix store) + #:use-module (guix utils) + #:use-module (guix packages) + #:use-module (guix derivations) + #:use-module (guix build-system) + #:use-module (guix build-system gnu) + #:use-module (ice-9 match) + #:use-module (srfi srfi-26) + #:export (haskell-build + haskell-build-system)) + +;; Commentary: +;; +;; Standard build procedure for Haskell packages using 'Setup.hs'. This is +;; implemented as an extension of 'gnu-build-system'. +;; +;; Code: + +(define (default-haskell) + "Return the default Haskell package." + ;; Lazily resolve the binding to avoid a circular dependency. + (let ((haskell (resolve-interface '(gnu packages haskell)))) + (module-ref haskell 'ghc))) + +(define* (lower name + #:key source inputs native-inputs outputs system target + (haskell (default-haskell)) + #:allow-other-keys + #:rest arguments) + "Return a bag for NAME." + (define private-keywords + '(#:target #:haskell #:inputs #:native-inputs)) + + (and (not target) ;XXX: no cross-compilation + (bag + (name name) + (system system) + (host-inputs `(,@(if source + `(("source" ,source)) + '()) + ,@inputs + + ;; Keep the standard inputs of 'gnu-build-system'. + ,@(standard-packages))) + (build-inputs `(("haskell" ,haskell) + ,@native-inputs)) + (outputs outputs) + (build haskell-build) + (arguments (strip-keyword-arguments private-keywords arguments))))) + +(define* (haskell-build store name inputs + #:key source + (haddock? #t) + (haddock-flags ''()) + (tests? #t) + (test-target "test") + (configure-flags ''()) + (phases '(@ (guix build haskell-build-system) + %standard-phases)) + (outputs '("out")) + (search-paths '()) + (system (%current-system)) + (guile #f) + (imported-modules '((guix build haskell-build-system) + (guix build gnu-build-system) + (guix build utils))) + (modules '((guix build haskell-build-system) + (guix build utils)))) + "Build SOURCE using HASKELL, and with INPUTS. This assumes that SOURCE +provides a 'Setup.hs' file as its build system." + (define builder + `(begin + (use-modules ,@modules) + (haskell-build #:name ,name + #:source ,(match (assoc-ref inputs "source") + (((? derivation? source)) + (derivation->output-path source)) + ((source) + source) + (source + source)) + #:configure-flags ,configure-flags + #:haddock-flags ,haddock-flags + #:system ,system + #:test-target ,test-target + #:tests? ,tests? + #:haddock? ,haddock? + #:phases ,phases + #:outputs %outputs + #:search-paths ',(map search-path-specification->sexp + search-paths) + #:inputs %build-inputs))) + + (define guile-for-build + (match guile + ((? package?) + (package-derivation store guile system #:graft? #f)) + (#f ; the default + (let* ((distro (resolve-interface '(gnu packages commencement))) + (guile (module-ref distro 'guile-final))) + (package-derivation store guile system #:graft? #f))))) + + (build-expression->derivation store name builder + #:inputs inputs + #:system system + #:modules imported-modules + #:outputs outputs + #:guile-for-build guile-for-build)) + +(define haskell-build-system + (build-system + (name 'haskell) + (description "The standard Haskell build system") + (lower lower))) + +;;; haskell.scm ends here diff --git a/guix/build/haskell-build-system.scm b/guix/build/haskell-build-system.scm new file mode 100644 index 0000000000..52b9c79d2f --- /dev/null +++ b/guix/build/haskell-build-system.scm @@ -0,0 +1,220 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Federico Beffa +;;; +;;; 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 build haskell-build-system) + #:use-module ((guix build gnu-build-system) #:prefix gnu:) + #:use-module (guix build utils) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:use-module (ice-9 rdelim) + #:use-module (ice-9 regex) + #:use-module (ice-9 match) + #:export (%standard-phases + haskell-build)) + +;; Commentary: +;; +;; Builder-side code of the standard Haskell package build procedure. +;; +;; The Haskell compiler, to find libraries, relies on a library database with +;; a binary cache. For GHC the cache has to be named 'package.cache'. If every +;; library would generate the cache at build time, then they would clash in +;; profiles. For this reason we do not generate the cache when we generate +;; libraries substitutes. Instead: +;; +;; - At build time we use the 'setup-compiler' phase to generate a temporary +;; library database and its cache. +;; +;; - We generate the cache when a profile is created. +;; +;; Code: + +;; Directory where we create the temporary libraries database with its cache +;; as required by the compiler. +(define %tmp-db-dir + (string-append (or (getenv "TMP") "/tmp") + "/package.conf.d")) + +(define (run-setuphs command params) + (let ((setup-file (cond + ((file-exists? "Setup.hs") + "Setup.hs") + ((file-exists? "Setup.lhs") + "Setup.lhs") + (else + #f)))) + (if setup-file + (begin + (format #t "running \"runhaskell Setup.hs\" with command ~s \ +and parameters ~s~%" + command params) + (zero? (apply system* "runhaskell" setup-file command params))) + (error "no Setup.hs nor Setup.lhs found")))) + +(define* (configure #:key outputs inputs tests? (configure-flags '()) + #:allow-other-keys) + "Configure a given Haskell package." + (let* ((out (assoc-ref outputs "out")) + (input-dirs (match inputs + (((_ . dir) ...) + dir) + (_ '()))) + (params (append `(,(string-append "--prefix=" out)) + `(,(string-append + "--docdir=" out "/share/doc/" + (package-name-version out))) + `(,(string-append "--package-db=" %tmp-db-dir)) + '("--global") + `(,(string-append + "--extra-include-dirs=" + (list->search-path-as-string + (search-path-as-list '("include") input-dirs) + ":"))) + `(,(string-append + "--extra-lib-dirs=" + (list->search-path-as-string + (search-path-as-list '("lib") input-dirs) + ":"))) + (if tests? + '("--enable-tests") + '()) + configure-flags))) + (run-setuphs "configure" params))) + +(define* (build #:rest empty) + "Build a given Haskell package." + (run-setuphs "build" '())) + +(define* (install #:rest empty) + "Install a given Haskell package." + (run-setuphs "copy" '())) + +(define (package-name-version store-dir) + "Given a store directory STORE-DIR return 'name-version' of the package." + (let* ((base (basename store-dir))) + (string-drop base + (+ 1 (string-index base #\-))))) + +(define (grep rx port) + "Given a regular-expression RX including a group, read from PORT until the +first match and return the content of the group." + (let ((line (read-line port))) + (if (eof-object? line) + #f + (let ((rx-result (regexp-exec rx line))) + (if rx-result + (match:substring rx-result 1) + (grep rx port)))))) + +(define* (setup-compiler #:key system inputs outputs #:allow-other-keys) + "Setup the compiler environment." + (let* ((haskell (assoc-ref inputs "haskell")) + (name-version (package-name-version haskell))) + (cond + ((string-match "ghc" name-version) + (make-ghc-package-database system inputs outputs)) + (else + (format #t + "Compiler ~a not supported~%" name-version))))) + +(define (make-ghc-package-database system inputs outputs) + "Generate the GHC package database." + (let* ((haskell (assoc-ref inputs "haskell")) + (input-dirs (match inputs + (((_ . dir) ...) + dir) + (_ '()))) + (conf-dirs (search-path-as-list + `(,(string-append "lib/" system "-" + (package-name-version haskell) + "/package.conf.d")) + input-dirs)) + (conf-files (append-map (cut find-files <> "\\.conf$") conf-dirs))) + (mkdir-p %tmp-db-dir) + (for-each (lambda (file) + (copy-file file + (string-append %tmp-db-dir "/" (basename file)))) + conf-files) + (zero? (system* "ghc-pkg" + (string-append "--package-db=" %tmp-db-dir) + "recache")))) + +(define* (register #:key name system inputs outputs #:allow-other-keys) + "Generate the compiler registration file for a given Haskell package. Don't +generate the cache as it would clash in user profiles." + (let* ((out (assoc-ref outputs "out")) + (haskell (assoc-ref inputs "haskell")) + (lib (string-append out "/lib")) + (config-dir (string-append lib "/" system + "-" (package-name-version haskell) + "/package.conf.d")) + (id-rx (make-regexp "^id: *(.*)$")) + (lib-rx (make-regexp "lib.*\\.(a|so)")) + (config-file (string-append config-dir "/" name ".conf")) + (params + (list (string-append "--gen-pkg-config=" config-file)))) + (unless (null? (find-files lib lib-rx)) + (mkdir-p config-dir) + (run-setuphs "register" params) + (let ((config-file-name+id + (call-with-ascii-input-file config-file (cut grep id-rx <>)))) + (rename-file config-file + (string-append config-dir "/" config-file-name+id + ".conf")))) + #t)) + +(define* (check #:key tests? test-target #:allow-other-keys) + "Run the test suite of a given Haskell package." + (if tests? + (run-setuphs test-target '()) + (begin + (format #t "test suite not run~%") + #t))) + +(define* (haddock #:key outputs haddock? haddock-flags #:allow-other-keys) + "Run the test suite of a given Haskell package." + (if haddock? + (let* ((out (assoc-ref outputs "out")) + (doc-src (string-append (getcwd) "/dist/doc")) + (doc-dest (string-append out "/share/doc/" + (package-name-version out)))) + (if (run-setuphs "haddock" haddock-flags) + (begin + (copy-recursively doc-src doc-dest) + #t) + #f)) + #t)) + +(define %standard-phases + (modify-phases gnu:%standard-phases + (add-before configure setup-compiler setup-compiler) + (add-after install haddock haddock) + (add-after install register register) + (replace install install) + (replace check check) + (replace build build) + (replace configure configure))) + +(define* (haskell-build #:key inputs (phases %standard-phases) + #:allow-other-keys #:rest args) + "Build the given Haskell package, applying all of PHASES in order." + (apply gnu:gnu-build + #:inputs inputs #:phases phases + args)) + +;;; haskell-build-system.scm ends here -- cgit v1.2.3 From a952b10c23c9ca5931793d862a718b55492a046d Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 4 Apr 2015 03:34:28 -0400 Subject: gnu: source-highlight: Update to 3.1.8. * gnu/packages/pretty-print.scm (source-highlight): Update to 3.1.8. --- gnu/packages/pretty-print.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm index 1576c3dfea..ba6944e3b3 100644 --- a/gnu/packages/pretty-print.scm +++ b/gnu/packages/pretty-print.scm @@ -144,7 +144,7 @@ different programming languages.") (define-public source-highlight (package (name "source-highlight") - (version "3.1.7") + (version "3.1.8") (source (origin (method url-fetch) @@ -152,7 +152,7 @@ different programming languages.") version ".tar.gz")) (sha256 (base32 - "1s49ld8cnpzhhwq0r7s0sfm3cg3nhhm0wla27lwraifrrl3y1cp1")) + "18xdalxg7yzrxc1njzgw7aryq2jdm7zq2yqz41sc7k6il5z6lcq1")) (patches (list (search-patch ;; Patch submitted as Savannah item #41786 -- cgit v1.2.3 From 353fda815e8b7863408857048aff224bbd0716d5 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 4 Apr 2015 03:32:37 -0400 Subject: gnu: ed: Update to 1.11. * gnu/packages/ed.scm (ed): Update to 1.11. --- gnu/packages/ed.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ed.scm b/gnu/packages/ed.scm index c2b19292f0..0d2b24cf8d 100644 --- a/gnu/packages/ed.scm +++ b/gnu/packages/ed.scm @@ -27,14 +27,14 @@ (define-public ed (package (name "ed") - (version "1.10") + (version "1.11") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/ed/ed-" version ".tar.lz")) (sha256 (base32 - "16kycdm5fcvpdr41hxb2da8da6jzs9dqznsg5552z6rh28n0jh4m")))) + "0d518yhs3kpdpv9fbpa1rhxk2fbry2yzcknrdaa20pi2bzg6w55x")))) (build-system gnu-build-system) (native-inputs `(("lzip" ,lzip))) (arguments -- cgit v1.2.3 From f905286b111e0752079e2476bea879d3477642b0 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 4 Apr 2015 11:00:21 -0400 Subject: gnu: source-highlight: Remove obsolete patch. This should have been done in a952b10c23c9ca5931793d862a718b55492a046d. * gnu/packages/patches/source-highlight-regexrange-test.patch: Remove. * gnu-system.am (dist_patch_DATA): Remove it. * gnu/packages/pretty-print.scm (source-highlight)[source]: Remove patch. --- gnu-system.am | 1 - .../patches/source-highlight-regexrange-test.patch | 15 --------------- gnu/packages/pretty-print.scm | 6 +----- 3 files changed, 1 insertion(+), 21 deletions(-) delete mode 100644 gnu/packages/patches/source-highlight-regexrange-test.patch diff --git a/gnu-system.am b/gnu-system.am index b4b886ba2f..8a72b5641e 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -530,7 +530,6 @@ dist_patch_DATA = \ gnu/packages/patches/slim-config.patch \ gnu/packages/patches/slim-sigusr1.patch \ gnu/packages/patches/soprano-find-clucene.patch \ - gnu/packages/patches/source-highlight-regexrange-test.patch \ gnu/packages/patches/superlu-dist-scotchmetis.patch \ gnu/packages/patches/tcsh-fix-autotest.patch \ gnu/packages/patches/teckit-cstdio.patch \ diff --git a/gnu/packages/patches/source-highlight-regexrange-test.patch b/gnu/packages/patches/source-highlight-regexrange-test.patch deleted file mode 100644 index 298c831b35..0000000000 --- a/gnu/packages/patches/source-highlight-regexrange-test.patch +++ /dev/null @@ -1,15 +0,0 @@ -Disable a single check. The failure is discussed at: - - https://savannah.gnu.org/bugs/index.php?41786 - ---- a/lib/tests/test_regexranges_main.cpp 2012-04-14 08:58:25.000000000 -0500 -+++ b/lib/tests/test_regexranges_main.cpp 2014-03-05 23:49:23.520402043 -0600 -@@ -52,7 +52,7 @@ - check_range_regex("simple regex"); - check_range_regex("[[:alpha:]]+"); - // test with a wrong regular expression -- check_range_regex("{notclosed", false); -+ // check_range_regex("{notclosed", false); - - // reset regular expressions - ranges.clear(); diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm index ba6944e3b3..81b6537f15 100644 --- a/gnu/packages/pretty-print.scm +++ b/gnu/packages/pretty-print.scm @@ -152,11 +152,7 @@ different programming languages.") version ".tar.gz")) (sha256 (base32 - "18xdalxg7yzrxc1njzgw7aryq2jdm7zq2yqz41sc7k6il5z6lcq1")) - (patches - (list (search-patch - ;; Patch submitted as Savannah item #41786 - "source-highlight-regexrange-test.patch"))))) + "18xdalxg7yzrxc1njzgw7aryq2jdm7zq2yqz41sc7k6il5z6lcq1")))) (build-system gnu-build-system) ;; The ctags that comes with emacs does not support the --excmd options, ;; so can't be used -- cgit v1.2.3 From 43754738e030a4083b0881b2264b905bc563e78b Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 4 Apr 2015 11:15:30 -0400 Subject: gnu: Perl GD: Add stub patch. This is a temporary fix to enable hydra to complete evaluations, which were broken by f7ee7a9b06a386863d7752ba028a79bb98d3504d due to a missing patch file. The real patch will be put into place in a later commit. * gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch: New file. This is just a stub. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch | 1 + 2 files changed, 2 insertions(+) create mode 100644 gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch diff --git a/gnu-system.am b/gnu-system.am index 8a72b5641e..95c4eeb6fd 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -500,6 +500,7 @@ dist_patch_DATA = \ gnu/packages/patches/patchelf-rework-for-arm.patch \ gnu/packages/patches/patchutils-xfail-gendiff-tests.patch \ gnu/packages/patches/pavucontrol-sigsegv.patch \ + gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch \ gnu/packages/patches/perl-no-sys-dirs.patch \ gnu/packages/patches/perl-tk-x11-discover.patch \ gnu/packages/patches/petsc-fix-threadcomm.patch \ diff --git a/gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch b/gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch new file mode 100644 index 0000000000..0ce86a6bd1 --- /dev/null +++ b/gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch @@ -0,0 +1 @@ +This is a stub, awaiting the actual patch. -- cgit v1.2.3 From 88f7066591481362868ac96a9e367fd91b06de11 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sat, 4 Apr 2015 13:14:38 -0400 Subject: gnu: Add gnome-terminal. * gnu/packages/gnome.scm (gnome-terminal): New variable. --- gnu/packages/gnome.scm | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 6e03a63c46..445b4a177e 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2014 Eric Bavier ;;; Copyright © 2014, 2015 Federico Beffa ;;; Copyright © 2015 Sou Bunnbu +;;; Copyright © 2015 Andy Wingo ;;; ;;; This file is part of GNU Guix. ;;; @@ -42,6 +43,7 @@ #:use-module (gnu packages gnutls) #:use-module (gnu packages iso-codes) #:use-module (gnu packages libcanberra) + #:use-module (gnu packages linux) #:use-module (gnu packages image) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -1668,3 +1670,51 @@ library.") "Mines (previously gnomine) is a puzzle game where you locate mines floating in an ocean using only your brain and a little bit of luck.") (license license:gpl2+))) + +(define-public gnome-terminal + (package + (name "gnome-terminal") + (version "3.16.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1s3zwqxs4crlqmh6l7s7n87pbmh2nnjdvhxlkalh58pbl0bk0qrd")))) + (build-system glib-or-gtk-build-system) + (arguments + '(#:configure-flags + (list "--disable-migration" "--disable-search-provider" + "--without-nautilus-extension") + #:phases + (modify-phases %standard-phases + (add-before configure patch-/bin/true + (lambda _ + (substitute* "configure" + (("/bin/true") (which "true")))))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("desktop-file-utils" ,desktop-file-utils) + ("intltool" ,intltool) + ("itstool" ,itstool))) + (inputs + `(("gtk+" ,gtk+) + ("vte" ,vte) + ("gnutls" ,gnutls) + ("dconf" ,dconf) + ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("util-linux" ,util-linux) + ("vala" ,vala))) + (home-page "https://wiki.gnome.org/Apps/Terminal") + (synopsis "Terminal emulator") + (description + "GNOME Terminal is a terminal emulator application for accessing a +UNIX shell environment which can be used to run programs available on +your system. + +It supports several profiles, multiple tabs and implements several +keyboard shortcuts.") + (license license:gpl3+))) -- cgit v1.2.3 From 4cd27cd60ab2e8246fff1372a469f2a0d6b41bb2 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 4 Apr 2015 13:47:28 -0400 Subject: gnu: node: Update to 0.12.2. --- gnu/packages/node.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index b2a5d033d2..8d9a0f5be9 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -35,14 +35,14 @@ (define-public node (package (name "node") - (version "0.12.0") + (version "0.12.2") (source (origin (method url-fetch) (uri (string-append "http://nodejs.org/dist/v" version "/node-v" version ".tar.gz")) (sha256 (base32 - "0cifd2qhpyrbxx71a4hsagzk24qas8m5zvwcyhx69cz9yhxf404p")))) + "0bbp58p3iwsp35c37brkkh6bmjjhwsw2nlr8srz3wqryx6nphzmc")))) (native-inputs `(("python" ,python-2) ("perl" ,perl) ("gcc" ,gcc-4.9) -- cgit v1.2.3 From 533d1768f47520ac7010adc550b0dd9783ebb011 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Tue, 17 Mar 2015 10:19:36 -0400 Subject: store: Add query-path-info operation. * guix/store.scm (): New record type. (read-path-info): New procedure. (read-arg): Add 'path-info' syntax. (query-path-info): New variable. * tests/store.scm ("query-path-info"): New test. --- guix/store.scm | 34 +++++++++++++++++++++++++++++++++- tests/store.scm | 10 ++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/guix/store.scm b/guix/store.scm index 3d6b06989c..10b9062db2 100644 --- a/guix/store.scm +++ b/guix/store.scm @@ -60,6 +60,7 @@ valid-path? query-path-hash hash-part->path + query-path-info add-text-to-store add-to-store build-things @@ -79,6 +80,13 @@ substitutable-paths substitutable-path-info + path-info? + path-info-deriver + path-info-hash + path-info-references + path-info-registration-time + path-info-nar-size + references requisites referrers @@ -212,6 +220,24 @@ (cons (substitutable path deriver refs dl-size nar-size) result)))))) +;; Information about a store path. +(define-record-type + (path-info deriver hash references registration-time nar-size) + path-info? + (deriver path-info-deriver) + (hash path-info-hash) + (references path-info-references) + (registration-time path-info-registration-time) + (nar-size path-info-nar-size)) + +(define (read-path-info p) + (let ((deriver (read-store-path p)) + (hash (base16-string->bytevector (read-string p))) + (refs (read-store-path-list p)) + (registration-time (read-int p)) + (nar-size (read-long-long p))) + (path-info deriver hash refs registration-time nar-size))) + (define-syntax write-arg (syntax-rules (integer boolean file string string-list string-pairs store-path store-path-list base16) @@ -236,7 +262,7 @@ (define-syntax read-arg (syntax-rules (integer boolean string store-path store-path-list - substitutable-path-list base16) + substitutable-path-list path-info base16) ((_ integer p) (read-int p)) ((_ boolean p) @@ -249,6 +275,8 @@ (read-store-path-list p)) ((_ substitutable-path-list p) (read-substitutable-path-list p)) + ((_ path-info p) + (read-path-info p)) ((_ base16 p) (base16-string->bytevector (read-string p))))) @@ -541,6 +569,10 @@ string). Raise an error if no such path exists." ;; /HASH.narinfo. (query-path-from-hash-part server hash-part)))) +(define-operation (query-path-info (store-path path)) + "Return the info (hash, references, etc.) for PATH." + path-info) + (define add-text-to-store ;; A memoizing version of `add-to-store', to avoid repeated RPCs with ;; the very same arguments during a given session. diff --git a/tests/store.scm b/tests/store.scm index f778c2086d..eeceed45c1 100644 --- a/tests/store.scm +++ b/tests/store.scm @@ -606,6 +606,16 @@ (file (add %store "foo" "Lowered."))) (call-with-input-file file get-string-all))) +(test-assert "query-path-info" + (let* ((ref (add-text-to-store %store "ref" "foo")) + (item (add-text-to-store %store "item" "bar" (list ref))) + (info (query-path-info %store item))) + (and (equal? (path-info-references info) (list ref)) + (equal? (path-info-hash info) + (sha256 + (string->utf8 + (call-with-output-string (cut write-file item <>)))))))) + (test-end "store") -- cgit v1.2.3 From aff8ce7c742443eaab0b0c6b6f27e6539f3af85f Mon Sep 17 00:00:00 2001 From: David Thompson Date: Tue, 17 Mar 2015 10:21:31 -0400 Subject: scripts: Add 'publish' command. * guix/scripts/publish.scm: New file. * po/guix/POTFILES.in: Add it. * tests/publish.scm: New file. * Makefile.am (MODULES): Add script module. (SCM_TESTS): Add test module. * doc/guix.texi ("Invoking guix publish"): New node. --- Makefile.am | 4 +- doc/guix.texi | 52 +++++++++- guix/scripts/publish.scm | 243 +++++++++++++++++++++++++++++++++++++++++++++++ po/guix/POTFILES.in | 1 + tests/publish.scm | 114 ++++++++++++++++++++++ 5 files changed, 412 insertions(+), 2 deletions(-) create mode 100644 guix/scripts/publish.scm create mode 100644 tests/publish.scm diff --git a/Makefile.am b/Makefile.am index cf709986ed..e15e43fdd4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -105,6 +105,7 @@ MODULES = \ guix/scripts/import/gnu.scm \ guix/scripts/import/nix.scm \ guix/scripts/environment.scm \ + guix/scripts/publish.scm \ guix.scm \ $(GNU_SYSTEM_MODULES) @@ -180,7 +181,8 @@ SCM_TESTS = \ tests/profiles.scm \ tests/syscalls.scm \ tests/gremlin.scm \ - tests/lint.scm + tests/lint.scm \ + tests/publish.scm if HAVE_GUILE_JSON diff --git a/doc/guix.texi b/doc/guix.texi index f7f22e5b8a..f1dea45f1d 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -121,6 +121,7 @@ Utilities * Invoking guix refresh:: Updating package definitions. * Invoking guix lint:: Finding errors in package definitions. * Invoking guix environment:: Setting up development environments. +* Invoking guix publish:: Sharing substitutes. GNU Distribution @@ -2527,7 +2528,7 @@ To illustrate the idea, here is an example of a gexp: #~(begin (mkdir #$output) (chdir #$output) - (symlink (string-append #$coreutils "/bin/ls") + (symlink (string-append #$coreutils "/bin/ls") "list-files"))) @end example @@ -2777,6 +2778,7 @@ programming interface of Guix in a convenient way. * Invoking guix refresh:: Updating package definitions. * Invoking guix lint:: Finding errors in package definitions. * Invoking guix environment:: Setting up development environments. +* Invoking guix publish:: Sharing substitutes. @end menu @node Invoking guix build @@ -3439,6 +3441,54 @@ environment. It also supports all of the common build options that @command{guix build} supports (@pxref{Invoking guix build, common build options}). +@node Invoking guix publish +@section Invoking @command{guix publish} + +The purpose of @command{guix publish} is to enable users to easily share +their store with others. When @command{guix publish} runs, it spawns an +HTTP server which allows anyone with network access to obtain +substitutes from it. This means that any machine running Guix can also +act as if it were a build farm, since the HTTP interface is +Hydra-compatible. + +For security, each substitute is signed, allowing recipients to check +their authenticity and integrity (@pxref{Substitutes}). Because +@command{guix publish} uses the system's signing key, which is only +readable by the system administrator, it must run as root. + +The general syntax is: + +@example +guix publish @var{options}@dots{} +@end example + +Running @command{guix publish} without any additional arguments will +spawn an HTTP server on port 8080: + +@example +guix publish +@end example + +Once a publishing server has been authorized (@pxref{Invoking guix +archive}), the daemon may download substitutes from it: + +@example +guix-daemon --substitute-urls=http://example.org:8080 +@end example + +The following options are available: + +@table @code +@item --port=@var{port} +@itemx -p @var{port} +Listen for HTTP requests on @var{port}. + +@item --repl[=@var{port}] +@itemx -r [@var{port}] +Spawn a Guile REPL server (@pxref{REPL Servers,,, guile, GNU Guile +Reference Manual}) on @var{port} (37146 by default). +@end table + @c ********************************************************************* @node GNU Distribution @chapter GNU Distribution diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm new file mode 100644 index 0000000000..c7c66fefbe --- /dev/null +++ b/guix/scripts/publish.scm @@ -0,0 +1,243 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 David Thompson +;;; +;;; 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 scripts publish) + #:use-module ((system repl server) #:prefix repl:) + #:use-module (ice-9 binary-ports) + #:use-module (ice-9 format) + #:use-module (ice-9 match) + #:use-module (ice-9 regex) + #:use-module (rnrs io ports) + #:use-module (rnrs bytevectors) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-2) + #:use-module (srfi srfi-26) + #:use-module (srfi srfi-37) + #:use-module (web http) + #:use-module (web request) + #:use-module (web response) + #:use-module (web server) + #:use-module (web uri) + #:use-module (guix base32) + #:use-module (guix base64) + #:use-module (guix config) + #:use-module (guix derivations) + #:use-module (guix hash) + #:use-module (guix pki) + #:use-module (guix pk-crypto) + #:use-module (guix store) + #:use-module (guix serialization) + #:use-module (guix ui) + #:export (guix-publish)) + +(define (show-help) + (format #t (_ "Usage: guix publish [OPTION]... +Publish ~a over HTTP.\n") %store-directory) + (display (_ " + -p, --port=PORT listen on PORT")) + (display (_ " + -r, --repl[=PORT] spawn REPL server on PORT")) + (newline) + (display (_ " + -h, --help display this help and exit")) + (display (_ " + -V, --version display version information and exit")) + (newline) + (show-bug-report-information)) + +(define %options + (list (option '(#\h "help") #f #f + (lambda _ + (show-help) + (exit 0))) + (option '(#\V "version") #f #f + (lambda _ + (show-version-and-exit "guix publish"))) + (option '(#\p "port") #t #f + (lambda (opt name arg result) + (alist-cons 'port (string->number* arg) result))) + (option '(#\r "repl") #f #t + (lambda (opt name arg result) + ;; If port unspecified, use default Guile REPL port. + (let ((port (and arg (string->number* arg)))) + (alist-cons 'repl (or port 37146) result)))))) + +(define %default-options + '((port . 8080) + (repl . #f))) + +(define (lazy-read-file-sexp file) + "Return a promise to read the canonical sexp from FILE." + (delay + (call-with-input-file file + (compose string->canonical-sexp + get-string-all)))) + +(define %private-key + (lazy-read-file-sexp %private-key-file)) + +(define %public-key + (lazy-read-file-sexp %public-key-file)) + +(define %nix-cache-info + `(("StoreDir" . ,%store-directory) + ("WantMassQuery" . 0) + ("Priority" . 100))) + +(define (load-derivation file) + "Read the derivation from FILE." + (call-with-input-file file read-derivation)) + +(define (signed-string s) + "Sign the hash of the string S with the daemon's key." + (let* ((public-key (force %public-key)) + (hash (bytevector->hash-data (sha256 (string->utf8 s)) + #:key-type (key-type public-key)))) + (signature-sexp hash (force %private-key) public-key))) + +(define base64-encode-string + (compose base64-encode string->utf8)) + +(define (narinfo-string store-path path-info key) + "Generate a narinfo key/value string for STORE-PATH using the details in +PATH-INFO. The narinfo is signed with KEY." + (let* ((url (string-append "nar/" (basename store-path))) + (hash (bytevector->base32-string + (path-info-hash path-info))) + (size (path-info-nar-size path-info)) + (references (string-join + (map basename (path-info-references path-info)) + " ")) + (deriver (path-info-deriver path-info)) + (base-info (format #f + "StorePath: ~a +URL: ~a +Compression: none +NarHash: sha256:~a +NarSize: ~d +References: ~a~%" + store-path url hash size references)) + ;; Do not render a "Deriver" or "System" line if we are rendering + ;; info for a derivation. + (info (if (string-null? deriver) + base-info + (let ((drv (load-derivation deriver))) + (format #f "~aSystem: ~a~%Deriver: ~a~%" + base-info (derivation-system drv) + (basename deriver))))) + (signature (base64-encode-string + (canonical-sexp->string (signed-string info))))) + (format #f "~aSignature: 1;~a;~a~%" info (gethostname) signature))) + +(define (not-found request) + "Render 404 response for REQUEST." + (values (build-response #:code 404) + (string-append "Resource not found: " + (uri-path (request-uri request))))) + +(define (render-nix-cache-info) + "Render server information." + (values '((content-type . (text/plain))) + (lambda (port) + (for-each (match-lambda + ((key . value) + (format port "~a: ~a~%" key value))) + %nix-cache-info)))) + +(define (render-narinfo store request hash) + "Render metadata for the store path corresponding to HASH." + (let* ((store-path (hash-part->path store hash)) + (path-info (and (not (string-null? store-path)) + (query-path-info store store-path)))) + (if path-info + (values '((content-type . (application/x-nix-narinfo))) + (cut display + (narinfo-string store-path path-info (force %private-key)) + <>)) + (not-found request)))) + +(define (render-nar request store-item) + "Render archive of the store path corresponding to STORE-ITEM." + (let ((store-path (string-append %store-directory "/" store-item))) + ;; The ISO-8859-1 charset *must* be used otherwise HTTP clients will + ;; interpret the byte stream as UTF-8 and arbitrarily change invalid byte + ;; sequences. + (if (file-exists? store-path) + (values '((content-type . (application/x-nix-archive + (charset . "ISO-8859-1")))) + (lambda (port) + (write-file store-path port))) + (not-found request)))) + +(define extract-narinfo-hash + (let ((regexp (make-regexp "^([a-df-np-sv-z0-9]{32}).narinfo$"))) + (lambda (str) + "Return the hash within the narinfo resource string STR, or false if STR +is invalid." + (and=> (regexp-exec regexp str) + (cut match:substring <> 1))))) + +(define (get-request? request) + "Return #t if REQUEST uses the GET method." + (eq? (request-method request) 'GET)) + +(define (request-path-components request) + "Split the URI path of REQUEST into a list of component strings. For +example: \"/foo/bar\" yields '(\"foo\" \"bar\")." + (split-and-decode-uri-path (uri-path (request-uri request)))) + +(define (make-request-handler store) + (lambda (request body) + (format #t "~a ~a~%" + (request-method request) + (uri-path (request-uri request))) + (if (get-request? request) ; reject POST, PUT, etc. + (match (request-path-components request) + ;; /nix-cache-info + (("nix-cache-info") + (render-nix-cache-info)) + ;; /.narinfo + (((= extract-narinfo-hash (? string? hash))) + (render-narinfo store request hash)) + ;; /nar/ + (("nar" store-item) + (render-nar request store-item)) + (_ (not-found request))) + (not-found request)))) + +(define (run-publish-server port store) + (run-server (make-request-handler store) + 'http + `(#:addr ,INADDR_ANY + #:port ,port))) + +(define (guix-publish . args) + (with-error-handling + (let* ((opts (args-fold* args %options + (lambda (opt name arg result) + (leave (_ "~A: unrecognized option~%") name)) + (lambda (arg result) + (leave (_ "~A: extraneuous argument~%") arg)) + %default-options)) + (port (assoc-ref opts 'port)) + (repl-port (assoc-ref opts 'repl))) + (format #t (_ "publishing ~a on port ~d~%") %store-directory port) + (when repl-port + (repl:spawn-server (repl:make-tcp-server-socket #:port repl-port))) + (with-store store + (run-publish-server (assoc-ref opts 'port) store))))) diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in index 39115f970b..5ac9201295 100644 --- a/po/guix/POTFILES.in +++ b/po/guix/POTFILES.in @@ -13,6 +13,7 @@ guix/scripts/substitute.scm guix/scripts/authenticate.scm guix/scripts/system.scm guix/scripts/lint.scm +guix/scripts/publish.scm guix/gnu-maintenance.scm guix/ui.scm guix/http-client.scm diff --git a/tests/publish.scm b/tests/publish.scm new file mode 100644 index 0000000000..60f57a8ddb --- /dev/null +++ b/tests/publish.scm @@ -0,0 +1,114 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 David Thompson +;;; +;;; 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 (test-publish) + #:use-module (guix scripts publish) + #:use-module (guix tests) + #:use-module (guix config) + #:use-module (guix utils) + #:use-module (guix hash) + #:use-module (guix store) + #:use-module (guix base32) + #:use-module (guix base64) + #:use-module ((guix serialization) #:select (restore-file)) + #:use-module (guix pk-crypto) + #:use-module (web client) + #:use-module (web response) + #:use-module (rnrs bytevectors) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:use-module (srfi srfi-64) + #:use-module (ice-9 match) + #:use-module (ice-9 rdelim)) + +(define %store + (open-connection-for-tests)) + +(define %reference (add-text-to-store %store "ref" "foo")) + +(define %item (add-text-to-store %store "item" "bar" (list %reference))) + +(define (http-get-body uri) + (call-with-values (lambda () (http-get uri)) + (lambda (response body) body))) + +(define (publish-uri route) + (string-append "http://localhost:6789" route)) + +;; Run a local publishing server in a separate thread. +(call-with-new-thread + (lambda () + (guix-publish "--port=6789"))) ; attempt to avoid port collision + +;; Wait until the server is accepting connections. +(let ((conn (socket PF_INET SOCK_STREAM 0))) + (let loop () + (unless (false-if-exception + (connect conn AF_INET (inet-pton AF_INET "127.0.0.1") 6789)) + (loop)))) + +(test-begin "publish") + +(test-equal "/nix-cache-info" + (format #f "StoreDir: ~a\nWantMassQuery: 0\nPriority: 100\n" + %store-directory) + (http-get-body (publish-uri "/nix-cache-info"))) + +(test-equal "/*.narinfo" + (let* ((info (query-path-info %store %item)) + (unsigned-info + (format #f + "StorePath: ~a +URL: nar/~a +Compression: none +NarHash: sha256:~a +NarSize: ~d +References: ~a~%" + %item + (basename %item) + (bytevector->base32-string + (path-info-hash info)) + (path-info-nar-size info) + (basename (first (path-info-references info))))) + (signature (base64-encode + (string->utf8 + (canonical-sexp->string + ((@@ (guix scripts publish) signed-string) + unsigned-info)))))) + (format #f "~aSignature: 1;~a;~a~%" + unsigned-info (gethostname) signature)) + (utf8->string + (http-get-body + (publish-uri + (string-append "/" (store-path-hash-part %item) ".narinfo"))))) + +(test-equal "/nar/*" + "bar" + (call-with-temporary-output-file + (lambda (temp port) + (let ((nar (utf8->string + (http-get-body + (publish-uri + (string-append "/nar/" (basename %item))))))) + (call-with-input-string nar (cut restore-file <> temp))) + (call-with-input-file temp read-string)))) + +(test-end "publish") + + +(exit (= (test-runner-fail-count (test-runner-current)) 0)) -- cgit v1.2.3 From 3e462da5c1c48c43f6da95cba6237e24452b2d6c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 5 Apr 2015 01:17:30 +0200 Subject: gnu: openssl: Set appropriate RUNPATH on shared libraries. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes . Reported by taylanbayirli@gmail.com (Taylan Ulrich Bayırlı/Kammer). * gnu/packages/patches/openssl-runpath.patch: New file. * gnu/packages/openssl.scm (openssl)[source]: Use it. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + gnu/packages/openssl.scm | 3 ++- gnu/packages/patches/openssl-runpath.patch | 15 +++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/openssl-runpath.patch diff --git a/gnu-system.am b/gnu-system.am index d3e4dafc4e..bb2bef33d0 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -489,6 +489,7 @@ dist_patch_DATA = \ gnu/packages/patches/nvi-dbpagesize-binpower.patch \ gnu/packages/patches/nvi-db4.patch \ gnu/packages/patches/openexr-missing-samples.patch \ + gnu/packages/patches/openssl-runpath.patch \ gnu/packages/patches/orpheus-cast-errors-and-includes.patch \ gnu/packages/patches/ots-no-include-missing-file.patch \ gnu/packages/patches/patchelf-page-size.patch \ diff --git a/gnu/packages/openssl.scm b/gnu/packages/openssl.scm index 6acbb12737..1ed7a7a1f2 100644 --- a/gnu/packages/openssl.scm +++ b/gnu/packages/openssl.scm @@ -36,7 +36,8 @@ ".tar.gz")) (sha256 (base32 - "0jijgzf72659pikms2bc5w31h78xrd1h5zp2r01an2h340y3kdhm")))) + "0jijgzf72659pikms2bc5w31h78xrd1h5zp2r01an2h340y3kdhm")) + (patches (list (search-patch "openssl-runpath.patch"))))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) (arguments diff --git a/gnu/packages/patches/openssl-runpath.patch b/gnu/packages/patches/openssl-runpath.patch new file mode 100644 index 0000000000..fa7c0b9962 --- /dev/null +++ b/gnu/packages/patches/openssl-runpath.patch @@ -0,0 +1,15 @@ +This patch makes the build system pass -Wl,-rpath=$out/lib even for +libraries (it already does so for executables, thanks to 'DO_GNU_APP' +in 'Makefile.shared'.) + +--- openssl-1.0.2a/Makefile.shared 2015-04-05 01:07:35.357602454 +0200 ++++ openssl-1.0.2a/Makefile.shared 2015-04-05 01:09:50.474513303 +0200 +@@ -106,7 +106,7 @@ LINK_SO= \ + LIBPATH=`for x in $$LIBDEPS; do echo $$x; done | sed -e 's/^ *-L//;t' -e d | uniq`; \ + LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \ + LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \ +- $${SHAREDCMD} $${SHAREDFLAGS} \ ++ $${SHAREDCMD} $${SHAREDFLAGS} -Wl,-rpath,$(LIBRPATH) \ + -o $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX \ + $$ALLSYMSFLAGS $$SHOBJECTS $$NOALLSYMSFLAGS $$LIBDEPS \ + ) && $(SYMLINK_SO) -- cgit v1.2.3 From 6ef1c223aa9614da1714fa60c538fac81dd9c734 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 27 Feb 2015 21:15:12 -0500 Subject: gnu: Add icecast. * gnu/packages/xiph.scm (icecast): New variable. --- gnu/packages/xiph.scm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm index f182270aea..526a559724 100644 --- a/gnu/packages/xiph.scm +++ b/gnu/packages/xiph.scm @@ -27,10 +27,12 @@ #:use-module (gnu packages curl) #:use-module (gnu packages doxygen) #:use-module (gnu packages image) + #:use-module (gnu packages openssl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages linux) #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages xml) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) @@ -338,3 +340,35 @@ Opus-tools provide command line utilities for creating, inspecting and decoding .opus files") (license license:bsd-3) (home-page "http://www.opus-codec.org"))) + +(define-public icecast + (package + (name "icecast") + (version "2.4.1") + (source (origin + (method url-fetch) + (uri (string-append + "http://downloads.xiph.org/releases/icecast/icecast-" + version ".tar.gz")) + (sha256 + (base32 + "0js5lylrgklhvvaksx46zc8lc975qb1bns8h1ms545nv071rxy23")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libxslt" ,libxslt) + ("libxml2" ,libxml2) + ("openssl" ,openssl) + ("curl" ,curl) + ("libogg" ,libogg) + ("libvorbis" ,libvorbis) + ("libtheora" ,libtheora) + ("speex" ,speex))) + (synopsis "Streaming media server") + (description "Icecast is a streaming media server which currently supports +Ogg (Vorbis and Theora), Opus, WebM and MP3 audio streams. It can be used to +create an Internet radio station or a privately running jukebox and many +things in between.") + (home-page "http://icecast.org/") + (license license:gpl2))) -- cgit v1.2.3 From 0a588bf95668bbc66e6924f16db7f477c83ce217 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 4 Apr 2015 16:00:05 +0800 Subject: gnu: Add libraw1394. * gnu/packages/linux.scm (libraw1394): New variable. --- gnu/packages/linux.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 38b940d071..3e796552ef 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -2001,3 +2001,26 @@ also contains the libsysfs library.") information, and set the CPU frequency if supported, using the cpufreq capabilities of the Linux kernel.") (license gpl2))) + +(define-public libraw1394 + (package + (name "libraw1394") + (version "2.1.0") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://kernel.org/linux/libs/ieee1394/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0kwnf4ha45c04mhc4yla672aqmvqqihxix1gvblns5cd2pc2cc8b")))) + (build-system gnu-build-system) + (home-page "https://ieee1394.wiki.kernel.org/index.php/Main_Page") + (synopsis "Interface library for the Linux IEEE1394 drivers") + (description + "Libraw1394 is the only supported interface to the kernel side raw1394 of +the Linux IEEE-1394 subsystem, which provides direct access to the connected +1394 buses to user space. Through libraw1394/raw1394, applications can directly +send to and receive from other nodes without requiring a kernel driver for the +protocol in question.") + (license lgpl2.1+))) -- cgit v1.2.3 From 68e3c29d202cb7201a69269159cac49527e62938 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 4 Apr 2015 16:19:18 +0800 Subject: gnu: Add libavc1394. * gnu/packages/linux.scm (libavc1394): New variable. --- gnu/packages/linux.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 3e796552ef..089ef588b2 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -2024,3 +2024,26 @@ the Linux IEEE-1394 subsystem, which provides direct access to the connected send to and receive from other nodes without requiring a kernel driver for the protocol in question.") (license lgpl2.1+))) + +(define-public libavc1394 + (package + (name "libavc1394") + (version "0.5.4") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/libavc1394/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "0lsv46jdqvdx5hx92v0z2cz3yh6212pz9gk0k3513sbaa04zzcbw")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (propagated-inputs + `(("libraw1394" ,libraw1394))) ; required by libavc1394.pc + (home-page "http://sourceforge.net/projects/libavc1394/") + (synopsis "AV/C protocol library for IEEE 1394") + (description + "Libavc1394 is a programming interface to the AV/C specification from +the 1394 Trade Assocation. AV/C stands for Audio/Video Control.") + (license lgpl2.1+))) -- cgit v1.2.3 From 9d44ab95a600a481e4e88ed3ad41cc1ae8628713 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 4 Apr 2015 16:38:10 +0800 Subject: gnu: Add libshout. * gnu/packages/xiph.scm (libshout): New varibale. --- gnu/packages/xiph.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm index 526a559724..dff76cacf5 100644 --- a/gnu/packages/xiph.scm +++ b/gnu/packages/xiph.scm @@ -372,3 +372,31 @@ create an Internet radio station or a privately running jukebox and many things in between.") (home-page "http://icecast.org/") (license license:gpl2))) + +(define-public libshout + (package + (name "libshout") + (version "2.3.1") + (source (origin + (method url-fetch) + (uri (string-append + "http://downloads.xiph.org/releases/libshout/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "0vlj4dxfxg06xhvv0z2zjjlrjh5di2m28w7v16zcygsy99mmyg6g")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (propagated-inputs + ;; shout.pc refers to all these. + `(("libtheora" ,libtheora) + ("libvorbis" ,libvorbis) + ("speex" ,speex))) + (home-page "http://www.icecast.org/") + (synopsis "Audio streaming library for icecast encoders") + (description + "Libshout is a library for communicating with and sending data to an +icecast server. It handles the socket connection, the timing of the data, +and prevents bad data from getting to the icecast server.") + (license license:gpl2+))) -- cgit v1.2.3 From 01b90919ef21b52905fa4f36d35a1631b9610612 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 5 Apr 2015 10:36:05 +0800 Subject: gnu: Add WavPack. * gnu/packages/audio.scm (wavpack): New variable. --- gnu/packages/audio.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index aa94dda7c7..78e3207b4a 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -995,6 +995,26 @@ stretching and pitch scaling of audio. This package contains the library.") ;; containing gpl2. (license license:gpl2))) +(define-public wavpack + (package + (name "wavpack") + (version "4.70.0") + (source (origin + (method url-fetch) + (uri (string-append "http://www.wavpack.com/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "191h8hv8qk72hfh1crg429i9yq3cminwqb249sy9zadbn1wy7b9c")))) + (build-system gnu-build-system) + (home-page "http://www.wavpack.com/") + (synopsis "Hybrid lossless audio codec") + (description + "WavPack is an audio compression format with lossless, lossy and hybrid +compression modes. This package contains command-line programs and library to +encode and decode wavpack files.") + (license license:bsd-3))) + (define-public soundtouch (package (name "soundtouch") -- cgit v1.2.3 From 6b2c6be0c3854e98e2cd9e81a3fea44f294ff086 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 4 Apr 2015 23:08:52 +0800 Subject: gnu: Add aalib. * gnu/packages/video.scm (aalib): New variable. --- gnu/packages/video.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index c6eb859bbb..58263f0826 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -66,6 +66,7 @@ #:use-module (gnu packages samba) #:use-module (gnu packages sdl) #:use-module (gnu packages ssh) + #:use-module (gnu packages texinfo) #:use-module (gnu packages texlive) #:use-module (gnu packages textutils) #:use-module (gnu packages version-control) @@ -77,6 +78,44 @@ #:use-module (gnu packages yasm) #:use-module (gnu packages zip)) +(define-public aalib + (package + (name "aalib") + (version "1.4rc5") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/aa-project/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "1vkh19gb76agvh4h87ysbrgy82hrw88lnsvhynjf4vng629dmpgv")))) + (build-system gnu-build-system) + (native-inputs + `(("makeinfo" ,texinfo))) + (inputs + `(("ncurses" ,ncurses))) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace configure + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; This old `configure' script doesn't support + ;; variables passed as arguments. + (let ((out (assoc-ref outputs "out")) + (ncurses (assoc-ref inputs "ncurses"))) + (setenv "CONFIG_SHELL" (which "bash")) + (zero? (system* "./configure" + (string-append "--prefix=" out) + (string-append "--with-ncurses=" + ncurses))))))))) + (home-page "http://aa-project.sourceforge.net/aalib/") + (synopsis "ASCII-art library") + (description + "AA-lib is a low level gfx library which does not require graphics device. +In fact, there is no graphical output possible. AA-lib replaces those +old-fashioned output methods with powerful ascii-art renderer.") + (license license:lgpl2.0+))) + (define-public liba52 (package (name "liba52") -- cgit v1.2.3 From 85345684d6b6ec1e3587a4a4e274463ba87a7968 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 5 Apr 2015 10:44:02 +0200 Subject: gnu: ghostscript: Make sure phases don't fail. * gnu/packages/ghostscript.scm (ghostscript)[arguments]: Wrap 'system*' calls in (zero? ...). --- gnu/packages/ghostscript.scm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm index c63e0415b4..0d45a992b2 100644 --- a/gnu/packages/ghostscript.scm +++ b/gnu/packages/ghostscript.scm @@ -151,10 +151,12 @@ printing, and psresize, for adjusting page sizes.") (("/bin/sh") (which "bash")))) (alist-cons-after 'build 'build-so - (lambda _ (system* "make" "so")) + (lambda _ + (zero? (system* "make" "so"))) (alist-cons-after 'install 'install-so - (lambda _ (system* "make" "install-so")) + (lambda _ + (zero? (system* "make" "install-so"))) %standard-phases))))) (synopsis "PostScript and PDF interpreter") (description -- cgit v1.2.3 From c17b2adf541d24dab357f54b62e6399800534313 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 5 Apr 2015 10:45:56 +0200 Subject: gnu: ghostscript: Use 'modify-phases'. * gnu/packages/ghostscript.scm (ghostscript)[arguments]: Use 'modify-phases' instead of a chain of 'alist-cons-after'. --- gnu/packages/ghostscript.scm | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm index 0d45a992b2..3c18093eae 100644 --- a/gnu/packages/ghostscript.scm +++ b/gnu/packages/ghostscript.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2014 Mark H Weaver ;;; Copyright © 2015 Ricardo Wurmus +;;; Copyright © 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -142,22 +143,19 @@ printing, and psresize, for adjusting page sizes.") ("tcl" ,tcl))) (arguments `(#:phases - (alist-cons-after - 'configure 'patch-config-files - (lambda _ - (substitute* "base/all-arch.mak" - (("/bin/sh") (which "bash"))) - (substitute* "base/unixhead.mak" - (("/bin/sh") (which "bash")))) - (alist-cons-after - 'build 'build-so - (lambda _ - (zero? (system* "make" "so"))) - (alist-cons-after - 'install 'install-so - (lambda _ - (zero? (system* "make" "install-so"))) - %standard-phases))))) + (modify-phases %standard-phases + (add-after 'configure 'patch-config-files + (lambda _ + (substitute* "base/all-arch.mak" + (("/bin/sh") (which "bash"))) + (substitute* "base/unixhead.mak" + (("/bin/sh") (which "bash"))))) + (add-after 'build 'build-so + (lambda _ + (zero? (system* "make" "so")))) + (add-after 'install 'install-so + (lambda _ + (zero? (system* "make" "install-so"))))))) (synopsis "PostScript and PDF interpreter") (description "Ghostscript is an interpreter for the PostScript language and the PDF -- cgit v1.2.3 From 1d386b2d711fee2dc618358ac51b1865e3f85433 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 5 Apr 2015 15:23:11 +0200 Subject: gnu: ghostscript: Add $libdir to the RUNPATH of executables. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes . Reported by taylanbayirli@gmail.com (Taylan Ulrich Bayırlı/Kammer). * gnu/packages/patches/ghostscript-runpath.patch: New file. * gnu/packages/ghostscript.scm (ghostscript)[source]: Use it. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + gnu/packages/ghostscript.scm | 6 ++++-- gnu/packages/patches/ghostscript-runpath.patch | 17 +++++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 gnu/packages/patches/ghostscript-runpath.patch diff --git a/gnu-system.am b/gnu-system.am index bb2bef33d0..0382261dc1 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -412,6 +412,7 @@ dist_patch_DATA = \ gnu/packages/patches/flex-bison-tests.patch \ gnu/packages/patches/gawk-shell.patch \ gnu/packages/patches/gcc-cross-environment-variables.patch \ + gnu/packages/patches/ghostscript-runpath.patch \ gnu/packages/patches/glib-tests-desktop.patch \ gnu/packages/patches/glib-tests-homedir.patch \ gnu/packages/patches/glib-tests-prlimit.patch \ diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm index 3c18093eae..f9026704da 100644 --- a/gnu/packages/ghostscript.scm +++ b/gnu/packages/ghostscript.scm @@ -126,8 +126,10 @@ printing, and psresize, for adjusting page sizes.") (method url-fetch) (uri (string-append "mirror://gnu/ghostscript/gnu-ghostscript-" version ".tar.xz")) - (sha256 (base32 - "0q4jj41p0qbr4mgcc9q78f5zs8cm1g57wgryhsm2yq4lfslm3ib1")))) + (sha256 + (base32 + "0q4jj41p0qbr4mgcc9q78f5zs8cm1g57wgryhsm2yq4lfslm3ib1")) + (patches (list (search-patch "ghostscript-runpath.patch"))))) (build-system gnu-build-system) (inputs `(("freetype" ,freetype) ("lcms" ,lcms) diff --git a/gnu/packages/patches/ghostscript-runpath.patch b/gnu/packages/patches/ghostscript-runpath.patch new file mode 100644 index 0000000000..c7dcfd4529 --- /dev/null +++ b/gnu/packages/patches/ghostscript-runpath.patch @@ -0,0 +1,17 @@ +This patch adds $(libdir) to the RUNPATH of 'gsc' and 'gsx'. + +--- gnu-ghostscript-9.14.0/base/unix-dll.mak 2015-04-05 15:12:45.386957927 +0200 ++++ gnu-ghostscript-9.14.0/base/unix-dll.mak 2015-04-05 15:12:49.222982359 +0200 +@@ -91,11 +91,11 @@ $(GS_SO_MAJOR): $(GS_SO_MAJOR_MINOR) + # Build the small Ghostscript loaders, with Gtk+ and without + $(GSSOC_XE): $(GS_SO) $(PSSRC)$(SOC_LOADER) + $(GLCC) -g -o $(GSSOC_XE) $(PSSRC)dxmainc.c \ +- -L$(BINDIR) -l$(GS_SO_BASE) ++ -L$(BINDIR) -l$(GS_SO_BASE) -Wl,-rpath=$(libdir) + + $(GSSOX_XE): $(GS_SO) $(PSSRC)$(SOC_LOADER) + $(GLCC) -g $(SOC_CFLAGS) -o $(GSSOX_XE) $(PSSRC)$(SOC_LOADER) \ +- -L$(BINDIR) -l$(GS_SO_BASE) $(SOC_LIBS) ++ -L$(BINDIR) -l$(GS_SO_BASE) $(SOC_LIBS) -Wl,-rpath=$(libdir) + + # ------------------------- Recursive make targets ------------------------- # -- cgit v1.2.3 From dacd5d2ca7411251570cf486febcb2cde3ed021f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 5 Apr 2015 15:31:55 +0200 Subject: gremlin: Ignore non-store file names in RUNPATH and warn about them. * guix/build/gremlin.scm (validate-needed-in-runpath)[runpath]: Add (filter absolute-file-name? ...). Emit a warning when RUNPATH file names that do not match 'store-file-name?'. Change format of error message to begin with file name. * guix/build/utils.scm (store-file-name?): New procedure. --- guix/build/gremlin.scm | 14 ++++++++++++-- guix/build/utils.scm | 5 +++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/guix/build/gremlin.scm b/guix/build/gremlin.scm index 24a7b558af..30b06034dd 100644 --- a/guix/build/gremlin.scm +++ b/guix/build/gremlin.scm @@ -18,6 +18,7 @@ (define-module (guix build gremlin) #:use-module (guix elf) + #:use-module ((guix build utils) #:select (store-file-name?)) #:use-module (ice-9 match) #:use-module (srfi srfi-1) #:use-module (srfi srfi-9) @@ -255,14 +256,23 @@ exceeds total size~%" (compose parse-elf get-bytevector-all))) (dyninfo (elf-dynamic-info elf))) (when dyninfo - (let* ((runpath (elf-dynamic-info-runpath dyninfo)) + (let* ((runpath (filter store-file-name? + (elf-dynamic-info-runpath dyninfo))) + (bogus (remove store-file-name? + (elf-dynamic-info-runpath dyninfo))) (needed (remove always-found? (elf-dynamic-info-needed dyninfo))) (not-found (remove (cut search-path runpath <>) needed))) + ;; XXX: $ORIGIN is not supported. + (unless (null? bogus) + (format (current-error-port) + "~a: warning: RUNPATH contains bogus entries: ~s~%" + file bogus)) + (for-each (lambda (lib) (format (current-error-port) - "error: '~a' depends on '~a', which cannot \ + "~a: error: depends on '~a', which cannot \ be found in RUNPATH ~s~%" file lib runpath)) not-found) diff --git a/guix/build/utils.scm b/guix/build/utils.scm index 5d229b5f83..fbd5d54da5 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -32,6 +32,7 @@ #:re-export (alist-cons alist-delete) #:export (%store-directory + store-file-name? parallel-job-count directory-exists? @@ -81,6 +82,10 @@ (or (getenv "NIX_STORE") "/gnu/store")) +(define (store-file-name? file) + "Return true if FILE is in the store." + (string-prefix? (%store-directory) file)) + (define parallel-job-count ;; Number of processes to be passed next to GNU Make's `-j' argument. (make-parameter -- cgit v1.2.3 From 67bdcfbcc53b19b71e4c1f6488f8192201d9f78f Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 5 Apr 2015 22:48:32 +0800 Subject: gnu: gsettings-desktop-schemas: Update to 3.16.0. * gnu/packages/gnome.scm (gsettings-desktop-schemas): Update to 3.16.0. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 445b4a177e..874e20332c 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -255,7 +255,7 @@ on the GNOME Desktop with a single simple application.") (define-public gsettings-desktop-schemas (package (name "gsettings-desktop-schemas") - (version "3.10.0") + (version "3.16.0") (source (origin (method url-fetch) @@ -264,7 +264,7 @@ on the GNOME Desktop with a single simple application.") name "-" version ".tar.xz")) (sha256 (base32 - "1km8qxwrzvravmg8j680qv64bwnwbdgrmy8bqmhs0dgxn2b1as6a")))) + "02dp1hl38k16m9abydfca1n236mdazqdz0p3n92s7haf9mdqsf16")))) (build-system gnu-build-system) (inputs `(("glib" ,glib))) -- cgit v1.2.3 From 7211944a4f25dcac28ff7cd490dca62bd50eb91e Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 5 Apr 2015 22:53:02 +0800 Subject: gnu: gsettings-desktop-schemas: Enable GObject introspection. * gnu/packages/gnome.scm (gsettings-desktop-schemas)[native-inputs]: Add gobject-introspection. --- gnu/packages/gnome.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 874e20332c..18b7e7ee81 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -271,6 +271,7 @@ on the GNOME Desktop with a single simple application.") (native-inputs `(("intltool" ,intltool) ("glib" ,glib "bin") ; glib-compile-schemas, etc. + ("gobject-introspection" ,gobject-introspection) ("pkg-config" ,pkg-config))) (home-page "https://launchpad.net/gsettings-desktop-schemas") (synopsis -- cgit v1.2.3 From 121398e7d4e78fbecb1ad56b7b853523b5a492fa Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 5 Apr 2015 23:55:09 +0800 Subject: gnu: gnome-mines: Update to 3.16.0. * gnu/packages/gnome.scm (gnome-mines): Update to 3.16.0. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 18b7e7ee81..5e68deaa96 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1630,7 +1630,7 @@ library.") (define-public gnome-mines (package (name "gnome-mines") - (version "3.14.1") + (version "3.16.0") (source (origin (method url-fetch) @@ -1639,7 +1639,7 @@ library.") name "-" version ".tar.xz")) (sha256 (base32 - "0nbgvzlsznn3v83pdcx2d52r4ig1mvaijh633rjddx9rgq2ja7kv")))) + "0wfvqyryc1093l4dr75zv9h0jyn28z6wirdq03lm5w24qf9lvjjx")))) (build-system glib-or-gtk-build-system) (arguments '(#:phases -- cgit v1.2.3 From ae64112828824895957038842fb705e846e3b69c Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 4 Apr 2015 13:15:40 -0400 Subject: gnu: python-requests: Fix Python 2 version and add support for Python 3. * gnu/packages/python.scm (python-requests): New variable. (python2-requests): Generate based on Python 3 variant. --- gnu/packages/python.scm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index c5cae6de45..8c86d5a768 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -1571,9 +1571,9 @@ is used by the Requests library to verify HTTPS requests.") (define-public python2-certifi (package-with-python2 python-certifi)) -(define-public python2-requests +(define-public python-requests (package - (name "python2-requests") + (name "python-requests") (version "2.4.0") (source (origin (method url-fetch) @@ -1588,8 +1588,7 @@ is used by the Requests library to verify HTTPS requests.") (inputs `(("python-setuptools" ,python-setuptools) ("python-certifi" ,python-certifi))) - (arguments `(#:tests? #f ; no tests - #:python ,python-2)) + (arguments `(#:tests? #f)) ; no tests (home-page "http://python-requests.org/") (synopsis "Python HTTP library") (description @@ -1597,6 +1596,9 @@ is used by the Requests library to verify HTTPS requests.") than Python’s urllib2 library.") (license asl2.0))) +(define-public python2-requests + (package-with-python2 python-requests)) + (define-public python-jsonschema (package (name "python-jsonschema") -- cgit v1.2.3 From 0234ca06ceccb6d5ad7c13b98e7998b371bc6c08 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 4 Apr 2015 13:17:35 -0400 Subject: gnu: Add python-singledispatch. * gnu/packages/python.scm (python-singledispatch, python2-singledispatch): New variables. --- gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 8c86d5a768..ddd308bce8 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -3448,3 +3448,32 @@ Python style, together with a fast and comfortable execution environment.") library for Python programs. It is useful to implement low-level X clients. It is written entirely in Python.") (license gpl2+))) + +(define-public python-singledispatch + (package + (name "python-singledispatch") + (version "3.4.0.3") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/s/singledispatch/" + "singledispatch-" version ".tar.gz")) + (sha256 + (base32 + "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv")))) + (build-system python-build-system) + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (propagated-inputs + `(("python-six" ,python-six))) + (home-page + "http://docs.python.org/3/library/functools.html#functools.singledispatch") + (synopsis "Backport of singledispatch feature from Python 3.4") + (description + "This library brings functools.singledispatch from Python 3.4 to Python +2.6-3.3.") + (license license:expat))) + +(define-public python2-singledispatch + (package-with-python2 python-singledispatch)) -- cgit v1.2.3 From e16fde1447840ffb1cafd505b10c4296da4d44e3 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 4 Apr 2015 13:18:40 -0400 Subject: gnu: Add livestreamer. * gnu/packages/video.scm (livestreamer): New variable. --- gnu/packages/video.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 58263f0826..8ded42ce96 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -1300,3 +1300,30 @@ codec library. It uses ASP features such as b-frames, global and quarter pixel motion compensation, lumi masking, trellis quantization, and H.263, MPEG and custom quantization matrices.") (license license:gpl2+))) + +(define-public livestreamer + (package + (name "livestreamer") + (version "1.12.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/chrippa/livestreamer/archive/v" + version ".tar.gz")) + (file-name (string-append "livestreamer-" version ".tar.gz")) + (sha256 + (base32 + "1dhgk8v8q1h3km4g5jc0cmjsxdaa2d456fvdb2wk7hmxmmwbqm9j")))) + (build-system python-build-system) + (arguments + '(#:tests? #f)) ; tests rely on external web servers + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (propagated-inputs + `(("python-requests" ,python-requests) + ("python-singledispatch" ,python-singledispatch))) + (synopsis "Internet video stream viewer") + (description "Livestreamer is a command-line utility that extracts streams +from various services and pipes them into a video playing application.") + (home-page "http://livestreamer.io/") + (license license:bsd-2))) -- cgit v1.2.3 From a71c315bc2e5b4ab6332095e9fdc2617191abb5e Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 5 Apr 2015 12:31:54 -0400 Subject: gnu: nginx: Use modify-phases syntax. * gnu/packages/web.scm (nginx): Use modify-phases syntax. --- gnu/packages/web.scm | 62 +++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 32 deletions(-) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 42d58c8989..031bbcafe4 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -108,38 +108,36 @@ and its related documentation.") (arguments `(#:tests? #f ; no test target #:phases - (alist-cons-before - 'configure 'patch-/bin/sh - (lambda _ - (substitute* "auto/feature" - (("/bin/sh") (which "bash")))) - (alist-replace - 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((flags - (list (string-append "--prefix=" (assoc-ref outputs "out")) - "--with-http_ssl_module" - "--with-pcre-jit" - "--with-ipv6" - "--with-debug" - ;; Even when not cross-building, we pass the - ;; --crossbuild option to avoid customizing for the - ;; kernel version on the build machine. - ,(let ((system "Linux") ; uname -s - (release "2.6.32") ; uname -r - ;; uname -m - (machine (match (or (%current-target-system) - (%current-system)) - ("x86_64-linux" "x86_64") - ("i686-linux" "i686") - ("mips64el-linux" "mips64")))) - (string-append "--crossbuild=" - system ":" release ":" machine))))) - (setenv "CC" "gcc") - (format #t "environment variable `CC' set to `gcc'~%") - (format #t "configure flags: ~s~%" flags) - (zero? (apply system* "./configure" flags)))) - %standard-phases)))) + (modify-phases %standard-phases + (add-before configure patch-/bin/sh + (lambda _ + (substitute* "auto/feature" + (("/bin/sh") (which "bash"))))) + (replace configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((flags + (list (string-append "--prefix=" (assoc-ref outputs "out")) + "--with-http_ssl_module" + "--with-pcre-jit" + "--with-ipv6" + "--with-debug" + ;; Even when not cross-building, we pass the + ;; --crossbuild option to avoid customizing for the + ;; kernel version on the build machine. + ,(let ((system "Linux") ; uname -s + (release "2.6.32") ; uname -r + ;; uname -m + (machine (match (or (%current-target-system) + (%current-system)) + ("x86_64-linux" "x86_64") + ("i686-linux" "i686") + ("mips64el-linux" "mips64")))) + (string-append "--crossbuild=" + system ":" release ":" machine))))) + (setenv "CC" "gcc") + (format #t "environment variable `CC' set to `gcc'~%") + (format #t "configure flags: ~s~%" flags) + (zero? (apply system* "./configure" flags)))))))) (home-page "http://nginx.org") (synopsis "HTTP and reverse proxy server") (description -- cgit v1.2.3 From 59446b208c9b3a9f1901cd6ba518768220903dc9 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 5 Apr 2015 12:34:45 -0400 Subject: gnu: nginx: Clean up installation directories. * gnu/packages/web.scm (nginx): Add 'fix-root-dirs' phase. --- gnu/packages/web.scm | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 031bbcafe4..374642862a 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -137,7 +137,22 @@ and its related documentation.") (setenv "CC" "gcc") (format #t "environment variable `CC' set to `gcc'~%") (format #t "configure flags: ~s~%" flags) - (zero? (apply system* "./configure" flags)))))))) + (zero? (apply system* "./configure" flags))))) + (add-after install fix-root-dirs + (lambda* (#:key outputs #:allow-other-keys) + ;; 'make install' puts things in strange places, so we need to + ;; clean it up ourselves. + (let* ((out (assoc-ref outputs "out")) + (share (string-append out "/share/nginx"))) + ;; This directory is empty, so get rid of it. + (rmdir (string-append out "/logs")) + ;; Example configuration and HTML files belong in + ;; /share. + (mkdir-p share) + (rename-file (string-append out "/conf") + (string-append share "/conf")) + (rename-file (string-append out "/html") + (string-append share "/html")))))))) (home-page "http://nginx.org") (synopsis "HTTP and reverse proxy server") (description -- cgit v1.2.3 From 0d275f4aa3d1457658fa754e6a0c07fbcc4b88af Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sun, 5 Apr 2015 22:47:16 +0200 Subject: system: Take kernel modules from the user-specified kernel. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/system/linux-initrd.scm (base-initrd): Add #:linux option to specify the linux kernel to use. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Propagate #:linux to base-initrd. * gnu/system.scm (operating-system-initrd-file): Pass #:linux to 'make-initrd'. Co-authored-by: Ludovic Courtès --- gnu/system.scm | 1 + gnu/system/linux-initrd.scm | 13 +++++++------ gnu/system/vm.scm | 1 + 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/gnu/system.scm b/gnu/system.scm index 0d510b623b..ece61adb2b 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -737,6 +737,7 @@ we're running in the final root." (operating-system-initrd os)) (mlet %store-monad ((initrd (make-initrd boot-file-systems + #:linux (operating-system-kernel os) #:mapped-devices mapped-devices))) (return #~(string-append #$initrd "/initrd")))) diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index 9feb8f73e6..0e5334cf79 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -143,16 +143,17 @@ initrd code." (define* (base-initrd file-systems #:key + (linux linux-libre) (mapped-devices '()) qemu-networking? virtio? volatile-root? (extra-modules '())) - "Return a monadic derivation that builds a generic initrd. FILE-SYSTEMS is -a list of file-systems to be mounted by the initrd, possibly in addition to -the root file system specified on the kernel command line via '--root'. -MAPPED-DEVICES is a list of device mappings to realize before FILE-SYSTEMS are -mounted. + "Return a monadic derivation that builds a generic initrd, with kernel +modules taken from LINUX. FILE-SYSTEMS is a list of file-systems to be +mounted by the initrd, possibly in addition to the root file system specified +on the kernel command line via '--root'. MAPPED-DEVICES is a list of device +mappings to realize before FILE-SYSTEMS are mounted. When QEMU-NETWORKING? is true, set up networking with the standard QEMU parameters. When VIRTIO? is true, load additional modules so the initrd can @@ -224,7 +225,7 @@ loaded at boot time in the order in which they appear." (open source target))) mapped-devices)) - (mlet %store-monad ((kodir (flat-linux-module-directory linux-libre + (mlet %store-monad ((kodir (flat-linux-module-directory linux linux-modules))) (expression->initrd #~(begin diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index c93e26d65f..e194ed6cf1 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -149,6 +149,7 @@ made available under the /xchg CIFS share." (initrd (if initrd ; use the default initrd? (return initrd) (base-initrd %linux-vm-file-systems + #:linux linux #:virtio? #t #:qemu-networking? #t)))) -- cgit v1.2.3 From bc45ceb5ffb445ca26a6cd5ac34f39d0dedd8504 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 5 Apr 2015 22:48:41 +0200 Subject: Add Andy to 'AUTHORS'. --- AUTHORS | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS b/AUTHORS index c4506d2c9b..fa1835b707 100644 --- a/AUTHORS +++ b/AUTHORS @@ -35,4 +35,5 @@ alphabetical order): David Thompson Paul van der Walt Mark H. Weaver + Andy Wingo Ricardo Wurmus -- cgit v1.2.3 From e26d5076df964d3510273202dcb5b1fc36452d48 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 5 Apr 2015 23:13:58 +0200 Subject: linux-initrd: Add virtio drivers by default. * gnu/system/linux-initrd.scm (base-initrd): Change #:virtio? default to #t. This will facilitate the use of GuixSD in VM guests. --- gnu/system/linux-initrd.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index 0e5334cf79..83685adcbc 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -146,7 +146,7 @@ initrd code." (linux linux-libre) (mapped-devices '()) qemu-networking? - virtio? + (virtio? #t) volatile-root? (extra-modules '())) "Return a monadic derivation that builds a generic initrd, with kernel @@ -157,7 +157,8 @@ mappings to realize before FILE-SYSTEMS are mounted. When QEMU-NETWORKING? is true, set up networking with the standard QEMU parameters. When VIRTIO? is true, load additional modules so the initrd can -be used as a QEMU guest with para-virtualized I/O drivers. +be used as a QEMU guest with the root file system on a para-virtualized block +device. When VOLATILE-ROOT? is true, the root file system is writable but any changes to it are lost. -- cgit v1.2.3 From 29ec55ee27f9127eacc9432741998e585564468e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 5 Apr 2015 23:18:19 +0200 Subject: gnu: util-linux: Install Bash completions under 'etc/bash_completion.d'. * gnu/packages/linux.scm (util-linux)[arguments]: Pass --with-bashcompletiondir. --- gnu/packages/linux.scm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index c48fefa7c2..826a731002 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -402,8 +402,14 @@ providing the system administrator with some help in common tasks.") (("build_kill=yes") "build_kill=no"))))) (build-system gnu-build-system) (arguments - `(#:configure-flags '("--disable-use-tty-group" - "--enable-ddate") + `(#:configure-flags (list "--disable-use-tty-group" + "--enable-ddate" + + ;; Install completions where our + ;; bash-completion package expects them. + (string-append "--with-bashcompletiondir=" + (assoc-ref %outputs "out") + "/etc/bash_completion.d")) #:phases (alist-cons-before 'check 'pre-check (lambda* (#:key inputs outputs #:allow-other-keys) -- cgit v1.2.3 From 4aaad09db1a95a720562633046e08e5f7b4f684d Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sun, 5 Apr 2015 10:22:28 +0200 Subject: gnu: gettext: Link explicitly to libexpat, again. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/gettext.scm (gnu-gettext): Re-enable patch from 0e4e4b1329bcf881620f230fda60b6b63d1f8356 to explictly link to libexpat. Otherwise libexpat was searched at runtime via dlopen, which obviously doesn't work in a Guix context. Signed-off-by: Ludovic Courtès --- gnu/packages/gettext.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm index 27b5fb5f55..3a96cd613c 100644 --- a/gnu/packages/gettext.scm +++ b/gnu/packages/gettext.scm @@ -70,7 +70,15 @@ (substitute* "gettext-tools/src/project-id" (("/bin/pwd") "pwd"))))) - %standard-phases) + (alist-cons-before + 'configure 'link-expat + (lambda _ + ;; Gettext defaults to opening expat via dlopen on + ;; "Linux". Change to link directly. + (substitute* "gettext-tools/configure" + (("LIBEXPAT=\"-ldl\"") "LIBEXPAT=\"-ldl -lexpat\"") + (("LTLIBEXPAT=\"-ldl\"") "LTLIBEXPAT=\"-ldl -lexpat\""))) + %standard-phases)) ;; When tests fail, we want to know the details. #:make-flags '("VERBOSE=yes"))) -- cgit v1.2.3 From 6e5c3713063542f8d5d31ff47a0a35248959b179 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sat, 4 Apr 2015 22:30:10 +0200 Subject: gnu: glib: Update to 2.44.0. * gnu/packages/glib.scm (glib): Update to 2.44.0. --- gnu/packages/glib.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index 3c68d86c96..1b928e5635 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -119,7 +119,7 @@ shared NFS home directories.") (define glib (package (name "glib") - (version "2.42.1") + (version "2.44.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" @@ -127,7 +127,7 @@ shared NFS home directories.") name "-" version ".tar.xz")) (sha256 (base32 - "16pqvikrps1fvwwqvk0qi4a13mfg7gw6w5qfhk7bhi8f51jhhgwg")) + "1fgmjv3yzxgbks31h42201x2izpw0sd84h8dfw0si3x00sqn5lzj")) (patches (list (search-patch "glib-tests-homedir.patch") (search-patch "glib-tests-desktop.patch") (search-patch "glib-tests-prlimit.patch") -- cgit v1.2.3 From d8720c5045e2c205766a848e5b4e96caa0836673 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sat, 4 Apr 2015 22:44:02 +0200 Subject: gnu: cairo: Update to 1.14.2. * gnu/packages/gtk.scm (cairo): Update to 1.14.2. --- gnu/packages/gtk.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index b3688d5ec1..de728fbbcc 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -77,14 +77,14 @@ tools have full access to view and control running applications.") (define-public cairo (package (name "cairo") - (version "1.12.18") + (version "1.14.2") (source (origin (method url-fetch) (uri (string-append "http://cairographics.org/releases/cairo-" version ".tar.xz")) (sha256 (base32 - "1dpmlxmmigpiyv0jchjsn2l1a29655x24g5073hy8p4lmjvz0nfw")))) + "1sycbq0agbwmg1bj9lhkgsf0glmblaf2jrdy9g6vxfxivncxj6f9")))) (build-system gnu-build-system) (propagated-inputs `(("fontconfig" ,fontconfig) -- cgit v1.2.3 From f2ca414acb80769423fcd864dbca02f6a10e4183 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 5 Apr 2015 23:36:29 +0800 Subject: gnu: Add glib-networking. * gnu/packages/gnome.scm (glib-networking): New variable. --- gnu/packages/gnome.scm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 5e68deaa96..4acfa77811 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1627,6 +1627,47 @@ library.") ;; of gnome-python-desktop is given in 'COPYING'. (license license:lgpl2.1+))) +(define-public glib-networking + (package + (name "glib-networking") + (version "2.44.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/glib-networking/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0ij33bhvn7y5gagx4sbrw906dsjjjs9dllxn73pzv6x97c6k92lg")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + ;; FIXME: ca-certificates.crt is not available in the build environment. + '("--with-ca-certificates=no") + #:phases + (modify-phases %standard-phases + (add-before configure patch-giomoduledir + ;; Install GIO modules into $out/lib/gio/modules. + (lambda _ + (substitute* "configure" + (("GIO_MODULE_DIR=.*") + (string-append "GIO_MODULE_DIR=" %output + "/lib/gio/modules\n")))))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("intltool" ,intltool))) + (inputs + `(("glib" ,glib) + ("gnutls" ,gnutls) + ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("p11-kit" ,p11-kit))) + (home-page "http://www.gnome.org") + (synopsis "Network-related GIO modules") + (description + "This package contains various network related extensions for the GIO +library.") + (license license:lgpl2.0+))) + (define-public gnome-mines (package (name "gnome-mines") -- cgit v1.2.3 From 1b85e57f115845c38c3dd76b962b269edb26354a Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 5 Apr 2015 23:10:19 +0800 Subject: gnu: glib: Add search path specification for 'GIO_EXTRA_MODULES'. * gnu/packages/glib.scm (glib): Add specification for 'GIO_EXTRA_MODULES'. --- gnu/packages/glib.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index 1b928e5635..c2555cfb35 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -189,7 +189,11 @@ shared NFS home directories.") ;; by 'glib-compile-schemas'. (list (search-path-specification (variable "XDG_DATA_DIRS") - (files '("share"))))) + (files '("share"))) + ;; To load extra gio modules from glib-networking, etc. + (search-path-specification + (variable "GIO_EXTRA_MODULES") + (files '("lib/gio/modules"))))) (search-paths native-search-paths) (synopsis "Thread-safe general utility library; basis of GTK+ and GNOME") -- cgit v1.2.3 From 025523f1e4c0eb4583b709b9c97dda850817591f Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 4 Apr 2015 11:31:11 -0400 Subject: gnu: linux-libre: Fix drm_wait_one_vblank warnings. * gnu/packages/patches/linux-libre-vblank-fix.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/linux.scm (linux-libre)[source]: Add patch. --- gnu-system.am | 1 + gnu/packages/linux.scm | 3 +- gnu/packages/patches/linux-libre-vblank-fix.patch | 175 ++++++++++++++++++++++ 3 files changed, 178 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/linux-libre-vblank-fix.patch diff --git a/gnu-system.am b/gnu-system.am index 95c4eeb6fd..f7c7af78f3 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -468,6 +468,7 @@ dist_patch_DATA = \ gnu/packages/patches/libvpx-fix-ssse3-quantize.patch \ gnu/packages/patches/libvpx-vp9-out-of-bounds-access.patch \ gnu/packages/patches/linux-libre-libreboot-fix.patch \ + gnu/packages/patches/linux-libre-vblank-fix.patch \ gnu/packages/patches/lirc-localstatedir.patch \ gnu/packages/patches/lm-sensors-hwmon-attrs.patch \ gnu/packages/patches/lua51-liblua-so.patch \ diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 089ef588b2..637cde9f69 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -273,7 +273,8 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." (base32 "13nq0wzkjy7hrhnnvxlwzs1awlqd81vzriqddjn6s9ma3fzj44bn")) (patches - (list (search-patch "linux-libre-libreboot-fix.patch"))))) + (list (search-patch "linux-libre-libreboot-fix.patch") + (search-patch "linux-libre-vblank-fix.patch"))))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) ("bc" ,bc) diff --git a/gnu/packages/patches/linux-libre-vblank-fix.patch b/gnu/packages/patches/linux-libre-vblank-fix.patch new file mode 100644 index 0000000000..7f242cfcc1 --- /dev/null +++ b/gnu/packages/patches/linux-libre-vblank-fix.patch @@ -0,0 +1,175 @@ +From f9b61ff6bce9a44555324b29e593fdffc9a115bc Mon Sep 17 00:00:00 2001 +From: Daniel Vetter +Date: Wed, 7 Jan 2015 13:54:39 +0100 +Subject: [PATCH] drm/i915: Push vblank enable/disable past + encoder->enable/disable +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It is platform/output depenedent when exactly the pipe will start +running. Sometimes we just need the (cpu) pipe enabled, in other cases +the pch transcoder is enough and in yet other cases the (DP) port is +sending the frame start signal. + +In a perfect world we'd put the drm_crtc_vblank_on call exactly where +the pipe starts running, but due to cloning and similar things this +will get messy. And the current approach of picking the most +conservative place for all combinations also doesn't work since that +results in legit vblank waits (in encoder->enable hooks, e.g. the 2 +vblank waits for sdvo) failing. + +Completely going back to the old world before + +commit 51e31d49c89055299e34b8f44d13f70e19aaaad1 +Author: Daniel Vetter +Date: Mon Sep 15 12:36:02 2014 +0200 + + drm/i915: Use generic vblank wait + +isn't great either since screaming when the vblank wait work because +the pipe is off is kinda nice. + +Pick a compromise and move the drm_crtc_vblank_on right before the +encoder->enable call. This is a lie on some outputs/platforms, but +after the ->enable callback the pipe is guaranteed to run everywhere. +So not that bad really. Suggested by Ville. + +v2: Same treatment for drm_crtc_vblank_off and encoder->disable: I've +missed the ibx pipe B select w/a, which also has a vblank wait in the +disable function (while the pipe is obviously still running). + +Cc: Ville Syrjälä +Cc: Chris Wilson +Acked-by: Ville Syrjälä +Signed-off-by: Daniel Vetter +--- + drivers/gpu/drm/i915/intel_display.c | 42 ++++++++++++++++++------------------ + 1 file changed, 21 insertions(+), 21 deletions(-) + +diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c +index a1dbe74..e224820 100644 +--- a/drivers/gpu/drm/i915/intel_display.c ++++ b/drivers/gpu/drm/i915/intel_display.c +@@ -4301,15 +4301,15 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc) + if (intel_crtc->config.has_pch_encoder) + ironlake_pch_enable(crtc); + ++ assert_vblank_disabled(crtc); ++ drm_crtc_vblank_on(crtc); ++ + for_each_encoder_on_crtc(dev, crtc, encoder) + encoder->enable(encoder); + + if (HAS_PCH_CPT(dev)) + cpt_verify_modeset(dev, intel_crtc->pipe); + +- assert_vblank_disabled(crtc); +- drm_crtc_vblank_on(crtc); +- + intel_crtc_enable_planes(crtc); + } + +@@ -4421,14 +4421,14 @@ static void haswell_crtc_enable(struct drm_crtc *crtc) + if (intel_crtc->config.dp_encoder_is_mst) + intel_ddi_set_vc_payload_alloc(crtc, true); + ++ assert_vblank_disabled(crtc); ++ drm_crtc_vblank_on(crtc); ++ + for_each_encoder_on_crtc(dev, crtc, encoder) { + encoder->enable(encoder); + intel_opregion_notify_encoder(encoder, true); + } + +- assert_vblank_disabled(crtc); +- drm_crtc_vblank_on(crtc); +- + /* If we change the relative order between pipe/planes enabling, we need + * to change the workaround. */ + haswell_mode_set_planes_workaround(intel_crtc); +@@ -4479,12 +4479,12 @@ static void ironlake_crtc_disable(struct drm_crtc *crtc) + + intel_crtc_disable_planes(crtc); + +- drm_crtc_vblank_off(crtc); +- assert_vblank_disabled(crtc); +- + for_each_encoder_on_crtc(dev, crtc, encoder) + encoder->disable(encoder); + ++ drm_crtc_vblank_off(crtc); ++ assert_vblank_disabled(crtc); ++ + if (intel_crtc->config.has_pch_encoder) + intel_set_pch_fifo_underrun_reporting(dev_priv, pipe, false); + +@@ -4544,14 +4544,14 @@ static void haswell_crtc_disable(struct drm_crtc *crtc) + + intel_crtc_disable_planes(crtc); + +- drm_crtc_vblank_off(crtc); +- assert_vblank_disabled(crtc); +- + for_each_encoder_on_crtc(dev, crtc, encoder) { + intel_opregion_notify_encoder(encoder, false); + encoder->disable(encoder); + } + ++ drm_crtc_vblank_off(crtc); ++ assert_vblank_disabled(crtc); ++ + if (intel_crtc->config.has_pch_encoder) + intel_set_pch_fifo_underrun_reporting(dev_priv, TRANSCODER_A, + false); +@@ -5021,12 +5021,12 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc) + intel_update_watermarks(crtc); + intel_enable_pipe(intel_crtc); + +- for_each_encoder_on_crtc(dev, crtc, encoder) +- encoder->enable(encoder); +- + assert_vblank_disabled(crtc); + drm_crtc_vblank_on(crtc); + ++ for_each_encoder_on_crtc(dev, crtc, encoder) ++ encoder->enable(encoder); ++ + intel_crtc_enable_planes(crtc); + + /* Underruns don't raise interrupts, so check manually. */ +@@ -5082,12 +5082,12 @@ static void i9xx_crtc_enable(struct drm_crtc *crtc) + intel_update_watermarks(crtc); + intel_enable_pipe(intel_crtc); + +- for_each_encoder_on_crtc(dev, crtc, encoder) +- encoder->enable(encoder); +- + assert_vblank_disabled(crtc); + drm_crtc_vblank_on(crtc); + ++ for_each_encoder_on_crtc(dev, crtc, encoder) ++ encoder->enable(encoder); ++ + intel_crtc_enable_planes(crtc); + + /* +@@ -5159,12 +5159,12 @@ static void i9xx_crtc_disable(struct drm_crtc *crtc) + */ + intel_wait_for_vblank(dev, pipe); + +- drm_crtc_vblank_off(crtc); +- assert_vblank_disabled(crtc); +- + for_each_encoder_on_crtc(dev, crtc, encoder) + encoder->disable(encoder); + ++ drm_crtc_vblank_off(crtc); ++ assert_vblank_disabled(crtc); ++ + intel_disable_pipe(intel_crtc); + + i9xx_pfit_disable(intel_crtc); +-- +2.2.1 + -- cgit v1.2.3 From 8ba4dc6380faa6f8a8399ad6186e5184cc4d8448 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 4 Apr 2015 03:32:04 -0400 Subject: gnu: emacs: Add librsvg to inputs. * gnu/packages/emacs.scm (emacs)[inputs]: Add librsvg. (emacs-no-x)[inputs]: Remove librsvg from inherited inputs. --- gnu/packages/emacs.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index b844661fa1..f328cede28 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -28,6 +28,7 @@ #:use-module (guix build-system trivial) #:use-module (gnu packages) #:use-module (gnu packages gtk) + #:use-module (gnu packages gnome) #:use-module (gnu packages ncurses) #:use-module (gnu packages texinfo) #:use-module (gnu packages gnutls) @@ -92,6 +93,7 @@ ("libpng" ,libpng) ("zlib" ,zlib) + ("librsvg" ,librsvg) ("libxpm" ,libxpm) ("libxml2" ,libxml2) ("libice" ,libice) @@ -126,7 +128,7 @@ editor (console only)") (inputs (fold alist-delete (package-inputs emacs) '("libx11" "gtk+" "libxft" "libtiff" "giflib" "libjpeg" - "libpng" "libxpm" "libice" "libsm" + "libpng" "librsvg" "libxpm" "libice" "libsm" ;; D-Bus depends on libx11, so remove it as well. "dbus"))))) -- cgit v1.2.3 From 5180717e64eaf4e12c330a761d3d9df0df20f556 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 4 Apr 2015 03:48:26 -0400 Subject: Remove unused module import (gnu packages ed) from (gnu packages commencement). * gnu/packages/commencement.scm: Remove (gnu packages ed) module import. --- gnu/packages/commencement.scm | 1 - 1 file changed, 1 deletion(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index f312e1729c..11d370905c 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -26,7 +26,6 @@ #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages gcc) - #:use-module (gnu packages ed) #:use-module (gnu packages m4) #:use-module (gnu packages file) #:use-module (gnu packages gawk) -- cgit v1.2.3 From 2bb9b5de7d7df60d3d3e5567bbacd14ed558ce1c Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 5 Apr 2015 20:08:55 -0400 Subject: gnu: nss: Update to 3.18. * gnu/packages/gnuzilla.scm (nss): Update to 3.18. Compute source URI automatically based on version. --- gnu/packages/gnuzilla.scm | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index f4a68fb186..068e1f1ef0 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -122,15 +122,18 @@ in the Mozilla clients.") (define-public nss (package (name "nss") - (version "3.17.4") + (version "3.18") (source (origin (method url-fetch) - (uri (string-append - "ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/" - "releases/NSS_3_17_4_RTM/src/nss-3.17.4.tar.gz")) + (uri (let ((version-with-underscores + (string-join (string-split version #\.) "_"))) + (string-append + "ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/" + "releases/NSS_" version-with-underscores "_RTM/src/" + "nss-" version ".tar.gz"))) (sha256 (base32 - "0ycxzybgn4bq0i6j5zjdjl70n3s8a742yixyik4pw8x4h4cav60x")) + "0h0xy9kvd2s8r438q4dfn25cgvv5dc1hkm9lb4bgrxpr5bxv13b1")) ;; Create nss.pc and nss-config. (patches (list (search-patch "nss-pkgconfig.patch"))))) (build-system gnu-build-system) -- cgit v1.2.3 From 7e84e1994aee1bd1a1238295b13126270e2c548d Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 5 Apr 2015 20:32:54 -0400 Subject: gnu: icecat: Update to 31.6.0-gnu1. * gnu/packages/patches/icecat-CVE-2015-0801.patch, gnu/packages/patches/icecat-CVE-2015-0807.patch, gnu/packages/patches/icecat-CVE-2015-0815-pt1.patch, gnu/packages/patches/icecat-CVE-2015-0815-pt2.patch, gnu/packages/patches/icecat-CVE-2015-0815-pt3.patch, gnu/packages/patches/icecat-CVE-2015-0816.patch, gnu/packages/patches/icecat-CVE-2015-0817.patch, gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch, gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch, gnu/packages/patches/icecat-bug-1127780.patch, gnu/packages/patches/icecat-bug-1145870.patch: Remove files. * gnu-system.am (dist_patch_DATA): Remove them. * gnu/packages/gnuzilla.scm (icecat): Update to 31.6.0-gnu1. Remove patches. --- gnu-system.am | 11 -- gnu/packages/gnuzilla.scm | 15 +- gnu/packages/patches/icecat-CVE-2015-0801.patch | 162 --------------------- gnu/packages/patches/icecat-CVE-2015-0807.patch | 30 ---- .../patches/icecat-CVE-2015-0815-pt1.patch | 63 -------- .../patches/icecat-CVE-2015-0815-pt2.patch | 89 ----------- .../patches/icecat-CVE-2015-0815-pt3.patch | 37 ----- gnu/packages/patches/icecat-CVE-2015-0816.patch | 76 ---------- gnu/packages/patches/icecat-CVE-2015-0817.patch | 44 ------ .../patches/icecat-CVE-2015-0818-pt1.patch | 67 --------- .../patches/icecat-CVE-2015-0818-pt2.patch | 28 ---- gnu/packages/patches/icecat-bug-1127780.patch | 25 ---- gnu/packages/patches/icecat-bug-1145870.patch | 43 ------ 13 files changed, 2 insertions(+), 688 deletions(-) delete mode 100644 gnu/packages/patches/icecat-CVE-2015-0801.patch delete mode 100644 gnu/packages/patches/icecat-CVE-2015-0807.patch delete mode 100644 gnu/packages/patches/icecat-CVE-2015-0815-pt1.patch delete mode 100644 gnu/packages/patches/icecat-CVE-2015-0815-pt2.patch delete mode 100644 gnu/packages/patches/icecat-CVE-2015-0815-pt3.patch delete mode 100644 gnu/packages/patches/icecat-CVE-2015-0816.patch delete mode 100644 gnu/packages/patches/icecat-CVE-2015-0817.patch delete mode 100644 gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch delete mode 100644 gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch delete mode 100644 gnu/packages/patches/icecat-bug-1127780.patch delete mode 100644 gnu/packages/patches/icecat-bug-1145870.patch diff --git a/gnu-system.am b/gnu-system.am index f7c7af78f3..2b4f69dc73 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -438,17 +438,6 @@ dist_patch_DATA = \ gnu/packages/patches/guix-test-networking.patch \ gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \ gnu/packages/patches/hop-bigloo-4.0b.patch \ - gnu/packages/patches/icecat-bug-1127780.patch \ - gnu/packages/patches/icecat-bug-1145870.patch \ - gnu/packages/patches/icecat-CVE-2015-0801.patch \ - gnu/packages/patches/icecat-CVE-2015-0807.patch \ - gnu/packages/patches/icecat-CVE-2015-0815-pt1.patch \ - gnu/packages/patches/icecat-CVE-2015-0815-pt2.patch \ - gnu/packages/patches/icecat-CVE-2015-0815-pt3.patch \ - gnu/packages/patches/icecat-CVE-2015-0816.patch \ - gnu/packages/patches/icecat-CVE-2015-0817.patch \ - gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch \ - gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch \ gnu/packages/patches/irrlicht-mesa-10.patch \ gnu/packages/patches/jbig2dec-ignore-testtest.patch \ gnu/packages/patches/kmod-module-directory.patch \ diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 068e1f1ef0..e422d0a9f6 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -219,7 +219,7 @@ standards.") (define-public icecat (package (name "icecat") - (version "31.5.0") + (version "31.6.0-gnu1") (source (origin (method url-fetch) @@ -227,18 +227,7 @@ standards.") version "/" name "-" version ".tar.bz2")) (sha256 (base32 - "1rr4axghaypdkrf60i1qp6dz4cd29ya02fs3vyffvp4x9kgcq2dd")) - (patches (map search-patch '("icecat-CVE-2015-0815-pt1.patch" - "icecat-CVE-2015-0815-pt2.patch" - "icecat-bug-1127780.patch" - "icecat-CVE-2015-0807.patch" - "icecat-CVE-2015-0815-pt3.patch" - "icecat-CVE-2015-0817.patch" - "icecat-CVE-2015-0816.patch" - "icecat-CVE-2015-0818-pt1.patch" - "icecat-bug-1145870.patch" - "icecat-CVE-2015-0818-pt2.patch" - "icecat-CVE-2015-0801.patch"))))) + "1a4l23msg4cpc4yp59q2z6xv63r6advlbnjy65v4djv6yhgnqf1i")))) (build-system gnu-build-system) (inputs `(("alsa-lib" ,alsa-lib) diff --git a/gnu/packages/patches/icecat-CVE-2015-0801.patch b/gnu/packages/patches/icecat-CVE-2015-0801.patch deleted file mode 100644 index 9d858523b9..0000000000 --- a/gnu/packages/patches/icecat-CVE-2015-0801.patch +++ /dev/null @@ -1,162 +0,0 @@ -From 4ca86283a71427f27e810d77c8e75418f6428457 Mon Sep 17 00:00:00 2001 -From: Olli Pettay -Date: Mon, 23 Mar 2015 22:23:53 -0400 -Subject: [PATCH] Bug 1146339 - Do anchor scrolling right before dispatching - popstate/hashchange. r=bz, a=lmandel - ---- - docshell/base/nsDocShell.cpp | 64 +++++++++++++++++++++----------------------- - docshell/base/nsDocShell.h | 1 - - 2 files changed, 30 insertions(+), 35 deletions(-) - -diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp -index bdf88a5cf..efb6a6e 100644 ---- a/docshell/base/nsDocShell.cpp -+++ b/docshell/base/nsDocShell.cpp -@@ -1322,7 +1322,7 @@ nsDocShell::LoadURI(nsIURI * aURI, - - // Note: we allow loads to get through here even if mFiredUnloadEvent is - // true; that case will get handled in LoadInternal or LoadHistoryEntry. -- if (IsPrintingOrPP() || mBlockNavigation) { -+ if (IsPrintingOrPP()) { - return NS_OK; // JS may not handle returning of an error code - } - -@@ -4206,7 +4206,8 @@ bool - nsDocShell::IsNavigationAllowed(bool aDisplayPrintErrorDialog) - { - bool isAllowed = !IsPrintingOrPP(aDisplayPrintErrorDialog) && -- !mFiredUnloadEvent && !mBlockNavigation; if (!isAllowed) { -+ !mFiredUnloadEvent; -+ if (!isAllowed) { - return false; - } - if (!mContentViewer) { -@@ -8901,8 +8902,6 @@ nsDocShell::InternalLoad(nsIURI * aURI, - - NS_ENSURE_TRUE(!mIsBeingDestroyed, NS_ERROR_NOT_AVAILABLE); - -- NS_ENSURE_TRUE(!mBlockNavigation, NS_ERROR_UNEXPECTED); -- - // wyciwyg urls can only be loaded through history. Any normal load of - // wyciwyg through docshell is illegal. Disallow such loads. - if (aLoadType & LOAD_CMD_NORMAL) { -@@ -9324,19 +9323,6 @@ nsDocShell::InternalLoad(nsIURI * aURI, - GetCurScrollPos(ScrollOrientation_X, &cx); - GetCurScrollPos(ScrollOrientation_Y, &cy); - -- { -- AutoRestore scrollingToAnchor(mBlockNavigation); -- mBlockNavigation = true; -- -- // ScrollToAnchor doesn't necessarily cause us to scroll the window; -- // the function decides whether a scroll is appropriate based on the -- // arguments it receives. But even if we don't end up scrolling, -- // ScrollToAnchor performs other important tasks, such as informing -- // the presShell that we have a new hash. See bug 680257. -- rv = ScrollToAnchor(curHash, newHash, aLoadType); -- NS_ENSURE_SUCCESS(rv, rv); -- } -- - // Reset mLoadType to its original value once we exit this block, - // because this short-circuited load might have started after a - // normal, network load, and we don't want to clobber its load type. -@@ -9424,16 +9410,6 @@ nsDocShell::InternalLoad(nsIURI * aURI, - mOSHE->SetCacheKey(cacheKey); - } - -- /* restore previous position of scroller(s), if we're moving -- * back in history (bug 59774) -- */ -- if (mOSHE && (aLoadType == LOAD_HISTORY || aLoadType == LOAD_RELOAD_NORMAL)) -- { -- nscoord bx, by; -- mOSHE->GetScrollPosition(&bx, &by); -- SetCurScrollPosEx(bx, by); -- } -- - /* Restore the original LSHE if we were loading something - * while short-circuited load was initiated. - */ -@@ -9471,12 +9447,36 @@ nsDocShell::InternalLoad(nsIURI * aURI, - - SetDocCurrentStateObj(mOSHE); - -+ // Inform the favicon service that the favicon for oldURI also -+ // applies to aURI. -+ CopyFavicon(currentURI, aURI, mInPrivateBrowsing); -+ -+ nsRefPtr win = mScriptGlobal ? -+ mScriptGlobal->GetCurrentInnerWindowInternal() : nullptr; -+ -+ // ScrollToAnchor doesn't necessarily cause us to scroll the window; -+ // the function decides whether a scroll is appropriate based on the -+ // arguments it receives. But even if we don't end up scrolling, -+ // ScrollToAnchor performs other important tasks, such as informing -+ // the presShell that we have a new hash. See bug 680257. -+ rv = ScrollToAnchor(curHash, newHash, aLoadType); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ /* restore previous position of scroller(s), if we're moving -+ * back in history (bug 59774) -+ */ -+ if (mOSHE && (aLoadType == LOAD_HISTORY || -+ aLoadType == LOAD_RELOAD_NORMAL)) { -+ nscoord bx, by; -+ mOSHE->GetScrollPosition(&bx, &by); -+ SetCurScrollPosEx(bx, by); -+ } -+ - // Dispatch the popstate and hashchange events, as appropriate. - // - // The event dispatch below can cause us to re-enter script and - // destroy the docshell, nulling out mScriptGlobal. Hold a stack - // reference to avoid null derefs. See bug 914521. -- nsRefPtr win = mScriptGlobal; - if (win) { - // Fire a hashchange event URIs differ, and only in their hashes. - bool doHashchange = sameExceptHashes && !curHash.Equals(newHash); -@@ -9492,10 +9492,6 @@ nsDocShell::InternalLoad(nsIURI * aURI, - } - } - -- // Inform the favicon service that the favicon for oldURI also -- // applies to aURI. -- CopyFavicon(currentURI, aURI, mInPrivateBrowsing); -- - return NS_OK; - } - } -@@ -12573,7 +12569,7 @@ nsDocShell::OnLinkClick(nsIContent* aContent, - { - NS_ASSERTION(NS_IsMainThread(), "wrong thread"); - -- if (!IsOKToLoadURI(aURI) || mBlockNavigation) { -+ if (!IsOKToLoadURI(aURI)) { - return NS_OK; - } - -@@ -12629,7 +12625,7 @@ nsDocShell::OnLinkClickSync(nsIContent *aContent, - *aRequest = nullptr; - } - -- if (!IsOKToLoadURI(aURI) || mBlockNavigation) { -+ if (!IsOKToLoadURI(aURI)) { - return NS_OK; - } - -diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h -index be353ee..c191777 100644 ---- a/docshell/base/nsDocShell.h -+++ b/docshell/base/nsDocShell.h -@@ -835,7 +835,6 @@ protected: - bool mInPrivateBrowsing; - bool mUseRemoteTabs; - bool mDeviceSizeIsPageSize; -- bool mBlockNavigation; - - // Because scriptability depends on the mAllowJavascript values of our - // ancestors, we cache the effective scriptability and recompute it when --- -2.2.1 - diff --git a/gnu/packages/patches/icecat-CVE-2015-0807.patch b/gnu/packages/patches/icecat-CVE-2015-0807.patch deleted file mode 100644 index 833bc36d6b..0000000000 --- a/gnu/packages/patches/icecat-CVE-2015-0807.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 1b97832a8ae9983e4f15befe142f5ea0626707f1 Mon Sep 17 00:00:00 2001 -From: Christoph Kerschbaumer -Date: Thu, 19 Feb 2015 13:43:40 -0800 -Subject: [PATCH] Bug 1111834 - CORS request after preflight should not follow - 30x redirect. r=sicking, a=lmandel - ---- - dom/base/Navigator.cpp | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp -index 020e370..727b7cb7 100644 ---- a/dom/base/Navigator.cpp -+++ b/dom/base/Navigator.cpp -@@ -1278,6 +1278,12 @@ Navigator::SendBeacon(const nsAString& aUrl, - !contentType.Equals(APPLICATION_WWW_FORM_URLENCODED) && - !contentType.Equals(MULTIPART_FORM_DATA) && - !contentType.Equals(TEXT_PLAIN)) { -+ -+ // we need to set the sameOriginChecker as a notificationCallback -+ // so we can tell the channel not to follow redirects -+ nsCOMPtr soc = nsContentUtils::GetSameOriginChecker(); -+ channel->SetNotificationCallbacks(soc); -+ - nsCOMPtr preflightChannel; - nsTArray unsafeHeaders; - unsafeHeaders.AppendElement(NS_LITERAL_CSTRING("Content-Type")); --- -2.2.1 - diff --git a/gnu/packages/patches/icecat-CVE-2015-0815-pt1.patch b/gnu/packages/patches/icecat-CVE-2015-0815-pt1.patch deleted file mode 100644 index 1dd5e20c67..0000000000 --- a/gnu/packages/patches/icecat-CVE-2015-0815-pt1.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 6fb9d1d2bee806abb2f67cee05a8573450a017df Mon Sep 17 00:00:00 2001 -From: Steve Fink -Date: Mon, 12 Jan 2015 14:19:27 -0800 -Subject: [PATCH] Bug 1137326 - Fix out of bounds error in - JS_iterateCompartments. r=terrence, a=abillings - ---- - js/src/gc/Zone.h | 11 ++++++----- - js/src/jsapi.h | 5 +++-- - 2 files changed, 9 insertions(+), 7 deletions(-) - -diff --git a/js/src/gc/Zone.h b/js/src/gc/Zone.h -index cbbde6b..612defe 100644 ---- a/js/src/gc/Zone.h -+++ b/js/src/gc/Zone.h -@@ -389,21 +389,22 @@ struct CompartmentsInZoneIter - // This is for the benefit of CompartmentsIterT::comp. - friend class mozilla::Maybe; - private: -- JSCompartment **it, **end; -+ JS::Zone *zone; -+ JSCompartment **it; - - CompartmentsInZoneIter() -- : it(nullptr), end(nullptr) -+ : zone(nullptr), it(nullptr) - {} - - public: -- explicit CompartmentsInZoneIter(JS::Zone *zone) { -+ explicit CompartmentsInZoneIter(JS::Zone *zone) : zone(zone) { - it = zone->compartments.begin(); -- end = zone->compartments.end(); - } - - bool done() const { - JS_ASSERT(it); -- return it == end; -+ return it < zone->compartments.begin() || -+ it >= zone->compartments.end(); - } - void next() { - JS_ASSERT(!done()); -diff --git a/js/src/jsapi.h b/js/src/jsapi.h -index 5ae1f86..40fdb37 100644 ---- a/js/src/jsapi.h -+++ b/js/src/jsapi.h -@@ -1780,9 +1780,10 @@ JS_LeaveCompartment(JSContext *cx, JSCompartment *oldCompartment); - typedef void (*JSIterateCompartmentCallback)(JSRuntime *rt, void *data, JSCompartment *compartment); - - /* -- * This function calls |compartmentCallback| on every compartment. Beware that -+ * This function calls |compartmentCallback| on every compartment. Beware that - * there is no guarantee that the compartment will survive after the callback -- * returns. -+ * returns. Also, if the callback can GC, there is no guarantee that every -+ * compartment will be visited. - */ - extern JS_PUBLIC_API(void) - JS_IterateCompartments(JSRuntime *rt, void *data, --- -2.2.1 - diff --git a/gnu/packages/patches/icecat-CVE-2015-0815-pt2.patch b/gnu/packages/patches/icecat-CVE-2015-0815-pt2.patch deleted file mode 100644 index 0a0cbed177..0000000000 --- a/gnu/packages/patches/icecat-CVE-2015-0815-pt2.patch +++ /dev/null @@ -1,89 +0,0 @@ -From f6d39ec03896eaf5d30d79d8165263c98e957749 Mon Sep 17 00:00:00 2001 -From: Nathan Froyd -Date: Fri, 6 Feb 2015 16:19:36 -0500 -Subject: [PATCH] Bug 1036515 - Narrow the scope of unlocking mMonitor in - nsTimerImpl::PostTimerEvents. r=bsmedberg, a=abillings - ---- - xpcom/threads/TimerThread.cpp | 55 ++++++++++++++++++++++--------------------- - 1 file changed, 28 insertions(+), 27 deletions(-) - -diff --git a/xpcom/threads/TimerThread.cpp b/xpcom/threads/TimerThread.cpp -index bd586c9..b95846f 100644 ---- a/xpcom/threads/TimerThread.cpp -+++ b/xpcom/threads/TimerThread.cpp -@@ -239,43 +239,44 @@ NS_IMETHODIMP TimerThread::Run() - RemoveTimerInternal(timer); - timer = nullptr; - -+#ifdef DEBUG_TIMERS -+ if (PR_LOG_TEST(GetTimerLog(), PR_LOG_DEBUG)) { -+ PR_LOG(GetTimerLog(), PR_LOG_DEBUG, -+ ("Timer thread woke up %fms from when it was supposed to\n", -+ fabs((now - timerRef->mTimeout).ToMilliseconds()))); -+ } -+#endif -+ - { - // We release mMonitor around the Fire call to avoid deadlock. - MonitorAutoUnlock unlock(mMonitor); - --#ifdef DEBUG_TIMERS -- if (PR_LOG_TEST(GetTimerLog(), PR_LOG_DEBUG)) { -- PR_LOG(GetTimerLog(), PR_LOG_DEBUG, -- ("Timer thread woke up %fms from when it was supposed to\n", -- fabs((now - timerRef->mTimeout).ToMilliseconds()))); -- } --#endif - - // We are going to let the call to PostTimerEvent here handle the - // release of the timer so that we don't end up releasing the timer - // on the TimerThread instead of on the thread it targets. - timerRef = nsTimerImpl::PostTimerEvent(timerRef.forget()); -+ } - -- if (timerRef) { -- // We got our reference back due to an error. -- // Unhook the nsRefPtr, and release manually so we can get the -- // refcount. -- nsrefcnt rc = timerRef.forget().take()->Release(); -- (void)rc; -- -- // The nsITimer interface requires that its users keep a reference -- // to the timers they use while those timers are initialized but -- // have not yet fired. If this ever happens, it is a bug in the -- // code that created and used the timer. -- // -- // Further, note that this should never happen even with a -- // misbehaving user, because nsTimerImpl::Release checks for a -- // refcount of 1 with an armed timer (a timer whose only reference -- // is from the timer thread) and when it hits this will remove the -- // timer from the timer thread and thus destroy the last reference, -- // preventing this situation from occurring. -- MOZ_ASSERT(rc != 0, "destroyed timer off its target thread!"); -- } -+ if (timerRef) { -+ // We got our reference back due to an error. -+ // Unhook the nsRefPtr, and release manually so we can get the -+ // refcount. -+ nsrefcnt rc = timerRef.forget().take()->Release(); -+ (void)rc; -+ -+ // The nsITimer interface requires that its users keep a reference -+ // to the timers they use while those timers are initialized but -+ // have not yet fired. If this ever happens, it is a bug in the -+ // code that created and used the timer. -+ // -+ // Further, note that this should never happen even with a -+ // misbehaving user, because nsTimerImpl::Release checks for a -+ // refcount of 1 with an armed timer (a timer whose only reference -+ // is from the timer thread) and when it hits this will remove the -+ // timer from the timer thread and thus destroy the last reference, -+ // preventing this situation from occurring. -+ MOZ_ASSERT(rc != 0, "destroyed timer off its target thread!"); - } - - if (mShutdown) --- -2.2.1 - diff --git a/gnu/packages/patches/icecat-CVE-2015-0815-pt3.patch b/gnu/packages/patches/icecat-CVE-2015-0815-pt3.patch deleted file mode 100644 index 5ac053df78..0000000000 --- a/gnu/packages/patches/icecat-CVE-2015-0815-pt3.patch +++ /dev/null @@ -1,37 +0,0 @@ -From e7fc74f6a281c12a4a406f2dd20ff2c27a61484d Mon Sep 17 00:00:00 2001 -From: Brian Hackett -Date: Sun, 8 Mar 2015 22:10:01 -0400 -Subject: [PATCH] Bug 1138199. r=billm, a=lmandel - ---- - js/src/ds/LifoAlloc.h | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/js/src/ds/LifoAlloc.h b/js/src/ds/LifoAlloc.h -index 7617cf5..b112353 100644 ---- a/js/src/ds/LifoAlloc.h -+++ b/js/src/ds/LifoAlloc.h -@@ -193,14 +193,14 @@ class LifoAlloc - - // Append used chunks to the end of this LifoAlloc. We act as if all the - // chunks in |this| are used, even if they're not, so memory may be wasted. -- void appendUsed(BumpChunk *start, BumpChunk *latest, BumpChunk *end) { -- JS_ASSERT(start && latest && end); -+ void appendUsed(BumpChunk *otherFirst, BumpChunk *otherLatest, BumpChunk *otherLast) { -+ JS_ASSERT(otherFirst && otherLatest && otherLast); - if (last) -- last->setNext(start); -+ last->setNext(otherFirst); - else -- first = latest = start; -- last = end; -- this->latest = latest; -+ first = otherFirst; -+ latest = otherLatest; -+ last = otherLast; - } - - void incrementCurSize(size_t size) { --- -2.2.1 - diff --git a/gnu/packages/patches/icecat-CVE-2015-0816.patch b/gnu/packages/patches/icecat-CVE-2015-0816.patch deleted file mode 100644 index 5632e37eb3..0000000000 --- a/gnu/packages/patches/icecat-CVE-2015-0816.patch +++ /dev/null @@ -1,76 +0,0 @@ -From ae49ed04f54c2f78d6ba7e545e0099602a3270fa Mon Sep 17 00:00:00 2001 -From: Boris Zbarsky -Date: Thu, 19 Mar 2015 18:58:44 -0400 -Subject: [PATCH] Bug 1144991 - Be a bit more restrictive about when a - URI_IS_UI_RESOURCE source is allowed to link to a URI_IS_UI_RESOURCE URI that - doesn't have the same scheme. r=bholley, a=abillings - ---- - caps/src/nsScriptSecurityManager.cpp | 38 +++++++++++++++++++++++++----------- - 1 file changed, 27 insertions(+), 11 deletions(-) - -diff --git a/caps/src/nsScriptSecurityManager.cpp b/caps/src/nsScriptSecurityManager.cpp -index 3587358..6577b95 100644 ---- a/caps/src/nsScriptSecurityManager.cpp -+++ b/caps/src/nsScriptSecurityManager.cpp -@@ -770,12 +770,31 @@ nsScriptSecurityManager::CheckLoadURIWithPrincipal(nsIPrincipal* aPrincipal, - NS_ENSURE_SUCCESS(rv, rv); - if (hasFlags) { - if (aFlags & nsIScriptSecurityManager::ALLOW_CHROME) { -+ -+ // For now, don't change behavior for resource:// or moz-icon:// and -+ // just allow them. - if (!targetScheme.EqualsLiteral("chrome")) { -- // for now don't change behavior for resource: or moz-icon: - return NS_OK; - } - -- // allow load only if chrome package is whitelisted -+ // Allow a URI_IS_UI_RESOURCE source to link to a URI_IS_UI_RESOURCE -+ // target if ALLOW_CHROME is set. -+ // -+ // ALLOW_CHROME is a flag that we pass on all loads _except_ docshell -+ // loads (since docshell loads run the loaded content with its origin -+ // principal). So we're effectively allowing resource://, chrome://, -+ // and moz-icon:// source URIs to load resource://, chrome://, and -+ // moz-icon:// files, so long as they're not loading it as a document. -+ bool sourceIsUIResource; -+ rv = NS_URIChainHasFlags(sourceBaseURI, -+ nsIProtocolHandler::URI_IS_UI_RESOURCE, -+ &sourceIsUIResource); -+ NS_ENSURE_SUCCESS(rv, rv); -+ if (sourceIsUIResource) { -+ return NS_OK; -+ } -+ -+ // Allow the load only if the chrome package is whitelisted. - nsCOMPtr reg(do_GetService( - NS_CHROMEREGISTRY_CONTRACTID)); - if (reg) { -@@ -787,17 +806,14 @@ nsScriptSecurityManager::CheckLoadURIWithPrincipal(nsIPrincipal* aPrincipal, - } - } - -- // resource: and chrome: are equivalent, securitywise -- // That's bogus!! Fix this. But watch out for -- // the view-source stylesheet? -- bool sourceIsChrome; -- rv = NS_URIChainHasFlags(sourceBaseURI, -- nsIProtocolHandler::URI_IS_UI_RESOURCE, -- &sourceIsChrome); -- NS_ENSURE_SUCCESS(rv, rv); -- if (sourceIsChrome) { -+ // Special-case the hidden window: it's allowed to load -+ // URI_IS_UI_RESOURCE no matter what. Bug 1145470 tracks removing this. -+ nsAutoCString sourceSpec; -+ if (NS_SUCCEEDED(sourceBaseURI->GetSpec(sourceSpec)) && -+ sourceSpec.EqualsLiteral("resource://gre-resources/hiddenWindow.html")) { - return NS_OK; - } -+ - if (reportErrors) { - ReportError(nullptr, errorTag, sourceURI, aTargetURI); - } --- -2.2.1 - diff --git a/gnu/packages/patches/icecat-CVE-2015-0817.patch b/gnu/packages/patches/icecat-CVE-2015-0817.patch deleted file mode 100644 index bb530a535d..0000000000 --- a/gnu/packages/patches/icecat-CVE-2015-0817.patch +++ /dev/null @@ -1,44 +0,0 @@ -From cedbdf8290018fbef65458e9e438c72adf2c2775 Mon Sep 17 00:00:00 2001 -From: Steve Fink -Date: Thu, 19 Mar 2015 15:46:24 -0700 -Subject: [PATCH] Bug 1145255. r=luke, a=lmandel - ---- - js/src/jit/AsmJS.cpp | 13 +++++++++++-- - 1 file changed, 11 insertions(+), 2 deletions(-) - -diff --git a/js/src/jit/AsmJS.cpp b/js/src/jit/AsmJS.cpp -index 302b5ab..1b8eed6 100644 ---- a/js/src/jit/AsmJS.cpp -+++ b/js/src/jit/AsmJS.cpp -@@ -14,6 +14,7 @@ - - #include "jsmath.h" - #include "jsprf.h" -+#include "jsutil.h" - #include "jsworkers.h" - #include "prmjtime.h" - -@@ -3432,9 +3433,17 @@ FoldMaskedArrayIndex(FunctionCompiler &f, ParseNode **indexExpr, int32_t *mask, - if (IsLiteralOrConstInt(f, maskNode, &mask2)) { - // Flag the access to skip the bounds check if the mask ensures that an 'out of - // bounds' access can not occur based on the current heap length constraint. -- if (mask2 == 0 || -- CountLeadingZeroes32(f.m().minHeapLength() - 1) <= CountLeadingZeroes32(mask2)) { -+ if (mask2 == 0) { - *needsBoundsCheck = NO_BOUNDS_CHECK; -+ } else { -+ uint32_t minHeap = f.m().minHeapLength(); -+ uint32_t minHeapZeroes = CountLeadingZeroes32(minHeap - 1); -+ uint32_t maskZeroes = CountLeadingZeroes32(mask2); -+ if ((minHeapZeroes < maskZeroes) || -+ (IsPowerOfTwo(minHeap) && minHeapZeroes == maskZeroes)) -+ { -+ *needsBoundsCheck = NO_BOUNDS_CHECK; -+ } - } - *mask &= mask2; - *indexExpr = indexNode; --- -2.2.1 - diff --git a/gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch b/gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch deleted file mode 100644 index 5d396eed6b..0000000000 --- a/gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 79dddb16aaa58f5b5cef49dac6d234f500af3baf Mon Sep 17 00:00:00 2001 -From: Olli Pettay -Date: Thu, 19 Mar 2015 21:53:32 -0400 -Subject: [PATCH] Bug 1144988 - Don't let other pages to load while doing - scroll-to-anchor. r=bz, a=lmandel - ---- - docshell/base/nsDocShell.cpp | 23 ++++++++++++++--------- - docshell/base/nsDocShell.h | 1 + - 2 files changed, 15 insertions(+), 9 deletions(-) - -diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp -index 887c910..14ff3f2 100644 ---- a/docshell/base/nsDocShell.cpp -+++ b/docshell/base/nsDocShell.cpp -@@ -4204,8 +4204,8 @@ nsDocShell::IsPrintingOrPP(bool aDisplayErrorDialog) - bool - nsDocShell::IsNavigationAllowed(bool aDisplayPrintErrorDialog) - { -- bool isAllowed = !IsPrintingOrPP(aDisplayPrintErrorDialog) && !mFiredUnloadEvent; -- if (!isAllowed) { -+ bool isAllowed = !IsPrintingOrPP(aDisplayPrintErrorDialog) && -+ !mFiredUnloadEvent && !mBlockNavigation; if (!isAllowed) { - return false; - } - if (!mContentViewer) { -@@ -9321,13 +9321,18 @@ nsDocShell::InternalLoad(nsIURI * aURI, - GetCurScrollPos(ScrollOrientation_X, &cx); - GetCurScrollPos(ScrollOrientation_Y, &cy); - -- // ScrollToAnchor doesn't necessarily cause us to scroll the window; -- // the function decides whether a scroll is appropriate based on the -- // arguments it receives. But even if we don't end up scrolling, -- // ScrollToAnchor performs other important tasks, such as informing -- // the presShell that we have a new hash. See bug 680257. -- rv = ScrollToAnchor(curHash, newHash, aLoadType); -- NS_ENSURE_SUCCESS(rv, rv); -+ { -+ AutoRestore scrollingToAnchor(mBlockNavigation); -+ mBlockNavigation = true; -+ -+ // ScrollToAnchor doesn't necessarily cause us to scroll the window; -+ // the function decides whether a scroll is appropriate based on the -+ // arguments it receives. But even if we don't end up scrolling, -+ // ScrollToAnchor performs other important tasks, such as informing -+ // the presShell that we have a new hash. See bug 680257. -+ rv = ScrollToAnchor(curHash, newHash, aLoadType); -+ NS_ENSURE_SUCCESS(rv, rv); -+ } - - // Reset mLoadType to its original value once we exit this block, - // because this short-circuited load might have started after a -diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h -index c191777..be353ee 100644 ---- a/docshell/base/nsDocShell.h -+++ b/docshell/base/nsDocShell.h -@@ -835,6 +835,7 @@ protected: - bool mInPrivateBrowsing; - bool mUseRemoteTabs; - bool mDeviceSizeIsPageSize; -+ bool mBlockNavigation; - - // Because scriptability depends on the mAllowJavascript values of our - // ancestors, we cache the effective scriptability and recompute it when --- -2.2.1 - diff --git a/gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch b/gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch deleted file mode 100644 index 4eac5df4db..0000000000 --- a/gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 83364c747c421b191f9d4012896a9e5a1d5223ad Mon Sep 17 00:00:00 2001 -From: Kyle Huey -Date: Fri, 20 Mar 2015 19:15:13 -0700 -Subject: [PATCH] Bug 1144988. r=bz a=lmandel - ---- - docshell/base/nsDocShell.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp -index 4cddcef..bdf88a5cf 100644 ---- a/docshell/base/nsDocShell.cpp -+++ b/docshell/base/nsDocShell.cpp -@@ -1322,9 +1322,10 @@ nsDocShell::LoadURI(nsIURI * aURI, - - // Note: we allow loads to get through here even if mFiredUnloadEvent is - // true; that case will get handled in LoadInternal or LoadHistoryEntry. -- if (IsPrintingOrPP()) { -+ if (IsPrintingOrPP() || mBlockNavigation) { - return NS_OK; // JS may not handle returning of an error code - } -+ - nsCOMPtr referrer; - nsCOMPtr postStream; - nsCOMPtr headersStream; --- -2.2.1 - diff --git a/gnu/packages/patches/icecat-bug-1127780.patch b/gnu/packages/patches/icecat-bug-1127780.patch deleted file mode 100644 index c433616087..0000000000 --- a/gnu/packages/patches/icecat-bug-1127780.patch +++ /dev/null @@ -1,25 +0,0 @@ -From cf1de3d04302841aaa05aed8364da3399cbca9b4 Mon Sep 17 00:00:00 2001 -From: Bobby Holley -Date: Tue, 17 Feb 2015 17:47:12 -0500 -Subject: [PATCH] Bug 1127780 - Add null check. r=bz, a=bkerensa - ---- - js/xpconnect/wrappers/XrayWrapper.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/js/xpconnect/wrappers/XrayWrapper.h b/js/xpconnect/wrappers/XrayWrapper.h -index ead095f1..cc8c580 100644 ---- a/js/xpconnect/wrappers/XrayWrapper.h -+++ b/js/xpconnect/wrappers/XrayWrapper.h -@@ -131,7 +131,7 @@ class XrayWrapper : public Base { - { - if (!Base::getPrototypeOf(cx, wrapper, protop)) - return false; -- if (WrapperFactory::IsXrayWrapper(protop)) -+ if (!protop || WrapperFactory::IsXrayWrapper(protop)) - return true; - - protop.set(JS_GetObjectPrototype(cx, wrapper)); --- -2.2.1 - diff --git a/gnu/packages/patches/icecat-bug-1145870.patch b/gnu/packages/patches/icecat-bug-1145870.patch deleted file mode 100644 index 34a018c697..0000000000 --- a/gnu/packages/patches/icecat-bug-1145870.patch +++ /dev/null @@ -1,43 +0,0 @@ -From a40e2ebc2ab57dacb539d4e49ed4193764ff7112 Mon Sep 17 00:00:00 2001 -From: Kyle Huey -Date: Fri, 20 Mar 2015 19:05:56 -0700 -Subject: [PATCH] Bug 1145870. r=bz a=lmandel - ---- - docshell/base/nsDocShell.cpp | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp -index 14ff3f2..4cddcef 100644 ---- a/docshell/base/nsDocShell.cpp -+++ b/docshell/base/nsDocShell.cpp -@@ -8900,6 +8900,8 @@ nsDocShell::InternalLoad(nsIURI * aURI, - - NS_ENSURE_TRUE(!mIsBeingDestroyed, NS_ERROR_NOT_AVAILABLE); - -+ NS_ENSURE_TRUE(!mBlockNavigation, NS_ERROR_UNEXPECTED); -+ - // wyciwyg urls can only be loaded through history. Any normal load of - // wyciwyg through docshell is illegal. Disallow such loads. - if (aLoadType & LOAD_CMD_NORMAL) { -@@ -12570,7 +12572,7 @@ nsDocShell::OnLinkClick(nsIContent* aContent, - { - NS_ASSERTION(NS_IsMainThread(), "wrong thread"); - -- if (!IsOKToLoadURI(aURI)) { -+ if (!IsOKToLoadURI(aURI) || mBlockNavigation) { - return NS_OK; - } - -@@ -12626,7 +12628,7 @@ nsDocShell::OnLinkClickSync(nsIContent *aContent, - *aRequest = nullptr; - } - -- if (!IsOKToLoadURI(aURI)) { -+ if (!IsOKToLoadURI(aURI) || mBlockNavigation) { - return NS_OK; - } - --- -2.2.1 - -- cgit v1.2.3 From 26b261ecfed246e4fa7b7c18654430e4f4b0eb1a Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Sun, 5 Apr 2015 21:59:18 +0200 Subject: build-system/gnu: Add 'delete-info-dir-file' phase. * guix/build/gnu-build-system.scm (delete-info-dir-file): New procedure. (%standard-phases): Use it. --- guix/build/gnu-build-system.scm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index 5220bda71f..512d98ae91 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -538,6 +538,15 @@ DOCUMENTATION-COMPRESSOR-FLAGS." (format #t "not compressing documentation~%") #t))) +(define* (delete-info-dir-file #:key outputs #:allow-other-keys) + (for-each (match-lambda + ((output . directory) + (let ((info-dir-file (string-append directory "/share/info/dir"))) + (when (file-exists? info-dir-file) + (delete-file info-dir-file))))) + outputs) + #t) + (define %standard-phases ;; Standard build phases, as a list of symbol/procedure pairs. (let-syntax ((phases (syntax-rules () @@ -549,6 +558,7 @@ DOCUMENTATION-COMPRESSOR-FLAGS." patch-shebangs strip validate-runpath validate-documentation-location + delete-info-dir-file compress-documentation))) -- cgit v1.2.3 From b198545df6f7aa92947b1fb97fd56304dfcda78b Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Mon, 6 Apr 2015 10:47:31 +0200 Subject: build-system/gnu: Add docstring to 'delete-info-dir-file'. * guix/build/gnu-build-system.scm (delete-info-dir-file): Add docstring. --- guix/build/gnu-build-system.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index 512d98ae91..c60f8ba162 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -539,6 +539,7 @@ DOCUMENTATION-COMPRESSOR-FLAGS." #t))) (define* (delete-info-dir-file #:key outputs #:allow-other-keys) + "Delete any 'share/info/dir' file from OUTPUTS." (for-each (match-lambda ((output . directory) (let ((info-dir-file (string-append directory "/share/info/dir"))) -- cgit v1.2.3 From 07d4d9b7513be7c5ec35ba88cb56d8f0ff2f6908 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 6 Apr 2015 09:38:54 -0400 Subject: gnu: icecat: Fix source URI. * gnu/packages/gnuzilla.scm (icecat)[source]: Fix source URI computation. --- gnu/packages/gnuzilla.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index e422d0a9f6..fc2b41d38b 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -20,6 +20,7 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages gnuzilla) + #:use-module ((srfi srfi-1) #:hide (zip)) #:use-module (gnu packages) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) @@ -224,7 +225,8 @@ standards.") (origin (method url-fetch) (uri (string-append "mirror://gnu/gnuzilla/" - version "/" name "-" version ".tar.bz2")) + (first (string-split version #\-)) "/" + name "-" version ".tar.bz2")) (sha256 (base32 "1a4l23msg4cpc4yp59q2z6xv63r6advlbnjy65v4djv6yhgnqf1i")))) -- cgit v1.2.3 From e081385af289da4c330511aa5adac8078fbd5074 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 6 Apr 2015 10:25:03 -0400 Subject: gnu: linux-libre-headers: Update to 3.14.37. * gnu/packages/linux.scm (linux-libre-headers): Update to 3.14.37. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 826a731002..c4e34c197a 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -91,7 +91,7 @@ version "-gnu.tar.xz"))) (define-public linux-libre-headers - (let* ((version "3.3.8") + (let* ((version "3.14.37") (build-phase (lambda (arch) `(lambda _ @@ -120,7 +120,7 @@ (uri (linux-libre-urls version)) (sha256 (base32 - "0jkfh0z1s6izvdnc3njm39dhzp1cg8i06jv06izwqz9w9qsprvnl")))) + "1blxr2bsvfqi9khj4cpspv434bmx252zak2wsbi2mgl60zh77gza")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) (arguments -- cgit v1.2.3 From d507b277ebe69d218d2f2106bdeef8c082c04dbe Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 10:20:23 -0500 Subject: gnu: Perl GD: Add real patch. Replaces the stub patch added in 43754738e030a4083b0881b2264b905bc563e78b. * gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch: Update patch. 43754738e030a4083b0881b2264b905bc563e78b --- ...erl-gd-options-passthrough-and-fontconfig.patch | 54 +++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch b/gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch index 0ce86a6bd1..b2ff43c0d3 100644 --- a/gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch +++ b/gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch @@ -1 +1,53 @@ -This is a stub, awaiting the actual patch. +This patch (adapted from nixpkgs for Build.PL) configures Getopt::Long to pass +options so they will be available at the second GetOptions call. + +Also an option to specify the search path for libfontconfig is added. + +--- GD-2.56/Build.PL 2014-10-27 20:34:54.000000000 -0500 ++++ GD-2.56/Build.PL 2015-02-22 10:08:12.569973657 -0600 +@@ -2,14 +2,14 @@ + + use strict; + use Module::Build; +-use Getopt::Long; ++use Getopt::Long qw(:config pass_through); + use Config; + + # =====> PATHS: CHECK AND ADJUST <===== + my (@INC,@LIBPATH,@LIBS); + my $AUTOCONFIG = 0; # global set by try_to_autoconfigure() below + +-my ($options,$lib_gd_path,$lib_ft_path,$lib_png_path,$lib_jpeg_path,$lib_xpm_path,$lib_zlib_path); ++my ($options,$lib_gd_path,$lib_ft_path,$lib_png_path,$lib_jpeg_path,$lib_xpm_path,$lib_zlib_path,$lib_fontconfig_path); + + unless (try_to_autoconfigure(\$options,\$lib_gd_path,\@INC,\@LIBPATH,\@LIBS)) { + die < \$lib_jpeg_path, + "lib_xpm_path=s" => \$lib_xpm_path, + "lib_zlib_path=s" => \$lib_zlib_path, ++ "lib_fontconfig_path=s" => \$lib_fontconfig_path, + ); + unless ($result) { + die < Date: Mon, 6 Apr 2015 20:02:22 +0200 Subject: guix package: Move generation deletion to its own procedure. * guix/scripts/package.scm (delete-matching-generations): New procedure, with code formerly found... (guix-package)[process-actions]: ... here. Use it. Remove 'current-generation-number'. --- guix/scripts/package.scm | 56 +++++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 3cc7ae760f..7074243ed9 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -232,6 +232,34 @@ DURATION-RELATION with the current time." filter-by-duration) (else #f))) +(define (delete-matching-generations store profile pattern) + "Delete from PROFILE all the generations matching PATTERN. PATTERN must be +a string denoting a set of generations: the empty list means \"all generations +but the current one\", a number designates a generation, and other patterns +denote ranges as interpreted by 'matching-derivations'." + (let ((current (generation-number profile))) + (cond ((not (file-exists? profile)) ; XXX: race condition + (raise (condition (&profile-not-found-error + (profile profile))))) + ((string-null? pattern) + (delete-generations (%store) profile + (delv current (profile-generations profile)))) + ;; Do not delete the zeroth generation. + ((equal? 0 (string->number pattern)) + (exit 0)) + + ;; If PATTERN is a duration, match generations that are + ;; older than the specified duration. + ((matching-generations pattern profile + #:duration-relation >) + => + (lambda (numbers) + (if (null-list? numbers) + (exit 1) + (delete-generations (%store) profile numbers)))) + (else + (leave (_ "invalid syntax: ~a~%") pattern))))) + ;;; ;;; Package specifications. @@ -751,9 +779,6 @@ more information.~%")) (define dry-run? (assoc-ref opts 'dry-run?)) (define profile (assoc-ref opts 'profile)) - (define current-generation-number - (generation-number profile)) - ;; First roll back if asked to. (cond ((and (assoc-ref opts 'roll-back?) (not dry-run?)) @@ -782,30 +807,7 @@ more information.~%")) (for-each (match-lambda (('delete-generations . pattern) - (cond ((not (file-exists? profile)) ; XXX: race condition - (raise (condition (&profile-not-found-error - (profile profile))))) - ((string-null? pattern) - (delete-generations - (%store) profile - (delete current-generation-number - (profile-generations profile)))) - ;; Do not delete the zeroth generation. - ((equal? 0 (string->number pattern)) - (exit 0)) - - ;; If PATTERN is a duration, match generations that are - ;; older than the specified duration. - ((matching-generations pattern profile - #:duration-relation >) - => - (lambda (numbers) - (if (null-list? numbers) - (exit 1) - (delete-generations (%store) profile numbers)))) - (else - (leave (_ "invalid syntax: ~a~%") - pattern))) + (delete-matching-generations (%store) profile pattern) (process-actions (alist-delete 'delete-generations opts))) -- cgit v1.2.3 From d45d8904b08fc16253ae8167e82ebfb593265ea9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 6 Apr 2015 20:50:35 +0200 Subject: gnu: lsof: Add mirrors. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reported by Tomáš Čech. * gnu/packages/lsof.scm (lsof)[source]: Add two mirrors. --- gnu/packages/lsof.scm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gnu/packages/lsof.scm b/gnu/packages/lsof.scm index 8062b99d65..da42957fee 100644 --- a/gnu/packages/lsof.scm +++ b/gnu/packages/lsof.scm @@ -35,7 +35,17 @@ (uri (list (string-append %ftp-base "lsof_" version ".tar.bz2") (string-append %ftp-base "OLD/lsof_" - version ".tar.bz2"))) + version ".tar.bz2") + + ;; Add mirrors because the FTP server at purdue.edu + ;; bails out when it cannot do a reverse DNS lookup, as + ;; noted at . + (string-append + "ftp://ftp.fu-berlin.de/pub/unix/tools/lsof/lsof_" + version ".tar.bz2") + (string-append + "ftp://sunsite.ualberta.ca/pub/Mirror/lsof/lsof_" + version ".tar.bz2"))) (sha256 (base32 "16y9wm26rg81mihnzcbdg8h8vhxmq8kn62ssxb8cqydp4q79nvzy")))) -- cgit v1.2.3 From 381ac93b5ed7bd51f8f3ab6a8b0127f8ea6288f8 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 6 Apr 2015 21:05:38 +0200 Subject: tests: Deal with 'mount-points' not returning "/". Fixes . Reported by Mark H Weaver . * tests/syscalls.scm ("mount-points"): Check for a few other likely mount points in addition to "/". --- tests/syscalls.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/syscalls.scm b/tests/syscalls.scm index f26331e164..706f3dff44 100644 --- a/tests/syscalls.scm +++ b/tests/syscalls.scm @@ -19,6 +19,7 @@ (define-module (test-syscalls) #:use-module (guix build syscalls) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) #:use-module (srfi srfi-64) #:use-module (ice-9 match)) @@ -45,7 +46,10 @@ (memv (system-error-errno args) (list EPERM ENOENT))))) (test-assert "mount-points" - (member "/" (mount-points))) + ;; Reportedly "/" is not always listed as a mount point, so check a few + ;; others (see .) + (any (cute member <> (mount-points)) + '("/" "/proc" "/sys" "/dev"))) (test-assert "swapon, ENOENT/EPERM" (catch 'system-error -- cgit v1.2.3 From d26eb84d140af8d2119509d7da440b4f035608c5 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 6 Apr 2015 21:26:12 +0200 Subject: guix package: Never remove the current generation and warn about it. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes . Reported by taylanbayirli@gmail.com (Taylan Ulrich Bayırlı/Kammer). * guix/scripts/package.scm (delete-matching-generations): Warn when CURRENT is in NUMBERS, and always remove it before calling 'delete-generations'. * tests/guix-package.sh: Add --switch-generation=2 invocation before --delete-generations=3 invocation. Add --delete-generations=1.. test case. --- guix/scripts/package.scm | 13 ++++++++++--- tests/guix-package.sh | 11 +++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 7074243ed9..3a7afb724b 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -254,9 +254,16 @@ denote ranges as interpreted by 'matching-derivations'." #:duration-relation >) => (lambda (numbers) - (if (null-list? numbers) - (exit 1) - (delete-generations (%store) profile numbers)))) + (when (memv current numbers) + (warning (_ "not removing generation ~a, which is current~%") + current)) + + ;; Make sure we don't inadvertently remove the current + ;; generation. + (let ((numbers (delv current numbers))) + (if (null-list? numbers) + (exit 1) + (delete-generations (%store) profile numbers))))) (else (leave (_ "invalid syntax: ~a~%") pattern))))) diff --git a/tests/guix-package.sh b/tests/guix-package.sh index 94cf927420..a4c04255ba 100644 --- a/tests/guix-package.sh +++ b/tests/guix-package.sh @@ -161,6 +161,9 @@ then guix package --bootstrap -p "$profile" -i guile-bootstrap -i gcc-bootstrap guix package --search-paths -p "$profile" | grep LIBRARY_PATH + # Roll back so we can delete #3 below. + guix package -p "$profile" --switch-generation=2 + # Delete the third generation and check that it was actually deleted. guix package -p "$profile" --delete-generations=3 test -z "`guix package -p "$profile" -l 3`" @@ -212,6 +215,14 @@ if guix package -p "$profile" --delete-generations=12m; then false; else true; fi test "`readlink_base "$profile"`" = "$generation" +# The following command should not delete the current generation, even though +# it matches the given pattern (see .) And since +# there's nothing else to delete, it should just fail. +guix package --list-generations -p "$profile" +if guix package --bootstrap -p "$profile" --delete-generations=1.. +then false; else true; fi +test "`readlink_base "$profile"`" = "$generation" + # Make sure $profile is a GC root at this point. real_profile="`readlink -f "$profile"`" if guix gc -d "$real_profile" -- cgit v1.2.3 From 250bc998ac9d456f70c675579020d7173f87f3c3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 6 Apr 2015 21:27:03 +0200 Subject: guix package: Avoid 'exit' calls in 'delete-matching-generations'. * guix/scripts/package.scm (delete-matching-generations): Remove call to 'exit' when PATTERN is "0". Call 'leave' instead of 'exit' when (null-list? number). --- guix/scripts/package.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 3a7afb724b..6190f3286d 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -246,7 +246,7 @@ denote ranges as interpreted by 'matching-derivations'." (delv current (profile-generations profile)))) ;; Do not delete the zeroth generation. ((equal? 0 (string->number pattern)) - (exit 0)) + #t) ;; If PATTERN is a duration, match generations that are ;; older than the specified duration. @@ -261,9 +261,9 @@ denote ranges as interpreted by 'matching-derivations'." ;; Make sure we don't inadvertently remove the current ;; generation. (let ((numbers (delv current numbers))) - (if (null-list? numbers) - (exit 1) - (delete-generations (%store) profile numbers))))) + (when (null-list? numbers) + (leave (_ "no matching generation~%"))) + (delete-generations (%store) profile numbers)))) (else (leave (_ "invalid syntax: ~a~%") pattern))))) -- cgit v1.2.3 From 57b8623754fdd10b2cc194db09772f60010928af Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 6 Apr 2015 21:52:40 +0200 Subject: tests: Move 'guix package' tests that require networking to a separate file. * tests/guix-package.sh (shebang_not_too_long): Remove. Move everything below "if [networking + shebang_not_too_long]" to... * tests/guix-package-net.sh: ... here. New file. * Makefile.am (SH_TESTS): Add it. --- Makefile.am | 1 + tests/guix-package-net.sh | 170 ++++++++++++++++++++++++++++++++++++++++++++++ tests/guix-package.sh | 138 ++----------------------------------- 3 files changed, 177 insertions(+), 132 deletions(-) create mode 100644 tests/guix-package-net.sh diff --git a/Makefile.am b/Makefile.am index e15e43fdd4..d54e281163 100644 --- a/Makefile.am +++ b/Makefile.am @@ -205,6 +205,7 @@ SH_TESTS = \ tests/guix-gc.sh \ tests/guix-hash.sh \ tests/guix-package.sh \ + tests/guix-package-net.sh \ tests/guix-system.sh \ tests/guix-archive.sh \ tests/guix-authenticate.sh \ diff --git a/tests/guix-package-net.sh b/tests/guix-package-net.sh new file mode 100644 index 0000000000..cedfa3217b --- /dev/null +++ b/tests/guix-package-net.sh @@ -0,0 +1,170 @@ +# GNU Guix --- Functional package management for GNU +# Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès +# Copyright © 2013 Nikita Karetnikov +# +# This file is part of GNU Guix. +# +# GNU Guix is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or (at +# your option) any later version. +# +# GNU Guix is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Guix. If not, see . + +# +# Test the `guix package' command-line utility. This test requires network +# access and is skipped when that is lacking. +# + +guix package --version + +readlink_base () +{ + basename `readlink "$1"` +} + +# Return true if a typical shebang in the store would exceed Linux's default +# static limit. +shebang_too_long () +{ + test `echo $NIX_STORE_DIR/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-bootstrap-binaries-0/bin/bash | wc -c` \ + -ge 128 +} + +profile="t-profile-$$" +rm -f "$profile" + +trap 'rm -f "$profile" "$profile-"[0-9]* ; rm -rf t-home-'"$$" EXIT + + +guix package --bootstrap -p "$profile" -i guile-bootstrap +test -L "$profile" && test -L "$profile-1-link" +! test -f "$profile-2-link" +test -f "$profile/bin/guile" + +boot_make="(@@ (gnu packages commencement) gnu-make-boot0)" +boot_make_drv="`guix build -e "$boot_make" | grep -v -e -debug`" +guix package --bootstrap -p "$profile" -i "$boot_make_drv" +test -L "$profile-2-link" +test -f "$profile/bin/make" && test -f "$profile/bin/guile" + +# Check whether `--list-installed' works. +# XXX: Change the tests when `--install' properly extracts the package +# name and version string. +installed="`guix package -p "$profile" --list-installed | cut -f1 | xargs echo | sort`" +case "x$installed" in + "guile-bootstrap make-boot0") + true;; + "make-boot0 guile-bootstrap") + true;; + "*") + false;; +esac + +test "`guix package -p "$profile" -I 'g.*e' | cut -f1`" = "guile-bootstrap" + +# List generations. +test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \ + = " guile-bootstrap" + +# Exit with 1 when a generation does not exist. +if guix package -p "$profile" --list-generations=42; +then false; else true; fi +if guix package -p "$profile" --switch-generation=99; +then false; else true; fi + +# Remove a package. +guix package --bootstrap -p "$profile" -r "guile-bootstrap" +test -L "$profile-3-link" +test -f "$profile/bin/make" && ! test -f "$profile/bin/guile" + +# Roll back. +guix package --roll-back -p "$profile" +test "`readlink_base "$profile"`" = "$profile-2-link" +test -x "$profile/bin/guile" && test -x "$profile/bin/make" +guix package --roll-back -p "$profile" +test "`readlink_base "$profile"`" = "$profile-1-link" +test -x "$profile/bin/guile" && ! test -x "$profile/bin/make" + +# Switch to the rolled generation and switch back. +guix package -p "$profile" --switch-generation=2 +test "`readlink_base "$profile"`" = "$profile-2-link" +guix package -p "$profile" --switch-generation=-1 +test "`readlink_base "$profile"`" = "$profile-1-link" + +# Move to the empty profile. +for i in `seq 1 3` +do + guix package --bootstrap --roll-back -p "$profile" + ! test -f "$profile/bin" + ! test -f "$profile/lib" + test "`readlink_base "$profile"`" = "$profile-0-link" +done + +# Test that '--list-generations' does not output the zeroth generation. +test -z "`guix package -p "$profile" -l 0`" + +# Reinstall after roll-back to the empty profile. +guix package --bootstrap -p "$profile" -e "$boot_make" +test "`readlink_base "$profile"`" = "$profile-1-link" +test -x "$profile/bin/guile" && ! test -x "$profile/bin/make" + +# Check that the first generation is the current one. +test "`guix package -p "$profile" -l 1 | cut -f3 | head -n1`" = "(current)" + +# Roll-back to generation 0, and install---all at once. +guix package --bootstrap -p "$profile" --roll-back -i guile-bootstrap +test "`readlink_base "$profile"`" = "$profile-1-link" +test -x "$profile/bin/guile" && ! test -x "$profile/bin/make" + +# Install Make. +guix package --bootstrap -p "$profile" -e "$boot_make" +test "`readlink_base "$profile"`" = "$profile-2-link" +test -x "$profile/bin/guile" && test -x "$profile/bin/make" +grep "`guix build -e "$boot_make"`" "$profile/manifest" + +# Make a "hole" in the list of generations, and make sure we can +# roll back and switch "over" it. +rm "$profile-1-link" +guix package --bootstrap -p "$profile" --roll-back +test "`readlink_base "$profile"`" = "$profile-0-link" +guix package -p "$profile" --switch-generation=+1 +test "`readlink_base "$profile"`" = "$profile-2-link" + +# Make sure LIBRARY_PATH gets listed by `--search-paths'. +guix package --bootstrap -p "$profile" -i guile-bootstrap -i gcc-bootstrap +guix package --search-paths -p "$profile" | grep LIBRARY_PATH + +# Roll back so we can delete #3 below. +guix package -p "$profile" --switch-generation=2 + +# Delete the third generation and check that it was actually deleted. +guix package -p "$profile" --delete-generations=3 +test -z "`guix package -p "$profile" -l 3`" + + +# +# Try with the default profile. +# + +XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}" +export XDG_CACHE_HOME +HOME="$PWD/t-home-$$" +export HOME + +mkdir -p "$HOME" + +# Get the canonical directory name so that 'guix package' recognizes it. +HOME="`cd $HOME; pwd -P`" + +guix package --bootstrap -e "$boot_make" +test -f "$HOME/.guix-profile/bin/make" + +guix package --bootstrap --roll-back +! test -f "$HOME/.guix-profile/bin/make" diff --git a/tests/guix-package.sh b/tests/guix-package.sh index a4c04255ba..6cfd50b5e5 100644 --- a/tests/guix-package.sh +++ b/tests/guix-package.sh @@ -28,14 +28,6 @@ readlink_base () basename `readlink "$1"` } -# Return true if a typical shebang in the store would not exceed Linux's -# default static limit. -shebang_not_too_long () -{ - test `echo $NIX_STORE_DIR/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-bootstrap-binaries-0/bin/bash | wc -c` \ - -lt 128 -} - module_dir="t-guix-package-$$" profile="t-profile-$$" rm -f "$profile" @@ -63,118 +55,12 @@ test -f "$profile/bin/guile" guix package --search-paths -p "$profile" test "`guix package --search-paths -p "$profile" | wc -l`" = 0 -# Check whether we have network access and an acceptable shebang length. -if guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null \ - && shebang_not_too_long -then - boot_make="(@@ (gnu packages commencement) gnu-make-boot0)" - boot_make_drv="`guix build -e "$boot_make" | grep -v -e -debug`" - guix package --bootstrap -p "$profile" -i "$boot_make_drv" - test -L "$profile-2-link" - test -f "$profile/bin/make" && test -f "$profile/bin/guile" - - - # Check whether `--list-installed' works. - # XXX: Change the tests when `--install' properly extracts the package - # name and version string. - installed="`guix package -p "$profile" --list-installed | cut -f1 | xargs echo | sort`" - case "x$installed" in - "guile-bootstrap make-boot0") - true;; - "make-boot0 guile-bootstrap") - true;; - "*") - false;; - esac - - test "`guix package -p "$profile" -I 'g.*e' | cut -f1`" = "guile-bootstrap" - - # List generations. - test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \ - = " guile-bootstrap" - - # Exit with 1 when a generation does not exist. - if guix package -p "$profile" --list-generations=42; - then false; else true; fi - if guix package -p "$profile" --switch-generation=99; - then false; else true; fi - - # Remove a package. - guix package --bootstrap -p "$profile" -r "guile-bootstrap" - test -L "$profile-3-link" - test -f "$profile/bin/make" && ! test -f "$profile/bin/guile" - - # Roll back. - guix package --roll-back -p "$profile" - test "`readlink_base "$profile"`" = "$profile-2-link" - test -x "$profile/bin/guile" && test -x "$profile/bin/make" - guix package --roll-back -p "$profile" - test "`readlink_base "$profile"`" = "$profile-1-link" - test -x "$profile/bin/guile" && ! test -x "$profile/bin/make" - - # Switch to the rolled generation and switch back. - guix package -p "$profile" --switch-generation=2 - test "`readlink_base "$profile"`" = "$profile-2-link" - guix package -p "$profile" --switch-generation=-1 - test "`readlink_base "$profile"`" = "$profile-1-link" - - # Move to the empty profile. - for i in `seq 1 3` - do - guix package --bootstrap --roll-back -p "$profile" - ! test -f "$profile/bin" - ! test -f "$profile/lib" - test "`readlink_base "$profile"`" = "$profile-0-link" - done - - # Test that '--list-generations' does not output the zeroth generation. - test -z "`guix package -p "$profile" -l 0`" - - # Reinstall after roll-back to the empty profile. - guix package --bootstrap -p "$profile" -e "$boot_make" - test "`readlink_base "$profile"`" = "$profile-1-link" - test -x "$profile/bin/guile" && ! test -x "$profile/bin/make" - - # Check that the first generation is the current one. - test "`guix package -p "$profile" -l 1 | cut -f3 | head -n1`" = "(current)" - - # Roll-back to generation 0, and install---all at once. - guix package --bootstrap -p "$profile" --roll-back -i guile-bootstrap - test "`readlink_base "$profile"`" = "$profile-1-link" - test -x "$profile/bin/guile" && ! test -x "$profile/bin/make" - - # Install Make. - guix package --bootstrap -p "$profile" -e "$boot_make" - test "`readlink_base "$profile"`" = "$profile-2-link" - test -x "$profile/bin/guile" && test -x "$profile/bin/make" - grep "`guix build -e "$boot_make"`" "$profile/manifest" - - # Make a "hole" in the list of generations, and make sure we can - # roll back and switch "over" it. - rm "$profile-1-link" - guix package --bootstrap -p "$profile" --roll-back - test "`readlink_base "$profile"`" = "$profile-0-link" - guix package -p "$profile" --switch-generation=+1 - test "`readlink_base "$profile"`" = "$profile-2-link" - - # Make sure LIBRARY_PATH gets listed by `--search-paths'. - guix package --bootstrap -p "$profile" -i guile-bootstrap -i gcc-bootstrap - guix package --search-paths -p "$profile" | grep LIBRARY_PATH - - # Roll back so we can delete #3 below. - guix package -p "$profile" --switch-generation=2 - - # Delete the third generation and check that it was actually deleted. - guix package -p "$profile" --delete-generations=3 - test -z "`guix package -p "$profile" -l 3`" - - # Exit with 1 when a generation does not exist. - if guix package -p "$profile" --delete-generations=42; - then false; else true; fi - - # Exit with 0 when trying to delete the zeroth generation. - guix package -p "$profile" --delete-generations=0 -fi +# Exit with 1 when a generation does not exist. +if guix package -p "$profile" --delete-generations=42; +then false; else true; fi + +# Exit with 0 when trying to delete the zeroth generation. +guix package -p "$profile" --delete-generations=0 # Make sure multiple arguments to -i works. guix package --bootstrap -i guile gcc -p "$profile" -n @@ -253,18 +139,6 @@ guix package --bootstrap -i guile-bootstrap test -L "$HOME/.guix-profile" test -f "$HOME/.guix-profile/bin/guile" -if guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null -then - guix package --bootstrap -e "$boot_make" - test -f "$HOME/.guix-profile/bin/make" - first_environment="`cd $HOME/.guix-profile ; pwd`" - - guix package --bootstrap --roll-back - test -f "$HOME/.guix-profile/bin/guile" - ! test -f "$HOME/.guix-profile/bin/make" - test "`cd $HOME/.guix-profile ; pwd`" = "$first_environment" -fi - # Move to the empty profile. default_profile="`readlink "$HOME/.guix-profile"`" for i in `seq 1 3` -- cgit v1.2.3 From 3107bef8325d8b795bef8293d3ad461f13d46231 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 6 Apr 2015 22:06:12 +0200 Subject: nls: Add Danish translation. * po/guix/da.po: New file. * po/guix/LINGUAS: Add 'da'. --- po/guix/LINGUAS | 1 + po/guix/da.po | 1516 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1517 insertions(+) create mode 100644 po/guix/da.po diff --git a/po/guix/LINGUAS b/po/guix/LINGUAS index 8052ce9d3e..b271fd3ad5 100644 --- a/po/guix/LINGUAS +++ b/po/guix/LINGUAS @@ -1,6 +1,7 @@ # Set of available languages. cs +da de en@boldquot en@quot diff --git a/po/guix/da.po b/po/guix/da.po new file mode 100644 index 0000000000..3e0c84caf1 --- /dev/null +++ b/po/guix/da.po @@ -0,0 +1,1516 @@ +# Danish translation guix. +# Copyright (C) 2015 Free Software Foundation, Inc. +# This file is distributed under the same license as the guix package. +# Joe Hansen , 2015. +# +# garbage -> affald (spild, bedre forslag?) +# +msgid "" +msgstr "" +"Project-Id-Version: guix 0.8.1\n" +"Report-Msgid-Bugs-To: ludo@gnu.org\n" +"POT-Creation-Date: 2015-01-26 23:51+0100\n" +"PO-Revision-Date: 2015-04-06 19:30+01:00\n" +"Last-Translator: Joe Hansen \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: gnu/packages.scm:78 +#, scheme-format +msgid "~a: patch not found" +msgstr "~a: rettelse blev ikke fundet" + +#: gnu/packages.scm:89 +#, scheme-format +msgid "could not find bootstrap binary '~a' for system '~a'" +msgstr "kunne ikke finde bootstraps binære »~a« for system »~a«" + +#: gnu/packages.scm:141 +#, scheme-format +msgid "cannot access `~a': ~a~%" +msgstr "kan ikke tilgå »~a«: ~a~%" + +#: gnu/packages.scm:372 +#, scheme-format +msgid "looking for the latest release of GNU ~a..." +msgstr "kigger efter den seneste udgivelse af GNU ~a..." + +#: gnu/packages.scm:379 +#, scheme-format +msgid "~a: note: using ~a but ~a is available upstream~%" +msgstr "~a: bemærk: bruger ~a men ~a er tilgængelig opstrøm~%" + +#: gnu/packages.scm:401 guix/scripts/package.scm:306 +#, scheme-format +msgid "ambiguous package specification `~a'~%" +msgstr "tvetydig pakkespecifikation »~a«~%" + +#: gnu/packages.scm:402 guix/scripts/package.scm:308 +#, scheme-format +msgid "choosing ~a from ~a~%" +msgstr "vælger ~a fra ~a~%" + +#: gnu/packages.scm:408 +#, scheme-format +msgid "~A: package not found for version ~a~%" +msgstr "~A: pakke ikke fundet for version ~a~%" + +#: gnu/packages.scm:410 +#, scheme-format +msgid "~A: unknown package~%" +msgstr "~A: ukendt pakke~%" + +#: gnu/system.scm:716 +msgid "system locale lacks a definition" +msgstr "systemsprog mangler en definition" + +#: guix/scripts/build.scm:65 +#, scheme-format +msgid "failed to create GC root `~a': ~a~%" +msgstr "kunne ikke oprette GC-root »~a«: ~a~%" + +#: guix/scripts/build.scm:102 +msgid "" +"\n" +" -L, --load-path=DIR prepend DIR to the package module search path" +msgstr "" +"\n" +" -L, --load-path=MAPPE foranstil MAPPE til pakkemodulets søgesti" + +#: guix/scripts/build.scm:104 +msgid "" +"\n" +" -K, --keep-failed keep build tree of failed builds" +msgstr "" +"\n" +" -K, --keep-failed bevar byggetræ for mislykkede bygninger" + +#: guix/scripts/build.scm:106 +msgid "" +"\n" +" -n, --dry-run do not build the derivations" +msgstr "" +"\n" +" -n, --dry-run byg ikke derivationerne" + +#: guix/scripts/build.scm:108 +msgid "" +"\n" +" --fallback fall back to building when the substituter fails" +msgstr "" +"\n" +" --fallback fald tilbage til bygning når erstatningen fejler" + +#: guix/scripts/build.scm:110 +msgid "" +"\n" +" --no-substitutes build instead of resorting to pre-built substitutes" +msgstr "" +"\n" +" --no-substitutes byg i stedet for en ny sortering af præbyggede substitutter" + +#: guix/scripts/build.scm:112 +msgid "" +"\n" +" --no-build-hook do not attempt to offload builds via the build hook" +msgstr "" +"\n" +" --no-build-hook forsøg ikke at aflaste bygninger via byggekrogen" + +#: guix/scripts/build.scm:114 +msgid "" +"\n" +" --max-silent-time=SECONDS\n" +" mark the build as failed after SECONDS of silence" +msgstr "" +"\n" +" --max-silent-time=SEKUNDER\n" +" marker bygningen som mislykket efter SEKUNDER af stilhed" + +#: guix/scripts/build.scm:117 +msgid "" +"\n" +" --timeout=SECONDS mark the build as failed after SECONDS of activity" +msgstr "" +"\n" +" --timeout=SEKUNDER marker bygningen som mislykket efter SEKUNDER af aktivitet" + +#: guix/scripts/build.scm:119 +msgid "" +"\n" +" --verbosity=LEVEL use the given verbosity LEVEL" +msgstr "" +"\n" +" --verbosity=NIVEAU brug det angivne uddybnings-NIVEAU" + +#: guix/scripts/build.scm:121 +msgid "" +"\n" +" -c, --cores=N allow the use of up to N CPU cores for the build" +msgstr "" +"\n" +" -c, --cores=N tillad brugen af op til N CPU-kerner til bygningen" + +#: guix/scripts/build.scm:123 +msgid "" +"\n" +" -M, --max-jobs=N allow at most N build jobs" +msgstr "" +"\n" +" -M, --max-jobs=N tillad højest N-byggejob" + +#: guix/scripts/build.scm:198 guix/scripts/build.scm:205 +#, scheme-format +msgid "not a number: '~a' option argument: ~a~%" +msgstr "ikke et nummer: »~a« tilvalgsparameter: ~a~%" + +#: guix/scripts/build.scm:224 +msgid "" +"Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n" +"Build the given PACKAGE-OR-DERIVATION and return their output paths.\n" +msgstr "" +"Brug: guix build [TILVALG]... PAKKE-ELLER-AFLEDNING...\n" +"Byg den angivne PAKKE-ELLER-AFLEDNING og returner deres uddatastier.\n" + +#: guix/scripts/build.scm:226 +msgid "" +"\n" +" -e, --expression=EXPR build the package or derivation EXPR evaluates to" +msgstr "" +"\n" +" -e, --expression=UDTRYK\n" +" byg pakken eller derivationen UDTRYK evaluerer til" + +#: guix/scripts/build.scm:228 +msgid "" +"\n" +" -S, --source build the packages' source derivations" +msgstr "" +"\n" +" -S, --source byg pakkernes kildederivationer" + +#: guix/scripts/build.scm:230 +msgid "" +"\n" +" -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"" +msgstr "" +"\n" +" -s, --system=SYSTEM forsøger at bygge for SYSTEM--f.eks., »i686-linux«" + +#: guix/scripts/build.scm:232 +msgid "" +"\n" +" --target=TRIPLET cross-build for TRIPLET--e.g., \"armel-linux-gnu\"" +msgstr "" +"\n" +" --target=TRIPLET krydsbyg for TRIPLET--f.eks., »armel-linux-gnu«" + +#: guix/scripts/build.scm:234 +msgid "" +"\n" +" --with-source=SOURCE\n" +" use SOURCE when building the corresponding package" +msgstr "" +"\n" +" --with-source=KILDE\n" +" brug KILDE når den tilsvarende pakke bygges" + +#: guix/scripts/build.scm:237 +msgid "" +"\n" +" --no-grafts do not graft packages" +msgstr "" +"\n" +" --no-grafts pod ikke pakker" + +#: guix/scripts/build.scm:239 +msgid "" +"\n" +" -d, --derivations return the derivation paths of the given packages" +msgstr "" +"\n" +" -d, --derivations returner de afledte stier for de givne pakker" + +#: guix/scripts/build.scm:241 +msgid "" +"\n" +" -r, --root=FILE make FILE a symlink to the result, and register it\n" +" as a garbage collector root" +msgstr "" +"\n" +" -r, --root=FIL gør FIL til en symbolsk henvisning for resultatet, og\n" +" registrer den som en affaldsindsamlerroot" + +#: guix/scripts/build.scm:244 +msgid "" +"\n" +" --log-file return the log file names for the given derivations" +msgstr "" +"\n" +" --log-file returner logfilnavnen for de givne afledninger" + +#: guix/scripts/build.scm:249 guix/scripts/download.scm:53 +#: guix/scripts/package.scm:467 guix/scripts/gc.scm:58 +#: guix/scripts/hash.scm:55 guix/scripts/pull.scm:81 +#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:414 +#: guix/scripts/lint.scm:469 +msgid "" +"\n" +" -h, --help display this help and exit" +msgstr "" +"\n" +" -h, --help vis denne hjælpetekst og afslut" + +#: guix/scripts/build.scm:251 guix/scripts/download.scm:55 +#: guix/scripts/package.scm:469 guix/scripts/gc.scm:60 +#: guix/scripts/hash.scm:57 guix/scripts/pull.scm:83 +#: guix/scripts/substitute-binary.scm:568 guix/scripts/system.scm:416 +#: guix/scripts/lint.scm:473 +msgid "" +"\n" +" -V, --version display version information and exit" +msgstr "" +"\n" +" -V, --version vis versioninformation og afslut" + +#: guix/scripts/build.scm:383 +#, scheme-format +msgid "sources do not match any package:~{ ~a~}~%" +msgstr "kilder matcher ikke nogen pakke:~{ ~a~}~%" + +#: guix/scripts/build.scm:417 guix/scripts/download.scm:96 +#: guix/scripts/package.scm:694 guix/scripts/gc.scm:122 +#: guix/scripts/pull.scm:213 guix/scripts/system.scm:499 +#: guix/scripts/lint.scm:521 +#, scheme-format +msgid "~A: unrecognized option~%" +msgstr "~A: ikke genkendt tilvalg~%" + +#: guix/scripts/build.scm:445 +#, scheme-format +msgid "no build log for '~a'~%" +msgstr "ingen byggelog for »~a«~%" + +#: guix/scripts/download.scm:44 +msgid "" +"Usage: guix download [OPTION] URL\n" +"Download the file at URL, add it to the store, and print its store path\n" +"and the hash of its contents.\n" +"\n" +"Supported formats: 'nix-base32' (default), 'base32', and 'base16'\n" +"('hex' and 'hexadecimal' can be used as well).\n" +msgstr "" +"Brug: guix download [TILVALG] ADRESSE\n" +"hent filen på ADRESSE, tilføj den til lageret, og udskriv dens lagersti\n" +"og hashen for dens indhold.\n" +"\n" +"Understøttede formater: »nix-base32« (standard), »base32«, og »base16«\n" +"(»hex« og »hexadecimal« kan også bruges).\n" + +#: guix/scripts/download.scm:50 guix/scripts/hash.scm:50 +msgid "" +"\n" +" -f, --format=FMT write the hash in the given format" +msgstr "" +"\n" +" -f, --format=FMT skriv hashen i det givne format" + +#: guix/scripts/download.scm:73 guix/scripts/hash.scm:75 +#, scheme-format +msgid "unsupported hash format: ~a~%" +msgstr "ikke understøttet hash-format: ~a~%" + +#: guix/scripts/download.scm:106 +#, scheme-format +msgid "~a: failed to parse URI~%" +msgstr "~a: kunne ikke fortolke URI~%" + +#: guix/scripts/download.scm:117 +#, scheme-format +msgid "~a: download failed~%" +msgstr "~a: overførsel mislykkede~%" + +#: guix/scripts/package.scm:98 +#, scheme-format +msgid "failed to build the empty profile~%" +msgstr "kunne ikke bygge den tomme profil~%" + +#: guix/scripts/package.scm:114 +#, scheme-format +msgid "switching from generation ~a to ~a~%" +msgstr "skifter fra generation ~a til ~a~%" + +#: guix/scripts/package.scm:133 +#, scheme-format +msgid "nothing to do: already at the empty profile~%" +msgstr "intet at udføre: allerede en tom profil~%" + +#: guix/scripts/package.scm:145 +#, scheme-format +msgid "deleting ~a~%" +msgstr "sletter ~a~%" + +#: guix/scripts/package.scm:296 +#, scheme-format +msgid "package `~a' lacks output `~a'~%" +msgstr "pakke »~a« mangler uddata »~a«~%" + +#: guix/scripts/package.scm:313 +#, scheme-format +msgid "~a: package not found~%" +msgstr "~a: pakken blev ikke fundet~%" + +#: guix/scripts/package.scm:406 +#, scheme-format +msgid "The following environment variable definitions may be needed:~%" +msgstr "De følgende miljøvariabeldefinitioner kan være krævet:~%" + +#: guix/scripts/package.scm:422 +msgid "" +"Usage: guix package [OPTION]... PACKAGES...\n" +"Install, remove, or upgrade PACKAGES in a single transaction.\n" +msgstr "" +"Brug: guix-pakke [TILVALG]... PAKKER...\n" +"Installer, fjern eller opgrader PAKKER i en enkel transaktion.\n" + +#: guix/scripts/package.scm:424 +msgid "" +"\n" +" -i, --install=PACKAGE install PACKAGE" +msgstr "" +"\n" +" -i, --install=PAKKE installer PAKKE" + +#: guix/scripts/package.scm:426 +msgid "" +"\n" +" -e, --install-from-expression=EXP\n" +" install the package EXP evaluates to" +msgstr "" +"\n" +" -e, --install-from-expression=UDTRYK\n" +" installer pakken UDTRYK evaluerer til" + +#: guix/scripts/package.scm:429 +msgid "" +"\n" +" -r, --remove=PACKAGE remove PACKAGE" +msgstr "" +"\n" +" -r, --remove=PAKKE fjern PAKKE" + +#: guix/scripts/package.scm:431 +msgid "" +"\n" +" -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP" +msgstr "" +"\n" +" -u, --upgrade[=REGUDTRYK]\n" +" opgrader alle de installerede pakker der matcher\n" +" REGUDTRYK" + +#: guix/scripts/package.scm:433 +msgid "" +"\n" +" --roll-back roll back to the previous generation" +msgstr "" +"\n" +" --roll-back rul tilbage til den forrige generation" + +#: guix/scripts/package.scm:435 +msgid "" +"\n" +" --search-paths display needed environment variable definitions" +msgstr "" +"\n" +" --search-paths vis krævede miljøvariabeldefinitioner" + +#: guix/scripts/package.scm:437 +msgid "" +"\n" +" -l, --list-generations[=PATTERN]\n" +" list generations matching PATTERN" +msgstr "" +"\n" +" -l, --list-generations[=MØNSTER]\n" +" vis generationer der matcher MØNSTER" + +#: guix/scripts/package.scm:440 +msgid "" +"\n" +" -d, --delete-generations[=PATTERN]\n" +" delete generations matching PATTERN" +msgstr "" +"\n" +" -d, --delete-generations[=MØNSTER]\n" +" slet generationer der matcher MØNSTER" + +#: guix/scripts/package.scm:443 +msgid "" +"\n" +" -S, --switch-generation=PATTERN\n" +" switch to a generation matching PATTERN" +msgstr "" +"\n" +" -S, --switch-generation=MØNSTER\n" +" skift til et generationsmatchende MØNSTER" + +#: guix/scripts/package.scm:446 +msgid "" +"\n" +" -p, --profile=PROFILE use PROFILE instead of the user's default profile" +msgstr "" +"\n" +" -p, --profile=PROFIL brug PROFIL i stedet for brugerens standardprofil" + +#: guix/scripts/package.scm:449 +msgid "" +"\n" +" --bootstrap use the bootstrap Guile to build the profile" +msgstr "" +"\n" +" --bootstrap brug bootstrap Guile til at bygge profilen" + +#: guix/scripts/package.scm:451 guix/scripts/pull.scm:74 +msgid "" +"\n" +" --verbose produce verbose output" +msgstr "" +"\n" +" --verbose lav uddybende uddata" + +#: guix/scripts/package.scm:454 +msgid "" +"\n" +" -s, --search=REGEXP search in synopsis and description using REGEXP" +msgstr "" +"\n" +" -s, --search=REGUDTRYK søg i synopsis og beskrivelse via REGUDTRYK" + +#: guix/scripts/package.scm:456 +msgid "" +"\n" +" -I, --list-installed[=REGEXP]\n" +" list installed packages matching REGEXP" +msgstr "" +"\n" +" -I, --list-installed[=REGUDTRYK]\n" +" vis installerede pakker der matcher REGUDTRYK" + +#: guix/scripts/package.scm:459 +msgid "" +"\n" +" -A, --list-available[=REGEXP]\n" +" list available packages matching REGEXP" +msgstr "" +"\n" +" -A, --list-available[=REGUDTRYK]\n" +" vis tilgængelige pakker der matcher REGUDTRYK" + +#: guix/scripts/package.scm:462 +msgid "" +"\n" +" --show=PACKAGE show details about PACKAGE" +msgstr "" +"\n" +" --show=PACKAGE vis detaljer om PAKKE" + +#: guix/scripts/package.scm:698 +#, scheme-format +msgid "~A: extraneous argument~%" +msgstr "~A: uvedkommende argument~%" + +#: guix/scripts/package.scm:708 +#, scheme-format +msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%" +msgstr "Prøv »info '(guix) Invoking guix package« for yderligere information.~%" + +#: guix/scripts/package.scm:730 +#, scheme-format +msgid "error: while creating directory `~a': ~a~%" +msgstr "fejl: under oprettelse af mappe »~a«: ~a~%" + +#: guix/scripts/package.scm:734 +#, scheme-format +msgid "Please create the `~a' directory, with you as the owner.~%" +msgstr "Opret venligst mappen »~a«, med dig som ejer.~%" + +#: guix/scripts/package.scm:741 +#, scheme-format +msgid "error: directory `~a' is not owned by you~%" +msgstr "fejl: mappen »~a« er ikke ejet af dig~%" + +#: guix/scripts/package.scm:744 +#, scheme-format +msgid "Please change the owner of `~a' to user ~s.~%" +msgstr "Ændr venligst ejeren af »~a« til brugeren ~s.~%" + +#: guix/scripts/package.scm:777 +#, scheme-format +msgid "cannot switch to generation '~a'~%" +msgstr "kan ikke skifte til generation »~a«~%" + +#: guix/scripts/package.scm:809 guix/scripts/package.scm:910 +#, scheme-format +msgid "invalid syntax: ~a~%" +msgstr "ugyldig syntaks: ~a~%" + +#: guix/scripts/package.scm:846 +#, scheme-format +msgid "nothing to be done~%" +msgstr "intet at udføre~%" + +#: guix/scripts/package.scm:861 +#, scheme-format +msgid "~a package in profile~%" +msgid_plural "~a packages in profile~%" +msgstr[0] "~a pakke i profil~%" +msgstr[1] "~a pakker i profil~%" + +#: guix/scripts/package.scm:876 +#, scheme-format +msgid "Generation ~a\t~a" +msgstr "Generation ~a\t~a" + +#: guix/scripts/package.scm:883 +#, scheme-format +msgid "~a\t(current)~%" +msgstr "~a\t(nuværende)~%" + +#: guix/scripts/gc.scm:39 +msgid "" +"Usage: guix gc [OPTION]... PATHS...\n" +"Invoke the garbage collector.\n" +msgstr "" +"Brug: guix gc [TILVALG]... STIER...\n" +"Start affaldsindsamleren.\n" + +#: guix/scripts/gc.scm:41 +msgid "" +"\n" +" -C, --collect-garbage[=MIN]\n" +" collect at least MIN bytes of garbage" +msgstr "" +"\n" +" -C, --collect-garbage[=MIN]\n" +" saml mindst MIN byte affald" + +#: guix/scripts/gc.scm:44 +msgid "" +"\n" +" -d, --delete attempt to delete PATHS" +msgstr "" +"\n" +" -d, --delete forsøg at slette STIER" + +#: guix/scripts/gc.scm:46 +msgid "" +"\n" +" --list-dead list dead paths" +msgstr "" +"\n" +" --list-dead vis døde stier" + +#: guix/scripts/gc.scm:48 +msgid "" +"\n" +" --list-live list live paths" +msgstr "" +"\n" +" --list-live vis live stier" + +#: guix/scripts/gc.scm:51 +msgid "" +"\n" +" --references list the references of PATHS" +msgstr "" +"\n" +" --references vis referencerne for STIER" + +#: guix/scripts/gc.scm:53 +msgid "" +"\n" +" -R, --requisites list the requisites of PATHS" +msgstr "" +"\n" +" -R, --requisites vis rekvisitter for STIER" + +#: guix/scripts/gc.scm:55 +msgid "" +"\n" +" --referrers list the referrers of PATHS" +msgstr "" +"\n" +" --referrers vis henvisninger for STIER" + +#: guix/scripts/gc.scm:84 +#, scheme-format +msgid "invalid amount of storage: ~a~%" +msgstr "ugyldig lagermængde: ~a~%" + +#: guix/scripts/hash.scm:45 +msgid "" +"Usage: guix hash [OPTION] FILE\n" +"Return the cryptographic hash of FILE.\n" +"\n" +"Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex'\n" +"and 'hexadecimal' can be used as well).\n" +msgstr "" +"Brug: guix hash [TILVALG] FIL\n" +"Returner den kryptografiske hash for FIL.\n" +"\n" +"Understøttede formater: »nix-base32« (standard), »base32« og »base16« (»hex«\n" +"og »hexadecimal« kan også bruges).\n" + +#: guix/scripts/hash.scm:52 +msgid "" +"\n" +" -r, --recursive compute the hash on FILE recursively" +msgstr "" +"\n" +" -r, --recursive beregn hashen på FIL rekursivt" + +#: guix/scripts/hash.scm:103 +#, scheme-format +msgid "unrecognized option: ~a~%" +msgstr "tilvalg blev ikke genkendt: ~a~%" + +#: guix/scripts/hash.scm:134 guix/ui.scm:258 +#, scheme-format +msgid "~a~%" +msgstr "~a~%" + +#: guix/scripts/hash.scm:137 +#, scheme-format +msgid "wrong number of arguments~%" +msgstr "forkert antal argumenter~%" + +#: guix/scripts/pull.scm:72 +msgid "" +"Usage: guix pull [OPTION]...\n" +"Download and deploy the latest version of Guix.\n" +msgstr "" +"Brug: guix pull [TILVALG]...\n" +"Hent og udrul den seneste version af Guix.\n" + +#: guix/scripts/pull.scm:76 +msgid "" +"\n" +" --url=URL download the Guix tarball from URL" +msgstr "" +"\n" +" --url=URL hent Guix-tarball'en fra ADRESSE" + +#: guix/scripts/pull.scm:78 +msgid "" +"\n" +" --bootstrap use the bootstrap Guile to build the new Guix" +msgstr "" +"\n" +" --bootstrap brug bootstrap Guile til at bygge den nye Guix" + +#: guix/scripts/pull.scm:132 +msgid "tarball did not produce a single source directory" +msgstr "tarball fremstillede ikke en enkel kildemappe" + +#: guix/scripts/pull.scm:150 +#, scheme-format +msgid "unpacking '~a'...~%" +msgstr "udpakker »~a«...~%" + +#: guix/scripts/pull.scm:159 +msgid "failed to unpack source code" +msgstr "kunne ikke udpakke kildekode" + +#: guix/scripts/pull.scm:200 +#, scheme-format +msgid "updated ~a successfully deployed under `~a'~%" +msgstr "opdaterede ~a der med succes blev udrullet undet »~a«~%" + +#: guix/scripts/pull.scm:203 +#, scheme-format +msgid "failed to update Guix, check the build log~%" +msgstr "kunne ikke opdatere Guix, kontroller byggeloggen~%" + +#: guix/scripts/pull.scm:205 +msgid "Guix already up to date\n" +msgstr "Guix er allerede opdateret\n" + +#: guix/scripts/pull.scm:215 +#, scheme-format +msgid "~A: unexpected argument~%" +msgstr "~A: uventet argument~%" + +#: guix/scripts/pull.scm:224 +msgid "failed to download up-to-date source, exiting\n" +msgstr "kunne ikke hente opdateret kilde, afslutter\n" + +#: guix/scripts/substitute-binary.scm:80 +#, scheme-format +msgid "authentication and authorization of substitutes disabled!~%" +msgstr "godkendelse og autorisation af substitutter er deaktiveret!~%" + +#: guix/scripts/substitute-binary.scm:163 +#, scheme-format +msgid "download from '~a' failed: ~a, ~s~%" +msgstr "hent fra »~a« mislykkedes: ~a, ~s~%" + +#: guix/scripts/substitute-binary.scm:178 +#, scheme-format +msgid "while fetching ~a: server is somewhat slow~%" +msgstr "under overførsel af ~a: server er noget langsom~%" + +#: guix/scripts/substitute-binary.scm:180 +#, scheme-format +msgid "try `--no-substitutes' if the problem persists~%" +msgstr "prøv »--no-substitutes« hvis problemet fortsætter~%" + +#: guix/scripts/substitute-binary.scm:221 +#, scheme-format +msgid "updating list of substitutes from '~a'...~%" +msgstr "opdaterer liste af substitutter fra »~a«...~%" + +#: guix/scripts/substitute-binary.scm:253 +#, scheme-format +msgid "signature version must be a number: ~s~%" +msgstr "signaturversion skal være et nummer: ~s~%" + +#: guix/scripts/substitute-binary.scm:257 +#, scheme-format +msgid "unsupported signature version: ~a~%" +msgstr "signaturversion er ikke understøttet: ~a~%" + +#: guix/scripts/substitute-binary.scm:265 +#, scheme-format +msgid "signature is not a valid s-expression: ~s~%" +msgstr "signatur er ikke et gyldigt s-udtryk: ~s~%" + +#: guix/scripts/substitute-binary.scm:269 +#, scheme-format +msgid "invalid format of the signature field: ~a~%" +msgstr "ugyldigt format for signaturfeltet: ~a~%" + +#: guix/scripts/substitute-binary.scm:304 +#, scheme-format +msgid "invalid signature for '~a'~%" +msgstr "ugyldig signatur for »~a«~%" + +#: guix/scripts/substitute-binary.scm:306 +#, scheme-format +msgid "hash mismatch for '~a'~%" +msgstr "hash mismatch for »~a«~%" + +#: guix/scripts/substitute-binary.scm:308 +#, scheme-format +msgid "'~a' is signed with an unauthorized key~%" +msgstr "»~a« er underskrevet med en uautoriseret nøgle~%" + +#: guix/scripts/substitute-binary.scm:310 +#, scheme-format +msgid "signature on '~a' is corrupt~%" +msgstr "signatur på »~a« er ødelagt~%" + +#: guix/scripts/substitute-binary.scm:344 +#, scheme-format +msgid "substitute at '~a' lacks a signature~%" +msgstr "substitut på »~a« mangler en signatur~%" + +#: guix/scripts/substitute-binary.scm:532 +#, scheme-format +msgid "Downloading, please wait...~%" +msgstr "Henter, vent venligst ...~%" + +#: guix/scripts/substitute-binary.scm:534 +#, scheme-format +msgid "(Please consider upgrading Guile to get proper progress report.)~%" +msgstr "(Overvej venligst at opgradere Guile for at få korrekt statusrapport.)~%" + +#: guix/scripts/substitute-binary.scm:547 +#, scheme-format +msgid "host name lookup error: ~a~%" +msgstr "opslagsfejl for værtsnavn: ~a~%" + +#: guix/scripts/substitute-binary.scm:556 +msgid "" +"Usage: guix substitute-binary [OPTION]...\n" +"Internal tool to substitute a pre-built binary to a local build.\n" +msgstr "" +"Brug: guix substitute-binary [TILVALG]...\n" +"Internt værktøj til at erstatte en præbygget binær fil med en lokal bygning.\n" + +#: guix/scripts/substitute-binary.scm:558 +msgid "" +"\n" +" --query report on the availability of substitutes for the\n" +" store file names passed on the standard input" +msgstr "" +"\n" +" --query rapport om tilgængeligheden for substitutter for\n" +" lagerfilnavnene sendt til standardind" + +#: guix/scripts/substitute-binary.scm:561 +msgid "" +"\n" +" --substitute STORE-FILE DESTINATION\n" +" download STORE-FILE and store it as a Nar in file\n" +" DESTINATION" +msgstr "" +"\n" +" --substitute LAGER-FIL DESTINATION\n" +" hent LAGER-FIL og lagr den som en Nar i filen\n" +" DESTINATION" + +#: guix/scripts/substitute-binary.scm:606 +msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n" +msgstr "ACL for arkivimporter ser ikke ud til at være initialiseret, substitutter kan være utilgængelige\n" + +#: guix/scripts/substitute-binary.scm:640 +#, scheme-format +msgid "these substitute URLs will not be used:~{ ~a~}~%" +msgstr "disse substitutadresser vil ikke blive brugt:~{ ~a~}~%" + +#: guix/scripts/substitute-binary.scm:666 +#, scheme-format +msgid "failed to look up host '~a' (~a), substituter disabled~%" +msgstr "kunne ikke slå vært op »~a« (~a), substitutter deaktiveret~%" + +#: guix/scripts/substitute-binary.scm:777 +#, scheme-format +msgid "~a: unrecognized options~%" +msgstr "~a: ikke genkendte tilvalg~%" + +#: guix/scripts/authenticate.scm:58 +#, scheme-format +msgid "cannot find public key for secret key '~a'~%" +msgstr "kan ikke finde offentlig nøgle for hemmelig nøgle »~a«~%" + +#: guix/scripts/authenticate.scm:78 +#, scheme-format +msgid "error: invalid signature: ~a~%" +msgstr "fejl: ugyldig signatur: ~a~%" + +#: guix/scripts/authenticate.scm:80 +#, scheme-format +msgid "error: unauthorized public key: ~a~%" +msgstr "fejl: ikke autoriseret offentlig nøgle: ~a~%" + +#: guix/scripts/authenticate.scm:82 +#, scheme-format +msgid "error: corrupt signature data: ~a~%" +msgstr "fejl: ødelagt signaturdata: ~a~%" + +#: guix/scripts/authenticate.scm:126 +msgid "" +"Usage: guix authenticate OPTION...\n" +"Sign or verify the signature on the given file. This tool is meant to\n" +"be used internally by 'guix-daemon'.\n" +msgstr "" +"Brug: guix authenticate TILVALG...\n" +"Underskriv eller verificer signaturen på den givne fil. Dette værktøj skal\n" +"bruges internt af »guix-daemon«.\n" + +#: guix/scripts/authenticate.scm:132 +msgid "wrong arguments" +msgstr "forkerte argumenter" + +#: guix/scripts/system.scm:75 +#, scheme-format +msgid "failed to open operating system file '~a': ~a~%" +msgstr "kunne ikke åbne operativsystemfil »~a«: ~a~%" + +#: guix/scripts/system.scm:79 +#, scheme-format +msgid "~a: error: ~a~%" +msgstr "~a: fejl: ~a~%" + +#: guix/scripts/system.scm:83 +#, scheme-format +msgid "failed to load operating system file '~a':~%" +msgstr "kunne ikke indlæse operativsystemfil »~a«:~%" + +#: guix/scripts/system.scm:120 +#, scheme-format +msgid "failed to register '~a' under '~a'~%" +msgstr "kunne ikke registrere »~a« under »~a«~%" + +#: guix/scripts/system.scm:152 +#, scheme-format +msgid "failed to install GRUB on device '~a'~%" +msgstr "kunne ikke installere GRUB på enhed »~a«~%" + +#: guix/scripts/system.scm:169 +#, scheme-format +msgid "initializing the current root file system~%" +msgstr "initialiserer det nuværende root-filsystem~%" + +#: guix/scripts/system.scm:223 +#, scheme-format +msgid "activating system...~%" +msgstr "aktiverer system ...~%" + +#: guix/scripts/system.scm:273 +#, scheme-format +msgid "unrecognized boot parameters for '~a'~%" +msgstr "ikke genkendte opstartsparametre for »~a«~%" + +#: guix/scripts/system.scm:369 +#, scheme-format +msgid "initializing operating system under '~a'...~%" +msgstr "initialiserer operativsystem under »~a«...~%" + +#: guix/scripts/system.scm:385 +msgid "" +"Usage: guix system [OPTION] ACTION FILE\n" +"Build the operating system declared in FILE according to ACTION.\n" +msgstr "" +"Brug: guix system [TILVALG] HANDLING FIL\n" +"Byg operativsystemet deklæret i FIL jævnfør HANDLING.\n" + +#: guix/scripts/system.scm:388 +msgid "The valid values for ACTION are:\n" +msgstr "De gyldige værdier for HANDLING er:\n" + +#: guix/scripts/system.scm:389 +msgid " - 'reconfigure', switch to a new operating system configuration\n" +msgstr " - »reconfigure«, skift til en ny operativsystemkonfiguration\n" + +#: guix/scripts/system.scm:391 +msgid " - 'build', build the operating system without installing anything\n" +msgstr " - »build«, byg operativsystemet uden at installere noget\n" + +#: guix/scripts/system.scm:393 +msgid " - 'vm', build a virtual machine image that shares the host's store\n" +msgstr " - »vm«, byg et virtuelt maskinaftryk som deler værtens lager\n" + +#: guix/scripts/system.scm:395 +msgid " - 'vm-image', build a freestanding virtual machine image\n" +msgstr " - »vm-image«, byg et fritstående virtuelt maskinaftryk\n" + +#: guix/scripts/system.scm:397 +msgid " - 'disk-image', build a disk image, suitable for a USB stick\n" +msgstr " - »disk-image«, byg et diskaftryk, egnet for et USB-drev\n" + +#: guix/scripts/system.scm:399 +msgid " - 'init', initialize a root file system to run GNU.\n" +msgstr " - »init«, initialiser et rootfilsystem til at køre GNU.\n" + +#: guix/scripts/system.scm:403 +msgid "" +"\n" +" --image-size=SIZE for 'vm-image', produce an image of SIZE" +msgstr "" +"\n" +" --image-size=STR for »vm-image«, lav et aftryk af STR" + +#: guix/scripts/system.scm:405 +msgid "" +"\n" +" --no-grub for 'init', do not install GRUB" +msgstr "" +"\n" +" --no-grub for »init«, installer ikke GRUB" + +#: guix/scripts/system.scm:407 +msgid "" +"\n" +" --share=SPEC for 'vm', share host file system according to SPEC" +msgstr "" +"\n" +" --share=SPEC for »vm«, del værtsfilsystem jævnfør SPEC" + +#: guix/scripts/system.scm:409 +msgid "" +"\n" +" --expose=SPEC for 'vm', expose host file system according to SPEC" +msgstr "" +"\n" +" --expose=SPEC for »vm«, fremvis værtsfilsystem jævnfør SPEC" + +#: guix/scripts/system.scm:411 +msgid "" +"\n" +" --full-boot for 'vm', make a full boot sequence" +msgstr "" +"\n" +" --full-boot for »vm«, lav en fuld opstartssekvens" + +#: guix/scripts/system.scm:507 +#, scheme-format +msgid "~a: unknown action~%" +msgstr "~a: ukendt handling~%" + +#: guix/scripts/system.scm:524 +#, scheme-format +msgid "wrong number of arguments for action '~a'~%" +msgstr "forkert antal argumenter for handling »~a«~%" + +#: guix/scripts/system.scm:544 +#, scheme-format +msgid "no configuration file specified~%" +msgstr "ingen konfigurationsfil angivet~%" + +#: guix/scripts/lint.scm:82 +#, scheme-format +msgid "Available checkers:~%" +msgstr "Tilgængelige kontrolprogrammer:~%" + +#: guix/scripts/lint.scm:102 +msgid "description should not be empty" +msgstr "beskrivelse skal være udfyldt" + +#: guix/scripts/lint.scm:109 +msgid "description should start with an upper-case letter or digit" +msgstr "beskrivelse skal starte med et stort bogstav eller et tal" + +# arg, hvad foregår der her +#: guix/scripts/lint.scm:125 +#, scheme-format +msgid "" +"sentences in description should be followed ~\n" +"by two spaces; possible infraction~p at ~{~a~^, ~}" +msgstr "" +"sætninger i beskrivelsen skal efterfølges ~\n" +"af to mellemrum; mulig infraction~p ved ~{~a~^, ~}" + +#: guix/scripts/lint.scm:146 +msgid "pkg-config should probably be a native input" +msgstr "pkg-config skal sandsynligvis være standarddata" + +#: guix/scripts/lint.scm:161 +msgid "synopsis should not be empty" +msgstr "synopsis skal være udfyldt" + +#: guix/scripts/lint.scm:169 +msgid "no period allowed at the end of the synopsis" +msgstr "ingen periode er tilladt i slutningen af synopsen" + +#: guix/scripts/lint.scm:181 +msgid "no article allowed at the beginning of the synopsis" +msgstr "ingen artikel er tilladt i begyndelsen af synopsen" + +#: guix/scripts/lint.scm:188 +msgid "synopsis should be less than 80 characters long" +msgstr "synopsis skal være mindre end 80 tegn lang" + +#: guix/scripts/lint.scm:194 +msgid "synopsis should start with an upper-case letter or digit" +msgstr "synopsis skal starte med et stort bogstav eller et tal" + +#: guix/scripts/lint.scm:201 +msgid "synopsis should not start with the package name" +msgstr "synopsis skal ikke starte med pakkenavnet" + +#: guix/scripts/lint.scm:270 +#, scheme-format +msgid "URI ~a not reachable: ~a (~s)" +msgstr "URI ~a kan ikke nås: ~a (~s)" + +#: guix/scripts/lint.scm:278 +#, scheme-format +msgid "URI ~a domain not found: ~a" +msgstr "URI ~a domæne blev ikke fundet: ~a" + +#: guix/scripts/lint.scm:286 +#, scheme-format +msgid "URI ~a unreachable: ~a" +msgstr "URI ~a kan ikke nås: ~a" + +#: guix/scripts/lint.scm:312 +msgid "invalid value for home page" +msgstr "ugyldig værdi for hjemmeside" + +#: guix/scripts/lint.scm:315 +#, scheme-format +msgid "invalid home page URL: ~s" +msgstr "ugyldig hjemmesideadresse: ~s" + +#: guix/scripts/lint.scm:336 +msgid "file names of patches should start with the package name" +msgstr "filnavn for rettelser skal starte med pakkenavnet" + +#: guix/scripts/lint.scm:374 +#, scheme-format +msgid "~a: ~a: proposed synopsis: ~s~%" +msgstr "~a: ~a: foreslået synopsis: ~s~%" + +#: guix/scripts/lint.scm:386 +#, scheme-format +msgid "~a: ~a: proposed description:~% \"~a\"~%" +msgstr "~a: ~a: foreslået beskrivelse:~% »~a«~%" + +#: guix/scripts/lint.scm:415 +msgid "Validate package descriptions" +msgstr "Valider pakkebeskrivelser" + +#: guix/scripts/lint.scm:419 +msgid "Validate synopsis & description of GNU packages" +msgstr "Valider synopsis og beskrivelse for GNU-pakker" + +#: guix/scripts/lint.scm:423 +msgid "Identify inputs that should be native inputs" +msgstr "Identificer inddata som skal være standarddata" + +#: guix/scripts/lint.scm:427 +msgid "Validate file names of patches" +msgstr "Valider filnavne for rettelser" + +#: guix/scripts/lint.scm:431 +msgid "Validate home-page URLs" +msgstr "Valider hjemmesiders adresser" + +#: guix/scripts/lint.scm:435 +msgid "Validate source URLs" +msgstr "Valider kildeadresser" + +#: guix/scripts/lint.scm:439 +msgid "Validate package synopses" +msgstr "Valider pakkesynopser" + +#: guix/scripts/lint.scm:464 +msgid "" +"Usage: guix lint [OPTION]... [PACKAGE]...\n" +"Run a set of checkers on the specified package; if none is specified, run the checkers on all packages.\n" +msgstr "" +"Brug: guix lint [TILVALG]... [PAKKE]...\n" +"Kør et sæt af kontroller på den specificerede pakke; hvis ingen er specificeret, så kør kontrollerne på alle pakker.\n" + +#: guix/scripts/lint.scm:466 +msgid "" +"\n" +" -c, --checkers=CHECKER1,CHECKER2...\n" +" only run the specificed checkers" +msgstr "" +"\n" +" -c, --checkers=KONTROL1,KONTROL2...\n" +" kør kun de specificerede kontroller" + +#: guix/scripts/lint.scm:471 +msgid "" +"\n" +" -l, --list-checkers display the list of available lint checkers" +msgstr "" +"\n" +" -l, --list-checkers vis listen med tilgængelige lint-kontroller" + +#: guix/scripts/lint.scm:491 +#, scheme-format +msgid "~a: invalid checker~%" +msgstr "~a: ugyldig kontrol~%" + +#: guix/gnu-maintenance.scm:438 +#, scheme-format +msgid "signature verification failed for `~a'~%" +msgstr "signaturverifikation mislykkedes for »~a«~%" + +#: guix/gnu-maintenance.scm:440 +#, scheme-format +msgid "(could be because the public key is not in your keyring)~%" +msgstr "(kunne være fordi den offentlige nøgle ikke er i din nøglering)~%" + +#: guix/gnu-maintenance.scm:515 +#, scheme-format +msgid "~a: could not locate source file" +msgstr "~a: kunne ikke lokalisere kildefil" + +#: guix/gnu-maintenance.scm:520 +#, scheme-format +msgid "~a: ~a: no `version' field in source; skipping~%" +msgstr "~a: ~a: intet »versionsfelt« i kilde; udelader~%" + +#: guix/ui.scm:137 +#, scheme-format +msgid "failed to install locale: ~a~%" +msgstr "kunne ikke installere sprog: ~a~%" + +#: guix/ui.scm:156 +msgid "" +"Copyright (C) 2014 the Guix authors\n" +"License GPLv3+: GNU GPL version 3 or later \n" +"This is free software: you are free to change and redistribute it.\n" +"There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"Ophavsret 2014 Guix-forfatterne\n" +"Licens GPLv3+: GNU GPL version 3 eller senere \n" +"Dette er et frit program; du kan frit ændre og videredistribuere programmet.\n" +"Der er INGEN GARANTI, inden for lovens rammer.\n" + +#: guix/ui.scm:164 +#, scheme-format +msgid "" +"\n" +"Report bugs to: ~a." +msgstr "" +"\n" +"Rapporter fejl til: ~a." + +#: guix/ui.scm:166 +#, scheme-format +msgid "" +"\n" +"~a home page: <~a>" +msgstr "" +"\n" +"~a hjemmeside: <~a>" + +#: guix/ui.scm:168 +msgid "" +"\n" +"General help using GNU software: " +msgstr "" +"\n" +"Generel hjælp til brugen af GNU-programmer: " + +#: guix/ui.scm:175 +#, scheme-format +msgid "~a: invalid number~%" +msgstr "~a: ugyldigt nummer~%" + +#: guix/ui.scm:192 +#, scheme-format +msgid "invalid number: ~a~%" +msgstr "ugyldigt nummer: ~a~%" + +#: guix/ui.scm:215 +#, scheme-format +msgid "unknown unit: ~a~%" +msgstr "ukendt enhed: ~a~%" + +#: guix/ui.scm:226 +#, scheme-format +msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%" +msgstr "~a:~a:~a: pakken »~a« har ugyldige inddata: ~s~%" + +#: guix/ui.scm:233 +#, scheme-format +msgid "~a: ~a: build system `~a' does not support cross builds~%" +msgstr "~a: ~a: byggesystem »~a« understøtter ikke krydsbygninger~%" + +#: guix/ui.scm:238 +#, scheme-format +msgid "profile '~a' does not exist~%" +msgstr "profilen »~a« findes ikke~%" + +#: guix/ui.scm:241 +#, scheme-format +msgid "generation ~a of profile '~a' does not exist~%" +msgstr "oprettelse ~a af profilen »~a« findes ikke~%" + +#: guix/ui.scm:245 +#, scheme-format +msgid "failed to connect to `~a': ~a~%" +msgstr "kunne ikke forbinde til »~a«: ~a~%" + +#: guix/ui.scm:250 +#, scheme-format +msgid "build failed: ~a~%" +msgstr "bygning mislykkedes: ~a~%" + +#: guix/ui.scm:253 +#, scheme-format +msgid "reference to invalid output '~a' of derivation '~a'~%" +msgstr "reference til ugyldige uddata »~a« for afledning »~a«~%" + +#: guix/ui.scm:264 +#, scheme-format +msgid "~a: ~a~%" +msgstr "~a: ~a~%" + +#: guix/ui.scm:283 +#, scheme-format +msgid "failed to read expression ~s: ~s~%" +msgstr "kunne ikke læse udtryk ~s: ~s~%" + +#: guix/ui.scm:289 +#, scheme-format +msgid "failed to evaluate expression `~a': ~s~%" +msgstr "kunne ikke evaluere udtryk »~a«: ~s~%" + +#: guix/ui.scm:298 +#, scheme-format +msgid "expression ~s does not evaluate to a package~%" +msgstr "udtryk ~s evaluerer ikke til en pakke~%" + +#: guix/ui.scm:350 +#, scheme-format +msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]" +msgid_plural "~:[The following derivations would be built:~%~{ ~a~%~}~;~]" +msgstr[0] "~:[Den følgende afledning ville blive bygget:~%~{ ~a~%~}~;~]" +msgstr[1] "~:[De følgende afledninger ville blive bygget:~%~{ ~a~%~}~;~]" + +#: guix/ui.scm:355 +#, scheme-format +msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]" +msgid_plural "~:[The following files would be downloaded:~%~{ ~a~%~}~;~]" +msgstr[0] "~:[Den følgende fil ville blive hentet:~%~{ ~a~%~}~;~]" +msgstr[1] "~:[De følgende filer ville blive hentet:~%~{ ~a~%~}~;~]" + +#: guix/ui.scm:361 +#, scheme-format +msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]" +msgid_plural "~:[The following derivations will be built:~%~{ ~a~%~}~;~]" +msgstr[0] "~:[Den følgende afledning vil blive bygget:~%~{ ~a~%~}~;~]" +msgstr[1] "~:[De følgende afledninger vil blive bygget:~%~{ ~a~%~}~;~]" + +#: guix/ui.scm:366 +#, scheme-format +msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]" +msgid_plural "~:[The following files will be downloaded:~%~{ ~a~%~}~;~]" +msgstr[0] "~:[Den følgende fil vil blive hentet:~%~{ ~a~%~}~;~]" +msgstr[1] "~:[De følgende filer vil blive hentet:~%~{ ~a~%~}~;~]" + +#: guix/ui.scm:418 +#, scheme-format +msgid "The following package would be removed:~%~{~a~%~}~%" +msgid_plural "The following packages would be removed:~%~{~a~%~}~%" +msgstr[0] "Den følgende pakke ville blive fjernet:~%~{~a~%~}~%" +msgstr[1] "De følgende pakker ville blive fjernet:~%~{~a~%~}~%" + +#: guix/ui.scm:423 +#, scheme-format +msgid "The following package will be removed:~%~{~a~%~}~%" +msgid_plural "The following packages will be removed:~%~{~a~%~}~%" +msgstr[0] "Den følgende pakke vil blive fjernet:~%~{~a~%~}~%" +msgstr[1] "De følgende pakker vil blive fjernet:~%~{~a~%~}~%" + +#: guix/ui.scm:436 +#, scheme-format +msgid "The following package would be upgraded:~%~{~a~%~}~%" +msgid_plural "The following packages would be upgraded:~%~{~a~%~}~%" +msgstr[0] "Den følgende pakke ville blive opgraderet:~%~{~a~%~}~%" +msgstr[1] "De følgende pakker ville blive opgraderet:~%~{~a~%~}~%" + +#: guix/ui.scm:441 +#, scheme-format +msgid "The following package will be upgraded:~%~{~a~%~}~%" +msgid_plural "The following packages will be upgraded:~%~{~a~%~}~%" +msgstr[0] "Den følgende pakke vil blive opgraderet:~%~{~a~%~}~%" +msgstr[1] "De følgende pakker vil blive opgraderet:~%~{~a~%~}~%" + +#: guix/ui.scm:452 +#, scheme-format +msgid "The following package would be installed:~%~{~a~%~}~%" +msgid_plural "The following packages would be installed:~%~{~a~%~}~%" +msgstr[0] "Den følgende pakke ville blive installeret:~%~{~a~%~}~%" +msgstr[1] "De følgende pakker ville blive installeret:~%~{~a~%~}~%" + +#: guix/ui.scm:457 +#, scheme-format +msgid "The following package will be installed:~%~{~a~%~}~%" +msgid_plural "The following packages will be installed:~%~{~a~%~}~%" +msgstr[0] "Den følgende pakke vil blive installeret:~%~{~a~%~}~%" +msgstr[1] "De følgende pakker vil blive installeret:~%~{~a~%~}~%" + +#: guix/ui.scm:474 +msgid "" +msgstr "" + +#: guix/ui.scm:500 +#, scheme-format +msgid "failed to create configuration directory `~a': ~a~%" +msgstr "kunne ikke oprette konfiguratinsmappe »~a«: ~a~%" + +#: guix/ui.scm:600 guix/ui.scm:614 +msgid "unknown" +msgstr "ukendt" + +#: guix/ui.scm:723 +#, scheme-format +msgid "invalid argument: ~a~%" +msgstr "ugyldigt argument: ~a~%" + +#: guix/ui.scm:732 +#, scheme-format +msgid "Try `guix --help' for more information.~%" +msgstr "Prøv »guix --help« for yderligere information.~%" + +#: guix/ui.scm:762 +msgid "" +"Usage: guix COMMAND ARGS...\n" +"Run COMMAND with ARGS.\n" +msgstr "" +"Brug: guix KOMMANDO ARG...\n" +"Kør KOMMANDO med ARG.\n" + +#: guix/ui.scm:765 +msgid "COMMAND must be one of the sub-commands listed below:\n" +msgstr "KOMMANDO skal være en af underkommandoerne vist nedenfor:\n" + +#: guix/ui.scm:785 +#, scheme-format +msgid "guix: ~a: command not found~%" +msgstr "guix: ~a: kommando blev ikke fundet~%" + +#: guix/ui.scm:803 +#, scheme-format +msgid "guix: missing command name~%" +msgstr "guix: mangler kommandonavn~%" + +#: guix/ui.scm:811 +#, scheme-format +msgid "guix: unrecognized option '~a'~%" +msgstr "guix: ikke genkendt tilvalg »~a«~%" + +#: guix/http-client.scm:217 +#, scheme-format +msgid "using Guile ~a, which does not support ~s encoding~%" +msgstr "bruger Guile ~a, som ikke understøtter ~s-kodning~%" + +#: guix/http-client.scm:220 +#, scheme-format +msgid "download failed; use a newer Guile~%" +msgstr "overførsel mislykkedes; brug en nyere Guile~%" + +#: guix/http-client.scm:232 +#, scheme-format +msgid "following redirection to `~a'...~%" +msgstr "følger omdirigering til »~a«...~%" + +#: guix/http-client.scm:241 +msgid "download failed" +msgstr "overførsel mislykkedes" + +#: guix/nar.scm:155 +msgid "signature is not a valid s-expression" +msgstr "signatur er ikke et gyldigt s-udtryk" + +#: guix/nar.scm:164 +msgid "invalid signature" +msgstr "ugyldig signatur" + +#: guix/nar.scm:168 +msgid "invalid hash" +msgstr "ugyldig hash" + +#: guix/nar.scm:176 +msgid "unauthorized public key" +msgstr "uautoriseret offentlig nøgle" + +#: guix/nar.scm:181 +msgid "corrupt signature data" +msgstr "ødelagt signaturdata" + +#: guix/nar.scm:201 +msgid "corrupt file set archive" +msgstr "ødelagt filsætarkiv" + +#: guix/nar.scm:211 +#, scheme-format +msgid "importing file or directory '~a'...~%" +msgstr "importerer fil eller mappe »~a«...~%" + +#: guix/nar.scm:222 +#, scheme-format +msgid "found valid signature for '~a'~%" +msgstr "fandt gyldig signatur for »~a«~%" + +#: guix/nar.scm:229 +msgid "imported file lacks a signature" +msgstr "importeret fil mangler en signatur" + +#: guix/nar.scm:268 +msgid "invalid inter-file archive mark" +msgstr "ugyldig arkivmærke for mellemfil" -- cgit v1.2.3 From 347f54ed33a0b9a4e234d18dadf950f055e16554 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 6 Apr 2015 23:09:54 +0200 Subject: utils: 'find-files' does not follow symlinks by default. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes . Reported by Tomáš Čech . * guix/build/utils.scm (find-files): Add #:stat parameter. Pass it as last argument to 'file-system-fold'. --- guix/build/utils.scm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/guix/build/utils.scm b/guix/build/utils.scm index fbd5d54da5..676a0120e3 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -278,12 +278,14 @@ name matches REGEXP." (lambda (file stat) (regexp-exec file-rx (basename file))))) -(define* (find-files dir #:optional (pred (const #t))) +(define* (find-files dir #:optional (pred (const #t)) + #:key (stat lstat)) "Return the lexicographically sorted list of files under DIR for which PRED returns true. PRED is passed two arguments: the absolute file name, and its stat buffer; the default predicate always returns true. PRED can also be a regular expression, in which case it is equivalent to (file-name-predicate -PRED)." +PRED). STAT is used to obtain file information; using 'lstat' means that +symlinks are not followed." (let ((pred (if (procedure? pred) pred (file-name-predicate pred)))) @@ -304,7 +306,8 @@ PRED)." file (strerror errno)) result) '() - dir) + dir + stat) string Date: Sun, 5 Apr 2015 20:25:30 +0200 Subject: gnu: Paper over a build circularity problem. A forthcoming gtk+ update that will import (gnu packages gl) from (gnu packages gtk) triggers an issue related to circular dependencies between modules. This patch works around the issue. * gnu/packages/sdl.scm: Remove the #:prefix from the (gnu packages fontutils) import, and instead #:hide 'freetype' from the (guix licenses) import. Modified-By: Mark H Weaver --- gnu/packages/sdl.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index 9a3b3898d8..4e9ebfb034 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -20,12 +20,12 @@ (define-module (gnu packages sdl) #:use-module (gnu packages) - #:use-module (guix licenses) + #:use-module ((guix licenses) #:hide (freetype)) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) - #:use-module ((gnu packages fontutils) #:prefix font:) + #:use-module (gnu packages fontutils) #:use-module (gnu packages guile) #:use-module (gnu packages image) #:use-module (gnu packages linux) @@ -260,7 +260,7 @@ SDL.") "1dydxd4f5kb1288i5n5568kdk2q7f8mqjr7i7sd33nplxjaxhk3j")))) (build-system gnu-build-system) (propagated-inputs `(("sdl" ,sdl))) - (inputs `(("freetype" ,font:freetype) + (inputs `(("freetype" ,freetype) ("mesa" ,mesa))) (native-inputs `(("pkg-config" ,pkg-config))) (synopsis "SDL TrueType font library") -- cgit v1.2.3 From 131ddf991fcbdeba48318555de56e40208f03ff5 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sun, 5 Apr 2015 11:28:32 +0200 Subject: gnu: Add libepoxy. * gnu/packages/gl.scm (libepoxy): New variable. Modified-By: Mark H Weaver --- gnu/packages/gl.scm | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index 66f172927f..f3e63180c6 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -418,3 +418,50 @@ extension functionality is exposed in a single header file.") "Guile-OpenGL is a library for Guile that provides bindings to the OpenGL graphics API.") (license l:lgpl3+))) + +(define-public libepoxy + (package + (name "libepoxy") + (version "1.2") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/anholt/libepoxy/archive/v" + version + ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1xp8g6b7xlbym2rj4vkbl6xpb7ijq7glpv656mc7k9b01x22ihs2")))) + (arguments + '(#:phases + (alist-cons-after + 'unpack 'autoreconf + (lambda _ + (zero? (system* "autoreconf" "-vif"))) + (alist-cons-before + 'configure 'patch-paths + (lambda* (#:key inputs #:allow-other-keys) + (let ((python (assoc-ref inputs "python")) + (mesa (assoc-ref inputs "mesa"))) + (substitute* "src/gen_dispatch.py" + (("/usr/bin/env python") python)) + (substitute* (find-files "." "\\.[ch]$") + (("libGL.so.1") (string-append mesa "/lib/libGL.so.1")) + (("libEGL.so.1") (string-append mesa "/lib/libEGL.so.1"))) + #t)) + %standard-phases)))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config) + ("python" ,python))) + (inputs + `(("mesa" ,mesa))) + (home-page "http://github.com/anholt/libepoxy/") + (synopsis "A library for handling OpenGL function pointer management") + (description + "A library for handling OpenGL function pointer management.") + (license l:x11))) -- cgit v1.2.3 From 31b254a324428c8e2470be1efbc30b67cc241387 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sat, 4 Apr 2015 22:46:47 +0200 Subject: gnu: gtk+: Update to 3.16.0. * gnu/packages/gtk.scm (gtk+): Update to 3.16.0. Add libepoxy to propagated-inputs. Add gettext to native-inputs. Add a 'pre-configure' phase instead of modifying the existing 'configure' phase. Fix references to 'gtk-update-icon-cache' in Makefile.in files. Co-Authored-By: Mark H Weaver --- gnu/packages/gtk.scm | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index de728fbbcc..83c839a612 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -34,6 +34,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages fontutils) #:use-module (gnu packages ghostscript) + #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages icu4c) @@ -433,7 +434,7 @@ application suites.") (define-public gtk+ (package (inherit gtk+-2) (name "gtk+") - (version "3.14.7") + (version "3.16.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -441,11 +442,12 @@ application suites.") name "-" version ".tar.xz")) (sha256 (base32 - "0vm40n6nf0w3vv54wqy67jcxddka7hplksi093xim3119yq196gv")))) + "1si6ihl1wlvag8qq3166skr9fnm9i33dimbfry1j628qzqc76qff")))) (propagated-inputs `(("at-spi2-atk" ,at-spi2-atk) ("atk" ,atk) ("gdk-pixbuf" ,gdk-pixbuf) + ("libepoxy" ,libepoxy) ("libxi" ,libxi) ("libxinerama" ,libxinerama) ("libxdamage" ,libxdamage) @@ -456,25 +458,28 @@ application suites.") (native-inputs `(("perl" ,perl) ("glib" ,glib "bin") + ("gettext" ,gnu-gettext) ("pkg-config" ,pkg-config) ("gobject-introspection" ,gobject-introspection) ("python-wrapper" ,python-wrapper) ("xorg-server" ,xorg-server))) (arguments `(#:phases - (alist-replace - 'configure - (lambda* (#:key inputs #:allow-other-keys #:rest args) - (let ((configure (assoc-ref %standard-phases 'configure))) - ;; Disable most tests, failing in the chroot with the message: - ;; D-Bus library appears to be incorrectly set up; failed to read - ;; machine uuid: Failed to open "/etc/machine-id": No such file or - ;; directory. - ;; See the manual page for dbus-uuidgen to correct this issue. - (substitute* "testsuite/Makefile.in" - (("SUBDIRS = gdk gtk a11y css reftests") - "SUBDIRS = gdk")) - (apply configure args))) + (alist-cons-before + 'configure 'pre-configure + (lambda _ + ;; Disable most tests, failing in the chroot with the message: + ;; D-Bus library appears to be incorrectly set up; failed to read + ;; machine uuid: Failed to open "/etc/machine-id": No such file or + ;; directory. + ;; See the manual page for dbus-uuidgen to correct this issue. + (substitute* "testsuite/Makefile.in" + (("SUBDIRS = gdk gtk a11y css reftests") + "SUBDIRS = gdk")) + (substitute* '("demos/widget-factory/Makefile.in" + "demos/gtk-demo/Makefile.in") + (("gtk-update-icon-cache") "$(bindir)/gtk-update-icon-cache")) + #t) %standard-phases))))) ;;; -- cgit v1.2.3 From 1e44ebcc83a0f715d1869a6492c261802453f22a Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 6 Apr 2015 21:55:00 -0400 Subject: gnu: gnutls: Update to 3.3.14. * gnu/packages/gnutls.scm (gnutls): Update to 3.3.14. --- gnu/packages/gnutls.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnutls.scm b/gnu/packages/gnutls.scm index 0ae660bf5d..b2176ec191 100644 --- a/gnu/packages/gnutls.scm +++ b/gnu/packages/gnutls.scm @@ -103,7 +103,7 @@ living in the same process.") (define-public gnutls (package (name "gnutls") - (version "3.3.12") + (version "3.3.14") (source (origin (method url-fetch) (uri @@ -114,7 +114,7 @@ living in the same process.") "/gnutls-" version ".tar.xz")) (sha256 (base32 - "16r96bzsfqx1rlqrkggmhhx6zbxj1fmc3mwpp0ik73ylqn93xav7")))) + "0lpcgkp8bb1b7f9z935f7h9c0srd4fc52404x70hk2ddz8q01yhd")))) (build-system gnu-build-system) (arguments '(#:configure-flags -- cgit v1.2.3 From bb146db14fc1ffb23c738ffc2f95d63b30b0db11 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 6 Apr 2015 22:12:00 -0400 Subject: gnu: dbus: Update to 1.8.16. * gnu/packages/glib.scm (dbus): Update to 1.8.16. --- gnu/packages/glib.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index c2555cfb35..ab789b2d0e 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2013, 2015 Andreas Enge ;;; Copyright © 2013 Nikita Karetnikov -;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2014, 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -57,7 +57,7 @@ (define dbus (package (name "dbus") - (version "1.8.12") + (version "1.8.16") (source (origin (method url-fetch) (uri @@ -65,7 +65,7 @@ version ".tar.gz")) (sha256 (base32 - "07jhcalg00i2rx5zrgk73rg0vm7lzi5q5z2gscrbl999ipr2h569")) + "01rba8mp8kqvmy6ibdmi806kjr3m14swnskqk02gyhykxxl54ybz")) (patches (list (search-patch "dbus-localstatedir.patch"))))) (build-system gnu-build-system) (arguments -- cgit v1.2.3 From 6e1bb64201b94d4d1a802a5c4340bf5da54a40ca Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Mon, 6 Apr 2015 23:56:35 +0800 Subject: gnu: Add libsoup. * gnu/packages/gnome.scm (libsoup): New variable. --- gnu/packages/gnome.scm | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 4acfa77811..1a42bffd7a 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -31,6 +31,8 @@ #:use-module (guix build-system glib-or-gtk) #:use-module (gnu packages) #:use-module (gnu packages bison) + #:use-module (gnu packages curl) + #:use-module (gnu packages databases) #:use-module (gnu packages flex) #:use-module (gnu packages docbook) #:use-module (gnu packages glib) @@ -51,6 +53,7 @@ #:use-module (gnu packages xml) #:use-module (gnu packages gl) #:use-module (gnu packages compression) + #:use-module (gnu packages web) #:use-module (gnu packages xorg) #:use-module (gnu packages xdisorg) #:use-module (gnu packages ncurses)) @@ -1668,6 +1671,69 @@ library.") library.") (license license:lgpl2.0+))) +(define-public libsoup + (package + (name "libsoup") + (version "2.50.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/libsoup/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0yv61y5vfar1rfksa6f53zhfw9wcb39zjix8gqc1ff5gqid3c08y")))) + (build-system gnu-build-system) + (outputs '("out" "doc")) + (arguments + `(#:make-flags '("CC=gcc") ; for g-ir-scanner + #:configure-flags + (list (string-append "--with-html-dir=" + (assoc-ref %outputs "doc") + "/share/gtk-doc/html") + ;; To find GIO modules from glib-networking. + (string-append "GIO_EXTRA_MODULES=" + (assoc-ref %build-inputs "glib-networking") + "/lib/gio/modules")) + #:phases + (modify-phases %standard-phases + (add-before configure disable-unconnected-socket-test + ;; This test fails due to missing /etc/nsswitch.conf + ;; in the build environment. + (lambda _ + (substitute* "tests/socket-test.c" + ((".*/sockets/unconnected.*") "")) + #t)) + (add-before check unset-LC_ALL + ;; The 'check-local' target runs 'env LANG=C sort -u', + ;; unset 'LC_ALL' to make 'LANG' working. + (lambda _ + (unsetenv "LC_ALL") + #t))))) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-mkenums + ("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ("python" ,python-wrapper) + ;; These are needed for the tests. + ;; FIXME: Add PHP once available. + ("curl" ,curl) + ("httpd" ,httpd))) + (propagated-inputs + ;; libsoup-2.4.pc refers to all these. + `(("glib" ,glib) + ("libxml2" ,libxml2))) + (inputs + `(("glib-networking" ,glib-networking) + ("sqlite" ,sqlite))) + (home-page "https://live.gnome.org/LibSoup/") + (synopsis "GLib-based HTTP Library") + (description + "LibSoup is an HTTP client/server library for GNOME. It uses GObjects +and the GLib main loop, to integrate well with GNOME applications.") + (license license:lgpl2.0+))) + (define-public gnome-mines (package (name "gnome-mines") -- cgit v1.2.3 From ff03ef0b3a88b7532b46c914b5661c55330a958f Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 6 Apr 2015 22:13:48 -0400 Subject: gnu: parallel: Update to 20150322. * gnu/packages/parallel.scm (parallel): Update to 20150322. --- gnu/packages/parallel.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm index 9072adae3c..70595b1bac 100644 --- a/gnu/packages/parallel.scm +++ b/gnu/packages/parallel.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013,2014 Eric Bavier +;;; Copyright © 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,7 +28,7 @@ (define-public parallel (package (name "parallel") - (version "20150122") + (version "20150322") (source (origin (method url-fetch) @@ -35,7 +36,7 @@ version ".tar.bz2")) (sha256 (base32 - "14g9pka59vln19rg6y8lyvrsc4nb3jk8y26hv3hdrf44rgwpds7d")))) + "1zsj1bd4zbwb4n9i0jgzs7vd5wkyg3xvj6s1q6s5fyn0pff7j01c")))) (build-system gnu-build-system) (inputs `(("perl" ,perl))) (home-page "http://www.gnu.org/software/parallel/") -- cgit v1.2.3 From d70a4a5e872aab42ff19d922bffd3b27961cd6e2 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 6 Apr 2015 22:22:03 -0400 Subject: gnu: apl: Update to 1.5. * gnu/packages/apl.scm (apl): Update to 1.5. --- gnu/packages/apl.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/apl.scm b/gnu/packages/apl.scm index 7da3b5eb4a..7573870a4c 100644 --- a/gnu/packages/apl.scm +++ b/gnu/packages/apl.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Nikita Karetnikov -;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2014, 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,14 +30,14 @@ (define-public apl (package (name "apl") - (version "1.4") + (version "1.5") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/apl/apl-" version ".tar.gz")) (sha256 (base32 - "0fl9l4jb5wpnb54kqkphavi657z1cv15h9qj2rqy2shf33dk3nk9")))) + "0h4diq3wfbdwxp5nm0z4b0p1zq13lwip0y7v28r9v0mbbk8xsfh1")))) (build-system gnu-build-system) (home-page "http://www.gnu.org/software/apl/") (inputs -- cgit v1.2.3 From 3f7bf86a718b79f0dc17a8d9d1ef90e39f47897a Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 7 Apr 2015 13:22:40 +0800 Subject: gnu: Add libiec61883. * gnu/packages/linux.scm (libiec61883): New variable. --- gnu/packages/linux.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 637cde9f69..a583e28d24 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -2048,3 +2048,27 @@ protocol in question.") "Libavc1394 is a programming interface to the AV/C specification from the 1394 Trade Assocation. AV/C stands for Audio/Video Control.") (license lgpl2.1+))) + +(define-public libiec61883 + (package + (name "libiec61883") + (version "1.2.0") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://kernel.org/linux/libs/ieee1394/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "17ph458zya2l8dr2xwqnzy195qd9swrir31g78qkgb3g4xz2rq6i")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (propagated-inputs + `(("libraw1394" ,libraw1394))) ; required by libiec61883.pc + (home-page "https://ieee1394.wiki.kernel.org/index.php/Main_Page") + (synopsis "Isochronous streaming media library for IEEE 1394") + (description + "The libiec61883 library provides a higher level API for streaming DV, +MPEG-2 and audio over Linux IEEE 1394.") + (license lgpl2.1+))) -- cgit v1.2.3 From fda85ca67d948157cc8f81c4990c0a491551677a Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 31 Mar 2015 22:28:08 +0200 Subject: gnu: Add Csound. * gnu/packages/audio.scm (csound): New variable. --- gnu/packages/audio.scm | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 78e3207b4a..6b24214994 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -31,10 +31,13 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages boost) #:use-module (gnu packages base) + #:use-module (gnu packages bison) #:use-module (gnu packages compression) #:use-module (gnu packages curl) #:use-module (gnu packages databases) #:use-module (gnu packages file) + #:use-module (gnu packages flex) + #:use-module (gnu packages gettext) #:use-module (gnu packages glib) #:use-module (gnu packages gtk) #:use-module (gnu packages gnome) @@ -233,6 +236,39 @@ bass section with five drawbars. A standalone JACK application and LV2 plugins are provided.") (license license:gpl2))) +(define-public csound + (package + (name "csound") + (version "6.04") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/csound/csound6/Csound" + version "/Csound" version ".tar.gz")) + (sha256 + (base32 + "1030w38lxdwjz1irr32m9cl0paqmgr02lab2m7f7j1yihwxj1w0g")))) + (build-system cmake-build-system) + (inputs + `(("alsa-lib" ,alsa-lib) + ("boost" ,boost) + ("pulseaudio" ,pulseaudio) + ("libsndfile" ,libsndfile) + ("liblo" ,liblo) + ("ladspa" ,ladspa) + ("jack" ,jack-1) + ("gettext" ,gnu-gettext))) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex) + ("zlib" ,zlib))) + (home-page "http://csound.github.io/") + (synopsis "Sound and music computing system") + (description + "Csound is a user-programmable and user-extensible sound processing +language and software synthesizer.") + (license license:lgpl2.1+))) + (define-public clalsadrv (package (name "clalsadrv") -- cgit v1.2.3 From c267cc15785953cb4140b0901f315052c77f7134 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 11 Mar 2015 09:02:34 +0100 Subject: gnu: Add Solfege. * gnu/packages/music.scm (solfege): New variable. --- gnu/packages/music.scm | 119 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index c92354248f..0c83b0bd82 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -23,6 +23,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system gnu) #:use-module (gnu packages) + #:use-module (gnu packages audio) #:use-module (gnu packages bison) #:use-module (gnu packages docbook) #:use-module (gnu packages flex) @@ -30,9 +31,14 @@ #:use-module (gnu packages fontutils) #:use-module (gnu packages gettext) #:use-module (gnu packages ghostscript) + #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) + #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) + #:use-module (gnu packages linux) ; for alsa-utils + #:use-module (gnu packages man) + #:use-module (gnu packages mp3) #:use-module (gnu packages netpbm) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -40,6 +46,8 @@ #:use-module (gnu packages rsync) #:use-module (gnu packages texinfo) #:use-module (gnu packages texlive) + #:use-module (gnu packages xml) + #:use-module (gnu packages xiph) #:use-module (gnu packages zip)) (define-public lilypond @@ -102,3 +110,114 @@ music. Music is input in a text file containing control sequences which are interpreted by LilyPond to produce the final document. It is extendable with Guile.") (license license:gpl3+))) + +(define-public solfege + (package + (name "solfege") + (version "3.22.2") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://gnu/solfege/solfege-" + version ".tar.xz")) + (sha256 + (base32 + "1w25rxdbj907nsx285k9nm480pvy12w3yknfh4n1dfv17cwy072i")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; xmllint attempts to download DTD + #:test-target "test" + #:phases + (alist-cons-after + 'unpack 'fix-configuration + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "default.config" + (("csound=csound") + (string-append "csound=" + (assoc-ref inputs "csound") + "/bin/csound")) + (("/usr/bin/aplay") + (string-append (assoc-ref inputs "aplay") + "/bin/aplay")) + (("/usr/bin/timidity") + (string-append (assoc-ref inputs "timidity") + "/bin/timidity")) + (("/usr/bin/mpg123") + (string-append (assoc-ref inputs "mpg123") + "/bin/mpg123")) + (("/usr/bin/ogg123") + (string-append (assoc-ref inputs "ogg123") + "/bin/ogg123")))) + (alist-cons-before + 'build 'patch-python-shebangs + (lambda _ + ;; Two python scripts begin with a Unicode BOM, so patch-shebang + ;; has no effect. + (substitute* '("solfege/parsetree.py" + "solfege/presetup.py") + (("#!/usr/bin/python") (string-append "#!" (which "python"))))) + (alist-cons-before + 'build 'add-sitedirs + ;; .pth files are not automatically interpreted unless the + ;; directories containing them are added as "sites". The directories + ;; are then added to those in the PYTHONPATH. This is required for + ;; the operation of pygtk and pygobject. + (lambda _ + (substitute* "run-solfege.py" + (("import os") + "import os, site +for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)"))) + (alist-cons-before + 'build 'adjust-config-file-prefix + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "run-solfege.py" + (("prefix = os.path.*$") + (string-append "prefix = " (assoc-ref outputs "out"))))) + (alist-cons-after + 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Make sure 'solfege' runs with the correct PYTHONPATH. We + ;; also need to modify GDK_PIXBUF_MODULE_FILE for SVG support. + (let* ((out (assoc-ref outputs "out")) + (path (getenv "PYTHONPATH")) + (rsvg (assoc-ref inputs "librsvg")) + (pixbuf (find-files rsvg "^loaders\\.cache$"))) + (wrap-program (string-append out "/bin/solfege") + `("PYTHONPATH" ":" prefix (,path)) + `("GDK_PIXBUF_MODULE_FILE" ":" prefix ,pixbuf)))) + %standard-phases))))))) + (inputs + `(("python" ,python-2) + ("pygtk" ,python2-pygtk) + ("gettext" ,gnu-gettext) + ("gtk" ,gtk+) + ;; TODO: Lilypond is optional. Produces errors at build time: + ;; Drawing systems...Error: /undefinedresult in --glyphshow-- + ;; Fontconfig is needed to fix one of the errors, but other similar + ;; errors remain. + ;;("lilypond" ,lilypond) + ("librsvg" ,librsvg) ; needed at runtime for icons + ("libpng" ,libpng) ; needed at runtime for icons + ;; players needed at runtime + ("aplay" ,alsa-utils) + ("csound" ,csound) ; optional, needed for some exercises + ("mpg123" ,mpg123) + ("ogg123" ,vorbis-tools) + ("timidity" ,timidity++))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("txt2man" ,txt2man) + ("libxml2" ,libxml2) ; for tests + ("ghostscript" ,ghostscript) + ;;("fontconfig" ,fontconfig) ; only needed with lilypond + ;;("freetype" ,freetype) ; only needed with lilypond + ("texinfo" ,texinfo))) + (home-page "https://www.gnu.org/software/solfege/") + (synopsis "Ear training") + (description + "GNU Solfege is a program for practicing musical ear-training. With it, +you can practice your recognition of various musical intervals and chords. It +features a statistics overview so you can monitor your progress across several +sessions. Solfege is also designed to be extensible so you can easily write +your own lessons.") + (license license:gpl3+))) -- cgit v1.2.3 From 2c0499ad876aa9245cd3a4001ee2772a0d2aa03a Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 1 Apr 2015 11:59:01 +0200 Subject: gnu: Add python-drmaa. * gnu/packages/python.scm (python-drmaa, python2-drmaa): New variables. --- gnu/packages/python.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index ddd308bce8..59c460af3b 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -2867,6 +2867,37 @@ etc. The core of this module is a decorator factory.") (define-public python2-decorator (package-with-python2 python-decorator)) +(define-public python-drmaa + (package + (name "python-drmaa") + (version "0.7.6") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/d/drmaa/drmaa-" + version ".tar.gz")) + (sha256 + (base32 "0bzl9f9g34dlhwf09i3fdv7dqqzf2iq0w7d6c2bafx1nlap8qfbh")))) + (build-system python-build-system) + ;; The test suite requires libdrmaa which is provided by the cluster + ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH + ;; should be set to the path of the libdrmaa library. + (arguments '(#:tests? #f)) + (native-inputs + `(("python-nose" ,python-nose) + ("python-setuptools" ,python-setuptools))) + (home-page "https://pypi.python.org/pypi/drmaa") + (synopsis "Python bindings for the DRMAA library") + (description + "A Python package for Distributed Resource Management (DRM) job +submission and control. This package is an implementation of the DRMAA 1.0 +Python language binding specification.") + (license bsd-3))) + +(define-public python2-drmaa + (package-with-python2 python-drmaa)) + (define-public python-ipython (package (name "python-ipython") -- cgit v1.2.3 From 710b4928c85f0b489608fce30142842db17ce1b0 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 7 Apr 2015 13:18:22 -0400 Subject: gnu: kbd: Update to 2.0.2. * gnu/packages/linux.scm (kbd): Update to 2.0.2. --- gnu/packages/linux.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index a583e28d24..4dc543d8a4 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -1370,14 +1370,14 @@ system.") (define-public kbd (package (name "kbd") - (version "2.0.1") + (version "2.0.2") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/linux/utils/kbd/kbd-" - version ".tar.gz")) + version ".tar.xz")) (sha256 (base32 - "0c34b0za2v0934acvgnva0vaqpghmmhz4zh7k0m9jd4mbc91byqm")) + "04mrms12nm5sas0nxs94yrr3hz7gmqhnmfgb9ff34bh1jszxmzcx")) (modules '((guix build utils))) (snippet '(begin -- cgit v1.2.3 From 41fc0eb90056c1f0aad41a971bf0c5eff5a72c97 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 7 Apr 2015 09:47:43 +0200 Subject: gnu: ld-wrapper: Extract symlink dereferencing. * gnu/packages/ld-wrapper.scm (readlink*, dereference-symlinks): New procedures. (pure-file-name?): Use it instead of local loop. --- gnu/packages/ld-wrapper.scm | 46 +++++++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/gnu/packages/ld-wrapper.scm b/gnu/packages/ld-wrapper.scm index cc533f5464..9d35a7b040 100644 --- a/gnu/packages/ld-wrapper.scm +++ b/gnu/packages/ld-wrapper.scm @@ -82,27 +82,45 @@ exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)) ;; Whether to emit debugging output. (getenv "GUIX_LD_WRAPPER_DEBUG")) -(define (pure-file-name? file) - ;; Return #t when FILE is the name of a file either within the store - ;; (possibly via a symlink) or within the build directory. +(define (readlink* file) + ;; Call 'readlink' until the result is not a symlink. (define %max-symlink-depth 50) (let loop ((file file) (depth 0)) + (catch 'system-error + (lambda () + (if (>= depth %max-symlink-depth) + file + (loop (readlink file) (+ depth 1)))) + (lambda args + (if (= EINVAL (system-error-errno args)) + file + (apply throw args)))))) + +(define (dereference-symlinks file) + ;; Same as 'readlink*' but return FILE if the symlink target is invalid or + ;; FILE does not exist. + (catch 'system-error + (lambda () + ;; When used from a user environment, FILE may refer to + ;; ~/.guix-profile/lib/libfoo.so, which is itself a symlink to the + ;; store. Check whether this is the case. + (readlink* file)) + (lambda args + (if (= ENOENT (system-error-errno args)) + file + (apply throw args))))) + +(define (pure-file-name? file) + ;; Return #t when FILE is the name of a file either within the store + ;; (possibly via a symlink) or within the build directory. + (let ((file (dereference-symlinks file))) (or (not (string-prefix? "/" file)) (string-prefix? %store-directory file) (string-prefix? %temporary-directory file) - (if %build-directory - (string-prefix? %build-directory file) - - ;; When used from a user environment, FILE may refer to - ;; ~/.guix-profile/lib/libfoo.so, which is itself a symlink to the - ;; store. Check whether this is the case. - (let ((s (false-if-exception (lstat file)))) - (and s - (eq? 'symlink (stat:type s)) - (< depth %max-symlink-depth) - (loop (readlink file) (+ 1 depth)))))))) + (and %build-directory + (string-prefix? %build-directory file))))) (define (shared-library? file) ;; Return #t when FILE denotes a shared library. -- cgit v1.2.3 From 51d0cd9b3852fe4ebf4b4cd9b251e6493624d022 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 7 Apr 2015 10:21:36 +0200 Subject: gnu: ld-wrapper: Add '-rpath' flag only for libraries that are in the store. This avoids adding bogus entries to the RUNPATH of installed binaries, pointing to the build directory or similar. * gnu/packages/ld-wrapper.scm (store-file-name?): New procedure. (rpath-arguments): Add "-rpath" flag on when FILE matches 'store-file-name?', not when it matches 'pure-file-name?'. --- gnu/packages/ld-wrapper.scm | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/gnu/packages/ld-wrapper.scm b/gnu/packages/ld-wrapper.scm index 9d35a7b040..cd2a2c445e 100644 --- a/gnu/packages/ld-wrapper.scm +++ b/gnu/packages/ld-wrapper.scm @@ -122,6 +122,10 @@ exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)) (and %build-directory (string-prefix? %build-directory file))))) +(define (store-file-name? file) + ;; Return #t when FILE is a store file, possibly indirectly. + (string-prefix? %store-directory (dereference-symlinks file))) + (define (shared-library? file) ;; Return #t when FILE denotes a shared library. (or (string-suffix? ".so" file) @@ -168,14 +172,22 @@ exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)) ;; Return the `-rpath' argument list for each of LIBRARY-FILES, a list of ;; absolute file names. (fold-right (lambda (file args) - (if (or %allow-impurities? - (pure-file-name? file)) - (cons* "-rpath" (dirname file) args) - (begin - (format (current-error-port) - "ld-wrapper: error: attempt to use impure library ~s~%" - file) - (exit 1)))) + ;; Add '-rpath' if and only if FILE is in the store; we don't + ;; want to add '-rpath' for files under %BUILD-DIRECTORY or + ;; %TEMPORARY-DIRECTORY because that could leak to installed + ;; files. + (cond ((store-file-name? file) + (cons* "-rpath" (dirname file) args)) + ((or %allow-impurities? + (pure-file-name? file)) + args) + (else + (begin + (format (current-error-port) + "ld-wrapper: error: attempt to use \ +impure library ~s~%" + file) + (exit 1))))) '() library-files)) -- cgit v1.2.3 From 71b671681472d64c1077c2014132af56ce49ce4e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 7 Apr 2015 10:29:51 +0200 Subject: gnu: ld-wrapper: Add 'GUIX_LD_WRAPPER_DISABLE_RPATH' environment variable. * gnu/packages/ld-wrapper.scm (%disable-rpath?): New variable. (rpath-arguments): Honor it. --- gnu/packages/ld-wrapper.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gnu/packages/ld-wrapper.scm b/gnu/packages/ld-wrapper.scm index cd2a2c445e..094018de3d 100644 --- a/gnu/packages/ld-wrapper.scm +++ b/gnu/packages/ld-wrapper.scm @@ -82,6 +82,10 @@ exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)) ;; Whether to emit debugging output. (getenv "GUIX_LD_WRAPPER_DEBUG")) +(define %disable-rpath? + ;; Whether to disable automatic '-rpath' addition. + (getenv "GUIX_LD_WRAPPER_DISABLE_RPATH")) + (define (readlink* file) ;; Call 'readlink' until the result is not a symlink. (define %max-symlink-depth 50) @@ -176,7 +180,8 @@ exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)) ;; want to add '-rpath' for files under %BUILD-DIRECTORY or ;; %TEMPORARY-DIRECTORY because that could leak to installed ;; files. - (cond ((store-file-name? file) + (cond ((and (not %disable-rpath?) + (store-file-name? file)) (cons* "-rpath" (dirname file) args)) ((or %allow-impurities? (pure-file-name? file)) -- cgit v1.2.3 From dfc8bb207104cb3c25c0922508acf6d3c27b69fc Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 7 Apr 2015 21:24:37 +0200 Subject: gnu: gcc: Disable RUNPATH validation for native builds. * gnu/packages/gcc.scm (gcc-4.7)[arguments]: Pass #:validate-runpath? #f. * gnu/packages/commencement.scm (gcc-boot0)[arguments]: Override #:validate-runpath? with 'substitute-keyword-arguments'. (gcc-final)[arguments]: Likewise. * gnu/packages/cross-base.scm (cross-gcc-arguments): Likewise. --- gnu/packages/commencement.scm | 12 +++++++----- gnu/packages/cross-base.scm | 2 ++ gnu/packages/gcc.scm | 5 +++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 766aea4bfd..14af246e99 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -158,6 +158,8 @@ (srfi srfi-1) (srfi srfi-26)) ,@(substitute-keyword-arguments (package-arguments gcc-4.8) + ((#:validate-runpath? _) + #t) ((#:configure-flags flags) `(append (list ,(string-append "--target=" (boot-triplet)) @@ -500,11 +502,6 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" #:allowed-references ("out" "lib" ,glibc-final) - ;; Things like libasan.so and libstdc++.so NEED ld.so and/or - ;; libgcc_s.so but RUNPATH is empty. This is a false positive, so turn - ;; it off. - #:validate-runpath? #f - ;; Build again GMP & co. within GCC's build process, because it's hard ;; to do outside (because GCC-BOOT0 is a cross-compiler, and thus ;; doesn't honor $LIBRARY_PATH, which breaks `gnu-build-system'.) @@ -529,6 +526,11 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" "/lib") flag)) ,flags))) + ((#:validate-runpath? _) + ;; Things like libasan.so and libstdc++.so NEED ld.so and/or + ;; libgcc_s.so but RUNPATH is empty. This is a false positive, so + ;; turn it off. + #f) ((#:phases phases) `(alist-delete 'symlink-libgcc_eh ,phases))))) diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm index 565a4a8220..0f15a0aaec 100644 --- a/gnu/packages/cross-base.scm +++ b/gnu/packages/cross-base.scm @@ -175,6 +175,8 @@ may be either a libc package or #f.)" #t))) ,phases) phases))) + ((#:validate-runpath? _) + #t) ((#:strip-binaries? _) ;; Disable stripping as this can break binaries, with object files of ;; libgcc.a showing up as having an unknown architecture. See diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 68c9e98762..4c06f84155 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -189,6 +189,11 @@ where the OS part is overloaded to denote a specific ABI---into GCC ,(if stripped? "-g0" "-g"))))) #:tests? #f + + ;; libstdc++.so NEEDs libgcc_s.so but somehow it doesn't get + ;; $(libdir) in its RUNPATH, so turn it off. + #:validate-runpath? #f + #:phases (alist-cons-before 'configure 'pre-configure -- cgit v1.2.3 From c8bfa5b425c1285cbd4c4a3283f09e2ebb6687f9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 7 Apr 2015 21:36:04 +0200 Subject: gnu: Change ld-wrapper extension from .scm to .in. * gnu/packages/ld-wrapper.scm: Rename to... * gnu/packages/ld-wrapper.in: ... this. * gnu/packages/base.scm (make-ld-wrapper): Adjust "wrapper" input accordingly. * gnu-system.am (GNU_SYSTEM_MODULES): Remove ld-wrapper.scm. (MISC_DISTRO_FILES): New variable. --- gnu-system.am | 4 +- gnu/packages/base.scm | 2 +- gnu/packages/ld-wrapper.in | 209 ++++++++++++++++++++++++++++++++++++++++++++ gnu/packages/ld-wrapper.scm | 209 -------------------------------------------- 4 files changed, 213 insertions(+), 211 deletions(-) create mode 100644 gnu/packages/ld-wrapper.in delete mode 100644 gnu/packages/ld-wrapper.scm diff --git a/gnu-system.am b/gnu-system.am index 0382261dc1..5938eeaec7 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -162,7 +162,6 @@ GNU_SYSTEM_MODULES = \ gnu/packages/kde.scm \ gnu/packages/key-mon.scm \ gnu/packages/language.scm \ - gnu/packages/ld-wrapper.scm \ gnu/packages/less.scm \ gnu/packages/lesstif.scm \ gnu/packages/libcanberra.scm \ @@ -566,6 +565,9 @@ dist_patch_DATA = \ gnu/packages/patches/xmodmap-asprintf.patch \ gnu/packages/patches/zathura-plugindir-environment-variable.patch +MISC_DISTRO_FILES = \ + gnu/packages/ld-wrapper.in + bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap bootstrap_x86_64_linuxdir = $(bootstrapdir)/x86_64-linux bootstrap_i686_linuxdir = $(bootstrapdir)/i686-linux diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 0c12505724..361436157d 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -375,7 +375,7 @@ TARGET is not #f, make a wrapper for the cross-linker for TARGET, called ("guile" ,guile) ("bash" ,bash) ("wrapper" ,(search-path %load-path - "gnu/packages/ld-wrapper.scm")))) + "gnu/packages/ld-wrapper.in")))) (arguments `(#:guile ,guile-for-build #:modules ((guix build utils)) diff --git a/gnu/packages/ld-wrapper.in b/gnu/packages/ld-wrapper.in new file mode 100644 index 0000000000..094018de3d --- /dev/null +++ b/gnu/packages/ld-wrapper.in @@ -0,0 +1,209 @@ +#!@BASH@ +# -*- mode: scheme; coding: utf-8; -*- + +# XXX: We have to go through Bash because there's no command-line switch to +# augment %load-compiled-path, and because of the silly 127-byte limit for +# the shebang line in Linux. +# Use `load-compiled' because `load' (and `-l') doesn't otherwise load our +# .go file (see ). + +main="(@ (gnu build-support ld-wrapper) ld-wrapper)" +exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)))" "$@" +!# +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu build-support ld-wrapper) + #:use-module (srfi srfi-1) + #:use-module (ice-9 match) + #:export (ld-wrapper)) + +;;; Commentary: +;;; +;;; This is a wrapper for the linker. Its purpose is to inspect the -L and +;;; -l switches passed to the linker, add corresponding -rpath arguments, and +;;; invoke the actual linker with this new set of arguments. +;;; +;;; The alternatives to this hack would be: +;;; +;;; 1. Using $LD_RUN_PATH. However, that would tend to include more than +;;; needed in the RPATH; for instance, given a package with `libfoo' as +;;; an input, all its binaries would have libfoo in their RPATH, +;;; regardless of whether they actually NEED it. +;;; +;;; 2. Use a GCC "lib" spec string such as `%{L*:-rpath %*}', which adds a +;;; `-rpath LIBDIR' argument for each occurrence of `-L LIBDIR'. +;;; However, this doesn't work when $LIBRARY_PATH is used, because the +;;; additional `-L' switches are not matched by the above rule, because +;;; the rule only matches explicit user-provided switches. See +;;; for details. +;;; +;;; As a bonus, this wrapper checks for "impurities"--i.e., references to +;;; libraries outside the store. +;;; +;;; Code: + +(define %real-ld + ;; Name of the linker that we wrap. + "@LD@") + +(define %store-directory + ;; File name of the store. + (or (getenv "NIX_STORE") "/gnu/store")) + +(define %temporary-directory + ;; Temporary directory. + (or (getenv "TMPDIR") "/tmp")) + +(define %build-directory + ;; Top build directory when run from a builder. + (getenv "NIX_BUILD_TOP")) + +(define %allow-impurities? + ;; Whether to allow references to libraries outside the store. + (getenv "GUIX_LD_WRAPPER_ALLOW_IMPURITIES")) + +(define %debug? + ;; Whether to emit debugging output. + (getenv "GUIX_LD_WRAPPER_DEBUG")) + +(define %disable-rpath? + ;; Whether to disable automatic '-rpath' addition. + (getenv "GUIX_LD_WRAPPER_DISABLE_RPATH")) + +(define (readlink* file) + ;; Call 'readlink' until the result is not a symlink. + (define %max-symlink-depth 50) + + (let loop ((file file) + (depth 0)) + (catch 'system-error + (lambda () + (if (>= depth %max-symlink-depth) + file + (loop (readlink file) (+ depth 1)))) + (lambda args + (if (= EINVAL (system-error-errno args)) + file + (apply throw args)))))) + +(define (dereference-symlinks file) + ;; Same as 'readlink*' but return FILE if the symlink target is invalid or + ;; FILE does not exist. + (catch 'system-error + (lambda () + ;; When used from a user environment, FILE may refer to + ;; ~/.guix-profile/lib/libfoo.so, which is itself a symlink to the + ;; store. Check whether this is the case. + (readlink* file)) + (lambda args + (if (= ENOENT (system-error-errno args)) + file + (apply throw args))))) + +(define (pure-file-name? file) + ;; Return #t when FILE is the name of a file either within the store + ;; (possibly via a symlink) or within the build directory. + (let ((file (dereference-symlinks file))) + (or (not (string-prefix? "/" file)) + (string-prefix? %store-directory file) + (string-prefix? %temporary-directory file) + (and %build-directory + (string-prefix? %build-directory file))))) + +(define (store-file-name? file) + ;; Return #t when FILE is a store file, possibly indirectly. + (string-prefix? %store-directory (dereference-symlinks file))) + +(define (shared-library? file) + ;; Return #t when FILE denotes a shared library. + (or (string-suffix? ".so" file) + (let ((index (string-contains file ".so."))) + ;; Since we cannot use regexps during bootstrap, roll our own. + (and index + (string-every (char-set-union (char-set #\.) char-set:digit) + (string-drop file (+ index 3))))))) + +(define (library-files-linked args) + ;; Return the file names of shared libraries explicitly linked against via + ;; `-l' or with an absolute file name in ARGS. + (define path+files + (fold (lambda (argument result) + (match result + ((library-path . library-files) + (cond ((string-prefix? "-L" argument) ;augment the search path + (cons (append library-path + (list (string-drop argument 2))) + library-files)) + ((string-prefix? "-l" argument) ;add library + (let* ((lib (string-append "lib" + (string-drop argument 2) + ".so")) + (full (search-path library-path lib))) + (if full + (cons library-path + (cons full library-files)) + result))) + ((and (string-prefix? %store-directory argument) + (shared-library? argument)) ;add library + (cons library-path + (cons argument library-files))) + (else + result))))) + (cons '() '()) + args)) + + (match path+files + ((path . files) + (reverse files)))) + +(define (rpath-arguments library-files) + ;; Return the `-rpath' argument list for each of LIBRARY-FILES, a list of + ;; absolute file names. + (fold-right (lambda (file args) + ;; Add '-rpath' if and only if FILE is in the store; we don't + ;; want to add '-rpath' for files under %BUILD-DIRECTORY or + ;; %TEMPORARY-DIRECTORY because that could leak to installed + ;; files. + (cond ((and (not %disable-rpath?) + (store-file-name? file)) + (cons* "-rpath" (dirname file) args)) + ((or %allow-impurities? + (pure-file-name? file)) + args) + (else + (begin + (format (current-error-port) + "ld-wrapper: error: attempt to use \ +impure library ~s~%" + file) + (exit 1))))) + '() + library-files)) + +(define (ld-wrapper . args) + ;; Invoke the real `ld' with ARGS, augmented with `-rpath' switches. + (let* ((libs (library-files-linked args)) + (args (append args (rpath-arguments libs)))) + (when %debug? + (format (current-error-port) + "ld-wrapper: invoking `~a' with ~s~%" + %real-ld args)) + (apply execl %real-ld (basename %real-ld) args))) + +;;; ld-wrapper.scm ends here diff --git a/gnu/packages/ld-wrapper.scm b/gnu/packages/ld-wrapper.scm deleted file mode 100644 index 094018de3d..0000000000 --- a/gnu/packages/ld-wrapper.scm +++ /dev/null @@ -1,209 +0,0 @@ -#!@BASH@ -# -*- mode: scheme; coding: utf-8; -*- - -# XXX: We have to go through Bash because there's no command-line switch to -# augment %load-compiled-path, and because of the silly 127-byte limit for -# the shebang line in Linux. -# Use `load-compiled' because `load' (and `-l') doesn't otherwise load our -# .go file (see ). - -main="(@ (gnu build-support ld-wrapper) ld-wrapper)" -exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)))" "$@" -!# -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see . - -(define-module (gnu build-support ld-wrapper) - #:use-module (srfi srfi-1) - #:use-module (ice-9 match) - #:export (ld-wrapper)) - -;;; Commentary: -;;; -;;; This is a wrapper for the linker. Its purpose is to inspect the -L and -;;; -l switches passed to the linker, add corresponding -rpath arguments, and -;;; invoke the actual linker with this new set of arguments. -;;; -;;; The alternatives to this hack would be: -;;; -;;; 1. Using $LD_RUN_PATH. However, that would tend to include more than -;;; needed in the RPATH; for instance, given a package with `libfoo' as -;;; an input, all its binaries would have libfoo in their RPATH, -;;; regardless of whether they actually NEED it. -;;; -;;; 2. Use a GCC "lib" spec string such as `%{L*:-rpath %*}', which adds a -;;; `-rpath LIBDIR' argument for each occurrence of `-L LIBDIR'. -;;; However, this doesn't work when $LIBRARY_PATH is used, because the -;;; additional `-L' switches are not matched by the above rule, because -;;; the rule only matches explicit user-provided switches. See -;;; for details. -;;; -;;; As a bonus, this wrapper checks for "impurities"--i.e., references to -;;; libraries outside the store. -;;; -;;; Code: - -(define %real-ld - ;; Name of the linker that we wrap. - "@LD@") - -(define %store-directory - ;; File name of the store. - (or (getenv "NIX_STORE") "/gnu/store")) - -(define %temporary-directory - ;; Temporary directory. - (or (getenv "TMPDIR") "/tmp")) - -(define %build-directory - ;; Top build directory when run from a builder. - (getenv "NIX_BUILD_TOP")) - -(define %allow-impurities? - ;; Whether to allow references to libraries outside the store. - (getenv "GUIX_LD_WRAPPER_ALLOW_IMPURITIES")) - -(define %debug? - ;; Whether to emit debugging output. - (getenv "GUIX_LD_WRAPPER_DEBUG")) - -(define %disable-rpath? - ;; Whether to disable automatic '-rpath' addition. - (getenv "GUIX_LD_WRAPPER_DISABLE_RPATH")) - -(define (readlink* file) - ;; Call 'readlink' until the result is not a symlink. - (define %max-symlink-depth 50) - - (let loop ((file file) - (depth 0)) - (catch 'system-error - (lambda () - (if (>= depth %max-symlink-depth) - file - (loop (readlink file) (+ depth 1)))) - (lambda args - (if (= EINVAL (system-error-errno args)) - file - (apply throw args)))))) - -(define (dereference-symlinks file) - ;; Same as 'readlink*' but return FILE if the symlink target is invalid or - ;; FILE does not exist. - (catch 'system-error - (lambda () - ;; When used from a user environment, FILE may refer to - ;; ~/.guix-profile/lib/libfoo.so, which is itself a symlink to the - ;; store. Check whether this is the case. - (readlink* file)) - (lambda args - (if (= ENOENT (system-error-errno args)) - file - (apply throw args))))) - -(define (pure-file-name? file) - ;; Return #t when FILE is the name of a file either within the store - ;; (possibly via a symlink) or within the build directory. - (let ((file (dereference-symlinks file))) - (or (not (string-prefix? "/" file)) - (string-prefix? %store-directory file) - (string-prefix? %temporary-directory file) - (and %build-directory - (string-prefix? %build-directory file))))) - -(define (store-file-name? file) - ;; Return #t when FILE is a store file, possibly indirectly. - (string-prefix? %store-directory (dereference-symlinks file))) - -(define (shared-library? file) - ;; Return #t when FILE denotes a shared library. - (or (string-suffix? ".so" file) - (let ((index (string-contains file ".so."))) - ;; Since we cannot use regexps during bootstrap, roll our own. - (and index - (string-every (char-set-union (char-set #\.) char-set:digit) - (string-drop file (+ index 3))))))) - -(define (library-files-linked args) - ;; Return the file names of shared libraries explicitly linked against via - ;; `-l' or with an absolute file name in ARGS. - (define path+files - (fold (lambda (argument result) - (match result - ((library-path . library-files) - (cond ((string-prefix? "-L" argument) ;augment the search path - (cons (append library-path - (list (string-drop argument 2))) - library-files)) - ((string-prefix? "-l" argument) ;add library - (let* ((lib (string-append "lib" - (string-drop argument 2) - ".so")) - (full (search-path library-path lib))) - (if full - (cons library-path - (cons full library-files)) - result))) - ((and (string-prefix? %store-directory argument) - (shared-library? argument)) ;add library - (cons library-path - (cons argument library-files))) - (else - result))))) - (cons '() '()) - args)) - - (match path+files - ((path . files) - (reverse files)))) - -(define (rpath-arguments library-files) - ;; Return the `-rpath' argument list for each of LIBRARY-FILES, a list of - ;; absolute file names. - (fold-right (lambda (file args) - ;; Add '-rpath' if and only if FILE is in the store; we don't - ;; want to add '-rpath' for files under %BUILD-DIRECTORY or - ;; %TEMPORARY-DIRECTORY because that could leak to installed - ;; files. - (cond ((and (not %disable-rpath?) - (store-file-name? file)) - (cons* "-rpath" (dirname file) args)) - ((or %allow-impurities? - (pure-file-name? file)) - args) - (else - (begin - (format (current-error-port) - "ld-wrapper: error: attempt to use \ -impure library ~s~%" - file) - (exit 1))))) - '() - library-files)) - -(define (ld-wrapper . args) - ;; Invoke the real `ld' with ARGS, augmented with `-rpath' switches. - (let* ((libs (library-files-linked args)) - (args (append args (rpath-arguments libs)))) - (when %debug? - (format (current-error-port) - "ld-wrapper: invoking `~a' with ~s~%" - %real-ld args)) - (apply execl %real-ld (basename %real-ld) args))) - -;;; ld-wrapper.scm ends here -- cgit v1.2.3 From 1151f6aeae281ae391f925f5cee086f1c2a0728a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 7 Apr 2015 22:07:25 +0200 Subject: ui: Add 'report-load-error'. * guix/scripts/system.scm (read-operating-system): Replace error handling code by a call to 'report-load-error'. * guix/ui.scm (report-load-error): New procedure. --- guix/scripts/system.scm | 16 +--------------- guix/ui.scm | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 1b64e6fb92..1838e89452 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -69,21 +69,7 @@ (set-current-module %user-module) (primitive-load file)))) (lambda args - (match args - (('system-error . _) - (let ((err (system-error-errno args))) - (leave (_ "failed to open operating system file '~a': ~a~%") - file (strerror err)))) - (('syntax-error proc message properties form . rest) - (let ((loc (source-properties->location properties))) - (format (current-error-port) (_ "~a: error: ~a~%") - (location->string loc) message) - (exit 1))) - ((error args ...) - (report-error (_ "failed to load operating system file '~a':~%") - file) - (apply display-error #f (current-error-port) args) - (exit 1)))))) + (report-load-error file args)))) ;;; diff --git a/guix/ui.scm b/guix/ui.scm index 4929f93590..80a4a6338a 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -47,6 +47,7 @@ P_ report-error leave + report-load-error show-version-and-exit show-bug-report-information string->number* @@ -130,6 +131,23 @@ messages." (report-error args ...) (exit 1))) +(define (report-load-error file args) + "Report the failure to load FILE, a user-provided Scheme file, and exit. +ARGS is the list of arguments received by the 'throw' handler." + (match args + (('system-error . _) + (let ((err (system-error-errno args))) + (leave (_ "failed to load '~a': ~a~%") file (strerror err)))) + (('syntax-error proc message properties form . rest) + (let ((loc (source-properties->location properties))) + (format (current-error-port) (_ "~a: error: ~a~%") + (location->string loc) message) + (exit 1))) + ((error args ...) + (report-error (_ "failed to load '~a':~%") file) + (apply display-error #f (current-error-port) args) + (exit 1)))) + (define (install-locale) "Install the current locale settings." (catch 'system-error -- cgit v1.2.3 From 4ae7559fd62c03a800b010c228639f18b9f58006 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 7 Apr 2015 22:27:45 +0200 Subject: gnu: Emit a warning when a package module cannot be loaded. * guix/ui.scm (warn-about-load-error): New procedure. * gnu/packages.scm (package-modules): Wrap 'resolve-interface' call in 'catch #t', and call 'warn-about-load-error' in handler. --- gnu/packages.scm | 12 +++++++++--- guix/ui.scm | 16 ++++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/gnu/packages.scm b/gnu/packages.scm index 57a3e21bd6..2216c0df8c 100644 --- a/gnu/packages.scm +++ b/gnu/packages.scm @@ -160,9 +160,15 @@ Optionally, narrow the search to SUB-DIRECTORY." (string-length directory)) (filter-map (lambda (file) - (let ((file (substring file prefix-len))) - (false-if-exception - (resolve-interface (file-name->module-name file))))) + (let* ((file (substring file prefix-len)) + (module (file-name->module-name file))) + (catch #t + (lambda () + (resolve-interface module)) + (lambda args + ;; Report the error, but keep going. + (warn-about-load-error module args) + #f)))) (scheme-files (if sub-directory (string-append directory "/" sub-directory) directory)))) diff --git a/guix/ui.scm b/guix/ui.scm index 80a4a6338a..9e75a35d16 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -48,6 +48,7 @@ report-error leave report-load-error + warn-about-load-error show-version-and-exit show-bug-report-information string->number* @@ -148,6 +149,21 @@ ARGS is the list of arguments received by the 'throw' handler." (apply display-error #f (current-error-port) args) (exit 1)))) +(define (warn-about-load-error file args) ;FIXME: factorize with ↑ + "Report the failure to load FILE, a user-provided Scheme file, without +exiting. ARGS is the list of arguments received by the 'throw' handler." + (match args + (('system-error . _) + (let ((err (system-error-errno args))) + (warning (_ "failed to load '~a': ~a~%") file (strerror err)))) + (('syntax-error proc message properties form . rest) + (let ((loc (source-properties->location properties))) + (format (current-error-port) (_ "~a: warning: ~a~%") + (location->string loc) message))) + ((error args ...) + (warning (_ "failed to load '~a':~%") file) + (apply display-error #f (current-error-port) args)))) + (define (install-locale) "Install the current locale settings." (catch 'system-error -- cgit v1.2.3 From 391bdd8f7f6db2873647e566f5a5570b4eb59c62 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 7 Apr 2015 22:47:32 +0200 Subject: doc: Mention that the current generation is not deleted. * doc/guix.texi (Invoking guix package): Mention that the current generation is not deleted. This is a followup to d26eb84. --- doc/guix.texi | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index f1dea45f1d..85e8243015 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -1142,9 +1142,8 @@ When @var{pattern} is specified, delete the matching generations. When specified duration match. For instance, @code{--delete-generations=1m} deletes generations that are more than one month old. -If the current generation matches, it is deleted atomically---i.e., by -switching to the previous available generation. Note that the zeroth -generation is never deleted. +If the current generation matches, it is @emph{not} deleted. Also, the +zeroth generation is never deleted. Note that deleting generations prevents roll-back to them. Consequently, this command must be used with care. -- cgit v1.2.3 From 60142854af39e03a00bb2ab12f4710ec4311a4b7 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 7 Apr 2015 22:53:06 +0200 Subject: doc: Mention the relation between module names and file names. * doc/guix.texi (Package Modules): Mention the relation between module names and file names. --- doc/guix.texi | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index 85e8243015..2997978582 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -5439,7 +5439,9 @@ facility is implemented in the @code{(gnu packages)} module. @cindex customization, of packages @cindex package module search path Users can store package definitions in modules with different -names---e.g., @code{(my-packages emacs)}. These package definitions +names---e.g., @code{(my-packages emacs)}@footnote{Note that the file +name and module name must match. @xref{Modules and the File System,,, +guile, GNU Guile Reference Manual}, for details.} These package definitions will not be visible by default. Thus, users can invoke commands such as @command{guix package} and @command{guix build} have to be used with the @code{-e} option so that they know where to find the package, or use the -- cgit v1.2.3 From 225dafdee75138e4643668249635c0d3d06069bc Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 7 Apr 2015 22:58:31 +0200 Subject: doc: Refer to "Substitutes" from "Setting Up the Daemon". Suggested by Mark H Weaver. * doc/guix.texi (Setting Up the Daemon): Add xref to "Substitutes". --- doc/guix.texi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index 2997978582..42f616548d 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -338,7 +338,8 @@ goes through the daemon. For instance, command-line tools such as daemon (@i{via} remote procedure calls) to instruct it what to do. The following sections explain how to prepare the build daemon's -environment. +environment. Also @ref{Substitutes}, for information on how to allow +the daemon to download pre-built binaries. @menu * Build Environment Setup:: Preparing the isolated build environment. -- cgit v1.2.3 From 60950faa0ee5fac57773d0d5772ed67e617b2ba2 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 7 Apr 2015 11:01:29 +0800 Subject: gnu: wavpack: Fix wavpack.pc by passing '--libdir' to `configure'. * gnu/packages/audio.scm (wavpack)[arguments]: New field. --- gnu/packages/audio.scm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 6b24214994..8fb3da7fa1 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -1043,6 +1043,10 @@ stretching and pitch scaling of audio. This package contains the library.") (base32 "191h8hv8qk72hfh1crg429i9yq3cminwqb249sy9zadbn1wy7b9c")))) (build-system gnu-build-system) + (arguments + `(#:configure-flags + ;; wavpack.pc.in lacks path substitution for 'exec_prefix'. + (list (string-append "--libdir=" %output "/lib")))) (home-page "http://www.wavpack.com/") (synopsis "Hybrid lossless audio codec") (description -- cgit v1.2.3 From 9e54e957f99cfdf93c5414ee2f63ecf1faa0c804 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 7 Apr 2015 10:39:25 +0200 Subject: gnu: julia: Mark as unsupported on ARM and MIPS. * gnu/packages/julia.scm (julia): Add 'supported-systems' field. --- gnu/packages/julia.scm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm index 844f1b2a19..efc867d767 100644 --- a/gnu/packages/julia.scm +++ b/gnu/packages/julia.scm @@ -161,6 +161,9 @@ ("pkg-config" ,pkg-config) ("python" ,python-2) ("which" ,which))) + ;; Julia is not officially released for ARM and MIPS. + ;; See https://github.com/JuliaLang/julia/issues/10639 + (supported-systems '("i686-linux" "x86_64-linux")) (home-page "http://julialang.org/") (synopsis "High-performance dynamic language for technical computing") (description -- cgit v1.2.3 From de4b3828ca1d76254d5cd062f76be73e249561ca Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 7 Apr 2015 10:41:57 +0200 Subject: gnu: julia: Pass MARCH make flag. * gnu/packages/julia.scm (julia)[arguments]: Pass "MARCH" flag for supported architectures. --- gnu/packages/julia.scm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm index efc867d767..036e485be3 100644 --- a/gnu/packages/julia.scm +++ b/gnu/packages/julia.scm @@ -35,7 +35,8 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages textutils) - #:use-module (gnu packages version-control)) + #:use-module (gnu packages version-control) + #:use-module (ice-9 match)) (define-public julia (package @@ -51,7 +52,7 @@ "1hnbc2blzr9bc27m3vsr127fhg0h5imgqlrx00jakf0my0ccw8gr")))) (build-system gnu-build-system) (arguments - '(#:test-target "test" + `(#:test-target "test" #:modules ((ice-9 match) (guix build gnu-build-system) (guix build utils)) @@ -105,6 +106,14 @@ #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")) + + ;; Passing the MARCH flag is necessary to build binary substitutes for + ;; the supported architectures. + ,(match (or (%current-target-system) + (%current-system)) + ("x86_64-linux" "MARCH=x86-64") + ("i686-linux" "MARCH=pentium4")) + "CONFIG_SHELL=bash" ;needed to build bundled libraries "USE_SYSTEM_LIBUV=0" ;Julia expects a modified libuv "USE_SYSTEM_DSFMT=0" ;not packaged for Guix and upstream has no -- cgit v1.2.3 From 674fca0e41f3d227d436aa26f6c970d44536bc0e Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 8 Apr 2015 14:45:35 +0800 Subject: gnu: gtk+-2: Update to 2.24.27. * gnu/packages/gtk.scm (gtk+-2): Update to 2.24.27. --- gnu/packages/gtk.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index b3688d5ec1..2ecaeb65e3 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -391,7 +391,7 @@ is part of the GNOME accessibility project.") (define-public gtk+-2 (package (name "gtk+") - (version "2.24.21") + (version "2.24.27") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -399,7 +399,7 @@ is part of the GNOME accessibility project.") name "-" version ".tar.xz")) (sha256 (base32 - "1qyw73pr9ryqhir2h1kbx3vm70km4dg2fxrgkrdlpv0rvlb94bih")))) + "1x14rnjvqslpa1q19fp1qalz5sxds72amsgjk8m7769rwk511jr0")))) (build-system gnu-build-system) (propagated-inputs `(("atk" ,atk) -- cgit v1.2.3 From dfbce50cdf36db8fe094afc50c3a24ae3a403839 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 8 Apr 2015 15:05:11 +0800 Subject: gnu: gtk+-2: Add more inputs. * gnu/packages/gtk.scm (gtk+-2)[inputs]: Add cups, libxcomposite, libxcursor, libxdamage, libxi, libxinerama and libxrandr. [native-inputs]: Add gettext. [arguments]: Add #:configure-flags. --- gnu/packages/gtk.scm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 2ecaeb65e3..53d4122f7c 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2014 Eric Bavier ;;; Copyright © 2015 Federico Beffa ;;; Copyright © 2015 Paul van der Walt +;;; Copyright © 2015 Sou Bunnbu ;;; ;;; This file is part of GNU Guix. ;;; @@ -405,14 +406,25 @@ is part of the GNOME accessibility project.") `(("atk" ,atk) ("gdk-pixbuf" ,gdk-pixbuf) ("pango" ,pango))) + (inputs + `(("cups" ,cups) + ("libxcomposite" ,libxcomposite) + ("libxcursor" ,libxcursor) + ("libxdamage" ,libxdamage) + ("libxi" ,libxi) + ("libxinerama" ,libxinerama) + ("libxrandr" ,libxrandr))) (native-inputs `(("perl" ,perl) + ("gettext" ,gnu-gettext) ("glib" ,glib "bin") ("gobject-introspection" ,gobject-introspection) ("pkg-config" ,pkg-config) ("python-wrapper" ,python-wrapper))) (arguments `(#:make-flags '("CC=gcc") + #:configure-flags + (list "--with-xinput=yes") #:phases (alist-cons-before 'configure 'disable-tests -- cgit v1.2.3 From 6b1f238834fd60a487e2465c28f5d333c91c72aa Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 8 Apr 2015 15:09:26 +0800 Subject: gnu: gtk+-2: Move html documentation to 'doc' output. * gnu/packages/gtk.scm (gtk+-2)[outputs]: New field. [arguments]<#:configure-flags>: Add '--with-html-dir'. --- gnu/packages/gtk.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 53d4122f7c..4301b56034 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -402,6 +402,7 @@ is part of the GNOME accessibility project.") (base32 "1x14rnjvqslpa1q19fp1qalz5sxds72amsgjk8m7769rwk511jr0")))) (build-system gnu-build-system) + (outputs '("out" "doc")) (propagated-inputs `(("atk" ,atk) ("gdk-pixbuf" ,gdk-pixbuf) @@ -424,7 +425,10 @@ is part of the GNOME accessibility project.") (arguments `(#:make-flags '("CC=gcc") #:configure-flags - (list "--with-xinput=yes") + (list "--with-xinput=yes" + (string-append "--with-html-dir=" + (assoc-ref %outputs "doc") + "/share/gtk-doc/html")) #:phases (alist-cons-before 'configure 'disable-tests -- cgit v1.2.3 From 0c75803b7caf9a2b8f4915efcab0ed826510d6af Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 8 Apr 2015 10:24:07 +0800 Subject: gnu: at-spi2-core: Update to 2.16.0. * gnu/packages/gtk.scm (at-spi2-core): Update to 2.16.0. --- gnu/packages/gtk.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 4301b56034..98e8c47a12 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -333,7 +333,7 @@ in the GNOME project.") (define-public at-spi2-core (package (name "at-spi2-core") - (version "2.10.0") + (version "2.16.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -341,7 +341,7 @@ in the GNOME project.") name "-" version ".tar.xz")) (sha256 (base32 - "1ns44yibdgcwzwri7sr075hfs5rh5lgxkh71247a0822az3mahcn")))) + "1l3l39mw23zyjlcqidvkyqlr4gwbhplzw2hcv3qvn6p8ikxpf2qw")))) (build-system gnu-build-system) (inputs `(("dbus" ,dbus) ("glib" ,glib) -- cgit v1.2.3 From af1086774504667ece55c4ca1ea29dbaa9447bb9 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 8 Apr 2015 10:31:21 +0800 Subject: gnu: at-spi2-core: Enable tests. * gnu/packages/gtk.scm (at-spi2-core)[arguments]: Remove #:tests? #f. Add #:phases. --- gnu/packages/gtk.scm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 98e8c47a12..f7303600b7 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -343,6 +343,13 @@ in the GNOME project.") (base32 "1l3l39mw23zyjlcqidvkyqlr4gwbhplzw2hcv3qvn6p8ikxpf2qw")))) (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace check + ;; Run test-suite under a dbus session. + (lambda _ + (zero? (system* "dbus-launch" "make" "check"))))))) (inputs `(("dbus" ,dbus) ("glib" ,glib) ("libxi" ,libxi) @@ -350,9 +357,6 @@ in the GNOME project.") (native-inputs `(("intltool" ,intltool) ("pkg-config" ,pkg-config))) - (arguments - `(#:tests? #f)) ; FIXME: dbind/dbtest fails; one should disable tests in - ; a more fine-grained way. (synopsis "Assistive Technology Service Provider Interface, core components") (description "The Assistive Technology Service Provider Interface, core components, -- cgit v1.2.3 From c6a552daea6eae8f6cc47696cc407ba5c2b5d4da Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 8 Apr 2015 10:39:02 +0800 Subject: gnu: at-spi2-core: Propagate inputs dbus and glib. * gnu/packages/gtk.scm (at-spi2-core): Move dbus and glib to 'propagated-inputs'. --- gnu/packages/gtk.scm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index f7303600b7..bfc898935e 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -350,10 +350,13 @@ in the GNOME project.") ;; Run test-suite under a dbus session. (lambda _ (zero? (system* "dbus-launch" "make" "check"))))))) - (inputs `(("dbus" ,dbus) - ("glib" ,glib) - ("libxi" ,libxi) - ("libxtst" ,libxtst))) + (propagated-inputs + ;; atspi-2.pc refers to all these. + `(("dbus" ,dbus) + ("glib" ,glib))) + (inputs + `(("libxi" ,libxi) + ("libxtst" ,libxtst))) (native-inputs `(("intltool" ,intltool) ("pkg-config" ,pkg-config))) -- cgit v1.2.3 From 50cc7f41b9620d37552b0a777d8a7e8500d06418 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 8 Apr 2015 10:44:05 +0800 Subject: gnu: at-spi2-core: Enable GObject introspection. * gnu/packages/gtk.scm (at-spi2-core)[arguments]: Add #:make-flags. [native-inputs]: Add gobject-introspection. --- gnu/packages/gtk.scm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index bfc898935e..338bf64db7 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -344,7 +344,8 @@ in the GNOME project.") "1l3l39mw23zyjlcqidvkyqlr4gwbhplzw2hcv3qvn6p8ikxpf2qw")))) (build-system gnu-build-system) (arguments - '(#:phases + '(#:make-flags '("CC=gcc") ; for g-ir-scanner + #:phases (modify-phases %standard-phases (replace check ;; Run test-suite under a dbus session. @@ -358,8 +359,9 @@ in the GNOME project.") `(("libxi" ,libxi) ("libxtst" ,libxtst))) (native-inputs - `(("intltool" ,intltool) - ("pkg-config" ,pkg-config))) + `(("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config))) (synopsis "Assistive Technology Service Provider Interface, core components") (description "The Assistive Technology Service Provider Interface, core components, -- cgit v1.2.3 From 20342b7e7ede8a4c09144296895219547addba63 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 8 Apr 2015 11:03:07 +0800 Subject: gnu: atk: Update to 2.16.0. * gnu/packages/gtk.scm (atk): Update to 2.16.0. --- gnu/packages/gtk.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 338bf64db7..49a3432e5d 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -52,7 +52,7 @@ (define-public atk (package (name "atk") - (version "2.15.3") + (version "2.16.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -60,7 +60,7 @@ name "-" version ".tar.xz")) (sha256 (base32 - "177a9x6lz2im0mfgxv2crv0l740wy7rg5vlnb8wyyf4fmnh0q19f")))) ; 2.15.3 + "0qp5i91kfk6rhrlam3s8ha0cz88lkyp89vsyn4pb5856c1h9hpq9")))) (build-system gnu-build-system) (inputs `(("glib" ,glib))) (native-inputs -- cgit v1.2.3 From cd0466ebf83518bd71ccb02484bd66c5008ea9ed Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 8 Apr 2015 11:07:12 +0800 Subject: gnu: atk: Move html documentation to 'doc' output. * gnu/packages/gtk.scm (atk)[outputs]: New field. [arguments]: New field. --- gnu/packages/gtk.scm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 49a3432e5d..7faa9384a1 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -62,6 +62,12 @@ (base32 "0qp5i91kfk6rhrlam3s8ha0cz88lkyp89vsyn4pb5856c1h9hpq9")))) (build-system gnu-build-system) + (outputs '("out" "doc")) + (arguments + `(#:configure-flags + (list (string-append "--with-html-dir=" + (assoc-ref %outputs "doc") + "/share/gtk-doc/html")))) (inputs `(("glib" ,glib))) (native-inputs `(("pkg-config" ,pkg-config) -- cgit v1.2.3 From d3d4bc0bc4a408ee2971392ba55253132100d11c Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 8 Apr 2015 11:08:24 +0800 Subject: gnu: at-spi2-atk: Update to 2.16.0. * gnu/packages/gtk.scm (at-spi2-atk): Update to 2.16.0. --- gnu/packages/gtk.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 7faa9384a1..52795ed97a 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -378,7 +378,7 @@ is part of the GNOME accessibility project.") (define-public at-spi2-atk (package (name "at-spi2-atk") - (version "2.10.0") + (version "2.16.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -386,7 +386,7 @@ is part of the GNOME accessibility project.") name "-" version ".tar.xz")) (sha256 (base32 - "150sqc21difazqd53llwfdaqnwfy73bic9hia41xpfy9kcpzz9yy")))) + "1y9gfz1iz3wpja7s000f0bmyyvc6im5fcdl6bxwbz0v3qdgc9vvq")))) (build-system gnu-build-system) (inputs `(("atk" ,atk) ("at-spi2-core" ,at-spi2-core) -- cgit v1.2.3 From 13a9e2919097f85bd12f0470f79cbea63dafc819 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 8 Apr 2015 11:11:50 +0800 Subject: gnu: atk: Propagate input glib. * gnu/packages/gtk.scm (atk): Move glib to 'propagated-inputs'. --- gnu/packages/gtk.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 52795ed97a..e45d200bd1 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -68,7 +68,7 @@ (list (string-append "--with-html-dir=" (assoc-ref %outputs "doc") "/share/gtk-doc/html")))) - (inputs `(("glib" ,glib))) + (propagated-inputs `(("glib" ,glib))) ; required by atk.pc (native-inputs `(("pkg-config" ,pkg-config) ("glib" ,glib "bin") ; glib-mkenums, etc. -- cgit v1.2.3 From 57fcd2241524533fe082533a2bbbfb21918c2df8 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 8 Apr 2015 11:17:06 +0800 Subject: gnu: at-spi2-atk: Enable tests. * gnu/packages/gtk.scm (at-spi2-atk)[arguments]: Remove #:tests? #f. Add #:phases. --- gnu/packages/gtk.scm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index e45d200bd1..bfe13cfa85 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -388,15 +388,19 @@ is part of the GNOME accessibility project.") (base32 "1y9gfz1iz3wpja7s000f0bmyyvc6im5fcdl6bxwbz0v3qdgc9vvq")))) (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace check + ;; Run test-suite under a dbus session. + (lambda _ + (zero? (system* "dbus-launch" "make" "check"))))))) (inputs `(("atk" ,atk) ("at-spi2-core" ,at-spi2-core) ("dbus" ,dbus) ("glib" ,glib))) (native-inputs `(("pkg-config" ,pkg-config))) - (arguments - `(#:tests? #f)) ; FIXME: droute/droute-test fails; one should disable - ; tests in a more fine-grained way. (synopsis "Assistive Technology Service Provider Interface, ATK bindings") (description "The Assistive Technology Service Provider Interface -- cgit v1.2.3 From 6967cc3f28ce2d62e2b5c344c3e2e16079fc59d0 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 8 Apr 2015 11:24:40 +0800 Subject: gnu: at-spi2-atk: Propagate input at-spi2-core. * gnu/packages/gtk.scm (at-spi2-atk): Move at-spi2-core to 'propagated-inputs'. Move dbus to 'native-inputs'. --- gnu/packages/gtk.scm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index bfe13cfa85..95d005a6f6 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -395,12 +395,13 @@ is part of the GNOME accessibility project.") ;; Run test-suite under a dbus session. (lambda _ (zero? (system* "dbus-launch" "make" "check"))))))) - (inputs `(("atk" ,atk) - ("at-spi2-core" ,at-spi2-core) - ("dbus" ,dbus) - ("glib" ,glib))) + (propagated-inputs + `(("at-spi2-core" ,at-spi2-core))) ; required by atk-bridge-2.0.pc + (inputs + `(("atk" ,atk))) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("dbus" ,dbus) ; for testing + ("pkg-config" ,pkg-config))) (synopsis "Assistive Technology Service Provider Interface, ATK bindings") (description "The Assistive Technology Service Provider Interface -- cgit v1.2.3 From 068a53c36dec5ace42cc3ea89060d9a485592f08 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 8 Apr 2015 11:30:58 +0800 Subject: gnu: at-spi2-core: Move html documentation to 'doc' output. * gnu/packages/gtk.scm (at-spi2-core)[outputs]: New field. [arguments]: Add #:configure-flags. --- gnu/packages/gtk.scm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 95d005a6f6..0dd3b37b3c 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -349,8 +349,13 @@ in the GNOME project.") (base32 "1l3l39mw23zyjlcqidvkyqlr4gwbhplzw2hcv3qvn6p8ikxpf2qw")))) (build-system gnu-build-system) + (outputs '("out" "doc")) (arguments '(#:make-flags '("CC=gcc") ; for g-ir-scanner + #:configure-flags + (list (string-append "--with-html-dir=" + (assoc-ref %outputs "doc") + "/share/gtk-doc/html")) #:phases (modify-phases %standard-phases (replace check -- cgit v1.2.3 From d525da858da26aa47fd3a931dad9bac2fefe7600 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 8 Apr 2015 09:44:49 +0200 Subject: gnu: inetutils: Apply syslogd patch. * gnu/packages/patches/inetutils-syslogd.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/admin.scm (inetutils)[source]: Use it. [native-inputs]: New field. --- gnu-system.am | 1 + gnu/packages/admin.scm | 10 ++++++++-- gnu/packages/patches/inetutils-syslogd.patch | 20 ++++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 gnu/packages/patches/inetutils-syslogd.patch diff --git a/gnu-system.am b/gnu-system.am index 2b4f69dc73..ccc755bb99 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -438,6 +438,7 @@ dist_patch_DATA = \ gnu/packages/patches/guix-test-networking.patch \ gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \ gnu/packages/patches/hop-bigloo-4.0b.patch \ + gnu/packages/patches/inetutils-syslogd.patch \ gnu/packages/patches/irrlicht-mesa-10.patch \ gnu/packages/patches/jbig2dec-ignore-testtest.patch \ gnu/packages/patches/kmod-module-directory.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 4d4cef7cf3..3a0361299e 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -55,7 +55,8 @@ #:use-module (gnu packages libftdi) #:use-module (gnu packages image) #:use-module (gnu packages xorg) - #:use-module (gnu packages python)) + #:use-module (gnu packages python) + #:use-module (gnu packages man)) (define-public dmd (package @@ -158,13 +159,18 @@ re-executing them as necessary.") version ".tar.gz")) (sha256 (base32 - "04wrm0v7l4890mmbaawd6wjwdv08bkglgqhpz0q4dkb0l50fl8q4")))) + "04wrm0v7l4890mmbaawd6wjwdv08bkglgqhpz0q4dkb0l50fl8q4")) + (patches (list (search-patch "inetutils-syslogd.patch"))))) (build-system gnu-build-system) (arguments `(;; FIXME: `tftp.sh' relies on `netstat' from utils-linux, ;; which is currently missing. #:tests? #f)) (inputs `(("ncurses" ,ncurses) ("readline" ,readline))) ; for 'ftp' + + ;; Help2man is needed because of the patch that modifies syslogd.c. + (native-inputs `(("help2man" ,help2man))) + (home-page "http://www.gnu.org/software/inetutils/") (synopsis "Basic networking utilities") (description diff --git a/gnu/packages/patches/inetutils-syslogd.patch b/gnu/packages/patches/inetutils-syslogd.patch new file mode 100644 index 0000000000..0bf9eb7fc6 --- /dev/null +++ b/gnu/packages/patches/inetutils-syslogd.patch @@ -0,0 +1,20 @@ +From . + +2015-04-01 Ludovic Courtès + + * src/syslogd.c (load_conffile): Use 'bcopy' instead of 'strcpy' + since the two regions may overlap. + Reported by Alex Kost + at . + +--- a/src/syslogd.c ++++ b/src/syslogd.c +@@ -1989,7 +1989,7 @@ load_conffile (const char *filename, struct filed **nextp) + if (*p == '\0' || *p == '#') + continue; + +- strcpy (cline, p); ++ bcopy (p, cline, strlen (p) + 1); + + /* Cut the trailing spaces. */ + for (p = strchr (cline, '\0'); isspace (*--p);) -- cgit v1.2.3 From 0b131612d5f0387eb68da4ac49a384c57ca78851 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 8 Apr 2015 10:20:25 +0200 Subject: tests: Skip 'guix-package-net.sh' when prerequisites aren't met. * tests/guix-package-net.sh: Reinstate networking and shebang test that inadvertently vanished in commit 57b8623. --- tests/guix-package-net.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/guix-package-net.sh b/tests/guix-package-net.sh index cedfa3217b..cf3233bee2 100644 --- a/tests/guix-package-net.sh +++ b/tests/guix-package-net.sh @@ -37,6 +37,14 @@ shebang_too_long () -ge 128 } +if ! guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null \ + || shebang_too_long +then + # Skipping. + exit 77 +fi + + profile="t-profile-$$" rm -f "$profile" -- cgit v1.2.3 From 1dccdb758a1adf0dd54a639478f9d541c151b48d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 8 Apr 2015 10:41:27 +0200 Subject: gnu: guix: Update development snapshot. * gnu/packages/package-management.scm (guix-devel): Update to 0b13161. --- gnu/packages/package-management.scm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index f31f872602..9512fcd3b5 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -142,7 +142,10 @@ the Nix package manager.") (define guix-devel ;; Development version of Guix. - (let ((commit "9586011")) + ;; + ;; Note: use a short commit id; when using the long one, the limit on socket + ;; file names is exceeded while running the tests. + (let ((commit "0b13161")) (package (inherit guix-0.8.1) (version (string-append "0.8.1." commit)) (source (origin @@ -152,7 +155,7 @@ the Nix package manager.") (commit commit))) (sha256 (base32 - "0dcmw8gz2qxknjnh9k8rdwmgysnxnvawdmlg1pyzngakwlsy1c3z")))) + "0h9yyfxs14di858hb9ypjvdjryv8nzll6f9vxkggcy40iyhp65sh")))) (arguments (substitute-keyword-arguments (package-arguments guix-0.8.1) ((#:phases phases) -- cgit v1.2.3 From 032c7c5f78d969467252b7aa38d805d7fcca7230 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 8 Apr 2015 10:42:48 +0200 Subject: build: Enable silent rules by default. * configure.ac: Use 'AM_SILENT_RULES'. --- configure.ac | 3 +++ 1 file changed, 3 insertions(+) diff --git a/configure.ac b/configure.ac index f2f803a2cd..6f261cdb63 100644 --- a/configure.ac +++ b/configure.ac @@ -9,6 +9,9 @@ AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE([1.12 gnu silent-rules subdir-objects \ color-tests parallel-tests -Woverride]) +# Enable silent rules by default. +AM_SILENT_RULES([yes]) + AC_CONFIG_SRCDIR([guix.scm]) AC_CONFIG_MACRO_DIR([m4]) -- cgit v1.2.3 From 75016d07ec8cfacef4b518a7da54b3137bd756f7 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sun, 5 Apr 2015 14:49:51 +0200 Subject: gnu: Add colord package. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/gnome.scm (colord): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/gnome.scm | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 78fd0f0107..80a8043e99 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -30,26 +30,31 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system glib-or-gtk) #:use-module (gnu packages) + #:use-module (gnu packages autotools) #:use-module (gnu packages bison) #:use-module (gnu packages curl) #:use-module (gnu packages databases) #:use-module (gnu packages flex) + #:use-module (gnu packages databases) #:use-module (gnu packages docbook) #:use-module (gnu packages glib) #:use-module (gnu packages gnupg) #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) #:use-module (gnu packages pdf) + #:use-module (gnu packages polkit) #:use-module (gnu packages popt) #:use-module (gnu packages ghostscript) #:use-module (gnu packages gnutls) #:use-module (gnu packages iso-codes) #:use-module (gnu packages libcanberra) #:use-module (gnu packages linux) + #:use-module (gnu packages libusb) #:use-module (gnu packages image) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages scanner) #:use-module (gnu packages xml) #:use-module (gnu packages gl) #:use-module (gnu packages compression) @@ -1826,3 +1831,69 @@ your system. It supports several profiles, multiple tabs and implements several keyboard shortcuts.") (license license:gpl3+))) + +(define-public colord + (package + (name "colord") + (version "1.1.8") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.freedesktop.org/software/colord/releases/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "01w97rgzk4qi6fp03scq5jyw0ayx11b479p7dkm2r77k84b9agph")))) + (build-system glib-or-gtk-build-system) + (arguments + '(;; The tests want to run valgrind. Punt for now. + #:tests? #f + #:configure-flags (list "--localstatedir=/var" + ;; GUSB not packaged yet. + "--disable-gusb" + ;; No dep on systemd. + "--disable-systemd-login" + ;; Wants to install to global completion dir; + ;; punt. + "--disable-bash-completion" + ;; colord-gtk not packaged yet. + "--disable-session-example" + "--with-daemon-user=colord" + "--enable-sane" + (string-append "--with-udevrulesdir=" + (assoc-ref %outputs "out") + "/lib/udev/rules.d")) + #:phases + (modify-phases %standard-phases + (add-before configure patch-/bin/true + (lambda _ + (substitute* "configure" + (("/bin/true") (which "true"))) + (substitute* "src/Makefile.in" + (("if test -w \\$\\(DESTDIR\\)\\$\\(prefix\\)/;") + "if test -w $(DESTDIR)$(localstatedir);")))) + (add-before build set-cc + (lambda _ + ;; Set $CC so that g-ir-scanner works. + (setenv "CC" "gcc") + #t))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("gobject-introspection" ,gobject-introspection) + ("libtool" ,libtool) + ("intltool" ,intltool))) + (inputs + `(("eudev" ,eudev) + ("dbus" ,dbus) + ("dbus-glib" ,dbus-glib) + ("libusb" ,libusb) + ("lcms" ,lcms) + ("sqlite" ,sqlite) + ("polkit" ,polkit) + ("sane-backends" ,sane-backends))) + (home-page "http://www.freedesktop.org/software/colord/") + (synopsis "Color management service") + (description "Colord is a system service that makes it easy to manage, +install and generate color profiles to accurately color manage input and +output devices.") + (license license:gpl2+))) -- cgit v1.2.3 From 7ce597ff9e7232f91016d5e4945cd24ec691223c Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sun, 5 Apr 2015 17:33:43 +0200 Subject: gnu: Add colord service. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu-system.am (GNU_SYSTEM_MODULES): Add gnu/services/colord.scm. * gnu/services/colord.scm: New file. * doc/guix.texi (Various Services): Document it. Co-authored-by: Ludovic Courtès --- doc/guix.texi | 10 +++++++ gnu-system.am | 1 + gnu/services/colord.scm | 72 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 gnu/services/colord.scm diff --git a/doc/guix.texi b/doc/guix.texi index 42f616548d..0facda5875 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4788,6 +4788,16 @@ Finally, @var{extra-options} is a list of additional command-line options passed to @command{lircd}. @end deffn +@code{(gnu services colord)} provides a color management service: + +@deffn {Monadic Procedure} colord-service [#:colord @var{colord}] +Return a service that runs @command{colord}, a system service with a D-Bus +interface to manage the color profiles of input and output devices such as +screens and scanners. It is notably used by the GNOME Color Manager graphical +tool. See @uref{http://www.freedesktop.org/software/colord/, the colord web +site} for more information. +@end deffn + @node Setuid Programs @subsection Setuid Programs diff --git a/gnu-system.am b/gnu-system.am index 199a944b5d..47799230af 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -324,6 +324,7 @@ GNU_SYSTEM_MODULES = \ gnu/services.scm \ gnu/services/avahi.scm \ gnu/services/base.scm \ + gnu/services/colord.scm \ gnu/services/dbus.scm \ gnu/services/dmd.scm \ gnu/services/lirc.scm \ diff --git a/gnu/services/colord.scm b/gnu/services/colord.scm new file mode 100644 index 0000000000..588436002c --- /dev/null +++ b/gnu/services/colord.scm @@ -0,0 +1,72 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014, 2015 Ludovic Courtès +;;; Copyright © 2015 Andy Wingo +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu services colord) + #:use-module (gnu services) + #:use-module (gnu system shadow) + #:use-module (gnu packages gnome) + #:use-module (ice-9 match) + #:use-module (guix monads) + #:use-module (guix store) + #:use-module (guix gexp) + #:export (colord-service)) + +;;; Commentary: +;;; +;;; This module provides service definitions for the colord color management +;;; service. +;;; +;;; Code: + +(define* (colord-service #:key (colord colord)) + "Return a service that runs @command{colord}, a system service with a D-Bus +interface to manage the color profiles of input and output devices such as +screens and scanners. It is notably used by the GNOME Color Manager graphical +tool. See @uref{http://www.freedesktop.org/software/colord/, the colord web +site} for more information." + (with-monad %store-monad + (return + (service + (documentation "Run the colord color management service.") + (provision '(colord-daemon)) + (requirement '(dbus-system udev)) + + (start #~(make-forkexec-constructor + (list (string-append #$colord "/libexec/colord")))) + (stop #~(make-kill-destructor)) + (activate #~(begin + (use-modules (guix build utils)) + (mkdir-p "/var/lib/colord") + (let ((user (getpwnam "colord"))) + (chown "/var/lib/colord" + (passwd:uid user) (passwd:gid user))))) + + (user-groups (list (user-group + (name "colord") + (system? #t)))) + (user-accounts (list (user-account + (name "colord") + (group "colord") + (system? #t) + (comment "colord daemon user") + (home-directory "/var/empty") + (shell + "/run/current-system/profile/sbin/nologin")))))))) + +;;; colord.scm ends here -- cgit v1.2.3 From 7b2abd0055fc88ac95a5ad10df7f150181564b7a Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Tue, 7 Apr 2015 09:42:36 +0200 Subject: gnu: Add geoclue. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/gnome.scm (geoclue): New variable. * gnu/packages/patches/geoclue-config.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. Signed-off-by: Ludovic Courtès --- gnu-system.am | 1 + gnu/packages/gnome.scm | 45 +++++++++++++++++++++++++++++++ gnu/packages/patches/geoclue-config.patch | 25 +++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 gnu/packages/patches/geoclue-config.patch diff --git a/gnu-system.am b/gnu-system.am index 47799230af..f9b58ddaa7 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -413,6 +413,7 @@ dist_patch_DATA = \ gnu/packages/patches/flex-bison-tests.patch \ gnu/packages/patches/gawk-shell.patch \ gnu/packages/patches/gcc-cross-environment-variables.patch \ + gnu/packages/patches/geoclue-config.patch \ gnu/packages/patches/ghostscript-runpath.patch \ gnu/packages/patches/glib-tests-desktop.patch \ gnu/packages/patches/glib-tests-homedir.patch \ diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 80a8043e99..0c6476387a 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1897,3 +1897,48 @@ keyboard shortcuts.") install and generate color profiles to accurately color manage input and output devices.") (license license:gpl2+))) + +(define-public geoclue + (package + (name "geoclue") + (version "2.1.10") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.freedesktop.org/software/" name + "/releases/" (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0s0ws2bx5g1cbjamxmm448r4n4crha2fwpzm8zbx6cq6qslygmzi")) + (patches (list (search-patch "geoclue-config.patch"))))) + (build-system glib-or-gtk-build-system) + (arguments + '(;; The tests want to run the system bus. + #:tests? #f + #:configure-flags (list ;; Disable bits requiring ModemManager. + "--disable-3g-source" + "--disable-cdma-source" + "--disable-modem-gps-source" + "--with-dbus-service-user=geoclue") + #:phases + (modify-phases %standard-phases + (add-before configure patch-/bin/true + (lambda _ + (substitute* "configure" + (("/bin/true") (which "true")))))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("intltool" ,intltool))) + (inputs + `(("glib" ,glib) + ("json-glib" ,json-glib) + ("libsoup" ,libsoup))) + (home-page "http://freedesktop.org/wiki/Software/GeoClue/") + (synopsis "Geolocation service") + (description "Geoclue is a D-Bus service that provides location +information. The primary goal of the Geoclue project is to make creating +location-aware applications as simple as possible, while the secondary goal is +to ensure that no application can access location information without explicit +permission from user. ") + (license license:gpl2+))) diff --git a/gnu/packages/patches/geoclue-config.patch b/gnu/packages/patches/geoclue-config.patch new file mode 100644 index 0000000000..dd35b90be5 --- /dev/null +++ b/gnu/packages/patches/geoclue-config.patch @@ -0,0 +1,25 @@ +Allow the configuration file to be specified via an environment variable. + +--- geoclue-2.1.10/src/gclue-config.c 2015-04-07 09:50:07.721074380 +0200 ++++ geoclue-2.1.10/src/gclue-config.c 2015-04-07 10:27:26.613171960 +0200 +@@ -235,6 +235,11 @@ + gclue_config_init (GClueConfig *config) + { + GError *error = NULL; ++ const char *config_file_path; ++ ++ config_file_path = g_getenv ("GEOCLUE_CONFIG_FILE"); ++ if (config_file_path == NULL) ++ config_file_path = CONFIG_FILE_PATH; + + config->priv = + G_TYPE_INSTANCE_GET_PRIVATE (config, +@@ -242,7 +247,7 @@ + GClueConfigPrivate); + config->priv->key_file = g_key_file_new (); + g_key_file_load_from_file (config->priv->key_file, +- CONFIG_FILE_PATH, ++ config_file_path, + 0, + &error); + if (error != NULL) { -- cgit v1.2.3 From bba229a3ca551a33e0f96e23985fe94d7e31eb1c Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 7 Apr 2015 17:43:53 +0800 Subject: gnu: Add libsecret. * gnu/packages/gnome.scm (libsecret): New variable. --- gnu/packages/gnome.scm | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 1a42bffd7a..19de30e159 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1734,6 +1734,54 @@ library.") and the GLib main loop, to integrate well with GNOME applications.") (license license:lgpl2.0+))) +(define-public libsecret + (package + (name "libsecret") + (version "0.18") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://gnome/sources/libsecret/" version "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1qq29c01xxjyx5sl6y5h22w8r0ff4c73bph3gfx3h7mx5mvalwqc")))) + (build-system gnu-build-system) + (outputs '("out" "doc")) + (arguments + `(#:tests? #f ; FIXME: Testing hangs. + #:make-flags '("CC=gcc") ; for g-ir-scanner. + #:configure-flags + (list (string-append "--with-html-dir=" + (assoc-ref %outputs "doc") + "/share/gtk-doc/html")))) + (native-inputs + `(("glib:bin" ,glib "bin") ; for gdbus-codegen, etc. + ("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ("vala" ,vala) + ("xsltproc" ,libxslt))) + ;; These are needed for the tests. + ;; FIXME: Add gjs once available. + ;("dbus" ,dbus) + ;("python2" ,python-2) + ;("python2-dbus" ,python2-dbus) + ;("python2-pygobject" ,python2-pygobject) + ;("python2-pygobject-2" ,python2-pygobject-2))) + (propagated-inputs + `(("glib" ,glib))) ; required by libsecret-1.pc + (inputs + `(("docbook-xsl" ,docbook-xsl) + ("libgcrypt" ,libgcrypt) + ("libxml2" ,libxml2))) ; for XML_CATALOG_FILES + (home-page "https://wiki.gnome.org/Projects/Libsecret/") + (synopsis "GObject bindings for \"Secret Service\" API") + (description + "Libsecret is a GObject based library for storing and retrieving passwords +and other secrets. It communicates with the \"Secret Service\" using DBus.") + (license license:lgpl2.1+))) + (define-public gnome-mines (package (name "gnome-mines") -- cgit v1.2.3 From 863af4e121d827d3e72a43e405069bf6d887ccba Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Sat, 7 Mar 2015 17:23:14 +0100 Subject: import: Add hackage importer. * guix/scripts/import.scm (importers): Add hackage. * guix/scripts/import/hackage.scm: New file. * po/guix/POTFILES.in: Add guix/scripts/import.scm. * doc/guix.texi: Add section on 'hackage' importer. --- doc/guix.texi | 31 ++++++++++++ guix/scripts/import.scm | 2 +- guix/scripts/import/hackage.scm | 106 ++++++++++++++++++++++++++++++++++++++++ po/guix/POTFILES.in | 1 + 4 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 guix/scripts/import/hackage.scm diff --git a/doc/guix.texi b/doc/guix.texi index 42f616548d..70604b7603 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3188,6 +3188,37 @@ bound to the @code{libreoffice} top-level attribute): @example guix import nix ~/path/to/nixpkgs libreoffice @end example + +@item hackage +@cindex hackage +Import meta-data from Haskell community's central package archive +@uref{https://hackage.haskell.org/, Hackage}. Information is taken from +Cabal files and includes all the relevant information, including package +dependencies. + +Specific command-line options are: + +@table @code +@item --no-test-dependencies +@itemx -t +Do not include dependencies only required to run the test suite. +@end table + +The command below imports meta-data for the latest version of the +@code{HTTP} Haskell package without including test dependencies: + +@example +guix import hackage -t HTTP +@end example + +A specific package version may optionally be specified by following the +package name by a hyphen and a version number as in the following example: + +@example +guix import hackage mtl-2.1.3.1 +@end example + +Currently only indentation structured Cabal files are supported. @end table The structure of the @command{guix import} code is modular. It would be diff --git a/guix/scripts/import.scm b/guix/scripts/import.scm index 7e75c10b3e..06b4c17573 100644 --- a/guix/scripts/import.scm +++ b/guix/scripts/import.scm @@ -73,7 +73,7 @@ rather than \\n." ;;; Entry point. ;;; -(define importers '("gnu" "nix" "pypi" "cpan")) +(define importers '("gnu" "nix" "pypi" "cpan" "hackage")) (define (resolve-importer name) (let ((module (resolve-interface diff --git a/guix/scripts/import/hackage.scm b/guix/scripts/import/hackage.scm new file mode 100644 index 0000000000..f7c18cd3bf --- /dev/null +++ b/guix/scripts/import/hackage.scm @@ -0,0 +1,106 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Federico Beffa +;;; +;;; 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 scripts import hackage) + #:use-module (guix ui) + #:use-module (guix utils) + #:use-module (guix import hackage) + #:use-module (guix scripts import) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-11) + #:use-module (srfi srfi-37) + #:use-module (ice-9 match) + #:use-module (ice-9 format) + #:export (guix-import-hackage)) + + +;;; +;;; Command-line options. +;;; + +(define %default-options + '((include-test-dependencies? . #t))) + +(define (show-help) + (display (_ "Usage: guix import hackage PACKAGE-NAME +Import and convert the Hackage package for PACKAGE-NAME. If PACKAGE-NAME +includes a suffix constituted by a dash followed by a numerical version (as +used with Guix packages), then a definition for the specified version of the +package will be generated. If no version suffix is pecified, then the +generated package definition will correspond to the latest available +version.\n")) + (display (_ " + -h, --help display this help and exit")) + (display (_ " + -t, --no-test-dependencies don't include test only dependencies")) + (display (_ " + -V, --version display version information and exit")) + (newline) + (show-bug-report-information)) + +(define %options + ;; Specification of the command-line options. + (cons* (option '(#\h "help") #f #f + (lambda args + (show-help) + (exit 0))) + (option '(#\V "version") #f #f + (lambda args + (show-version-and-exit "guix import hackage"))) + (option '(#\t "no-test-dependencies") #f #f + (lambda (opt name arg result) + (alist-cons 'include-test-dependencies? #f + (alist-delete 'include-test-dependencies? + result)))) + %standard-import-options)) + + +;;; +;;; Entry point. +;;; + +(define (guix-import-hackage . args) + (define (parse-options) + ;; Return the alist of option values. + (args-fold* args %options + (lambda (opt name arg result) + (leave (_ "~A: unrecognized option~%") name)) + (lambda (arg result) + (alist-cons 'argument arg result)) + %default-options)) + + (let* ((opts (parse-options)) + (args (filter-map (match-lambda + (('argument . value) + value) + (_ #f)) + (reverse opts)))) + (match args + ((package-name) + (let ((sexp (hackage->guix-package + package-name + #:include-test-dependencies? + (assoc-ref opts 'include-test-dependencies?)))) + (unless sexp + (leave (_ "failed to download cabal file for package '~a'~%") + package-name)) + sexp)) + (() + (leave (_ "too few arguments~%"))) + ((many ...) + (leave (_ "too many arguments~%")))))) diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in index 5ac9201295..30ce28b712 100644 --- a/po/guix/POTFILES.in +++ b/po/guix/POTFILES.in @@ -8,6 +8,7 @@ guix/scripts/download.scm guix/scripts/package.scm guix/scripts/gc.scm guix/scripts/hash.scm +guix/scripts/import.scm guix/scripts/pull.scm guix/scripts/substitute.scm guix/scripts/authenticate.scm -- cgit v1.2.3 From b29455cfe7440e08f485eabc7a9335a856cacab8 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Sun, 8 Mar 2015 07:48:38 +0100 Subject: import: Add hackage importer. * guix/import/hackage.scm: New file. * tests/hackage.scm: New file. --- guix/import/hackage.scm | 767 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/hackage.scm | 134 +++++++++ 2 files changed, 901 insertions(+) create mode 100644 guix/import/hackage.scm create mode 100644 tests/hackage.scm diff --git a/guix/import/hackage.scm b/guix/import/hackage.scm new file mode 100644 index 0000000000..1b27803dba --- /dev/null +++ b/guix/import/hackage.scm @@ -0,0 +1,767 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Federico Beffa +;;; +;;; 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 hackage) + #:use-module (ice-9 match) + #:use-module (ice-9 regex) + #:use-module (ice-9 rdelim) + #:use-module (ice-9 receive) + #:use-module (ice-9 pretty-print) + #:use-module (srfi srfi-26) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) + #:use-module (srfi srfi-11) + #:use-module (srfi srfi-1) + #:use-module ((guix download) #:select (download-to-store)) + #:use-module ((guix utils) #:select (package-name->name+version)) + #:use-module (guix import utils) + #:use-module (guix store) + #:use-module (guix hash) + #:use-module (guix base32) + #:use-module ((guix utils) #:select (call-with-temporary-output-file)) + #:export (hackage->guix-package)) + +;; Part 1: +;; +;; Functions used to read a Cabal file. + +(define ghc-standard-libraries + ;; List of libraries distributed with ghc (7.8.4). We include GHC itself as + ;; some packages list it. + '("ghc" + "haskell98" + "hoopl" + "base" + "transformers" + "deepseq" + "array" + "binary" + "bytestring" + "containers" + "time" + "cabal" + "bin-package-db" + "ghc-prim" + "integer-gmp" + "integer-simple" + "win32" + "template-haskell" + "process" + "haskeline" + "terminfo" + "directory" + "filepath" + "old-locale" + "unix" + "old-time" + "pretty" + "xhtml" + "hpc")) + +(define package-name-prefix "ghc-") + +(define key-value-rx + ;; Regular expression matching "key: value" + (make-regexp "([a-zA-Z0-9-]+):[ \t]*(\\w?.*)$")) + +(define sections-rx + ;; Regular expression matching a section "head sub-head ..." + (make-regexp "([a-zA-Z0-9\\(\\)-]+)")) + +(define comment-rx + ;; Regexp matching Cabal comment lines. + (make-regexp "^ *--")) + +(define (has-key? line) + "Check if LINE includes a key." + (regexp-exec key-value-rx line)) + +(define (comment-line? line) + "Check if LINE is a comment line." + (regexp-exec comment-rx line)) + +(define (line-indentation+rest line) + "Returns two results: The number of indentation spaces and the rest of the +line (without indentation)." + (let loop ((line-lst (string->list line)) + (count 0)) + ;; Sometimes values are spread over multiple lines and new lines start + ;; with a comma ',' with the wrong indentation. See e.g. haddock-api. + (if (or (null? line-lst) + (not (or + (eqv? (first line-lst) #\space) + (eqv? (first line-lst) #\,) ; see, e.g., haddock-api.cabal + (eqv? (first line-lst) #\tab)))) + (values count (list->string line-lst)) + (loop (cdr line-lst) (+ count 1))))) + +(define (multi-line-value lines seed) + "Function to read a value split across multiple lines. LINES are the +remaining input lines to be read. SEED is the value read on the same line as +the key. Return two values: A list with values and the remaining lines to be +processed." + (define (multi-line-value-with-min-indent lines seed min-indent) + (if (null? lines) + (values '() '()) + (let-values (((current-indent value) (line-indentation+rest (first lines))) + ((next-line-indent next-line-value) + (if (null? (cdr lines)) + (values #f "") + (line-indentation+rest (second lines))))) + (if (or (not next-line-indent) (< next-line-indent min-indent) + (regexp-exec condition-rx next-line-value)) + (values (reverse (cons value seed)) (cdr lines)) + (multi-line-value-with-min-indent (cdr lines) (cons value seed) + min-indent))))) + + (let-values (((current-indent value) (line-indentation+rest (first lines)))) + (multi-line-value-with-min-indent lines seed current-indent))) + +(define (read-cabal port) + "Parses a Cabal file from PORT. Return a list of list pairs: + +(((head1 sub-head1 ... key1) (value)) + ((head2 sub-head2 ... key2) (value2)) + ...). + +We try do deduce the Cabal format from the following document: +https://www.haskell.org/cabal/users-guide/developing-packages.html + +Keys are case-insensitive. We therefore lowercase them. Values are +case-sensitive. Currently only indentation-structured files are parsed. +Braces structured files are not handled." ;" <- make emacs happy. + (define (read-and-trim-line port) + (let ((line (read-line port))) + (if (string? line) + (string-trim-both line #\return) + line))) + + (define (strip-insignificant-lines port) + (let loop ((line (read-and-trim-line port)) + (result '())) + (cond + ((eof-object? line) + (reverse result)) + ((or (string-null? line) (comment-line? line)) + (loop (read-and-trim-line port) result)) + (else + (loop (read-and-trim-line port) (cons line result)))))) + + (let loop + ((lines (strip-insignificant-lines port)) + (indents '()) ; only includes indents at start of section heads. + (sections '()) + (result '())) + (let-values + (((current-indent line) + (if (null? lines) + (values 0 "") + (line-indentation+rest (first lines)))) + ((next-line-indent next-line) + (if (or (null? lines) (null? (cdr lines))) + (values 0 "") + (line-indentation+rest (second lines))))) + (if (null? lines) + (reverse result) + (let ((rx-result (has-key? line))) + (cond + (rx-result + (let ((key (string-downcase (match:substring rx-result 1))) + (value (match:substring rx-result 2))) + (cond + ;; Simple single line "key: value". + ((= next-line-indent current-indent) + (loop (cdr lines) indents sections + (cons + (list (reverse (cons key sections)) (list value)) + result))) + ;; Multi line "key: value\n value cont...". + ((> next-line-indent current-indent) + (let*-values (((value-lst lines) + (multi-line-value (cdr lines) + (if (string-null? value) + '() + `(,value))))) + ;; multi-line-value returns to the first line after the + ;; multi-value. + (loop lines indents sections + (cons + (list (reverse (cons key sections)) value-lst) + result)))) + ;; Section ended. + (else + ;; Indentation is reduced. Check by how many levels. + (let* ((idx (and=> (list-index + (lambda (x) (= next-line-indent x)) + indents) + (cut + <> + (if (has-key? next-line) 1 0)))) + (sec + (if idx + (drop sections idx) + (raise + (condition + (&message + (message "unable to parse Cabal file")))))) + (ind (drop indents idx))) + (loop (cdr lines) ind sec + (cons + (list (reverse (cons key sections)) (list value)) + result))))))) + ;; Start of a new section. + ((or (null? indents) + (> current-indent (first indents))) + (loop (cdr lines) (cons current-indent indents) + (cons (string-downcase line) sections) result)) + (else + (loop (cdr lines) indents + (cons (string-downcase line) (cdr sections)) + result)))))))) + +(define condition-rx + ;; Regexp for conditionals. + (make-regexp "^if +(.*)$")) + +(define (split-section section) + "Split SECTION in individual words with exception for the predicate of an +'if' conditional." + (let ((rx-result (regexp-exec condition-rx section))) + (if rx-result + `("if" ,(match:substring rx-result 1)) + (map match:substring (list-matches sections-rx section))))) + +(define (join-sections sec1 sec2) + (fold-right cons sec2 sec1)) + +(define (pre-process-keys key) + (match key + (() '()) + ((sec1 rest ...) + (join-sections (split-section sec1) (pre-process-keys rest))))) + +(define (pre-process-entry-keys entry) + (match entry + ((key value) + (list (pre-process-keys key) value)) + (() '()))) + +(define (pre-process-entries-keys entries) + "ENTRIES is a list of list pairs, a keys list and a valules list, as +produced by 'read-cabal'. Split each element of the keys list into individual +words. This pre-processing is used to read flags." + (match entries + ((entry rest ...) + (cons (pre-process-entry-keys entry) + (pre-process-entries-keys rest))) + (() + '()))) + +(define (get-flags pre-processed-entries) + "PRE-PROCESSED-ENTRIES is a list of list pairs, a keys list and a values +list, as produced by 'read-cabal' and pre-processed by +'pre-process-entries-keys'. Return a list of pairs with the name of flags and +their default value (one of \"False\" or \"True\") as specified in the Cabal file: + +((\"flag1-name\" . \"False-or-True\") ...)." ;" <- make emacs happy + (match pre-processed-entries + (() '()) + (((("flag" flag-name "default") (flag-val)) rest ...) + (cons (cons flag-name flag-val) + (get-flags rest))) + ((entry rest ... ) + (get-flags rest)) + (_ #f))) + +;; Part 2: +;; +;; Functions to read information from the Cabal object created by 'read-cabal' +;; and convert Cabal format dependencies conditionals into equivalent +;; S-expressions. + +(define tests-rx + ;; Cabal test keywords + (make-regexp "(os|arch|flag|impl) *\\(([ a-zA-Z0-9_.<>=-]+)\\)")) + +(define parens-rx + ;; Parentheses within conditions + (make-regexp "\\((.+)\\)")) + +(define or-rx + ;; OR operator in conditions + (make-regexp " +\\|\\| +")) + +(define and-rx + ;; AND operator in conditions + (make-regexp " +&& +")) + +(define not-rx + ;; NOT operator in conditions + (make-regexp "^!.+")) + +(define (bi-op-args str match-lst) + "Return a list with the arguments of (logic) bianry operators. MATCH-LST +is the result of 'list-match' against a binary operator regexp on STR." + (let ((operators (length match-lst))) + (map (lambda (from to) + (substring str from to)) + (cons 0 (map match:end match-lst)) + (append (map match:start match-lst) (list (string-length str)))))) + +(define (bi-op->sexp-like bi-op args) + "BI-OP is a string with the name of a Scheme operator which in a Cabal file +is represented by a binary operator. ARGS are the arguments of said operator. +Return a string representing an S-expression of the operator applied to its +arguments." + (if (= (length args) 1) + (first args) + (string-append "(" bi-op + (fold (lambda (arg seed) (string-append seed " " arg)) + "" args) ")"))) + +(define (not->sexp-like arg) + "If the string ARG is prefixed by a Cabal negation operator, convert it to +an equivalent Scheme S-expression string." + (if (regexp-exec not-rx arg) + (string-append "(not " + (substring arg 1 (string-length arg)) + ")") + arg)) + +(define (parens-less-cond->sexp-like conditional) + "Convert a Cabal CONDITIONAL string into a string with equivalent Scheme +syntax. This procedure accepts only simple conditionals without parentheses." + ;; The outher operation is the one with the lowest priority: OR + (bi-op->sexp-like + "or" + ;; each OR argument may be an AND operation + (map (lambda (or-arg) + (let ((m-lst (list-matches and-rx or-arg))) + ;; is there an AND operation? + (if (> (length m-lst) 0) + (bi-op->sexp-like + "and" + ;; expand NOT operators when there are ANDs + (map not->sexp-like (bi-op-args or-arg m-lst))) + ;; ... and when there aren't. + (not->sexp-like or-arg)))) + ;; list of OR arguments + (bi-op-args conditional (list-matches or-rx conditional))))) + +(define test-keyword-ornament "__") + +(define (conditional->sexp-like conditional) + "Convert a Cabal CONDITIONAL string into a string with equivalent Scheme +syntax." + ;; First we substitute TEST-KEYWORD-ORNAMENT for parentheses around tests + ;; keywords so that parentheses are only used to set precedences. This + ;; substantially simplify parsing. + (let ((conditional + (regexp-substitute/global #f tests-rx conditional + 'pre 1 test-keyword-ornament 2 + test-keyword-ornament 'post))) + (let loop ((sub-cond conditional)) + (let ((rx-result (regexp-exec parens-rx sub-cond))) + (cond + (rx-result + (parens-less-cond->sexp-like + (string-append + (match:prefix rx-result) + (loop (match:substring rx-result 1)) + (match:suffix rx-result)))) + (else + (parens-less-cond->sexp-like sub-cond))))))) + +(define (eval-flags sexp-like-cond flags) + "SEXP-LIKE-COND is a string representing an S-expression conditional. FLAGS +is a list of flag name and value pairs as produced by 'get-flags'. Substitute +\"#t\" or \"#f\" according to the value of flags. (Default to \"True\")." + (fold-right + (lambda (flag sexp) + (match flag + ((name . value) + (let ((rx (make-regexp + (string-append "flag" test-keyword-ornament name + test-keyword-ornament)))) + (regexp-substitute/global + #f rx sexp + 'pre (if (string-ci= value "False") "#f" "#t") 'post))) + (_ sexp))) + sexp-like-cond + (cons '("[a-zA-Z0-9_-]+" . "True") flags))) + +(define (eval-tests->sexp sexp-like-cond) + "In the string SEXP-LIKE-COND substitute test keywords \"os(...)\" and +\"arch(...)\" with equivalent Scheme checks. Retrun an S-expression." + (with-input-from-string + (fold-right + (lambda (test sexp) + (match test + ((type pre-match post-match) + (let ((rx (make-regexp + (string-append type test-keyword-ornament "(\\w+)" + test-keyword-ornament)))) + (regexp-substitute/global + #f rx sexp + 'pre pre-match 2 post-match 'post))) + (_ sexp))) + sexp-like-cond + ;; (%current-system) returns, e.g., "x86_64-linux" or "i686-linux". + '(("(os|arch)" "(string-match \"" "\" (%current-system))"))) + read)) + +(define (eval-impl sexp-like-cond) + "Check for the Cabal test \"impl(...)\" in the string SEXP-LIKE-COND. +Assume the module declaring the generated package includes a local variable +called \"haskell-implementation\" with a string value of the form NAME-VERSION +against which we compare." + (with-output-to-string + (lambda () + (write + (with-input-from-string + (fold-right + (lambda (test sexp) + (match test + ((pre-match post-match) + (let ((rx-with-version + (make-regexp + (string-append + "impl" test-keyword-ornament + "([a-zA-Z0-9_-]+) *([<>=]+) *([0-9.]+) *" + test-keyword-ornament))) + (rx-without-version + (make-regexp + (string-append "impl" test-keyword-ornament "(\\w+)" + test-keyword-ornament)))) + (if (regexp-exec rx-with-version sexp) + (regexp-substitute/global + #f rx-with-version sexp + 'pre pre-match 2 " " post-match " \"" 1 "-" 3 "\")" 'post) + (regexp-substitute/global + #f rx-without-version sexp + 'pre pre-match "-match \"" 1 "\" " post-match ")" 'post)))) + (_ sexp))) + sexp-like-cond + '(("(string" "haskell-implementation"))) + read))))) + +(define (eval-cabal-keywords sexp-like-cond flags) + ((compose eval-tests->sexp eval-impl (cut eval-flags <> flags)) + sexp-like-cond)) + +(define (key->values meta key) + "META is the representation of a Cabal file as produced by 'read-cabal'. +Return the list of values associated with a specific KEY (a string)." + (match meta + (() '()) + (((((? (lambda(x) (equal? x key)))) v) r ...) + v) + (((k v) r ...) + (key->values (cdr meta) key)) + (_ "key Not fount"))) + +(define (key-start-end->entries meta key-start-rx key-end-rx) + "META is the representation of a Cabal file as produced by 'read-cabal'. +Return all entries whose keys list starts with KEY-START and ends with +KEY-END." + (let ((pred + (lambda (x) + (and (regexp-exec key-start-rx (first x)) + (regexp-exec key-end-rx (last x)))))) + ;; (equal? (list key-start key-end) (list (first x) (last x)))))) + (match meta + (() '()) + ((((? pred k) v) r ...) + (cons `(,k ,v) + (key-start-end->entries (cdr meta) key-start-rx key-end-rx))) + (((k v) r ...) + (key-start-end->entries (cdr meta) key-start-rx key-end-rx)) + (_ "key Not fount")))) + +(define else-rx + (make-regexp "^else$")) + +(define (count-if-else rx-result-ls) + (apply + (map (lambda (m) (if m 1 0)) rx-result-ls))) + +(define (analyze-entry-cond entry) + (let* ((keys (first entry)) + (vals (second entry)) + (rx-cond-result + (map (cut regexp-exec condition-rx <>) keys)) + (rx-else-result + (map (cut regexp-exec else-rx <>) keys)) + (cond-no (count-if-else rx-cond-result)) + (else-no (count-if-else rx-else-result)) + (cond-idx (list-index (lambda (rx) (if rx #t #f)) rx-cond-result)) + (else-idx (list-index (lambda (rx) (if rx #t #f)) rx-else-result)) + (key-cond + (cond + ((or (and cond-idx else-idx (< cond-idx else-idx)) + (and cond-idx (not else-idx))) + (match:substring + (receive (head tail) + (split-at rx-cond-result cond-idx) (first tail)))) + ((or (and cond-idx else-idx (> cond-idx else-idx)) + (and (not cond-idx) else-idx)) + (match:substring + (receive (head tail) + (split-at rx-else-result else-idx) (first tail)))) + (else + "")))) + (values keys vals rx-cond-result + rx-else-result cond-no else-no key-cond))) + +(define (remove-cond entry cond) + (match entry + ((k v) + (list (cdr (member cond k)) v)))) + +(define (group-and-reduce-level entries group group-cond) + (let loop + ((true-group group) + (false-group '()) + (entries entries)) + (if (null? entries) + (values (reverse true-group) (reverse false-group) entries) + (let*-values (((entry) (first entries)) + ((keys vals rx-cond-result rx-else-result + cond-no else-no key-cond) + (analyze-entry-cond entry))) + (cond + ((and (>= (+ cond-no else-no) 1) (string= group-cond key-cond)) + (loop (cons (remove-cond entry group-cond) true-group) false-group + (cdr entries))) + ((and (>= (+ cond-no else-no) 1) (string= key-cond "else")) + (loop true-group (cons (remove-cond entry "else") false-group) + (cdr entries))) + (else + (values (reverse true-group) (reverse false-group) entries))))))) + +(define dependencies-rx + (make-regexp "([a-zA-Z0-9_-]+) *[^,]*,?")) + +(define (hackage-name->package-name name) + (if (string-prefix? package-name-prefix name) + (string-downcase name) + (string-append package-name-prefix (string-downcase name)))) + +(define (split-and-filter-dependencies ls names-to-filter) + "Split the comma separated list of dependencies LS coming from the Cabal +file, filter packages included in NAMES-TO-FILTER and return a list with +inputs suitable for the Guix package. Currently the version information is +discarded." + (define (split-at-comma-and-filter d) + (fold + (lambda (m seed) + (let* ((name (string-downcase (match:substring m 1))) + (pkg-name (hackage-name->package-name name))) + (if (member name names-to-filter) + seed + (cons (list pkg-name (list 'unquote (string->symbol pkg-name))) + seed)))) + '() + (list-matches dependencies-rx d))) + + (fold (lambda (d p) (append (split-at-comma-and-filter d) p)) '() ls)) + +(define* (dependencies-cond->sexp meta #:key (include-test-dependencies? #t)) + "META is the representation of a Cabal file as produced by 'read-cabal'. +Return an S-expression containing the list of dependencies as expected by the +'inputs' field of a package. The generated S-expressions may include +conditionals as defined in the cabal file. During this process we discard the +version information of the packages." + (define (take-dependencies meta) + (let ((key-start-exe (make-regexp "executable")) + (key-start-lib (make-regexp "library")) + (key-start-tests (make-regexp "test-suite")) + (key-end (make-regexp "build-depends"))) + (append + (key-start-end->entries meta key-start-exe key-end) + (key-start-end->entries meta key-start-lib key-end) + (if include-test-dependencies? + (key-start-end->entries meta key-start-tests key-end) + '())))) + + (let ((flags (get-flags (pre-process-entries-keys meta))) + (augmented-ghc-std-libs (append (key->values meta "name") + ghc-standard-libraries))) + (delete-duplicates + (let loop ((entries (take-dependencies meta)) + (result '())) + (if (null? entries) + (reverse result) + (let*-values (((entry) (first entries)) + ((keys vals rx-cond-result rx-else-result + cond-no else-no key-cond) + (analyze-entry-cond entry))) + (cond + ((= (+ cond-no else-no) 0) + (loop (cdr entries) + (append + (split-and-filter-dependencies vals + augmented-ghc-std-libs) + result))) + (else + (let-values (((true-group false-group entries) + (group-and-reduce-level entries '() + key-cond)) + ((cond-final) (eval-cabal-keywords + (conditional->sexp-like + (last (split-section key-cond))) + flags))) + (loop entries + (cond + ((or (eq? cond-final #t) (equal? cond-final '(not #f))) + (append (loop true-group '()) result)) + ((or (eq? cond-final #f) (equal? cond-final '(not #t))) + (append (loop false-group '()) result)) + (else + (let ((true-group-result (loop true-group '())) + (false-group-result (loop false-group '()))) + (cond + ((and (null? true-group-result) + (null? false-group-result)) + result) + ((null? false-group-result) + (cons `(unquote-splicing + (when ,cond-final ,true-group-result)) + result)) + ((null? true-group-result) + (cons `(unquote-splicing + (unless ,cond-final ,false-group-result)) + result)) + (else + (cons `(unquote-splicing + (if ,cond-final + ,true-group-result + ,false-group-result)) + result)))))))))))))))) + +;; Part 3: +;; +;; Retrive the desired package and its Cabal file from +;; http://hackage.haskell.org and construct the Guix package S-expression. + +(define (hackage-fetch name-version) + "Return the Cabal file for the package NAME-VERSION, or #f on failure. If +the version part is omitted from the package name, then return the latest +version." + (let*-values (((name version) (package-name->name+version name-version)) + ((url) + (if version + (string-append "http://hackage.haskell.org/package/" + name "-" version "/" name ".cabal") + (string-append "http://hackage.haskell.org/package/" + name "/" name ".cabal")))) + (call-with-temporary-output-file + (lambda (temp port) + (and (url-fetch url temp) + (call-with-input-file temp read-cabal)))))) + +(define string->license + ;; List of valid values from + ;; https://www.haskell.org + ;; /cabal/release/cabal-latest/doc/API/Cabal/Distribution-License.html. + (match-lambda + ("GPL-2" 'gpl2) + ("GPL-3" 'gpl3) + ("GPL" "'gpl??") + ("AGPL-3" 'agpl3) + ("AGPL" "'agpl??") + ("LGPL-2.1" 'lgpl2.1) + ("LGPL-3" 'lgpl3) + ("LGPL" "'lgpl??") + ("BSD2" 'bsd-2) + ("BSD3" 'bsd-3) + ("MIT" 'expat) + ("ISC" 'isc) + ("MPL" 'mpl2.0) + ("Apache-2.0" 'asl2.0) + ((x) (string->license x)) + ((lst ...) `(list ,@(map string->license lst))) + (_ #f))) + +(define* (hackage-module->sexp meta #:key (include-test-dependencies? #t)) + "Return the `package' S-expression for a Cabal package. META is the +representation of a Cabal file as produced by 'read-cabal'." + + (define name + (first (key->values meta "name"))) + + (define version + (first (key->values meta "version"))) + + (define description + (let*-values (((description) (key->values meta "description")) + ((lines last) + (split-at description (- (length description) 1)))) + (fold-right (lambda (line seed) (string-append line "\n" seed)) + (first last) lines))) + + (define source-url + (string-append "http://hackage.haskell.org/package/" name + "/" name "-" version ".tar.gz")) + + ;; Several packages do not have an official home-page other than on Hackage. + (define home-page + (let ((home-page-entry (key->values meta "homepage"))) + (if (null? home-page-entry) + (string-append "http://hackage.haskell.org/package/" name) + (first home-page-entry)))) + + (define (maybe-inputs input-type inputs) + (match inputs + (() + '()) + ((inputs ...) + (list (list input-type + (list 'quasiquote inputs)))))) + + (let ((tarball (with-store store + (download-to-store store source-url)))) + `(package + (name ,(hackage-name->package-name name)) + (version ,version) + (source (origin + (method url-fetch) + (uri (string-append ,@(factorize-uri source-url version))) + (sha256 + (base32 + ,(if tarball + (bytevector->nix-base32-string (file-sha256 tarball)) + "failed to download tar archive"))))) + (build-system haskell-build-system) + ,@(maybe-inputs 'inputs + (dependencies-cond->sexp meta + #:include-test-dependencies? + include-test-dependencies?)) + (home-page ,home-page) + (synopsis ,@(key->values meta "synopsis")) + (description ,description) + (license ,(string->license (key->values meta "license")))))) + +(define* (hackage->guix-package module-name + #:key (include-test-dependencies? #t)) + "Fetch the Cabal file for PACKAGE-NAME from hackage.haskell.org, and return +the `package' S-expression corresponding to that package, or #f on failure." + (let ((module-meta (hackage-fetch module-name))) + (and=> module-meta (cut hackage-module->sexp <> + #:include-test-dependencies? + include-test-dependencies?)))) + +;;; cabal.scm ends here diff --git a/tests/hackage.scm b/tests/hackage.scm new file mode 100644 index 0000000000..23b854caa4 --- /dev/null +++ b/tests/hackage.scm @@ -0,0 +1,134 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Federico Beffa +;;; +;;; 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 (test-hackage) + #:use-module (guix import hackage) + #:use-module (guix tests) + #:use-module (srfi srfi-64) + #:use-module (ice-9 match)) + +(define test-cabal-1 + "name: foo +version: 1.0.0 +homepage: http://test.org +synopsis: synopsis +description: description +license: BSD3 +executable cabal + build-depends: + HTTP >= 4000.2.5 && < 4000.3, + mtl >= 2.0 && < 3 +") + +;; Use TABs to indent lines and to separate keys from value. +(define test-cabal-2 + "name: foo +version: 1.0.0 +homepage: http://test.org +synopsis: synopsis +description: description +license: BSD3 +executable cabal + build-depends: HTTP >= 4000.2.5 && < 4000.3, + mtl >= 2.0 && < 3 +") + +;; Use indentation with comma as found, e.g., in 'haddock-api'. +(define test-cabal-3 + "name: foo +version: 1.0.0 +homepage: http://test.org +synopsis: synopsis +description: description +license: BSD3 +executable cabal + build-depends: + HTTP >= 4000.2.5 && < 4000.3 + , mtl >= 2.0 && < 3 +") + +(define test-cond-1 + "(os(darwin) || !(flag(debug))) && flag(cips)") + +(define read-cabal + (@@ (guix import hackage) read-cabal)) + +(define eval-cabal-keywords + (@@ (guix import hackage) eval-cabal-keywords)) + +(define conditional->sexp-like + (@@ (guix import hackage) conditional->sexp-like)) + +(test-begin "hackage") + +(define (eval-test-with-cabal test-cabal) + (mock + ((guix import hackage) hackage-fetch + (lambda (name-version) + (call-with-input-string test-cabal + read-cabal))) + (match (hackage->guix-package "foo") + (('package + ('name "ghc-foo") + ('version "1.0.0") + ('source + ('origin + ('method 'url-fetch) + ('uri ('string-append + "http://hackage.haskell.org/package/foo/foo-" + 'version + ".tar.gz")) + ('sha256 + ('base32 + (? string? hash))))) + ('build-system 'haskell-build-system) + ('inputs + ('quasiquote + (("ghc-http" ('unquote 'ghc-http)) + ("ghc-mtl" ('unquote 'ghc-mtl))))) + ('home-page "http://test.org") + ('synopsis (? string?)) + ('description (? string?)) + ('license 'bsd-3)) + #t) + (x + (pk 'fail x #f))))) + +(test-assert "hackage->guix-package test 1" + (eval-test-with-cabal test-cabal-1)) + +(test-assert "hackage->guix-package test 2" + (eval-test-with-cabal test-cabal-2)) + +(test-assert "hackage->guix-package test 3" + (eval-test-with-cabal test-cabal-3)) + +(test-assert "conditional->sexp-like" + (match + (eval-cabal-keywords + (conditional->sexp-like test-cond-1) + '(("debug" . "False"))) + (('and ('or ('string-match "darwin" ('%current-system)) ('not '#f)) '#t) + #t) + (x + (pk 'fail x #f)))) + +(test-end "hackage") + + +(exit (= (test-runner-fail-count (test-runner-current)) 0)) -- cgit v1.2.3 From 283cce508ae2d300132be21ed1e37ce9f59cd1cb Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Sat, 4 Apr 2015 11:16:37 +0200 Subject: build-system/haskell: Update configure flags, 'haddock' and %standard-phases. * guix/build/haskell-build-system.scm (%standard-phases): move 'haddock phase before 'install phase. * guix/build/haskell-build-system.scm (haddock): Simplify it as the 'install phase takes care of copying files. * guix/build/haskell-build-system.scm (configure): Add '--libsubdir' flag. Fix use of '--extra-include-dirs' and '--extra-lib-dirs' flags. Use 'doc', 'bin' and 'lib' outputs if they are defined. * guix/build/haskell-build-system.scm (make-ghc-package-database, register): Aligh location of 'package.conf.d' directory with '--libsubdir' flag. --- guix/build/haskell-build-system.scm | 44 ++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/guix/build/haskell-build-system.scm b/guix/build/haskell-build-system.scm index 52b9c79d2f..e17967fb72 100644 --- a/guix/build/haskell-build-system.scm +++ b/guix/build/haskell-build-system.scm @@ -70,26 +70,28 @@ and parameters ~s~%" #:allow-other-keys) "Configure a given Haskell package." (let* ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc")) + (lib (assoc-ref outputs "lib")) + (bin (assoc-ref outputs "bin")) (input-dirs (match inputs (((_ . dir) ...) dir) (_ '()))) (params (append `(,(string-append "--prefix=" out)) + `(,(string-append "--libdir=" (or lib out) "/lib")) + `(,(string-append "--bindir=" (or bin out) "/bin")) `(,(string-append - "--docdir=" out "/share/doc/" - (package-name-version out))) + "--docdir=" (or doc out) + "/share/doc/" (package-name-version out))) + '("--libsubdir=$compiler/$pkg-$version") `(,(string-append "--package-db=" %tmp-db-dir)) '("--global") - `(,(string-append - "--extra-include-dirs=" - (list->search-path-as-string - (search-path-as-list '("include") input-dirs) - ":"))) - `(,(string-append - "--extra-lib-dirs=" - (list->search-path-as-string - (search-path-as-list '("lib") input-dirs) - ":"))) + `(,@(map + (cut string-append "--extra-include-dirs=" <>) + (search-path-as-list '("include") input-dirs))) + `(,@(map + (cut string-append "--extra-lib-dirs=" <>) + (search-path-as-list '("lib") input-dirs))) (if tests? '("--enable-tests") '()) @@ -140,7 +142,7 @@ first match and return the content of the group." dir) (_ '()))) (conf-dirs (search-path-as-list - `(,(string-append "lib/" system "-" + `(,(string-append "lib/" (package-name-version haskell) "/package.conf.d")) input-dirs)) @@ -160,8 +162,8 @@ generate the cache as it would clash in user profiles." (let* ((out (assoc-ref outputs "out")) (haskell (assoc-ref inputs "haskell")) (lib (string-append out "/lib")) - (config-dir (string-append lib "/" system - "-" (package-name-version haskell) + (config-dir (string-append lib "/" + (package-name-version haskell) "/package.conf.d")) (id-rx (make-regexp "^id: *(.*)$")) (lib-rx (make-regexp "lib.*\\.(a|so)")) @@ -189,21 +191,13 @@ generate the cache as it would clash in user profiles." (define* (haddock #:key outputs haddock? haddock-flags #:allow-other-keys) "Run the test suite of a given Haskell package." (if haddock? - (let* ((out (assoc-ref outputs "out")) - (doc-src (string-append (getcwd) "/dist/doc")) - (doc-dest (string-append out "/share/doc/" - (package-name-version out)))) - (if (run-setuphs "haddock" haddock-flags) - (begin - (copy-recursively doc-src doc-dest) - #t) - #f)) + (run-setuphs "haddock" haddock-flags) #t)) (define %standard-phases (modify-phases gnu:%standard-phases (add-before configure setup-compiler setup-compiler) - (add-after install haddock haddock) + (add-before install haddock haddock) (add-after install register register) (replace install install) (replace check check) -- cgit v1.2.3 From 042bc828fcd2dc7bbacbe6ef0408722a3d51a684 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Sat, 4 Apr 2015 22:51:13 +0200 Subject: profiles: Generate GHC's package database cache. * guix/profiles.scm (ghc-package-cache-file): New procedure. (profile-derivation): Add 'ghc-package-cache?' keyword argument. If true (the default), add the result of 'ghc-package-cache-file' to 'inputs'. * guix/scripts/package.scm (guix-package)[process-actions]: Pass #:ghc-package-cache? to 'profile-generation'. * tests/packages.scm ("--search-paths with pattern"): Likewise. * tests/profiles.scm ("profile-derivation"): Likewise. --- guix/profiles.scm | 60 ++++++++++++++++++++++++++++++++++++++++++++++-- guix/scripts/package.scm | 1 + tests/packages.scm | 1 + tests/profiles.scm | 2 ++ 4 files changed, 62 insertions(+), 2 deletions(-) diff --git a/guix/profiles.scm b/guix/profiles.scm index 465aaf9477..a2f63d1cca 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -404,6 +404,55 @@ MANIFEST." (gexp->derivation "info-dir" build #:modules '((guix build utils))))) +(define (ghc-package-cache-file manifest) + "Return a derivation that builds the GHC 'package.cache' file for all the +entries of MANIFEST." + (define ghc ;lazy reference + (module-ref (resolve-interface '(gnu packages haskell)) 'ghc)) + + (define build + #~(begin + (use-modules (guix build utils) + (srfi srfi-1) (srfi srfi-26) + (ice-9 ftw)) + + (define ghc-name-version + (let* ((base (basename #+ghc))) + (string-drop base + (+ 1 (string-index base #\-))))) + + (define db-subdir + (string-append "lib/" ghc-name-version "/package.conf.d")) + + (define db-dir + (string-append #$output "/" db-subdir)) + + (define (conf-files top) + (find-files (string-append top "/" db-subdir) "\\.conf$")) + + (define (copy-conf-file conf) + (let ((base (basename conf))) + (copy-file conf (string-append db-dir "/" base)))) + + (system* (string-append #+ghc "/bin/ghc-pkg") "init" db-dir) + (for-each copy-conf-file + (append-map conf-files + '#$(manifest-inputs manifest))) + (let ((success + (zero? + (system* (string-append #+ghc "/bin/ghc-pkg") "recache" + (string-append "--package-db=" db-dir))))) + (for-each delete-file (find-files db-dir "\\.conf$")) + success))) + + ;; Don't depend on GHC when there's nothing to do. + (if (any (cut string-prefix? "ghc" <>) + (map manifest-entry-name (manifest-entries manifest))) + (gexp->derivation "ghc-package-cache" build + #:modules '((guix build utils)) + #:local-build? #t) + (gexp->derivation "ghc-package-cache" #~(mkdir #$output)))) + (define (ca-certificate-bundle manifest) "Return a derivation that builds a single-file bundle containing the CA certificates in the /etc/ssl/certs sub-directories of the packages in @@ -465,14 +514,18 @@ MANIFEST. Single-file bundles are required by programs such as Git and Lynx." (define* (profile-derivation manifest #:key (info-dir? #t) + (ghc-package-cache? #t) (ca-certificate-bundle? #t)) "Return a derivation that builds a profile (aka. 'user environment') with the given MANIFEST. The profile includes a top-level Info 'dir' file unless -INFO-DIR? is #f, and a single-file CA certificate bundle unless -CA-CERTIFICATE-BUNDLE? is #f." +INFO-DIR? is #f, a GHC 'package.cache' file unless GHC-PACKAGE-CACHE? is #f +and a single-file CA certificate bundle unless CA-CERTIFICATE-BUNDLE? is #f." (mlet %store-monad ((info-dir (if info-dir? (info-dir-file manifest) (return #f))) + (ghc-package-cache (if ghc-package-cache? + (ghc-package-cache-file manifest) + (return #f))) (ca-cert-bundle (if ca-certificate-bundle? (ca-certificate-bundle manifest) (return #f)))) @@ -480,6 +533,9 @@ CA-CERTIFICATE-BUNDLE? is #f." (append (if info-dir (list (gexp-input info-dir)) '()) + (if ghc-package-cache + (list (gexp-input ghc-package-cache)) + '()) (if ca-cert-bundle (list (gexp-input ca-cert-bundle)) '()) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 6190f3286d..09ae782751 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -838,6 +838,7 @@ more information.~%")) (profile-derivation new #:info-dir? (not bootstrap?) + #:ghc-package-cache? (not bootstrap?) #:ca-certificate-bundle? (not bootstrap?)))) (prof (derivation->output-path prof-drv))) (show-manifest-transaction (%store) manifest transaction diff --git a/tests/packages.scm b/tests/packages.scm index c9dd5d859a..4e3a116cb8 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -600,6 +600,7 @@ (manifest (map package->manifest-entry (list p1 p2))) #:info-dir? #f + #:ghc-package-cache? #f #:ca-certificate-bundle? #f) #:guile-for-build (%guile-for-build)))) (build-derivations %store (list prof)) diff --git a/tests/profiles.scm b/tests/profiles.scm index 7b942e35b0..d20cb9d808 100644 --- a/tests/profiles.scm +++ b/tests/profiles.scm @@ -184,6 +184,7 @@ (guile (package->derivation %bootstrap-guile)) (drv (profile-derivation (manifest (list entry)) #:info-dir? #f + #:ghc-package-cache? #f #:ca-certificate-bundle? #f)) (profile -> (derivation->output-path drv)) (bindir -> (string-append profile "/bin")) @@ -197,6 +198,7 @@ ((entry -> (package->manifest-entry packages:glibc "debug")) (drv (profile-derivation (manifest (list entry)) #:info-dir? #f + #:ghc-package-cache? #f #:ca-certificate-bundle? #f))) (return (derivation-inputs drv)))) -- cgit v1.2.3 From 7d5baa300dbad8d4d9041f75dc063b4ac2d18064 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Wed, 25 Mar 2015 17:32:33 +0100 Subject: gnu: Add ghc-mtl. * gnu/packages/haskell.scm: (ghc-mtl): New variable. --- gnu/packages/haskell.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index beecccb3bf..d02c5f946a 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -23,6 +23,7 @@ #:use-module (guix download) #:use-module (guix utils) #:use-module (guix build-system gnu) + #:use-module (guix build-system haskell) #:use-module (gnu packages perl) #:use-module (gnu packages elf) #:use-module (gnu packages bootstrap) @@ -225,4 +226,31 @@ interactive environment for the functional language Haskell.") (license bsd-3))) +(define-public ghc-mtl + (package + (name "ghc-mtl") + (version "2.1.3.1") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/mtl/mtl-" + version + ".tar.gz")) + (sha256 + (base32 + "1xpn2wjmqbh2cg1yssc6749xpgcqlrrg4iilwqgkcjgvaxlpdbvp")))) + (build-system haskell-build-system) + (home-page "http://github.com/ekmett/mtl") + (synopsis + "Monad classes, using functional dependencies") + (description + "Monad classes using functional dependencies, with instances +for various monad transformers, inspired by the paper +'Functional Programming with Overloading and Higher-Order Polymorphism', +by Mark P Jones, in 'Advanced School of Functional Programming', 1995 +http://web.cecs.pdx.edu/~mpj/pubs/springschool.html.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From 0939da6e4d4309bde3923f46e59f7232c6ad5afc Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Thu, 26 Mar 2015 17:55:23 +0100 Subject: gnu: Add ghc-paths. * gnu/packages/haskell.scm: (ghc-paths): New variable. --- gnu/packages/haskell.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index d02c5f946a..eacfa2da5f 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -253,4 +253,27 @@ by Mark P Jones, in 'Advanced School of Functional Programming', 1995 http://web.cecs.pdx.edu/~mpj/pubs/springschool.html.") (license bsd-3))) +(define-public ghc-paths + (package + (name "ghc-paths") + (version "0.1.0.9") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/ghc-paths/ghc-paths-" + version + ".tar.gz")) + (sha256 + (base32 + "0ibrr1dxa35xx20cpp8jzgfak1rdmy344dfwq4vlq013c6w8z9mg")))) + (build-system haskell-build-system) + (home-page "https://github.com/simonmar/ghc-paths") + (synopsis + "Knowledge of GHC's installation directories") + (description + "Knowledge of GHC's installation directories.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From 3d3613d55d534f386adf09322d394b771eb3b2ec Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 14:31:40 +0100 Subject: gnu: Add ghc-zlib. * gnu/packages/haskell.scm (ghc-zlib): New variable. --- gnu/packages/haskell.scm | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index eacfa2da5f..ac55d9245c 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -18,13 +18,14 @@ (define-module (gnu packages haskell) #:use-module (ice-9 regex) - #:use-module (guix licenses) + #:use-module ((guix licenses) #:select (bsd-3)) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system haskell) #:use-module (gnu packages perl) + #:use-module (gnu packages compression) #:use-module (gnu packages elf) #:use-module (gnu packages bootstrap) #:use-module (gnu packages ghostscript) @@ -276,4 +277,33 @@ http://web.cecs.pdx.edu/~mpj/pubs/springschool.html.") "Knowledge of GHC's installation directories.") (license bsd-3))) +(define-public ghc-zlib + (package + (name "ghc-zlib") + (version "0.5.4.2") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/zlib/zlib-" + version + ".tar.gz")) + (sha256 + (base32 + "15hhsk7z3gvm7sz2ic2z1ca5c6rpsln2rr391mdbm1bxlzc1gmkm")))) + (build-system haskell-build-system) + (inputs `(("zlib" ,zlib))) + (home-page "http://hackage.haskell.org/package/zlib") + (synopsis + "Compression and decompression in the gzip and zlib formats") + (description + "This package provides a pure interface for compressing and decompressing +streams of data represented as lazy 'ByteString's. It uses the zlib C library +so it has high performance. It supports the 'zlib', 'gzip' and 'raw' +compression formats. It provides a convenient high level API suitable for +most tasks and for the few cases where more control is needed it provides +access to the full zlib feature set.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From a39f3936a9eea02e4beb38680da42cf0fe37828f Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 14:49:39 +0100 Subject: gnu: Add ghc-stm. * gnu/packages/haskell.scm (ghc-stm): New variable. --- gnu/packages/haskell.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index ac55d9245c..0c86d508c6 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -306,4 +306,26 @@ most tasks and for the few cases where more control is needed it provides access to the full zlib feature set.") (license bsd-3))) +(define-public ghc-stm + (package + (name "ghc-stm") + (version "2.4.4") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/stm/stm-" + version + ".tar.gz")) + (sha256 + (base32 + "0gc8zvdijp3rwmidkpxv76b4i0dc8dw6nbd92rxl4vxl0655iysx")))) + (build-system haskell-build-system) + (home-page "http://hackage.haskell.org/package/stm") + (synopsis "Software Transactional Memory") + (description + "A modular composable concurrency abstraction.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From e916e211023e34c2a01c36dd8378fbe4acadff3d Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 15:11:50 +0100 Subject: gnu: Add ghc-parallel. * gnu/packages/haskell.scm (ghc-parallel): New variable. --- gnu/packages/haskell.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 0c86d508c6..2e8244aca3 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -328,4 +328,26 @@ access to the full zlib feature set.") "A modular composable concurrency abstraction.") (license bsd-3))) +(define-public ghc-parallel + (package + (name "ghc-parallel") + (version "3.2.0.6") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/parallel/parallel-" + version + ".tar.gz")) + (sha256 + (base32 + "0hp6vf4zxsw6vz6lj505xihmnfhgjp39c9q7nyzlgcmps3xx6a5r")))) + (build-system haskell-build-system) + (home-page "http://hackage.haskell.org/package/parallel") + (synopsis "Parallel programming library") + (description + "This package provides a library for parallel programming.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From deb36de072167533597dfdca3ad21dc2e7291430 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 15:54:30 +0100 Subject: gnu: Add ghc-text. * gnu/packages/haskell.scm (ghc-text): New variable. --- gnu/packages/haskell.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 2e8244aca3..e8013f6f36 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -350,4 +350,35 @@ access to the full zlib feature set.") "This package provides a library for parallel programming.") (license bsd-3))) +(define-public ghc-text + (package + (name "ghc-text") + (version "1.2.0.4") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/text/text-" + version + ".tar.gz")) + (sha256 + (base32 + "004p1c74crs8wmjafwsmw3mmycspq1j8fpm1lvfpq6acha7bnpc6")))) + (build-system haskell-build-system) + (arguments + `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. + (home-page "https://github.com/bos/text") + (synopsis + "Efficient packed Unicode text type library.") + (description + "An efficient packed, immutable Unicode text type (both strict and +lazy), with a powerful loop fusion optimization framework. + +The 'Text' type represents Unicode character strings, in a time and +space-efficient manner. This package provides text processing +capabilities that are optimized for performance critical use, both +in terms of large data quantities and high speed.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From 775be802a3ec1e39ed55cdee30fe0b448bf4cf97 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 16:03:35 +0100 Subject: gnu: Add ghc-hashable. * gnu/packages/haskell.scm (ghc-hashable): New variable. --- gnu/packages/haskell.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index e8013f6f36..4ee8fd9357 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -381,4 +381,35 @@ capabilities that are optimized for performance critical use, both in terms of large data quantities and high speed.") (license bsd-3))) +(define-public ghc-hashable + (package + (name "ghc-hashable") + (version "1.2.3.2") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/hashable/hashable-" + version + ".tar.gz")) + (sha256 + (base32 + "0h9295pv2sgbaqlwpwbx2bap6nngm0jcdhkqham1wpjwyxqgqrlc")))) + (build-system haskell-build-system) + (arguments + `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. + ;; these inputs are necessary to use this library + (propagated-inputs + `(("ghc-text" ,ghc-text))) + (home-page "http://github.com/tibbe/hashable") + (synopsis + "Class for types that can be converted to a hash value") + (description + "This package defines a class, 'Hashable', for types that can be +converted to a hash value. This class exists for the benefit of hashing-based +data structures. The package provides instances for basic types and a way to +combine hash values.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From c3b90c0edb0f04b504adeb96f7dbd35ab8170965 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 16:08:00 +0100 Subject: gnu: Add ghc-hunit * gnu/packages/haskell.scm (ghc-hunit): New variable. --- gnu/packages/haskell.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 4ee8fd9357..cb11a07060 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -412,4 +412,27 @@ data structures. The package provides instances for basic types and a way to combine hash values.") (license bsd-3))) +(define-public ghc-hunit + (package + (name "ghc-hunit") + (version "1.2.5.2") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/HUnit/HUnit-" + version + ".tar.gz")) + (sha256 + (base32 + "0hcs6qh8bqhip1kkjjnw7ccgcsmawdz5yvffjj5y8zd2vcsavx8a")))) + (build-system haskell-build-system) + (home-page "http://hunit.sourceforge.net/") + (synopsis "Unit testing framework for Haskell") + (description + "HUnit is a unit testing framework for Haskell, inspired by the +JUnit tool for Java.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From df596b948d605484bdca37d0ed17b98054b70ce0 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 16:31:56 +0100 Subject: gnu: Add ghc-random. * gnu/packages/haskell.scm (ghc-random): New variable. --- gnu/packages/haskell.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index cb11a07060..d1320b0e5c 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -435,4 +435,24 @@ combine hash values.") JUnit tool for Java.") (license bsd-3))) +(define-public ghc-random + (package + (name "ghc-random") + (version "1.1") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/random/random-" + version + ".tar.gz")) + (sha256 + (base32 "0nis3lbkp8vfx8pkr6v7b7kr5m334bzb0fk9vxqklnp2aw8a865p")))) + (build-system haskell-build-system) + (home-page "http://hackage.haskell.org/package/random") + (synopsis "Random number library") + (description "This package provides a basic random number generation +library, including the ability to split random number generators.") + (license bsd-3))) ;;; haskell.scm ends here -- cgit v1.2.3 From 4af803a7c055bc1f651a6cee1c31addb1bc68aa7 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 17:27:11 +0100 Subject: gnu: Add ghc-primitive. * gnu/packages/haskell.scm (ghc-primitive): New variable. --- gnu/packages/haskell.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index d1320b0e5c..e25da78e00 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -455,4 +455,28 @@ JUnit tool for Java.") (description "This package provides a basic random number generation library, including the ability to split random number generators.") (license bsd-3))) + +(define-public ghc-primitive + (package + (name "ghc-primitive") + (version "0.5.4.0") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/primitive/primitive-" + version + ".tar.gz")) + (sha256 + (base32 + "05gdgj383xdrdkhxh26imlvs8ji0z28ny38ms9snpvv5i8l2lg10")))) + (build-system haskell-build-system) + (home-page + "https://github.com/haskell/primitive") + (synopsis "Primitive memory-related operations") + (description + "This package provides various primitive memory-related operations.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From c272160ab0632a71a7de4c79442419622ecb9dfe Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 17:29:42 +0100 Subject: gnu: Add ghc-tf-random. * gnu/packages/haskell.scm (ghc-tf-random): New variable. --- gnu/packages/haskell.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index e25da78e00..088a154cb0 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -479,4 +479,32 @@ library, including the ability to split random number generators.") "This package provides various primitive memory-related operations.") (license bsd-3))) +(define-public ghc-tf-random + (package + (name "ghc-tf-random") + (version "0.5") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/tf-random/tf-random-" + version + ".tar.gz")) + (sha256 + (base32 "0445r2nns6009fmq0xbfpyv7jpzwv0snccjdg7hwj4xk4z0cwc1f")))) + (build-system haskell-build-system) + ;; these inputs are necessary to use this package + (propagated-inputs + `(("ghc-primitive" ,ghc-primitive) + ("ghc-random" ,ghc-random))) + (home-page "http://hackage.haskell.org/package/tf-random") + (synopsis "High-quality splittable pseudorandom number generator") + (description "This package contains an implementation of a high-quality +splittable pseudorandom number generator. The generator is based on a +cryptographic hash function built on top of the ThreeFish block cipher. See +the paper \"Splittable Pseudorandom Number Generators Using Cryptographic +Hashing\" by Claessen, Pałka for details and the rationale of the design.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From dc0ae39a8f53d7672962e3640a18b51bb14eb8a5 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Tue, 7 Apr 2015 14:03:00 +0200 Subject: gnu: Add ghc-quickcheck. * gnu/packages/haskell.scm (ghc-quickcheck): New variable. --- gnu/packages/haskell.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 088a154cb0..31bc5ff3b0 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -507,4 +507,34 @@ the paper \"Splittable Pseudorandom Number Generators Using Cryptographic Hashing\" by Claessen, Pałka for details and the rationale of the design.") (license bsd-3))) +(define-public ghc-quickcheck + (package + (name "ghc-quickcheck") + (version "2.8") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/QuickCheck/QuickCheck-" + version + ".tar.gz")) + (sha256 + (base32 + "04xs6mq22bcnkpi616qrbm7jlivh9csnhmvjgp1ifq52an1wr4rx")))) + (build-system haskell-build-system) + (arguments + `(#:tests? #f ; FIXME: currently missing libraries used for tests. + #:configure-flags '("-f base4"))) + ;; these inputs are necessary to use this package + (propagated-inputs + `(("ghc-tf-random" ,ghc-tf-random))) + (home-page + "https://github.com/nick8325/quickcheck") + (synopsis + "Automatic testing of Haskell programs") + (description + "QuickCheck is a library for random testing of program properties.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From 7a1e8c74a307b775d98d44a1cc2d9df1f28f5c6a Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 17:43:11 +0100 Subject: gnu: Add ghc-case-insensitive. * gnu/packages/haskell.scm (ghc-case-insensitive): New variable. --- gnu/packages/haskell.scm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 31bc5ff3b0..2d9c350669 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -537,4 +537,38 @@ Hashing\" by Claessen, Pałka for details and the rationale of the design.") "QuickCheck is a library for random testing of program properties.") (license bsd-3))) +(define-public ghc-case-insensitive + (package + (name "ghc-case-insensitive") + (version "1.2.0.4") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/case-insensitive/case-insensitive-" + version + ".tar.gz")) + (sha256 + (base32 + "07nm40r9yw2p9qsfp3pjbsmyn4dabrxw34p48171zmccdd5hv0v3")))) + (build-system haskell-build-system) + (inputs + `(("ghc-hunit" ,ghc-hunit))) + ;; these inputs are necessary to use this library + (propagated-inputs + `(("ghc-text" ,ghc-text) + ("ghc-hashable" ,ghc-hashable))) + (arguments + `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. + (home-page + "https://github.com/basvandijk/case-insensitive") + (synopsis "Case insensitive string comparison") + (description + "The module 'Data.CaseInsensitive' provides the 'CI' type constructor +which can be parameterised by a string-like type like: 'String', 'ByteString', +'Text', etc.. Comparisons of values of the resulting type will be insensitive +to cases.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From eaa3088e2c689087d41abe9ce450d4f967b57b5f Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 17:51:04 +0100 Subject: gnu: Add ghc-syb. * gnu/packages/haskell.scm (ghc-syb): New variable. --- gnu/packages/haskell.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 2d9c350669..0ae6d921af 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -571,4 +571,35 @@ which can be parameterised by a string-like type like: 'String', 'ByteString', to cases.") (license bsd-3))) +(define-public ghc-syb + (package + (name "ghc-syb") + (version "0.4.4") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/syb/syb-" + version + ".tar.gz")) + (sha256 + (base32 + "11sc9kmfvcn9bfxf227fgmny502z2h9xs3z0m9ak66lk0dw6f406")))) + (build-system haskell-build-system) + (inputs + `(("ghc-hunit" ,ghc-hunit) + ("ghc-mtl" ,ghc-mtl))) + (home-page + "http://www.cs.uu.nl/wiki/GenericProgramming/SYB") + (synopsis "Scrap Your Boilerplate") + (description + "This package contains the generics system described in the +/Scrap Your Boilerplate/ papers (see +). +It defines the 'Data' class of types permitting folding and unfolding +of constructor applications, instances of this class for primitive +types, and a variety of traversals.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From 61c02099a3216a563db9401172f776a0a0d18bde Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 17:59:16 +0100 Subject: gnu: Add ghc-containers. * gnu/packages/haskell.scm (ghc-containers): New variable. --- gnu/packages/haskell.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 0ae6d921af..c3f9e57595 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -602,4 +602,34 @@ of constructor applications, instances of this class for primitive types, and a variety of traversals.") (license bsd-3))) +(define-public ghc-containers + (package + (name "ghc-containers") + (version "0.5.6.3") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/containers/containers-" + version + ".tar.gz")) + (sha256 + (base32 + "1kcd55nl0vzi99i8sr8fmc5j25fv7m0a9hd3nihnq1pd64pfciqn")))) + (build-system haskell-build-system) + (inputs + `(("ghc-hunit" ,ghc-hunit) + ("ghc-quickcheck" ,ghc-quickcheck))) + (arguments + `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. + (home-page "http://hackage.haskell.org/package/containers") + (synopsis "Assorted concrete container types") + (description + "This package contains efficient general-purpose implementations of +various basic immutable container types. The declared cost of each operation +is either worst-case or amortized, but remains valid even if structures are +shared.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From c5043f4aac33426bfe2c54f2db3bbf01b9c88f09 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 18:03:49 +0100 Subject: gnu: Add ghc-fgl. * gnu/packages/haskell.scm (ghc-fgl): New variable. --- gnu/packages/haskell.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index c3f9e57595..3a41eb2757 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -632,4 +632,30 @@ is either worst-case or amortized, but remains valid even if structures are shared.") (license bsd-3))) +(define-public ghc-fgl + (package + (name "ghc-fgl") + (version "5.5.1.0") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/fgl/fgl-" + version + ".tar.gz")) + (sha256 + (base32 + "0rcmz0xlyr1wj490ffja29z1jgl51gz19ka609da6bx39bwx7nga")))) + (build-system haskell-build-system) + (inputs `(("ghc-mtl" ,ghc-mtl))) + (home-page "http://web.engr.oregonstate.edu/~erwig/fgl/haskell") + (synopsis + "Martin Erwig's Functional Graph Library") + (description "The functional graph library, FGL, is a collection of type +and function definitions to address graph problems. The basis of the library +is an inductive definition of graphs in the style of algebraic data types that +encourages inductive, recursive definitions of graph algorithms.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From 01a687da098510547f52a066738ca0d3f85ebc45 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 18:12:43 +0100 Subject: gnu: Add ghc-unordered-containers. * gnu/packages/haskell.scm (ghc-unordered-containers): New variable. --- gnu/packages/haskell.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 3a41eb2757..bcc529b871 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -658,4 +658,37 @@ is an inductive definition of graphs in the style of algebraic data types that encourages inductive, recursive definitions of graph algorithms.") (license bsd-3))) +(define-public ghc-unordered-containers + (package + (name "ghc-unordered-containers") + (version "0.2.5.1") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/unordered-containers/unordered-containers-" + version + ".tar.gz")) + (sha256 + (base32 + "06l1xv7vhpxly75saxdrbc6p2zlgz1az278arfkz4rgawfnphn3f")))) + (build-system haskell-build-system) + (inputs + `(("ghc-hunit" ,ghc-hunit) + ("ghc-quickcheck" ,ghc-quickcheck))) + ;; these inputs are necessary to use this library + (propagated-inputs `(("ghc-hashable" ,ghc-hashable))) + (arguments + `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. + (home-page + "https://github.com/tibbe/unordered-containers") + (synopsis + "Efficient hashing-based container types") + (description + "Efficient hashing-based container types. The containers have been +optimized for performance critical use, both in terms of large data quantities +and high speed.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From d692228e8b47d40ce9c0b3fa74742eab138df419 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 18:20:18 +0100 Subject: gnu: Add ghc-split. * gnu/packages/haskell.scm (ghc-split): New variable. --- gnu/packages/haskell.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index bcc529b871..e930907fbd 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -691,4 +691,29 @@ optimized for performance critical use, both in terms of large data quantities and high speed.") (license bsd-3))) +(define-public ghc-split + (package + (name "ghc-split") + (version "0.2.2") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/split/split-" + version + ".tar.gz")) + (sha256 + (base32 + "0xa3j0gwr6k5vizxybnzk5fgb3pppgspi6mysnp2gwjp2dbrxkzr")))) + (build-system haskell-build-system) + (inputs + `(("ghc-quickcheck" ,ghc-quickcheck))) + (home-page "http://hackage.haskell.org/package/split") + (synopsis + "Combinator library for splitting lists") + (description "A collection of various methods for splitting lists into +parts, akin to the 'split' function found in several mainstream languages.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From fa468e879f93a98c87d73352b2d55f5c697d862c Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 18:30:06 +0100 Subject: gnu: Add ghc-parsec. * gnu/packages/haskell.scm (ghc-parsec): New variable. --- gnu/packages/haskell.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index e930907fbd..82f9d85453 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -716,4 +716,36 @@ and high speed.") parts, akin to the 'split' function found in several mainstream languages.") (license bsd-3))) +(define-public ghc-parsec + (package + (name "ghc-parsec") + (version "3.1.9") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/parsec/parsec-" + version + ".tar.gz")) + (sha256 + (base32 "1ja20cmj6v336jy87c6h3jzjp00sdbakwbdwp11iln499k913xvi")))) + (build-system haskell-build-system) + (inputs + `(("ghc-hunit" ,ghc-hunit))) + ;; these inputs are necessary to use this library + (propagated-inputs + `(("ghc-text" ,ghc-text) + ("ghc-mtl" ,ghc-mtl))) + (arguments + `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. + (home-page + "https://github.com/aslatter/parsec") + (synopsis "Monadic parser combinators") + (description "Parsec is a parser library. It is simple, safe, well +documented, has extensive libraries, good error messages, and is fast. It is +defined as a monad transformer that can be stacked on arbitrary monads, and it +is also parametric in the input stream type.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From f50fc13815d327c554fecf6f9bc96c1a6f2f4211 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 18:37:19 +0100 Subject: gnu: Add ghc-vector. * gnu/packages/haskell.scm (ghc-vector): New variable. --- gnu/packages/haskell.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 82f9d85453..ee150130ab 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -748,4 +748,33 @@ defined as a monad transformer that can be stacked on arbitrary monads, and it is also parametric in the input stream type.") (license bsd-3))) +(define-public ghc-vector + (package + (name "ghc-vector") + (version "0.10.12.2") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/vector/vector-" + version + ".tar.gz")) + (sha256 + (base32 + "01hc71k1z9m0g0dv4zsvq5d2dvbgyc5p01hryw5c53792yi2fm25")))) + (build-system haskell-build-system) + (inputs + `(("ghc-quickcheck" ,ghc-quickcheck))) + ;; these inputs are necessary to use this library + (propagated-inputs + `(("ghc-primitive" ,ghc-primitive))) + (arguments + `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. + (home-page "https://github.com/haskell/vector") + (synopsis "Efficient Arrays") + (description "An efficient implementation of Int-indexed arrays (both +mutable and immutable), with a powerful loop optimisation framework.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From abfed253e69c2ef2a7a1b728eee28b482e889c21 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 18:58:03 +0100 Subject: gnu: Add ghc-network. * gnu/packages/haskell.scm (ghc-network): New variable. --- gnu/packages/haskell.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index ee150130ab..0bf927f691 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -777,4 +777,34 @@ is also parametric in the input stream type.") mutable and immutable), with a powerful loop optimisation framework.") (license bsd-3))) +(define-public ghc-network + (package + (name "ghc-network") + (version "2.6.0.2") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/network/network-" + version + ".tar.gz")) + (sha256 + (base32 + "12b7saam5ga6l4cplgkad49xa4vkynz2ri9jxidx1cxiqjcl0vc4")))) + (build-system haskell-build-system) + (inputs + `(("ghc-hunit" ,ghc-hunit))) + (arguments + `(#:tests? #f ; FIXME: currently missing libraries used for tests. + #:phases + (modify-phases %standard-phases + (add-before configure set-sh + (lambda _ (setenv "CONFIG_SHELL" "sh")))))) + (home-page "https://github.com/haskell/network") + (synopsis "Low-level networking interface") + (description + "This package provides a low-level networking interface.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From 9ce031c57ff856712032658aa6a1aa418d7a37f6 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 19:15:21 +0100 Subject: gnu: Add ghc-network-uri. * gnu/packages/haskell.scm (ghc-network-uri): New variable. --- gnu/packages/haskell.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 0bf927f691..8240b461ae 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -807,4 +807,35 @@ mutable and immutable), with a powerful loop optimisation framework.") "This package provides a low-level networking interface.") (license bsd-3))) +(define-public ghc-network-uri + (package + (name "ghc-network-uri") + (version "2.6.0.1") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/network-uri/network-uri-" + version + ".tar.gz")) + (sha256 + (base32 + "09ymamb128jgqghpda4nixncr73all8qc6q53976aricm6a27p37")))) + (build-system haskell-build-system) + (inputs + `(("ghc-hunit" ,ghc-hunit) + ("ghc-network" ,ghc-network))) + (arguments + `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. + (propagated-inputs + `(("ghc-parsec" ,ghc-parsec))) + (home-page + "https://github.com/haskell/network-uri") + (synopsis "Labrary for URI manipulation") + (description "This package provides an URI manipulation inteface. In +'network-2.6' the 'Network.URI' module was split off from the 'network' +package into this package.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From a231ef7eec3246ed9e0ed3ec99eba4be334f635a Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 27 Mar 2015 19:17:57 +0100 Subject: gnu: Add ghc-http. * gnu/packages/haskell.scm (ghc-http): New variable. --- gnu/packages/haskell.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 8240b461ae..254301e6c8 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -838,4 +838,37 @@ mutable and immutable), with a powerful loop optimisation framework.") package into this package.") (license bsd-3))) +(define-public ghc-http + (package + (name "ghc-http") + (version "4000.2.19") + (outputs '("out" "doc")) + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/HTTP/HTTP-" + version + ".tar.gz")) + (sha256 + (base32 + "1yzm8gimh8g0wwbixcbxg60v4l3vgi63w9v55ms0x9qnm6vrgysz")))) + (build-system haskell-build-system) + (inputs + `(("ghc-hunit" ,ghc-hunit))) + (propagated-inputs + `(("ghc-parsec" ,ghc-parsec) + ("ghc-mtl" ,ghc-mtl) + ("ghc-network" ,ghc-network) + ("ghc-network-uri" ,ghc-network-uri))) + (arguments + `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. + (home-page "https://github.com/haskell/HTTP") + (synopsis "Library for client-side HTTP") + (description + "The HTTP package supports client-side web programming in Haskell. It +lets you set up HTTP connections, transmitting requests and processing the +responses coming back.") + (license bsd-3))) + ;;; haskell.scm ends here -- cgit v1.2.3 From 9bea87a542d52bcaedfb4febb01bbe94b69934cf Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 8 Apr 2015 21:23:45 +0200 Subject: activation: Remove undeclared user accounts and groups. Fixes . Reported by David Thompson . * gnu/build/activation.scm (enumerate, current-users, current-groups, delete-user, delete-group): New procedures. (activate-users+groups): Add calls to 'delete-user' and 'delete-group'. * doc/guix.texi (User Accounts): Add a paragraph about statelessness. Explain that passwords are preserved. --- doc/guix.texi | 16 ++++++++++++++-- gnu/build/activation.scm | 49 +++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 60 insertions(+), 5 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 70604b7603..c0af4cb722 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4238,7 +4238,9 @@ command, from the same-named package. This relies on the @node User Accounts @subsection User Accounts -User accounts are specified with the @code{user-account} form: +User accounts and groups are entirely managed through the +@code{operating-system} declaration. They are specified with the +@code{user-account} and @code{user-group} forms: @example (user-account @@ -4252,6 +4254,14 @@ User accounts are specified with the @code{user-account} form: (home-directory "/home/alice")) @end example +When booting or upon completion of @command{guix system reconfigure}, +the system ensures that only the user accounts and groups specified in +the @code{operating-system} declaration exist, and with the specified +properties. Thus, account or group creations or modifications made by +directly invoking commands such as @command{useradd} are lost upon +reconfiguration or reboot. This ensures that the system remains exactly +as declared. + @deftp {Data Type} user-account Objects of this type represent user accounts. The following members may be specified: @@ -4291,7 +4301,9 @@ graphical login managers do not list them. @item @code{password} (default: @code{#f}) You would normally leave this field to @code{#f}, initialize user passwords as @code{root} with the @command{passwd} command, and then let -users change it with @command{passwd}. +users change it with @command{passwd}. Passwords set with +@command{passwd} are of course preserved across reboot and +reconfiguration. If you @emph{do} want to have a preset password for an account, then this field must contain the encrypted password, as a string. diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm index 909e971833..64c3410baf 100644 --- a/gnu/build/activation.scm +++ b/gnu/build/activation.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. @@ -40,6 +40,24 @@ ;;; ;;; Code: +(define (enumerate thunk) + "Return the list of values returned by THUNK until it returned #f." + (let loop ((entry (thunk)) + (result '())) + (if (not entry) + (reverse result) + (loop (thunk) (cons entry result))))) + +(define (current-users) + "Return the passwd entries for all the currently defined user accounts." + (setpw) + (enumerate getpwent)) + +(define (current-groups) + "Return the group entries for all the currently defined user groups." + (setgr) + (enumerate getgrent)) + (define* (add-group name #:key gid password system? (log-port (current-error-port))) "Add NAME as a user group, with the given numeric GID if specified." @@ -128,6 +146,17 @@ properties. Return #t on success." ,name))) (zero? (apply system* "usermod" args)))) +(define* (delete-user name #:key (log-port (current-error-port))) + "Remove user account NAME. Return #t on success. This may fail if NAME is +logged in." + (format log-port "deleting user '~a'...~%" name) + (zero? (system* "userdel" name))) + +(define* (delete-group name #:key (log-port (current-error-port))) + "Remove group NAME. Return #t on success." + (format log-port "deleting group '~a'...~%" name) + (zero? (system* "groupdel" name))) + (define* (ensure-user name group #:key uid comment home shell password system? (supplementary-groups '()) @@ -186,8 +215,22 @@ numeric gid or #f." #:system? system?)))) groups) - ;; Finally create the other user accounts. - (for-each activate-user users)) + ;; Create the other user accounts. + (for-each activate-user users) + + ;; Finally, delete extra user accounts and groups. + (for-each delete-user + (lset-difference string=? + (map passwd:name (current-users)) + (match users + (((names . _) ...) + names)))) + (for-each delete-group + (lset-difference string=? + (map group:name (current-groups)) + (match groups + (((names . _) ...) + names))))) (define (activate-etc etc) "Install ETC, a directory in the store, as the source of static files for -- cgit v1.2.3 From 0cc0095f3c5ad18ee701aeea14c390225feccb2f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 8 Apr 2015 21:38:52 +0200 Subject: http-client: Add workaround for HTTP pipelining on Guile <= 2.0.9. Reported by Ricardo Wurmus . * guix/http-client.scm (make-delimited-input-port): New procedure. Install it in (web response) for Guile <= 2.0.9. --- guix/http-client.scm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/guix/http-client.scm b/guix/http-client.scm index 051fceecb5..3bffbb1c24 100644 --- a/guix/http-client.scm +++ b/guix/http-client.scm @@ -135,6 +135,47 @@ closed it will also close PORT, unless the KEEP-ALIVE? is true." (when (module-variable %web-http 'read-chunk-body) (module-set! %web-http 'make-chunked-input-port make-chunked-input-port)) + (define (make-delimited-input-port port len keep-alive?) + "Return an input port that reads from PORT, and makes sure that +exactly LEN bytes are available from PORT. Closing the returned port +closes PORT, unless KEEP-ALIVE? is true." + (define bytes-read 0) + + (define (fail) + ((@@ (web response) bad-response) + "EOF while reading response body: ~a bytes of ~a" + bytes-read len)) + + (define (read! bv start count) + ;; Read at most LEN bytes in total. HTTP/1.1 doesn't say what to do + ;; when a server provides more than the Content-Length, but it seems + ;; wise to just stop reading at LEN. + (let ((count (min count (- len bytes-read)))) + (let loop ((ret (get-bytevector-n! port bv start count))) + (cond ((eof-object? ret) + (if (= bytes-read len) + 0 ; EOF + (fail))) + ((and (zero? ret) (> count 0)) + ;; Do not return zero since zero means EOF, so try again. + (loop (get-bytevector-n! port bv start count))) + (else + (set! bytes-read (+ bytes-read ret)) + ret))))) + + (define close + (and (not keep-alive?) + (lambda () + (close port)))) + + (make-custom-binary-input-port "delimited input port" read! #f #f close)) + + (unless (guile-version>? "2.0.9") + ;; Guile <= 2.0.9 had a bug whereby 'response-body-port' would read more + ;; than what 'content-length' says. See Guile commit 802a25b. + (module-set! (resolve-module '(web response)) + 'make-delimited-input-port make-delimited-input-port)) + (define (read-response-body* r) "Reads the response body from @var{r}, as a bytevector. Returns @code{#f} if there was no response body." -- cgit v1.2.3 From 1421afa94a825d413a5609ef0d89b878e1ba458c Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 9 Apr 2015 01:48:05 -0400 Subject: gnu: gcc: Do not pass -dynamic-linker to linker when !shared on arm. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes . * gnu/packages/patches/gcc-arm-link-spec-fix.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/gcc.scm (gcc-4.8, gcc-4.9): Add patch. * gnu/packages/cross-base.scm (cross-gcc): Preserve patches from gcc-4.8. Co-Authored-By: Ludovic Courtès --- gnu-system.am | 1 + gnu/packages/cross-base.scm | 6 ++++-- gnu/packages/gcc.scm | 6 ++++-- gnu/packages/patches/gcc-arm-link-spec-fix.patch | 16 ++++++++++++++++ 4 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 gnu/packages/patches/gcc-arm-link-spec-fix.patch diff --git a/gnu-system.am b/gnu-system.am index f9b58ddaa7..e09ea333f1 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -412,6 +412,7 @@ dist_patch_DATA = \ gnu/packages/patches/flashrom-use-libftdi1.patch \ gnu/packages/patches/flex-bison-tests.patch \ gnu/packages/patches/gawk-shell.patch \ + gnu/packages/patches/gcc-arm-link-spec-fix.patch \ gnu/packages/patches/gcc-cross-environment-variables.patch \ gnu/packages/patches/geoclue-config.patch \ gnu/packages/patches/ghostscript-runpath.patch \ diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm index 0f15a0aaec..01cfdf73e8 100644 --- a/gnu/packages/cross-base.scm +++ b/gnu/packages/cross-base.scm @@ -202,8 +202,10 @@ GCC that does not target a libc; otherwise, target that libc." target)) (source (origin (inherit (package-source gcc-4.8)) (patches - (cons (search-patch "gcc-cross-environment-variables.patch") - (cross-gcc-patches target))))) + (append + (origin-patches (package-source gcc-4.8)) + (cons (search-patch "gcc-cross-environment-variables.patch") + (cross-gcc-patches target)))))) ;; For simplicity, use a single output. Otherwise libgcc_s & co. are not ;; found by default, etc. diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 4c06f84155..2a3749fb5c 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -309,7 +309,8 @@ Go. It also includes runtime support libraries for these languages.") version "/gcc-" version ".tar.bz2")) (sha256 (base32 - "15c6gwm6dzsaagamxkak5smdkf1rdfbqqjs9jdbrp3lbg4ism02a")))))) + "15c6gwm6dzsaagamxkak5smdkf1rdfbqqjs9jdbrp3lbg4ism02a")) + (patches (list (search-patch "gcc-arm-link-spec-fix.patch"))))))) (define-public gcc-4.9 (package (inherit gcc-4.7) @@ -320,7 +321,8 @@ Go. It also includes runtime support libraries for these languages.") version "/gcc-" version ".tar.bz2")) (sha256 (base32 - "1pbjp4blk2ycaa6r3jmw4ky5f1s9ji3klbqgv8zs2sl5jn1cj810")))))) + "1pbjp4blk2ycaa6r3jmw4ky5f1s9ji3klbqgv8zs2sl5jn1cj810")) + (patches (list (search-patch "gcc-arm-link-spec-fix.patch"))))))) (define* (custom-gcc gcc name languages #:key (separate-lib-output? #t)) "Return a custom version of GCC that supports LANGUAGES." diff --git a/gnu/packages/patches/gcc-arm-link-spec-fix.patch b/gnu/packages/patches/gcc-arm-link-spec-fix.patch new file mode 100644 index 0000000000..0ffe8a1810 --- /dev/null +++ b/gnu/packages/patches/gcc-arm-link-spec-fix.patch @@ -0,0 +1,16 @@ +Do not pass -dynamic-linker to linker when !shared. +Fixes . + +Patch by Ludovic Courtès . + +--- gcc-4.8.4/gcc/config/arm/linux-elf.h.orig 2015-04-08 20:31:20.376900478 +0200 ++++ gcc-4.8.4/gcc/config/arm/linux-elf.h 2015-04-08 20:31:36.437014437 +0200 +@@ -65,7 +65,7 @@ + %{symbolic:-Bsymbolic} \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +- -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \ ++ %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \ + -X \ + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC -- cgit v1.2.3 From c833ab556f811da6d1d9e467cb85b36e5d006cc7 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 18 Mar 2015 17:59:20 +0100 Subject: gnu: Add Shogun. * gnu/packages/bioinformatics.scm (shogun): New variable. --- gnu/packages/bioinformatics.scm | 109 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 9813d07e9c..b122b6d83d 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -30,13 +30,17 @@ #:use-module (gnu packages base) #:use-module (gnu packages compression) #:use-module (gnu packages java) + #:use-module (gnu packages maths) #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages popt) #:use-module (gnu packages python) + #:use-module (gnu packages statistics) + #:use-module (gnu packages swig) #:use-module (gnu packages tbb) #:use-module (gnu packages vim) + #:use-module (gnu packages xml) #:use-module (gnu packages zip)) (define-public bedops @@ -1001,6 +1005,111 @@ sequences.") ;; STAR is licensed under GPLv3 or later; htslib is MIT-licensed. (license license:gpl3+))) +(define-public shogun + (package + (name "shogun") + (version "4.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "ftp://shogun-toolbox.org/shogun/releases/" + (version-major+minor version) + "/sources/shogun-" version ".tar.bz2")) + (sha256 + (base32 + "159nlijnb7mnrv9za80wnm1shwvy45hgrqzn51hxy7gw4z6d6fdb")))) + (build-system cmake-build-system) + (arguments + '(#:tests? #f ;no check target + #:phases + (alist-cons-after + 'unpack 'delete-broken-symlinks + (lambda _ + (for-each delete-file '("applications/arts/data" + "applications/asp/data" + "applications/easysvm/data" + "applications/msplicer/data" + "applications/ocr/data" + "examples/documented/data" + "examples/documented/matlab_static" + "examples/documented/octave_static" + "examples/undocumented/data" + "examples/undocumented/matlab_static" + "examples/undocumented/octave_static" + "tests/integration/data" + "tests/integration/matlab_static" + "tests/integration/octave_static" + "tests/integration/python_modular/tests")) + #t) + (alist-cons-after + 'unpack 'change-R-target-path + (lambda* (#:key outputs #:allow-other-keys) + (substitute* '("src/interfaces/r_modular/CMakeLists.txt" + "src/interfaces/r_static/CMakeLists.txt" + "examples/undocumented/r_modular/CMakeLists.txt") + (("\\$\\{R_COMPONENT_LIB_PATH\\}") + (string-append (assoc-ref outputs "out") + "/lib/R/library/"))) + #t) + (alist-cons-after + 'unpack 'fix-octave-modules + (lambda* (#:key outputs #:allow-other-keys) + (substitute* '("src/interfaces/octave_modular/CMakeLists.txt" + "src/interfaces/octave_static/CMakeLists.txt") + (("^include_directories\\(\\$\\{OCTAVE_INCLUDE_DIRS\\}") + "include_directories(${OCTAVE_INCLUDE_DIRS} ${OCTAVE_INCLUDE_DIRS}/octave")) + + ;; change target directory + (substitute* "src/interfaces/octave_modular/CMakeLists.txt" + (("\\$\\{OCTAVE_OCT_LOCAL_API_FILE_DIR\\}") + (string-append (assoc-ref outputs "out") + "/share/octave/packages"))) + #t) + (alist-cons-before + 'build 'set-HOME + ;; $HOME needs to be set at some point during the build phase + (lambda _ (setenv "HOME" "/tmp") #t) + %standard-phases)))) + #:configure-flags + (list "-DUSE_SVMLIGHT=OFF" ;disable proprietary SVMLIGHT + ;;"-DJavaModular=ON" ;requires unpackaged jblas + ;;"-DRubyModular=ON" ;requires unpackaged ruby-narray + ;;"-DPerlModular=ON" ;"FindPerlLibs" does not exist + ;;"-DLuaModular=ON" ;fails because lua doesn't build pkgconfig file + "-DOctaveModular=ON" + "-DOctaveStatic=ON" + "-DPythonModular=ON" + "-DPythonStatic=ON" + "-DRModular=ON" + "-DRStatic=ON" + "-DCmdLineStatic=ON"))) + (inputs + `(("python" ,python) + ("numpy" ,python-numpy) + ("r" ,r) + ("octave" ,octave) + ("swig" ,swig) + ("hdf5" ,hdf5) + ("atlas" ,atlas) + ("arpack" ,arpack-ng) + ("lapack" ,lapack) + ("glpk" ,glpk) + ("libxml2" ,libxml2) + ("lzo" ,lzo) + ("zlib" ,zlib))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://shogun-toolbox.org/") + (synopsis "Machine learning toolbox") + (description + "The Shogun Machine learning toolbox provides a wide range of unified and +efficient Machine Learning (ML) methods. The toolbox seamlessly allows to +combine multiple data representations, algorithm classes, and general purpose +tools. This enables both rapid prototyping of data pipelines and extensibility +in terms of new algorithms.") + (license license:gpl3+))) + (define-public vcftools (package (name "vcftools") -- cgit v1.2.3 From 0be199c976332fd655c547bb122d1214cc9bc452 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 9 Apr 2015 18:32:32 +0200 Subject: gnu: nettle: Make version 3 the default. * gnu/packages/nettle.scm (nettle): Rename to... (nettle-2): ... this. (nettle-3): Rename to... (nettle): ... this. * gnu/packages/gnutls.scm (gnutls): Use NETTLE-2. * gnu/packages/lsh.scm (lsh): Likewise. --- gnu/packages/gnutls.scm | 2 +- gnu/packages/lsh.scm | 4 ++-- gnu/packages/nettle.scm | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gnu/packages/gnutls.scm b/gnu/packages/gnutls.scm index b2176ec191..ec427e301a 100644 --- a/gnu/packages/gnutls.scm +++ b/gnu/packages/gnutls.scm @@ -140,7 +140,7 @@ living in the same process.") (propagated-inputs ;; These are all in the 'Requires.private' field of gnutls.pc. `(("libtasn1" ,libtasn1) - ("nettle" ,nettle) + ("nettle" ,nettle-2) ("zlib" ,zlib))) (home-page "http://www.gnu.org/software/gnutls/") (synopsis "Transport layer security library") diff --git a/gnu/packages/lsh.scm b/gnu/packages/lsh.scm index a931a111ad..0edf6b4382 100644 --- a/gnu/packages/lsh.scm +++ b/gnu/packages/lsh.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -91,7 +91,7 @@ basis for almost any application.") ("gperf" ,gperf) ("psmisc" ,psmisc))) ; for `killall' (inputs - `(("nettle" ,nettle) + `(("nettle" ,nettle-2) ("linux-pam" ,linux-pam) ;; 'rl.c' uses the 'CPPFunction' type, which is no longer in diff --git a/gnu/packages/nettle.scm b/gnu/packages/nettle.scm index 0df8f001bf..ae432c7bc7 100644 --- a/gnu/packages/nettle.scm +++ b/gnu/packages/nettle.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,7 +24,7 @@ #:use-module (gnu packages multiprecision) #:use-module (gnu packages m4)) -(define-public nettle +(define-public nettle-2 (package (name "nettle") (version "2.7.1") @@ -53,10 +53,10 @@ cryptographic toolkits for object-oriented languages or in applications themselves.") (license gpl2+))) -(define-public nettle-3 +(define-public nettle ;; This version is not API-compatible with version 2. In particular GnuTLS ;; cannot use it yet. So keep it separate. - (package (inherit nettle) + (package (inherit nettle-2) (version "3.0") (source (origin (method url-fetch) -- cgit v1.2.3 From 2891974c35c5a24395b9583db3dfec4170734650 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 9 Apr 2015 18:42:08 +0200 Subject: gnu: nettle: Update to 3.1. * gnu/packages/nettle.scm (nettle): Update to 3.1. Add 'arguments' field. --- gnu/packages/nettle.scm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gnu/packages/nettle.scm b/gnu/packages/nettle.scm index ae432c7bc7..827fed2b1d 100644 --- a/gnu/packages/nettle.scm +++ b/gnu/packages/nettle.scm @@ -17,6 +17,7 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages nettle) + #:use-module (guix utils) #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) @@ -57,11 +58,17 @@ themselves.") ;; This version is not API-compatible with version 2. In particular GnuTLS ;; cannot use it yet. So keep it separate. (package (inherit nettle-2) - (version "3.0") + (version "3.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/nettle/nettle-" version ".tar.gz")) (sha256 (base32 - "04yrpjz33vrj6j0zxc153b00f93i8hs41syr1ryp7sr64fyw0lcn")))))) + "1ly9kz5fgc8ilykz07crqwgjsfn4p2s6565gj1aq0w4fr179v1gn")))) + (arguments + (substitute-keyword-arguments (package-arguments nettle-2) + ((#:configure-flags flags) + ;; Build "fat" binaries where the right implementation is chosen at + ;; run time based on CPU features (starting from 3.1.) + `(cons "--enable-fat" ,flags)))))) -- cgit v1.2.3 From afd40799e451ae7eeeacc97e30924c294e8b2c1e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 9 Apr 2015 19:04:02 +0200 Subject: gnu: libtasn1: Update to 4.4 [fix for CVE-2015-2806]. * gnu/packages/gnutls.scm (libtasn1): Update to 4.4. --- gnu/packages/gnutls.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnutls.scm b/gnu/packages/gnutls.scm index ec427e301a..2a77243ef4 100644 --- a/gnu/packages/gnutls.scm +++ b/gnu/packages/gnutls.scm @@ -38,7 +38,7 @@ (define-public libtasn1 (package (name "libtasn1") - (version "4.2") + (version "4.4") (source (origin (method url-fetch) @@ -46,7 +46,7 @@ version ".tar.gz")) (sha256 (base32 - "1fydwh5hlnmprdzmzn4kiqb939br59qv1001k7ah5b626v5l2fv9")))) + "0p8c5s1gm3z3nn4s9qc6gs18grbk45mx44byqw2l2qzynjqrsd7q")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) -- cgit v1.2.3 From 12f7f4aa276d98b57c33c6742c585144416223dd Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sun, 5 Apr 2015 12:08:11 +0200 Subject: gnu: gnome-desktop: Update to 3.16.0. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/gnome.scm (gnome-desktop): Update to 3.16.0. Signed-off-by: Ludovic Courtès --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index ddb8a1f45e..b72a83b00f 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -103,7 +103,7 @@ features to enable users to create their discs easily and quickly.") (define-public gnome-desktop (package (name "gnome-desktop") - (version "3.10.0") + (version "3.16.0") (source (origin (method url-fetch) @@ -112,7 +112,7 @@ features to enable users to create their discs easily and quickly.") name "-" version ".tar.xz")) (sha256 (base32 - "0p5p6wvmy5zvcdnmp5h2biz7rjrcw99chq5kkwcnb68flcmkb1ry")))) + "05lvik5cdh51xqd332qingph09zdhiaa1kqy9k2sk1simz4pvf8m")))) (build-system gnu-build-system) (native-inputs `(("intltool" ,intltool) -- cgit v1.2.3 From 2bfe74378cbd1ebb4ae511f70daa3019723acbb7 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Tue, 7 Apr 2015 11:49:40 +0200 Subject: gnu: Add geocode-glib. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/gnome.scm (geocode-glib): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/gnome.scm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index b72a83b00f..fe4437f179 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1990,3 +1990,41 @@ location-aware applications as simple as possible, while the secondary goal is to ensure that no application can access location information without explicit permission from user. ") (license license:gpl2+))) + +(define-public geocode-glib + (package + (name "geocode-glib") + (version "3.16.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/geocode-glib/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1cbfv0kds6b6k0cl7q47xpj3x1scwcd7m68zl1rf7i4hmhw4hpqj")))) + (build-system gnu-build-system) + (arguments + `(;; The tests want to write to $HOME/.cache/geocode-glib, which doesn't + ;; work for the builder. Punt. + #:tests? #f + #:make-flags '("CC=gcc") ; for g-ir-scanner + )) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-mkenums + ("gobject-introspection" ,gobject-introspection) + ("pkg-config" ,pkg-config) + ("json-glib" ,json-glib))) + (propagated-inputs + ;; geocode-glib-1.0.pc refers to GIO. + `(("glib" ,glib))) + (inputs + `(("libsoup" ,libsoup))) + (home-page "https://github.com/GNOME/geocode-glib/") + (synopsis "Geocoding and reverse-geocoding library") + (description + "geocode-glib is a convenience library for geocoding (finding longitude, +and latitude from an address) and reverse geocoding (finding an address from +coordinates) using the Nominatim service. geocode-glib caches requests for +faster results and to avoid unnecessary server load.") + (license license:lgpl2.0+))) -- cgit v1.2.3 From ee3e157dec3512778502f20538c581f5e28d63fe Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 9 Apr 2015 23:44:14 +0200 Subject: Add Bash completion file. * etc/completion/bash/guix: New file. * Makefile.am (dist_bashcompletion_DATA): New variable. * configure.ac: Add --with-bash-completion-dir. --- Makefile.am | 3 + configure.ac | 7 +++ etc/completion/bash/guix | 139 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 149 insertions(+) create mode 100644 etc/completion/bash/guix diff --git a/Makefile.am b/Makefile.am index d54e281163..51884b9221 100644 --- a/Makefile.am +++ b/Makefile.am @@ -240,6 +240,9 @@ tests/guix-gc.log: \ # Public key used to sign substitutes from hydra.gnu.org. dist_pkgdata_DATA = hydra.gnu.org.pub +# Bash completion file. +dist_bashcompletion_DATA = etc/completion/bash/guix + EXTRA_DIST = \ HACKING \ ROADMAP \ diff --git a/configure.ac b/configure.ac index 6f261cdb63..2227c71c1b 100644 --- a/configure.ac +++ b/configure.ac @@ -34,6 +34,13 @@ AC_ARG_WITH(store-dir, [storedir="/gnu/store"]) AC_SUBST(storedir) +AC_ARG_WITH([bash-completion-dir], + AC_HELP_STRING([--with-bash-completion-dir=DIR], + [name of the Bash completion directory]), + [bashcompletiondir="$withval"], + [bashcompletiondir='${sysconfdir}/bash_completion.d']) +AC_SUBST([bashcompletiondir]) + dnl Better be verbose. AC_MSG_CHECKING([for the store directory]) AC_MSG_RESULT([$storedir]) diff --git a/etc/completion/bash/guix b/etc/completion/bash/guix new file mode 100644 index 0000000000..2a3fa1201e --- /dev/null +++ b/etc/completion/bash/guix @@ -0,0 +1,139 @@ +# GNU Guix --- Functional package management for GNU +# Copyright © 2015 Ludovic Courtès +# +# This file is part of GNU Guix. +# +# GNU Guix is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or (at +# your option) any later version. +# +# GNU Guix is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Guix. If not, see . + +# Bash completion for Guix commands. + +_guix_complete_available_package () +{ + local prefix="$1" + local packages="$(${COMP_WORDS[0]} package -A "^$prefix" | cut -f1)" + COMPREPLY=($(compgen -W "$packages" -- "$prefix")) +} + +_guix_complete_installed_package () +{ + local prefix="$1" + local packages="$(${COMP_WORDS[0]} package -I "^$prefix" | cut -f1)" + COMPREPLY=($(compgen -W "$packages" -- "$prefix")) +} + +_guix_complete_option () +{ + local options="$(${COMP_WORDS[0]} ${COMP_WORDS[1]} --help \ + | grep '^ -' \ + | sed -e's/^.*--\([a-zA-Z0-9_-]\+\)\(=\?\).*/--\1\2/g' )" + compopt -o nospace + COMPREPLY=($(compgen -W "$options" -- "${COMP_WORDS[$word_count - 1]}")) +} + +_guix_is_command () +{ + local word + local result="false" + for word in ${COMP_WORDS[*]} + do + if [ "$word" = "$1" ] + then + result=true + break + fi + done + $result +} + +_guix_is_removing () +{ + local word + local result="false" + for word in ${COMP_WORDS[*]} + do + case "$word" in + --remove|--remove=*|-r) + result=true + break + ;; + esac + done + $result +} + +_guix_is_dash_L () +{ + [ "${COMP_WORDS[$COMP_CWORD - 1]}" = "-L" ] \ + || { case "${COMP_WORDS[$COMP_CWORD]}" in + --load-path=*) true;; + *) false;; + esac } +} + +_guix_complete_file () +{ + # Let Readline complete file names. + compopt -o default + COMPREPLY=() +} + +_guix_complete () +{ + local word_count=${#COMP_WORDS[*]} + local word_at_point="${COMP_WORDS[$COMP_CWORD]}" + + if [ "$COMP_CWORD" -gt 1 ] + then + case "$word_at_point" in + -*) + _guix_complete_option "$word_at_point" + return + ;; + esac + fi + + case $COMP_CWORD in + 1) + local subcommands="$(guix --help | grep '^ ' | cut -c 2-)" + COMPREPLY=($(compgen -W "$subcommands" -- "$word_at_point")) + ;; + *) + if _guix_is_command "package" + then + if _guix_is_dash_L + then + _guix_complete_file + elif _guix_is_removing + then + _guix_complete_installed_package "$word_at_point" + else + _guix_complete_available_package "$word_at_point" + fi + elif _guix_is_command "system" + then + _guix_complete_file # TODO: complete sub-commands + elif _guix_is_command "hash" + then + _guix_complete_file + elif _guix_is_command "import" # TODO: complete sub-commands + then + _guix_complete_file + else + _guix_complete_available_package "$word_at_point" + fi + ;; + esac +} + +complete -F _guix_complete guix -- cgit v1.2.3 From 08c045091e8d8da3b4c677540ed577e8f2448b0d Mon Sep 17 00:00:00 2001 From: Cyril Roelandt Date: Fri, 10 Apr 2015 00:19:20 +0200 Subject: python: Update to 3.4.3 * gnu/packages/python.scm (python): Update from 3.3.5 to 3.4.3. * gnu/packages/patches/python-fix-tests.patch: Update the required test fixes. * gnu/packages/patches/python-libffi-mips-n32-fix.patch: Remove it... * gnu-system.am (dist_patch_DATA): ... and do not reference it here. --- gnu-system.am | 1 - gnu/packages/patches/python-fix-tests.patch | 53 +++++++++++++++++++++- .../patches/python-libffi-mips-n32-fix.patch | 21 --------- gnu/packages/python.scm | 8 ++-- 4 files changed, 54 insertions(+), 29 deletions(-) delete mode 100644 gnu/packages/patches/python-libffi-mips-n32-fix.patch diff --git a/gnu-system.am b/gnu-system.am index 969a9116f0..3c0315e306 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -510,7 +510,6 @@ dist_patch_DATA = \ gnu/packages/patches/pybugz-stty.patch \ gnu/packages/patches/pyqt-configure.patch \ gnu/packages/patches/python-fix-tests.patch \ - gnu/packages/patches/python-libffi-mips-n32-fix.patch \ gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch \ gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \ gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch \ diff --git a/gnu/packages/patches/python-fix-tests.patch b/gnu/packages/patches/python-fix-tests.patch index 70e4aa05d5..82c19980f9 100644 --- a/gnu/packages/patches/python-fix-tests.patch +++ b/gnu/packages/patches/python-fix-tests.patch @@ -64,8 +64,8 @@ http://bugs.python.org/issue20868 . @unittest.skipUnless(support.is_resource_enabled('network'), 'network is not enabled') def test_idna(self): ---- Lib/test/test_multiprocessing.py 2014-04-06 23:12:27.575235000 +0200 -+++ Lib/test/test_multiprocessing.py 2014-04-06 23:13:04.827235000 +0200 +--- Lib/test/_test_multiprocessing.py 2014-04-06 23:12:27.575235000 +0200 ++++ Lib/test/_test_multiprocessing.py 2014-04-06 23:13:04.827235000 +0200 @@ -1016,6 +1016,7 @@ if pid is not None: os.kill(pid, signal.SIGINT) @@ -112,3 +112,52 @@ http://bugs.python.org/issue20868 . def test_issue_8959_a(self): from ctypes.util import find_library libc_path = find_library("c") +--- Tools/scripts/run_tests.py.orig 2015-04-06 03:52:17.484000000 +0200 ++++ Tools/scripts/run_tests.py 2015-04-06 03:52:25.880000000 +0200 +@@ -47,7 +47,7 @@ + if threading and not any(is_multiprocess_flag(arg) for arg in regrtest_args): + args.extend(['-j', '0']) # Use all CPU cores + if not any(is_resource_use_flag(arg) for arg in regrtest_args): +- args.extend(['-u', 'all,-largefile,-audio,-gui']) ++ args.extend(['-u', 'all,-largefile,-audio,-gui,-network']) + args.extend(regrtest_args) + print(' '.join(args)) + os.execv(sys.executable, args) +--- Lib/distutils/tests/test_archive_util.py.orig 2015-04-06 04:08:49.288000000 +0200 ++++ Lib/distutils/tests/test_archive_util.py 2015-04-06 04:09:34.396000000 +0200 +@@ -282,6 +282,7 @@ + finally: + del ARCHIVE_FORMATS['xxx'] + ++ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix") + def test_make_archive_owner_group(self): + # testing make_archive with owner and group, with various combinations + # this works even if there's not gid/uid support +@@ -310,6 +311,7 @@ + + @unittest.skipUnless(ZLIB_SUPPORT, "Requires zlib") + @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support") ++ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix") + def test_tarfile_root_owner(self): + tmpdir, tmpdir2, base_name = self._create_files() + old_dir = os.getcwd() +--- Lib/distutils/tests/test_sdist.py.orig 2015-04-06 04:10:05.264000000 +0200 ++++ Lib/distutils/tests/test_sdist.py 2015-04-06 04:10:21.448000000 +0200 +@@ -435,6 +435,7 @@ + "The tar command is not found") + @unittest.skipIf(find_executable('gzip') is None, + "The gzip command is not found") ++ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix") + def test_make_distribution_owner_group(self): + # now building a sdist + dist, cmd = self.get_cmd() +--- Lib/test/test_resource.py.orig 2015-04-06 21:30:24.708000000 +0200 ++++ Lib/test/test_resource.py 2015-04-06 23:07:27.220000000 +0200 +@@ -146,6 +146,7 @@ + + @unittest.skipUnless(hasattr(resource, 'prlimit'), 'no prlimit') + @support.requires_linux_version(2, 6, 36) ++ @unittest.skipIf(True, "Bug: the PermissionError is not raised") + def test_prlimit(self): + self.assertRaises(TypeError, resource.prlimit) + if os.geteuid() != 0: diff --git a/gnu/packages/patches/python-libffi-mips-n32-fix.patch b/gnu/packages/patches/python-libffi-mips-n32-fix.patch deleted file mode 100644 index 393883779d..0000000000 --- a/gnu/packages/patches/python-libffi-mips-n32-fix.patch +++ /dev/null @@ -1,21 +0,0 @@ -Fix handling of uint32_t arguments on the MIPS N32 ABI. - -Patch by Mark H Weaver . - ---- Modules/_ctypes/libffi/src/mips/ffi.c.orig 2013-03-16 07:19:39.000000000 -0400 -+++ Modules/_ctypes/libffi/src/mips/ffi.c 2013-10-22 01:11:03.111985247 -0400 -@@ -170,7 +170,14 @@ - break; - - case FFI_TYPE_UINT32: -+#ifdef FFI_MIPS_N32 -+ /* The N32 ABI requires that 32-bit integers -+ be sign-extended to 64-bits, regardless of -+ whether they are signed or unsigned. */ -+ *(ffi_arg *)argp = *(SINT32 *)(* p_argv); -+#else - *(ffi_arg *)argp = *(UINT32 *)(* p_argv); -+#endif - break; - - /* This can only happen with 64bit slots. */ diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 59c460af3b..2381c7d2c7 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -201,18 +201,16 @@ data types.") (define-public python (package (inherit python-2) - (version "3.3.5") + (version "3.4.3") (source (origin (method url-fetch) (uri (string-append "https://www.python.org/ftp/python/" version "/Python-" version ".tar.xz")) - (patches (list (search-patch "python-fix-tests.patch") - (search-patch "python-sqlite-3.8.4-test-fix.patch") - (search-patch "python-libffi-mips-n32-fix.patch"))) + (patches (list (search-patch "python-fix-tests.patch"))) (patch-flags '("-p0")) (sha256 (base32 - "1rdncc7g8g6f3lfdg33rli1yffbiq8z283xy4f5ksl1l8i49psdb")))) + "1f4nm4z08sy0kqwisvv95l02crv6dyysdmx44p1mz3bn6csrdcxm")))) (arguments (substitute-keyword-arguments (package-arguments python-2) ((#:tests? _) #t))) (native-search-paths -- cgit v1.2.3 From 7934c8cfee2fbab202939d9d4ba0a8b6bb7dd7dc Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 9 Apr 2015 18:57:52 -0400 Subject: gnu: python-2: Restore python-libffi-mips-n32-fix.patch. This patch was removed in 08c045091e8d8da3b4c677540ed577e8f2448b0d, but it's still needed for python-2. * gnu/packages/patches/python-libffi-mips-n32-fix.patch: Restore it. * gnu-system.am (dist_patch_DATA): Add it back. --- gnu-system.am | 1 + .../patches/python-libffi-mips-n32-fix.patch | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 gnu/packages/patches/python-libffi-mips-n32-fix.patch diff --git a/gnu-system.am b/gnu-system.am index 3c0315e306..969a9116f0 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -510,6 +510,7 @@ dist_patch_DATA = \ gnu/packages/patches/pybugz-stty.patch \ gnu/packages/patches/pyqt-configure.patch \ gnu/packages/patches/python-fix-tests.patch \ + gnu/packages/patches/python-libffi-mips-n32-fix.patch \ gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch \ gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \ gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch \ diff --git a/gnu/packages/patches/python-libffi-mips-n32-fix.patch b/gnu/packages/patches/python-libffi-mips-n32-fix.patch new file mode 100644 index 0000000000..393883779d --- /dev/null +++ b/gnu/packages/patches/python-libffi-mips-n32-fix.patch @@ -0,0 +1,21 @@ +Fix handling of uint32_t arguments on the MIPS N32 ABI. + +Patch by Mark H Weaver . + +--- Modules/_ctypes/libffi/src/mips/ffi.c.orig 2013-03-16 07:19:39.000000000 -0400 ++++ Modules/_ctypes/libffi/src/mips/ffi.c 2013-10-22 01:11:03.111985247 -0400 +@@ -170,7 +170,14 @@ + break; + + case FFI_TYPE_UINT32: ++#ifdef FFI_MIPS_N32 ++ /* The N32 ABI requires that 32-bit integers ++ be sign-extended to 64-bits, regardless of ++ whether they are signed or unsigned. */ ++ *(ffi_arg *)argp = *(SINT32 *)(* p_argv); ++#else + *(ffi_arg *)argp = *(UINT32 *)(* p_argv); ++#endif + break; + + /* This can only happen with 64bit slots. */ -- cgit v1.2.3 From 7dae5ac4b128fe3a3d69e9dc6b544a5d044d9b1d Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Fri, 10 Apr 2015 10:15:51 +0800 Subject: gnu: gnome-themes-standard: Update to 3.16.0. This is a followup to 12f7f4a. * gnu/packages/gnome.scm (gnome-themes-standard): Update hash. --- gnu/packages/gnome.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index fe4437f179..356cfe0999 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1345,7 +1345,7 @@ engineering.") version ".tar.xz")) (sha256 (base32 - "0f2b3ypkfvrdsxcvp14ja9wqj382f1p46yrjvhhxkkjgagy6qb41")))) + "0kyrbfrgl6g6wm6zpllldz36fclvl8vwmn1snwk18kf7f6ncpsac")))) (build-system gnu-build-system) (inputs `(("gtk+" ,gtk+) -- cgit v1.2.3 From a55e2b221c121503045fd8e8fcecc4a8c1f47a29 Mon Sep 17 00:00:00 2001 From: Tomáš Čech Date: Fri, 27 Mar 2015 23:33:47 +0100 Subject: gnu: curl: Update to 7.41.0. Support CURLOPT_CAPATH on GnuTLS. Fixes . * gnu/packages/patches/curl-gss-api-fix.patch: Delete file. * gnu/packages/patches/curl-support-capath-on-gnutls.patch, gnu/packages/patches/curl-support-capath-on-gnutls-conf.patch: New files. * gnu-system.am (dist_patch_DATA): Add new patches and remove old one. * gnu/packages/curl.scm (curl): Update to 7.41.0. Add new patches and remove old one. Disable one unit test. Modified-By: Mark H Weaver --- gnu-system.am | 3 +- gnu/packages/curl.scm | 13 ++- gnu/packages/patches/curl-gss-api-fix.patch | 38 -------- .../curl-support-capath-on-gnutls-conf.patch | 16 ++++ .../patches/curl-support-capath-on-gnutls.patch | 102 +++++++++++++++++++++ 5 files changed, 130 insertions(+), 42 deletions(-) delete mode 100644 gnu/packages/patches/curl-gss-api-fix.patch create mode 100644 gnu/packages/patches/curl-support-capath-on-gnutls-conf.patch create mode 100644 gnu/packages/patches/curl-support-capath-on-gnutls.patch diff --git a/gnu-system.am b/gnu-system.am index 969a9116f0..c050b2e89b 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -398,8 +398,9 @@ dist_patch_DATA = \ gnu/packages/patches/cssc-gets-undeclared.patch \ gnu/packages/patches/cssc-missing-include.patch \ gnu/packages/patches/clucene-contribs-lib.patch \ - gnu/packages/patches/curl-gss-api-fix.patch \ gnu/packages/patches/cursynth-wave-rand.patch \ + gnu/packages/patches/curl-support-capath-on-gnutls.patch \ + gnu/packages/patches/curl-support-capath-on-gnutls-conf.patch \ gnu/packages/patches/dbus-localstatedir.patch \ gnu/packages/patches/diffutils-gets-undeclared.patch \ gnu/packages/patches/dfu-programmer-fix-libusb.patch \ diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm index 821a957615..526514b815 100644 --- a/gnu/packages/curl.scm +++ b/gnu/packages/curl.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014 Andreas Enge ;;; Copyright © 2015 Mark H Weaver +;;; Copyright © 2015 Tomáš Čech ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,15 +38,17 @@ (define-public curl (package (name "curl") - (version "7.40.0") + (version "7.41.0") (source (origin (method url-fetch) (uri (string-append "http://curl.haxx.se/download/curl-" version ".tar.lzma")) (sha256 (base32 - "1a15fdc26b3vwwmchzzpd3l1hfyhx06dn7b6lkikqd7kgwvg5ps7")) - (patches (list (search-patch "curl-gss-api-fix.patch"))))) + "08n7vrhdfzziy3a7n93r7qjhzk8p26q464hxg8w9irdk3v60pi62")) + (patches + (list (search-patch "curl-support-capath-on-gnutls.patch") + (search-patch "curl-support-capath-on-gnutls-conf.patch"))))) (build-system gnu-build-system) (inputs `(("gnutls" ,gnutls) ("gss" ,gss) @@ -68,6 +71,10 @@ (lambda _ (substitute* "tests/runtests.pl" (("/bin/sh") (which "sh"))) + ;; Test #1135 requires extern-scan.pl, which is not part of the + ;; tarball due to a mistake. It has been fixed upstream. We can + ;; simply disable the test as it is specific to VMS and OS/400. + (delete-file "tests/data/test1135") ;; The top-level "make check" does "make -C tests quiet-test", which ;; is too quiet. Use the "test" target instead, which is more diff --git a/gnu/packages/patches/curl-gss-api-fix.patch b/gnu/packages/patches/curl-gss-api-fix.patch deleted file mode 100644 index ea838ae8c7..0000000000 --- a/gnu/packages/patches/curl-gss-api-fix.patch +++ /dev/null @@ -1,38 +0,0 @@ -Copied from upstream: -https://github.com/bagder/curl/commit/5c0e66d63214e0306197c5a3f162441e074f3401.patch - -From 5c0e66d63214e0306197c5a3f162441e074f3401 Mon Sep 17 00:00:00 2001 -From: Steve Holme -Date: Thu, 8 Jan 2015 19:23:53 +0000 -Subject: [PATCH] sasl_gssapi: Fixed build on NetBSD with built-in GSS-API - -Bug: http://curl.haxx.se/bug/view.cgi?id=1469 -Reported-by: Thomas Klausner ---- - lib/curl_sasl_gssapi.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/lib/curl_sasl_gssapi.c b/lib/curl_sasl_gssapi.c -index 6dda0e9..a50646a 100644 ---- a/lib/curl_sasl_gssapi.c -+++ b/lib/curl_sasl_gssapi.c -@@ -6,6 +6,7 @@ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 2014, Steve Holme, . -+ * Copyright (C) 2015, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms -@@ -126,7 +127,7 @@ CURLcode Curl_sasl_create_gssapi_user_message(struct SessionHandle *data, - - /* Import the SPN */ - gss_major_status = gss_import_name(&gss_minor_status, &spn_token, -- gss_nt_service_name, &krb5->spn); -+ GSS_C_NT_HOSTBASED_SERVICE, &krb5->spn); - if(GSS_ERROR(gss_major_status)) { - Curl_gss_log_error(data, gss_minor_status, "gss_import_name() failed: "); - --- -2.2.1 - diff --git a/gnu/packages/patches/curl-support-capath-on-gnutls-conf.patch b/gnu/packages/patches/curl-support-capath-on-gnutls-conf.patch new file mode 100644 index 0000000000..d2391d461d --- /dev/null +++ b/gnu/packages/patches/curl-support-capath-on-gnutls-conf.patch @@ -0,0 +1,16 @@ +This patch updates 'configure' as autoreconf would have done after +applying curl-support-capath-on-gnutls.patch. + +--- a/configure 2015-03-22 01:11:23.178743705 +0100 ++++ b/configure 2015-02-25 00:05:37.000000000 +0100 +@@ -23952,8 +24432,8 @@ + ca="$want_ca" + capath="no" + elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then +- if test "x$OPENSSL_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then +- as_fn_error $? "--with-ca-path only works with openSSL or PolarSSL" "$LINENO" 5 ++ if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then ++ as_fn_error $? "--with-ca-path only works with OpenSSL, GnuTLS or PolarSSL" "$LINENO" 5 + fi + capath="$want_capath" + ca="no" diff --git a/gnu/packages/patches/curl-support-capath-on-gnutls.patch b/gnu/packages/patches/curl-support-capath-on-gnutls.patch new file mode 100644 index 0000000000..d05dd021e8 --- /dev/null +++ b/gnu/packages/patches/curl-support-capath-on-gnutls.patch @@ -0,0 +1,102 @@ +This patch adds support for CURLOPT_CAPATH to the GnuTLS backend. + +From 5a1614cecdd57cab8b4ae3e9bc19dfff5ba77e80 Mon Sep 17 00:00:00 2001 +From: Alessandro Ghedini +Date: Sun, 8 Mar 2015 20:11:06 +0100 +Subject: [PATCH] gtls: add support for CURLOPT_CAPATH + +--- + acinclude.m4 | 4 ++-- + docs/libcurl/opts/CURLOPT_CAPATH.3 | 5 ++--- + lib/vtls/gtls.c | 22 ++++++++++++++++++++++ + lib/vtls/gtls.h | 3 +++ + 4 files changed, 29 insertions(+), 5 deletions(-) + +diff --git a/acinclude.m4 b/acinclude.m4 +index 6ed7ffb..ca01869 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -2615,8 +2615,8 @@ AC_HELP_STRING([--without-ca-path], [Don't use a default CA path]), + capath="no" + elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then + dnl --with-ca-path given +- if test "x$OPENSSL_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then +- AC_MSG_ERROR([--with-ca-path only works with openSSL or PolarSSL]) ++ if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then ++ AC_MSG_ERROR([--with-ca-path only works with OpenSSL, GnuTLS or PolarSSL]) + fi + capath="$want_capath" + ca="no" +diff --git a/docs/libcurl/opts/CURLOPT_CAPATH.3 b/docs/libcurl/opts/CURLOPT_CAPATH.3 +index 642953d..6695f9f 100644 +--- a/docs/libcurl/opts/CURLOPT_CAPATH.3 ++++ b/docs/libcurl/opts/CURLOPT_CAPATH.3 +@@ -43,9 +43,8 @@ All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. + .SH EXAMPLE + TODO + .SH AVAILABILITY +-This option is OpenSSL-specific and does nothing if libcurl is built to use +-GnuTLS. NSS-powered libcurl provides the option only for backward +-compatibility. ++This option is supported by the OpenSSL, GnuTLS and PolarSSL backends. The NSS ++backend provides the option only for backward compatibility. + .SH RETURN VALUE + Returns CURLE_OK if TLS enabled, and CURLE_UNKNOWN_OPTION if not, or + CURLE_OUT_OF_MEMORY if there was insufficient heap space. +diff --git a/lib/vtls/gtls.c b/lib/vtls/gtls.c +index 05aef19..c792540 100644 +--- a/lib/vtls/gtls.c ++++ b/lib/vtls/gtls.c +@@ -97,6 +97,10 @@ static bool gtls_inited = FALSE; + # if (GNUTLS_VERSION_NUMBER >= 0x03020d) + # define HAS_OCSP + # endif ++ ++# if (GNUTLS_VERSION_NUMBER >= 0x030306) ++# define HAS_CAPATH ++# endif + #endif + + #ifdef HAS_OCSP +@@ -462,6 +466,24 @@ gtls_connect_step1(struct connectdata *conn, + rc, data->set.ssl.CAfile); + } + ++#ifdef HAS_CAPATH ++ if(data->set.ssl.CApath) { ++ /* set the trusted CA cert directory */ ++ rc = gnutls_certificate_set_x509_trust_dir(conn->ssl[sockindex].cred, ++ data->set.ssl.CApath, ++ GNUTLS_X509_FMT_PEM); ++ if(rc < 0) { ++ infof(data, "error reading ca cert file %s (%s)\n", ++ data->set.ssl.CAfile, gnutls_strerror(rc)); ++ if(data->set.ssl.verifypeer) ++ return CURLE_SSL_CACERT_BADFILE; ++ } ++ else ++ infof(data, "found %d certificates in %s\n", ++ rc, data->set.ssl.CApath); ++ } ++#endif ++ + if(data->set.ssl.CRLfile) { + /* set the CRL list file */ + rc = gnutls_certificate_set_x509_crl_file(conn->ssl[sockindex].cred, +diff --git a/lib/vtls/gtls.h b/lib/vtls/gtls.h +index c3867e5..af1cb5b 100644 +--- a/lib/vtls/gtls.h ++++ b/lib/vtls/gtls.h +@@ -54,6 +54,9 @@ bool Curl_gtls_cert_status_request(void); + /* Set the API backend definition to GnuTLS */ + #define CURL_SSL_BACKEND CURLSSLBACKEND_GNUTLS + ++/* this backend supports the CAPATH option */ ++#define have_curlssl_ca_path 1 ++ + /* API setup for GnuTLS */ + #define curlssl_init Curl_gtls_init + #define curlssl_cleanup Curl_gtls_cleanup +-- +2.2.1 + -- cgit v1.2.3 From 56b1b74c903c17b03ef5b0052a1144bb1e55685f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 10 Apr 2015 10:08:49 +0200 Subject: lint: Rename 'check-patches' to 'check-patch-file-names'. * guix/scripts/lint.scm (check-patches): Rename to... (check-patch-file-names): ... this. Rename 'filename' to 'file'. (%checkers): Adjust accordingly. * tests/lint.scm ("patches: file names"): Likewise. --- guix/scripts/lint.scm | 16 ++++++++-------- tests/lint.scm | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index c40d76b558..543b3dd1c5 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm @@ -45,7 +45,7 @@ #:export (guix-lint check-description-style check-inputs-should-be-native - check-patches + check-patch-file-names check-synopsis-style check-home-page check-source)) @@ -348,7 +348,7 @@ warning for PACKAGE mentionning the FIELD." (package-home-page package)) 'home-page))))) -(define (check-patches package) +(define (check-patch-file-names package) ;; Emit a warning if the patches requires by PACKAGE are badly named. (let ((patches (and=> (package-source package) origin-patches)) (name (package-name package)) @@ -356,9 +356,9 @@ warning for PACKAGE mentionning the FIELD." (when (and patches (any (match-lambda ((? string? patch) - (let ((filename (basename patch))) - (not (or (eq? (string-contains filename name) 0) - (eq? (string-contains filename full-name) + (let ((file (basename patch))) + (not (or (eq? (string-contains file name) 0) + (eq? (string-contains file full-name) 0))))) (_ ;; This must be an or something like that. @@ -367,7 +367,7 @@ warning for PACKAGE mentionning the FIELD." (emit-warning package (_ "file names of patches should start with \ the package name") - 'patches)))) + 'patch-file-names)))) (define (escape-quotes str) "Replace any quote character in STR by an escaped quote character." @@ -455,9 +455,9 @@ descriptions maintained upstream." (description "Identify inputs that should be native inputs") (check check-inputs-should-be-native)) (lint-checker - (name 'patch-filenames) + (name 'patch-file-names) (description "Validate file names of patches") - (check check-patches)) + (check check-patch-file-names)) (lint-checker (name 'home-page) (description "Validate home-page URLs") diff --git a/tests/lint.scm b/tests/lint.scm index 2312b80934..047f2786e0 100644 --- a/tests/lint.scm +++ b/tests/lint.scm @@ -301,7 +301,7 @@ requests." (uri "someurl") (sha256 "somesha") (patches (list "/path/to/y.patch"))))))) - (check-patches pkg))) + (check-patch-file-names pkg))) "file names of patches should start with the package name"))) (test-assert "home-page: wrong home-page" -- cgit v1.2.3 From b210b35d61e41ab5c3ad923eacc8ecbd58d3edca Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 10 Apr 2015 10:27:26 +0200 Subject: lint: Report patches that cannot be found. * guix/scripts/lint.scm (check-patch-file-names): Wrap body in 'guard'. * tests/lint.scm ("patches: not found"): New test. --- guix/scripts/lint.scm | 44 +++++++++++++++++++++++++------------------- tests/lint.scm | 15 +++++++++++++++ 2 files changed, 40 insertions(+), 19 deletions(-) diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index 543b3dd1c5..699311a6a9 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm @@ -41,6 +41,8 @@ #:use-module (srfi srfi-9) #:use-module (srfi srfi-11) #:use-module (srfi srfi-26) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) #:use-module (srfi srfi-37) #:export (guix-lint check-description-style @@ -349,25 +351,29 @@ warning for PACKAGE mentionning the FIELD." 'home-page))))) (define (check-patch-file-names package) - ;; Emit a warning if the patches requires by PACKAGE are badly named. - (let ((patches (and=> (package-source package) origin-patches)) - (name (package-name package)) - (full-name (package-full-name package))) - (when (and patches - (any (match-lambda - ((? string? patch) - (let ((file (basename patch))) - (not (or (eq? (string-contains file name) 0) - (eq? (string-contains file full-name) - 0))))) - (_ - ;; This must be an or something like that. - #f)) - patches)) - (emit-warning package - (_ "file names of patches should start with \ + "Emit a warning if the patches requires by PACKAGE are badly named or if the +patch could not be found." + (guard (c ((message-condition? c) ;raised by 'search-patch' + (emit-warning package (condition-message c) + 'patch-file-names))) + (let ((patches (and=> (package-source package) origin-patches)) + (name (package-name package)) + (full-name (package-full-name package))) + (when (and patches + (any (match-lambda + ((? string? patch) + (let ((file (basename patch))) + (not (or (eq? (string-contains file name) 0) + (eq? (string-contains file full-name) + 0))))) + (_ + ;; This must be an or something like that. + #f)) + patches)) + (emit-warning package + (_ "file names of patches should start with \ the package name") - 'patch-file-names)))) + 'patch-file-names))))) (define (escape-quotes str) "Replace any quote character in STR by an escaped quote character." @@ -456,7 +462,7 @@ descriptions maintained upstream." (check check-inputs-should-be-native)) (lint-checker (name 'patch-file-names) - (description "Validate file names of patches") + (description "Validate file names and availability of patches") (check check-patch-file-names)) (lint-checker (name 'home-page) diff --git a/tests/lint.scm b/tests/lint.scm index 047f2786e0..ab89a58ae6 100644 --- a/tests/lint.scm +++ b/tests/lint.scm @@ -304,6 +304,21 @@ requests." (check-patch-file-names pkg))) "file names of patches should start with the package name"))) +(test-assert "patches: not found" + (->bool + (string-contains + (with-warnings + (let ((pkg (dummy-package "x" + (source + (origin + (method url-fetch) + (uri "someurl") + (sha256 "somesha") + (patches + (list (search-patch "this-patch-does-not-exist!")))))))) + (check-patch-file-names pkg))) + "patch not found"))) + (test-assert "home-page: wrong home-page" (->bool (string-contains -- cgit v1.2.3 From caaf1933a453e7f3f8d7444f2c97dac3f8a93e1c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 10 Apr 2015 10:34:04 +0200 Subject: gnu: Fix incorrect references to %GNU-BUILD-SYSTEM-MODULES. Fixes a regression introduced in 8ff3df5. * gnu/packages/emacs.scm (emacs-w3m)[arguments]: Use quasiquote, not quote. (emacs-wget)[arguments]: Likewise, and use unquote-splicing for %GNU-BUILD-SYSTEM-MODULES. (emms): Likewise. * gnu/packages/haskell.scm (ghc): Likewise. * gnu/packages/samba.scm (samba): Likewise. --- gnu/packages/emacs.scm | 10 +++++----- gnu/packages/haskell.scm | 2 +- gnu/packages/samba.scm | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 3b9b7cf3f8..73246ab3b9 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -306,7 +306,7 @@ operations.") ("imagemagick" ,imagemagick) ("emacs" ,emacs-no-x))) (arguments - '(#:modules ((guix build gnu-build-system) + `(#:modules ((guix build gnu-build-system) (guix build utils) (guix build emacs-utils)) #:imported-modules (,@%gnu-build-system-modules @@ -373,10 +373,10 @@ operations.") (inputs `(("wget" ,wget) ("emacs" ,emacs-no-x))) (arguments - '(#:modules ((guix build gnu-build-system) + `(#:modules ((guix build gnu-build-system) (guix build utils) (guix build emacs-utils)) - #:imported-modules (,%gnu-build-system-modules + #:imported-modules (,@%gnu-build-system-modules (guix build emacs-utils)) #:tests? #f ; no check target #:phases @@ -440,10 +440,10 @@ operations.") (string-append "all: " rest " emms-print-metadata\n")))))) (build-system gnu-build-system) (arguments - '(#:modules ((guix build gnu-build-system) + `(#:modules ((guix build gnu-build-system) (guix build utils) (guix build emacs-utils)) - #:imported-modules (,%gnu-build-system-modules + #:imported-modules (,@%gnu-build-system-modules (guix build emacs-utils)) #:phases (alist-replace diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index e6b8e07be7..f5f5020197 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -116,7 +116,7 @@ (guix build rpath) (srfi srfi-26) (srfi srfi-1)) - #:imported-modules (,%gnu-build-system-modules + #:imported-modules (,@%gnu-build-system-modules (guix build rpath)) #:configure-flags (list diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index d26d2d7789..8e53debcb3 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -105,7 +105,7 @@ anywhere.") "0l9pz2m67vf398q3c2dwn8jwdxsjb20igncf4byhv6yq5dzqlb4g")))) (build-system gnu-build-system) (arguments - '(#:phases (alist-cons-before + `(#:phases (alist-cons-before 'configure 'chdir (lambda _ (chdir "source3")) @@ -127,7 +127,7 @@ anywhere.") (guix build utils) (guix build rpath) (srfi srfi-26)) - #:imported-modules (,%gnu-build-system-modules + #:imported-modules (,@%gnu-build-system-modules (guix build rpath)) ;; This flag is required to allow for "make test". -- cgit v1.2.3 From 3a4de6b2d2fdb515c8186cbceab4259aab91cadf Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 10 Apr 2015 11:35:50 +0200 Subject: gnu: Add missing quotes in phase names passed to 'modify-phases'. This is a followup to f8503e2. * gnu/packages/gnome.scm (glib-networking): Add missing quotes before phase names passed to 'modify-phases'. (libsoup): Likewise. (gnome-terminal): Likewise. (colord): Likewise. (geoclue): Likewise. * gnu/packages/gtk.scm (at-spi2-core, at-spi2-atk): Likewise. * gnu/packages/haskell.scm (ghc-network): Likewise. * gnu/packages/imagemagick.scm (perl-image-magick): Likewise. * gnu/packages/video.scm (aalib): Likewise. * gnu/packages/web.scm (nginx): Likewise. --- gnu/packages/gnome.scm | 14 +++++++------- gnu/packages/gtk.scm | 4 ++-- gnu/packages/haskell.scm | 2 +- gnu/packages/imagemagick.scm | 6 +++--- gnu/packages/video.scm | 2 +- gnu/packages/web.scm | 6 +++--- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 356cfe0999..55a4978480 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1654,7 +1654,7 @@ library.") '("--with-ca-certificates=no") #:phases (modify-phases %standard-phases - (add-before configure patch-giomoduledir + (add-before 'configure 'patch-giomoduledir ;; Install GIO modules into $out/lib/gio/modules. (lambda _ (substitute* "configure" @@ -1702,14 +1702,14 @@ library.") "/lib/gio/modules")) #:phases (modify-phases %standard-phases - (add-before configure disable-unconnected-socket-test + (add-before 'configure 'disable-unconnected-socket-test ;; This test fails due to missing /etc/nsswitch.conf ;; in the build environment. (lambda _ (substitute* "tests/socket-test.c" ((".*/sockets/unconnected.*") "")) #t)) - (add-before check unset-LC_ALL + (add-before 'check 'unset-LC_ALL ;; The 'check-local' target runs 'env LANG=C sort -u', ;; unset 'LC_ALL' to make 'LANG' working. (lambda _ @@ -1852,7 +1852,7 @@ floating in an ocean using only your brain and a little bit of luck.") "--without-nautilus-extension") #:phases (modify-phases %standard-phases - (add-before configure patch-/bin/true + (add-before 'configure 'patch-/bin/true (lambda _ (substitute* "configure" (("/bin/true") (which "true")))))))) @@ -1913,14 +1913,14 @@ keyboard shortcuts.") "/lib/udev/rules.d")) #:phases (modify-phases %standard-phases - (add-before configure patch-/bin/true + (add-before 'configure 'patch-/bin/true (lambda _ (substitute* "configure" (("/bin/true") (which "true"))) (substitute* "src/Makefile.in" (("if test -w \\$\\(DESTDIR\\)\\$\\(prefix\\)/;") "if test -w $(DESTDIR)$(localstatedir);")))) - (add-before build set-cc + (add-before 'build 'set-cc (lambda _ ;; Set $CC so that g-ir-scanner works. (setenv "CC" "gcc") @@ -1971,7 +1971,7 @@ output devices.") "--with-dbus-service-user=geoclue") #:phases (modify-phases %standard-phases - (add-before configure patch-/bin/true + (add-before 'configure 'patch-/bin/true (lambda _ (substitute* "configure" (("/bin/true") (which "true")))))))) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index bb30f6f8fa..cd36ebfd65 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -359,7 +359,7 @@ in the GNOME project.") "/share/gtk-doc/html")) #:phases (modify-phases %standard-phases - (replace check + (replace 'check ;; Run test-suite under a dbus session. (lambda _ (zero? (system* "dbus-launch" "make" "check"))))))) @@ -397,7 +397,7 @@ is part of the GNOME accessibility project.") (arguments '(#:phases (modify-phases %standard-phases - (replace check + (replace 'check ;; Run test-suite under a dbus session. (lambda _ (zero? (system* "dbus-launch" "make" "check"))))))) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index f5f5020197..82c7109316 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -798,7 +798,7 @@ mutable and immutable), with a powerful loop optimisation framework.") `(#:tests? #f ; FIXME: currently missing libraries used for tests. #:phases (modify-phases %standard-phases - (add-before configure set-sh + (add-before 'configure 'set-sh (lambda _ (setenv "CONFIG_SHELL" "sh")))))) (home-page "https://github.com/haskell/network") (synopsis "Low-level networking interface") diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm index 2a68627dc6..ab663b5a41 100644 --- a/gnu/packages/imagemagick.scm +++ b/gnu/packages/imagemagick.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2015 Eric Bavier ;;; ;;; This file is part of GNU Guix. @@ -112,7 +112,7 @@ text, lines, polygons, ellipses and Bézier curves.") `(#:phases (modify-phases %standard-phases (add-before - configure image-magick-flags + 'configure 'image-magick-flags (lambda* (#:key inputs #:allow-other-keys) (let ((im (assoc-ref inputs "imagemagick"))) (substitute* "Makefile.PL" @@ -121,7 +121,7 @@ text, lines, polygons, ellipses and Bézier curves.") (("my \\$LIBS_magick = .*") "my $LIBS_magick = `pkg-config --libs ImageMagick`;\n"))))) (add-before - check skip-mpeg-tests + 'check 'skip-mpeg-tests (lambda _ ;; TODO: MPEG tests fail even though our imagemagick supports ;; MPEG. Has been reported elsewhere, diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 661ef91386..16c9770f45 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -97,7 +97,7 @@ (arguments '(#:phases (modify-phases %standard-phases - (replace configure + (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) ;; This old `configure' script doesn't support ;; variables passed as arguments. diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 374642862a..c6a3938546 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -109,11 +109,11 @@ and its related documentation.") `(#:tests? #f ; no test target #:phases (modify-phases %standard-phases - (add-before configure patch-/bin/sh + (add-before 'configure 'patch-/bin/sh (lambda _ (substitute* "auto/feature" (("/bin/sh") (which "bash"))))) - (replace configure + (replace 'configure (lambda* (#:key outputs #:allow-other-keys) (let ((flags (list (string-append "--prefix=" (assoc-ref outputs "out")) @@ -138,7 +138,7 @@ and its related documentation.") (format #t "environment variable `CC' set to `gcc'~%") (format #t "configure flags: ~s~%" flags) (zero? (apply system* "./configure" flags))))) - (add-after install fix-root-dirs + (add-after 'install 'fix-root-dirs (lambda* (#:key outputs #:allow-other-keys) ;; 'make install' puts things in strange places, so we need to ;; clean it up ourselves. -- cgit v1.2.3 From 5854f6858bc4ed61ebc03a0a887661eadcbea640 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 10 Apr 2015 11:05:45 +0200 Subject: gnu: Add GRIT. * gnu/packages/bioinformatics.scm (grit): New variable. --- gnu/packages/bioinformatics.scm | 51 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index b122b6d83d..e143fb2c55 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -511,6 +511,57 @@ supports next-generation sequencing data in fasta/q and csfasta/q format from Illumina, Roche 454, and the SOLiD platform.") (license license:gpl3))) +(define-public grit + (package + (name "grit") + (version "2.0.2") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/nboley/grit/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "157in84dj70wimbind3x7sy1whs3h57qfgcnj2s6lrd38fbrb7mj")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2 + #:phases + (alist-cons-after + 'unpack 'generate-from-cython-sources + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Delete these C files to force fresh generation from pyx sources. + (delete-file "grit/sparsify_support_fns.c") + (delete-file "grit/call_peaks_support_fns.c") + (substitute* "setup.py" + (("Cython.Setup") "Cython.Build") + ;; Add numpy include path to fix compilation + (("pyx\", \\]") + (string-append "pyx\", ], include_dirs = ['" + (assoc-ref inputs "python-numpy") + "/lib/python2.7/site-packages/numpy/core/include/" + "']"))) #t) + %standard-phases))) + (inputs + `(("python-scipy" ,python2-scipy) + ("python-numpy" ,python2-numpy) + ("python-pysam" ,python2-pysam) + ("python-networkx" ,python2-networkx))) + (native-inputs + `(("python-cython" ,python2-cython) + ("python-setuptools" ,python2-setuptools))) + (home-page "http://grit-bio.org") + (synopsis "Tool for integrative analysis of RNA-seq type assays") + (description + "GRIT is designed to use RNA-seq, TES, and TSS data to build and quantify +full length transcript models. When none of these data sources are available, +GRIT can be run by providing a candidate set of TES or TSS sites. In +addition, GRIT can merge in reference junctions and gene boundaries. GRIT can +also be run in quantification mode, where it uses a provided GTF file and just +estimates transcript expression.") + (license license:gpl3+))) + (define-public hisat (package (name "hisat") -- cgit v1.2.3 From 1b922590d758e458ce4f9abd3d1694045bcccb58 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Fri, 10 Apr 2015 21:01:10 +0800 Subject: gnu: Add gst-libav. * gnu/packages/gstreamer.scm (gst-libav): New variable. --- gnu/packages/gstreamer.scm | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index ad0cfccca9..9758806cc5 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -20,7 +20,7 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages gstreamer) - #:use-module ((guix licenses) #:select (lgpl2.0+ bsd-2 bsd-3)) + #:use-module ((guix licenses) #:select (lgpl2.0+ bsd-2 bsd-3 gpl2+)) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) @@ -39,6 +39,7 @@ #:use-module (gnu packages xiph) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages yasm) #:use-module (gnu packages xml)) (define-public orc @@ -247,6 +248,42 @@ GStreamer multimedia library. This set contains those plug-ins which the developers consider to have good quality code and correct functionality.") (license lgpl2.0+))) +(define-public gst-libav + (package + (name "gst-libav") + (version "1.4.5") + (source (origin + (method url-fetch) + (uri (string-append + "http://gstreamer.freedesktop.org/src/" name "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1g7vg9amh3cc3nmc415h6g2rqxqi4wgwqi08hxfbpwq48ri64p30")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before configure patch-/bin/sh + (lambda _ + (substitute* "gst-libs/ext/libav/configure" + (("#! /bin/sh") + (string-append "#! "(which "sh"))))))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("python" ,python) + ("yasm" ,yasm))) + (inputs + `(("gst-plugins-base" ,gst-plugins-base) + ("orc" ,orc) + ("zlib" ,zlib))) + (home-page "http://gstreamer.freedesktop.org/") + (synopsis "Plugins for the GStreamer multimedia library") + (description + "This GStreamer plugin supports a large number of audio and video +compression formats through the use of the libav library.") + (license gpl2+))) + (define-public gst-plugins-base-0.10 (package (inherit gst-plugins-base) (version "0.10.36") -- cgit v1.2.3 From 5e738ac224c7aea948773e89235dc1418bff448e Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 24 Feb 2015 23:54:29 -0500 Subject: system: Clean /tmp and /var/run during early boot. * gnu/system.scm (operating-system-boot-script): Clean out /tmp and /var/run before activating the system. --- gnu/system.scm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/gnu/system.scm b/gnu/system.scm index ece61adb2b..a91c7136da 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès +;;; Copyright © 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -695,6 +696,20 @@ we're running in the final root." (dmd-conf (dmd-configuration-file services))) (gexp->file "boot" #~(begin + (use-modules (guix build utils)) + + ;; Clean out /tmp and /var/run. + ;; + ;; XXX This needs to happen before service activations, so + ;; it has to be here, but this also implicitly assumes + ;; that /tmp and /var/run are on the root partition. + (false-if-exception (delete-file-recursively "/tmp")) + (false-if-exception (delete-file-recursively "/var/run")) + (false-if-exception (mkdir "/tmp")) + (false-if-exception (chmod "/tmp" #o1777)) + (false-if-exception (mkdir "/var/run")) + (false-if-exception (chmod "/var/run" #o755)) + ;; Activate the system. ;; TODO: Use 'load-compiled'. (primitive-load #$activate) -- cgit v1.2.3 From b3455870e1225d14ebeae6738e10bd3e1bbcf626 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Fri, 10 Apr 2015 22:10:13 +0800 Subject: gnu: libvpx: Augment rpath. Fixes . * gnu/packages/video.scm (libvpx)[arguments]: Set LDFLAGS to '-Wl,-rpath=$out/lib' in configure phase. --- gnu/packages/video.scm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 16c9770f45..5dd4531ec4 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -819,6 +819,8 @@ projects while introducing many more.") (lambda* (#:key outputs #:allow-other-keys) (setenv "CONFIG_SHELL" (which "bash")) (let ((out (assoc-ref outputs "out"))) + (setenv "LDFLAGS" + (string-append "-Wl,-rpath=" out "/lib")) (zero? (system* "./configure" "--enable-shared" "--as=yasm" -- cgit v1.2.3 From 3314f8a7b6e92ba77a1706251703f1783d456824 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 10 Apr 2015 18:09:00 +0200 Subject: gnu: libtool: Leave out the test suite workarounds. They are no longer needed since the latest ld-wrapper changes (commit 51d0cd9.) * gnu/packages/patches/libtool-skip-tests2.patch: New file. * gnu/packages/autotools.scm (libtool)[source]: Use it. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + gnu/packages/autotools.scm | 5 +++- gnu/packages/patches/libtool-skip-tests2.patch | 33 ++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/libtool-skip-tests2.patch diff --git a/gnu-system.am b/gnu-system.am index c050b2e89b..0f9da34a54 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -457,6 +457,7 @@ dist_patch_DATA = \ gnu/packages/patches/libmad-mips-newgcc.patch \ gnu/packages/patches/libtheora-config-guess.patch \ gnu/packages/patches/libtool-skip-tests.patch \ + gnu/packages/patches/libtool-skip-tests2.patch \ gnu/packages/patches/libssh-CVE-2014-0017.patch \ gnu/packages/patches/libvpx-fix-armhf-link.patch \ gnu/packages/patches/libvpx-fix-ssse3-quantize.patch \ diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm index 4b5cbb6dfd..bc2b20ed46 100644 --- a/gnu/packages/autotools.scm +++ b/gnu/packages/autotools.scm @@ -248,7 +248,7 @@ Makefile, simplifying the entire process for the developer.") (base32 "0vxj52zm709125gwv9qqlw02silj8bnjnh4y07arrz60r31ai1vw")) (patches - (list (search-patch "libtool-skip-tests.patch"))))) + (list (search-patch "libtool-skip-tests2.patch"))))) (build-system gnu-build-system) (propagated-inputs `(("m4" ,m4))) (native-inputs `(("m4" ,m4) @@ -304,6 +304,9 @@ complexity of working with shared libraries across platforms.") (sha256 (base32 "0vxj52zm709125gwv9qqlw02silj8bnjnh4y07arrz60r31ai1vw")) + + ;; FIXME: We don't need this patch here, we just keep it to + ;; avoid a rebuild today. (patches (list (search-patch "libtool-skip-tests.patch"))))) (build-system gnu-build-system) diff --git a/gnu/packages/patches/libtool-skip-tests2.patch b/gnu/packages/patches/libtool-skip-tests2.patch new file mode 100644 index 0000000000..c9d61e3b41 --- /dev/null +++ b/gnu/packages/patches/libtool-skip-tests2.patch @@ -0,0 +1,33 @@ +Skip the nopic test on ARM and MIPS systems. + +--- libtool-2.4.6/tests/demo.at.orig 2015-01-16 13:52:04.000000000 -0500 ++++ libtool-2.4.6/tests/demo.at 2015-02-16 10:48:51.435851966 -0500 +@@ -510,7 +510,7 @@ + AT_SETUP([force non-PIC objects]) + + AT_CHECK([case $host in +-hppa*|x86_64*|s390*) ++hppa*|x86_64*|s390*|arm*|mips*) + # These hosts cannot use non-PIC shared libs + exit 77 ;; + *-solaris*|*-sunos*) +--- libtool-2.4.6/tests/testsuite.orig 2015-02-15 11:15:25.000000000 -0500 ++++ libtool-2.4.6/tests/testsuite 2015-02-16 10:50:58.736483216 -0500 +@@ -8741,7 +8741,7 @@ + + { set +x + $as_echo "$at_srcdir/demo.at:535: case \$host in +-hppa*|x86_64*|s390*) ++hppa*|x86_64*|s390*|arm*|mips*) + # These hosts cannot use non-PIC shared libs + exit 77 ;; + *-solaris*|*-sunos*) +@@ -8766,7 +8766,7 @@ + " + at_fn_check_prepare_notrace 'a `...` command substitution' "demo.at:535" + ( $at_check_trace; case $host in +-hppa*|x86_64*|s390*) ++hppa*|x86_64*|s390*|arm*|mips*) + # These hosts cannot use non-PIC shared libs + exit 77 ;; + *-solaris*|*-sunos*) -- cgit v1.2.3 From 4c2a38c25f65f7c069228ff923d0ef0785d5f47a Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 29 Mar 2015 00:23:48 -0400 Subject: gnu: emacs: Update to 24.5. * gnu/packages/emacs.scm (emacs): Update to 24.5. --- gnu/packages/emacs.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index f328cede28..d680f2b951 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès -;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2014 Alex Kost ;;; ;;; This file is part of GNU Guix. @@ -57,14 +57,14 @@ (define-public emacs (package (name "emacs") - (version "24.4") + (version "24.5") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/emacs/emacs-" version ".tar.xz")) (sha256 (base32 - "1zflm6ac34s6v166p58ilxrxbxjm0q2wfc25f8y0mjml1lbr3qs7")))) + "0kn3rzm91qiswi0cql89kbv6mqn27rwsyjfb8xmwy9m5s8fxfiyx")))) (build-system glib-or-gtk-build-system) (arguments '(#:phases (alist-cons-before -- cgit v1.2.3 From 53a53be91b7daf4d6b23bd3b31ed0a83baf40c73 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 10 Apr 2015 23:37:36 +0200 Subject: gnu: boost: Add $libdir to the RUNPATH of libraries. * gnu/packages/boost.scm (boost)[arguments]: Add -Wl,-rpath=... to BUILD-FLAGS. Remove 'check' phase and use #:tests? #f instead. --- gnu/packages/boost.scm | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm index 24fc53d0b8..10c88f3f2a 100644 --- a/gnu/packages/boost.scm +++ b/gnu/packages/boost.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2014 John Darrington ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2015 Andreas Enge +;;; Copyright © 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -51,6 +52,11 @@ (arguments (let ((build-flags `("threading=multi" "link=shared" + + ;; Set the RUNPATH to $libdir so that the libs find each other. + (string-append "linkflags=-Wl,-rpath=" + (assoc-ref outputs "out") "/lib") + ;; Boost's 'context' library is not yet supported on mips64, so ;; we disable it. The 'coroutine' library depends on 'context', ;; so we disable that too. @@ -58,7 +64,8 @@ (%current-system))) '("--without-context" "--without-coroutine") '())))) - `(#:phases + `(#:tests? #f + #:phases (alist-replace 'configure (lambda* (#:key outputs #:allow-other-keys) @@ -79,18 +86,14 @@ "--with-toolset=gcc")))) (alist-replace 'build - (lambda _ + (lambda* (#:key outputs #:allow-other-keys) (zero? (system* "./b2" ,@build-flags))) (alist-replace - 'check - (lambda _ #t) - - (alist-replace - 'install - (lambda _ - (zero? (system* "./b2" "install" ,@build-flags))) - %standard-phases))))))) + 'install + (lambda* (#:key outputs #:allow-other-keys) + (zero? (system* "./b2" "install" ,@build-flags))) + %standard-phases)))))) (home-page "http://boost.org") (synopsis "Peer-reviewed portable C++ source libraries") -- cgit v1.2.3 From 6b206853a067aae83165ddece7c562aa476abc33 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 11 Apr 2015 12:05:14 +0800 Subject: gnu: subversion: Add $libdir to the RUNPATH of Perl bindings. Fixes . * gnu/packages/version-control.scm (subversion)[arguments]: Pass '-Wl,-rpath=...' as OTHERLDFLAGS in install-perl-bindings phase. --- gnu/packages/version-control.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 48e16a14be..2094ec0554 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -531,7 +531,10 @@ property manipulation.") (system* "perl" "Makefile.PL" (string-append "PREFIX=" out))) (zero? - (system* "make" "install"))))))) + (system* "make" "install" + (string-append "OTHERLDFLAGS=" + "-Wl,-rpath=" + out "/lib")))))))) %standard-phases)))) (native-inputs `(("pkg-config" ,pkg-config) -- cgit v1.2.3 From be84118181c274b0dd39f0a1d78b3f721f3e5bca Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 11 Apr 2015 12:47:22 +0800 Subject: gnu: netpbm: Add $libdir to the RUNPATH of binaries. * gnu/packages/netpbm.scm (netpbm)[arguments]: Add 'LDFLAGS += -Wl,-rpath=...' to config.mk in the configure phase. --- gnu/packages/netpbm.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/netpbm.scm b/gnu/packages/netpbm.scm index e72cf32e3f..8e4c29cb16 100644 --- a/gnu/packages/netpbm.scm +++ b/gnu/packages/netpbm.scm @@ -75,6 +75,7 @@ (display "TIFFLIB = libtiff.so\n" f) (display "JPEGLIB = libjpeg.so\n" f) (display "ZLIB = libz.so\n" f) + (display (string-append "LDFLAGS += -Wl,-rpath=" %output "/lib") f) (close-port f) ;; drop advertisement for non-free program (substitute* "converter/ppm/Makefile" (("hpcdtoppm") "")) -- cgit v1.2.3 From d1f9e45e5d55d6ccc78bd26bf56091bb83c19bfa Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 11 Apr 2015 13:30:58 +0800 Subject: gnu: cdparanoia: Don't use patchelf. * gnu/packages/cdrom.scm (cdparanoia): Remove 'patchelf' from inputs. [arguments]: Remove #:modules, #:imported-modules and #:phases. Pass 'LDFLAGS=-Wl,-rpath=...' as #:configure-flags. [origin]: Add 'snippet'. --- gnu/packages/cdrom.scm | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm index e93503f25a..3383fb653d 100644 --- a/gnu/packages/cdrom.scm +++ b/gnu/packages/cdrom.scm @@ -159,29 +159,17 @@ files.") (sha256 (base32 "1pv4zrajm46za0f6lv162iqffih57a8ly4pc69f7y0gfyigb8p80")) - (patches (list (search-patch "cdparanoia-fpic.patch"))))) + (patches (list (search-patch "cdparanoia-fpic.patch"))) + (modules '((guix build utils))) + (snippet + ;; Make libraries respect LDFLAGS. + '(substitute* '("paranoia/Makefile.in" "interface/Makefile.in") + (("-Wl,-soname") "$(LDFLAGS) -Wl,-soname"))))) (build-system gnu-build-system) - (inputs - `(("patchelf" ,patchelf))) (arguments `(#:tests? #f ; there is no check target - #:modules ((guix build gnu-build-system) - (guix build utils) - (guix build rpath) - (srfi srfi-26)) - #:imported-modules (,@%gnu-build-system-modules - (guix build rpath)) - #:phases - (alist-cons-after - 'strip 'add-lib-to-runpath - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (lib (string-append out "/lib"))) - ;; Add LIB to the RUNPATH of all the executables. - (with-directory-excursion out - (for-each (cut augment-rpath <> lib) - (find-files "bin" ".*"))))) - %standard-phases))) + #:configure-flags ; Add $libdir to the RUNPATH of all the executables. + (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")))) (home-page "http://www.xiph.org/paranoia/") (synopsis "Audio CD reading utility") (description "Cdparanoia retrieves audio tracks from CDDA capable CDROM -- cgit v1.2.3 From 6d889daf2a8162a248da0b654d69d3c7346a4ca0 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 11 Apr 2015 13:59:54 +0800 Subject: gnu: libcap: Add $libdir to the RUNPATH of executables. * gnu/packages/linux.scm (libcap)[arguments]: Set LDFLAGS to '-Wl,-rpath=...' in Make.Rules. --- gnu/packages/linux.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index e2b8301fef..18f220ef68 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -982,7 +982,15 @@ advanced aspects of IP configuration (iptunnel, ipmaddr).") (base32 "07vjhkznm82p8dm4w6j8mmg7h5c70lp5s9bwwfdmgwpbixfydjp1")))) (build-system gnu-build-system) - (arguments '(#:phases (alist-delete 'configure %standard-phases) + (arguments '(#:phases + (modify-phases %standard-phases + (replace 'configure + ;; Add $libdir to the RUNPATH of executables. + (lambda _ + (substitute* "Make.Rules" + (("LDFLAGS := #-g") + (string-append "LDFLAGS := -Wl,-rpath=" + %output "/lib")))))) #:tests? #f ; no 'check' target #:make-flags (list "lib=lib" (string-append "prefix=" -- cgit v1.2.3 From 50c26d9e44a9bdd3449e8b0e3e97a8e93a6310ef Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 11 Apr 2015 18:23:27 +0800 Subject: gnu: iptables: Add $libdir to the RUNPATH of executables. * gnu/packages/linux.scm (iptables)[arguments]: Add #:configure-flags. --- gnu/packages/linux.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 18f220ef68..f04a94b3a3 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -796,7 +796,10 @@ MIDI functionality to the Linux-based operating system.") (base32 "0vkg5lzkn4l3i1sm6v3x96zzvnv9g7mi0qgj6279ld383mzcws24")))) (build-system gnu-build-system) - (arguments '(#:tests? #f)) ; no test suite + (arguments + '(#:tests? #f ; no test suite + #:configure-flags ; add $libdir to the RUNPATH of executables + (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")))) (home-page "http://www.netfilter.org/projects/iptables/index.html") (synopsis "Program to configure the Linux IP packet filtering rules") (description -- cgit v1.2.3 From 713e0aa4b394adcefbe963e205aeec4ddd04338a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 11 Apr 2015 12:20:43 +0200 Subject: gnu: netpbm: Remove non-FSDG-compliant code in 'snippet'. * gnu/packages/netpbm.scm (netpbm)[source]: Add 'file-name', 'modules', and 'snippet'. [arguments]: Remove 'substitute*' uses that removed non-FSDG-compliant code since this is now done in 'snippet'. --- gnu/packages/netpbm.scm | 51 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/gnu/packages/netpbm.scm b/gnu/packages/netpbm.scm index 8e4c29cb16..475635e7e1 100644 --- a/gnu/packages/netpbm.scm +++ b/gnu/packages/netpbm.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2015 Andreas Enge +;;; Copyright © 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -49,7 +50,41 @@ (revision 1832))) (sha256 (base32 - "1mj1pqq18yj0yb6l24zfjls7axhqmiv0pvcaabl5xvc4a0dm543j")))) + "1mj1pqq18yj0yb6l24zfjls7axhqmiv0pvcaabl5xvc4a0dm543j")) + (file-name (string-append name "-" version "-checkout")) + (modules '((guix build utils))) + (snippet + ;; Remove non-FSDG-compliant code. + '(begin + (use-modules (guix build utils)) + + (define-syntax drop + (syntax-rules (in) + ;; Remove PROGRAM from DIRECTORY/Makefile, and remove + ;; DIRECTORY/PROGRAM and DIRECTORY/PROGRAM.c. + ((_ program ... in directory) + (begin + (substitute* (string-append directory "/Makefile") + ((program) "") ...) + + (let* ((subdir (string-append directory "/" program)) + (dot-c (string-append subdir ".c"))) + (when (file-exists? subdir) + (delete-file-recursively subdir)) + (when (file-exists? dot-c) + (delete-file dot-c))) + + ...)))) + + ;; Drop advertisement for non-free program. + (drop "hpcdtoppm" in "converter/ppm") + + ;; Drop programs without a license, see + ;; . + (drop "pbmto4425" "pbmtoln03" "pbmtolps" "pbmtopk" "pktopbm" + in "converter/pbm") + (drop "spottopgm" in "converter/pgm") + (drop "ppmtopjxl" in "converter/ppm"))))) (build-system gnu-build-system) (inputs `(("ghostscript" ,ghostscript) ("libjpeg" ,libjpeg) @@ -76,19 +111,7 @@ (display "JPEGLIB = libjpeg.so\n" f) (display "ZLIB = libz.so\n" f) (display (string-append "LDFLAGS += -Wl,-rpath=" %output "/lib") f) - (close-port f) - ;; drop advertisement for non-free program - (substitute* "converter/ppm/Makefile" (("hpcdtoppm") "")) - ;; drop programs without license, see - ;; http://packages.debian.org/changelogs/pool/main/n/netpbm-free/netpbm-free_10.0-12.2/libnetpbm10.copyright - (substitute* "converter/pbm/Makefile" - (("pbmto4425") "") - (("pbmtoln03") "") - (("pbmtolps") "") - (("pbmtopk") "") - (("pktopbm") "")) - (substitute* "converter/pgm/Makefile" (("spottopgm") "")) - (substitute* "converter/ppm/Makefile" (("ppmtopjxl") "")))) + (close-port f))) (alist-cons-before 'check 'setup-check (lambda _ -- cgit v1.2.3 From 8550894bfe75369740bbd178481dc8b3c89bad8e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 11 Apr 2015 12:25:19 +0200 Subject: gnu: nspr: Add $libdir to the RUNPATH of binaries. * gnu/packages/gnuzilla.scm (nspr)[arguments]: Add LDFLAGS=-Wl,-rpath=$libdir to #:configure-flags. --- gnu/packages/gnuzilla.scm | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 887bace423..fbe63d99ea 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -103,15 +103,16 @@ in C/C++.") (native-inputs `(("perl", perl))) (arguments - `(#:tests? #f ; no check target - #:configure-flags - `("--enable-64bit") - #:phases - (alist-cons-before - 'configure 'chdir - (lambda _ - (chdir "nspr")) - %standard-phases))) + `(#:tests? #f ; no check target + #:configure-flags (list "--enable-64bit" + (string-append "LDFLAGS=-Wl,-rpath=" + (assoc-ref %outputs "out") + "/lib")) + #:phases (alist-cons-before + 'configure 'chdir + (lambda _ + (chdir "nspr")) + %standard-phases))) (home-page "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR") (synopsis "Netscape API for system level and libc-like functions") -- cgit v1.2.3 From cceab87536d0385e406f30dea001d48e9b8f5621 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 11 Apr 2015 12:29:10 +0200 Subject: packages: Add 'bag-direct-inputs'. * guix/packages.scm (bag-direct-inputs): New procedure. (bag-transitive-inputs): Use it. --- guix/packages.scm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/guix/packages.scm b/guix/packages.scm index 99fbd24cb6..f278db50f1 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -107,6 +107,7 @@ package->bag bag->derivation + bag-direct-inputs bag-transitive-inputs bag-transitive-host-inputs bag-transitive-build-inputs @@ -580,11 +581,15 @@ supported by its dependencies." (package-supported-systems package) (package-direct-inputs package))) +(define (bag-direct-inputs bag) + "Same as 'package-direct-inputs', but applied to a bag." + (append (bag-build-inputs bag) + (bag-host-inputs bag) + (bag-target-inputs bag))) + (define (bag-transitive-inputs bag) "Same as 'package-transitive-inputs', but applied to a bag." - (transitive-inputs (append (bag-build-inputs bag) - (bag-host-inputs bag) - (bag-target-inputs bag)))) + (transitive-inputs (bag-direct-inputs bag))) (define (bag-transitive-build-inputs bag) "Same as 'package-transitive-native-inputs', but applied to a bag." -- cgit v1.2.3 From 9bf3ced06c42700d6c83ce3a0eda244798104618 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 11 Apr 2015 12:41:49 +0200 Subject: packages: 'package-transitive-supported-systems' accounts for implicit inputs. Reported by Federico Beffa. * guix/packages.scm (package-transitive-supported-systems): Use bag-direct-inputs + package->bag rather than package-direct-inputs. * tests/packages.scm ("package-transitive-supported-systems"): Add explicit 'build-system' field to each 'dummy-package' form. ("package-transitive-supported-systems, implicit inputs"): New test. --- guix/packages.scm | 2 +- tests/packages.scm | 41 ++++++++++++++++++++++++++++++++--------- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/guix/packages.scm b/guix/packages.scm index f278db50f1..7d4696fb5e 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -579,7 +579,7 @@ supported by its dependencies." (_ systems))) (package-supported-systems package) - (package-direct-inputs package))) + (bag-direct-inputs (package->bag package)))) (define (bag-direct-inputs bag) "Same as 'package-direct-inputs', but applied to a bag." diff --git a/tests/packages.scm b/tests/packages.scm index b50551e963..a93ee66831 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -128,21 +128,44 @@ ("y") ;c ("y") ;d ("y")) ;e - (let* ((a (dummy-package "a" (supported-systems '("x" "y" "z")))) - (b (dummy-package "b" (supported-systems '("x" "y")) - (inputs `(("a" ,a))))) - (c (dummy-package "c" (supported-systems '("y" "z")) - (inputs `(("b" ,b))))) - (d (dummy-package "d" (supported-systems '("x" "y" "z")) - (inputs `(("b" ,b) ("c" ,c))))) - (e (dummy-package "e" (supported-systems '("x" "y" "z")) - (inputs `(("d" ,d)))))) + ;; Use TRIVIAL-BUILD-SYSTEM because it doesn't add implicit inputs and thus + ;; doesn't restrict the set of supported systems. + (let* ((a (dummy-package "a" + (build-system trivial-build-system) + (supported-systems '("x" "y" "z")))) + (b (dummy-package "b" + (build-system trivial-build-system) + (supported-systems '("x" "y")) + (inputs `(("a" ,a))))) + (c (dummy-package "c" + (build-system trivial-build-system) + (supported-systems '("y" "z")) + (inputs `(("b" ,b))))) + (d (dummy-package "d" + (build-system trivial-build-system) + (supported-systems '("x" "y" "z")) + (inputs `(("b" ,b) ("c" ,c))))) + (e (dummy-package "e" + (build-system trivial-build-system) + (supported-systems '("x" "y" "z")) + (inputs `(("d" ,d)))))) (list (package-transitive-supported-systems a) (package-transitive-supported-systems b) (package-transitive-supported-systems c) (package-transitive-supported-systems d) (package-transitive-supported-systems e)))) +(test-equal "package-transitive-supported-systems, implicit inputs" + %supported-systems + + ;; Here GNU-BUILD-SYSTEM adds implicit inputs that build only on + ;; %SUPPORTED-SYSTEMS. Thus the others must be ignored. + (let ((p (dummy-package "foo" + (build-system gnu-build-system) + (supported-systems + `("does-not-exist" "foobar" ,@%supported-systems))))) + (package-transitive-supported-systems p))) + (test-skip (if (not %store) 8 0)) (test-assert "package-source-derivation, file" -- cgit v1.2.3 From cc1e1b38c9410d2e5cf8e5259dafc3215c579533 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 11 Apr 2015 17:02:30 +0200 Subject: gnu: elfutils: Work around PTRACE_ATTACH-induced test failures. * gnu/packages/patches/elfutils-tests-ptrace.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/elf.scm (elfutils)[source]: Use it. --- gnu-system.am | 1 + gnu/packages/elf.scm | 6 ++- gnu/packages/patches/elfutils-tests-ptrace.patch | 64 ++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 gnu/packages/patches/elfutils-tests-ptrace.patch diff --git a/gnu-system.am b/gnu-system.am index 0f9da34a54..8ad58d0eaa 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -408,6 +408,7 @@ dist_patch_DATA = \ gnu/packages/patches/doxygen-tmake.patch \ gnu/packages/patches/duplicity-piped-password.patch \ gnu/packages/patches/duplicity-test_selection-tmp.patch \ + gnu/packages/patches/elfutils-tests-ptrace.patch \ gnu/packages/patches/eudev-rules-directory.patch \ gnu/packages/patches/findutils-absolute-paths.patch \ gnu/packages/patches/flashrom-use-libftdi1.patch \ diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm index 540478c075..7f9ac8a18f 100644 --- a/gnu/packages/elf.scm +++ b/gnu/packages/elf.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2015 Andreas Enge ;;; @@ -38,7 +38,9 @@ version "/elfutils-" version ".tar.bz2")) (sha256 (base32 - "0w50szymyqvx8g0vkwrvnv17grqxva6x1z9dm9m3i99zg2hr232p")))) + "0w50szymyqvx8g0vkwrvnv17grqxva6x1z9dm9m3i99zg2hr232p")) + (patches + (list (search-patch "elfutils-tests-ptrace.patch"))))) (build-system gnu-build-system) ;; Separate programs because that's usually not what elfutils users want, diff --git a/gnu/packages/patches/elfutils-tests-ptrace.patch b/gnu/packages/patches/elfutils-tests-ptrace.patch new file mode 100644 index 0000000000..cd46999063 --- /dev/null +++ b/gnu/packages/patches/elfutils-tests-ptrace.patch @@ -0,0 +1,64 @@ +This patch allows us to skip tests that require PTRACE_ATTACH in situations +where PTRACE_ATTACH is only allowed when CAP_SYS_PTRACE is held (i.e., for +root, by default.) + +Reported at . + +--- elfutils-0.161/tests/run-deleted.sh 2015-04-11 16:38:33.028556235 +0200 ++++ elfutils-0.161/tests/run-deleted.sh 2015-04-11 16:46:15.012442185 +0200 +@@ -17,6 +17,15 @@ + + . $srcdir/backtrace-subr.sh + ++# Check whether the Yama policy allows us to use PTRACE_ATTACH. ++if [ -f /proc/sys/kernel/yama/ptrace_scope ] ++then ++ if [ `cat /proc/sys/kernel/yama/ptrace_scope` -ne 0 ] ++ then ++ exit 77 ++ fi ++fi ++ + tempfiles deleted deleted-lib.so + cp -p ${abs_builddir}/deleted ${abs_builddir}/deleted-lib.so . + +--- elfutils-0.161/tests/vdsosyms.c 2015-04-11 16:40:20.633461110 +0200 ++++ elfutils-0.161/tests/vdsosyms.c 2015-04-11 16:45:06.611866677 +0200 +@@ -23,6 +23,8 @@ + #include + #include + #include ++#include ++#include + #include + #include ELFUTILS_HEADER(dwfl) + +@@ -68,6 +70,7 @@ module_callback (Dwfl_Module *mod, void + int + main (int argc __attribute__ ((unused)), char **argv __attribute__ ((unused))) + { ++ static const char ptrace_scope_file[] = "/proc/sys/kernel/yama/ptrace_scope"; + static char *debuginfo_path; + static const Dwfl_Callbacks proc_callbacks = + { +@@ -76,6 +79,20 @@ main (int argc __attribute__ ((unused)), + + .find_elf = dwfl_linux_proc_find_elf, + }; ++ ++ /* Check whether the Yama policy allows us to use PTRACE_ATTACH. */ ++ int ptrace_scope = open (ptrace_scope_file, O_RDONLY); ++ if (ptrace_scope >= 0) ++ { ++ char buf[10]; ++ int count = read (ptrace_scope, buf, sizeof buf); ++ assert (count > 0); ++ if (buf[0] != '0') ++ /* We're not allowed, so skip this test. */ ++ return 77; ++ close (ptrace_scope); ++ } ++ + Dwfl *dwfl = dwfl_begin (&proc_callbacks); + if (dwfl == NULL) + error (2, 0, "dwfl_begin: %s", dwfl_errmsg (-1)); -- cgit v1.2.3 From 13cc689ae8f5d40d124e756cc64b32c41bc1b8d6 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 11 Apr 2015 17:08:27 +0200 Subject: gnu: elfutils: Add $libdir to the RUNPATH of binaries. * gnu/packages/elf.scm (elfutils)[arguments]: New field. --- gnu/packages/elf.scm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm index 7f9ac8a18f..cb456af195 100644 --- a/gnu/packages/elf.scm +++ b/gnu/packages/elf.scm @@ -48,6 +48,13 @@ (outputs '("out" ; libelf.so, elfutils/*.h, etc. "bin")) ; ld, nm, objdump, etc. + (arguments + ;; Programs don't have libelf.so in their RUNPATH and libraries don't + ;; know where to find each other. + `(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" + (assoc-ref %outputs "out") + "/lib")))) + (native-inputs `(("m4" ,m4))) (inputs `(("zlib" ,zlib))) (home-page "https://fedorahosted.org/elfutils/") -- cgit v1.2.3 From 260b07a7d0e67bd9a22259192b6e4222e468b0d9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 12 Apr 2015 14:45:08 +0200 Subject: gnu: gtk+: Pass --with-html-dir=$doc. Fixes a regression introduced in 6b1f238. * gnu/packages/gtk.scm (gtk+)[arguments]: Add #:configure-flags. --- gnu/packages/gtk.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index cd36ebfd65..cd54cfc5b9 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -505,7 +505,12 @@ application suites.") ("python-wrapper" ,python-wrapper) ("xorg-server" ,xorg-server))) (arguments - `(#:phases + `(;; 47 MiB goes to "out" (24 of which is locale data!), and 26 MiB goes + ;; to "doc". + #:configure-flags (list (string-append "--with-html-dir=" + (assoc-ref %outputs "doc") + "/share/gtk-doc/html")) + #:phases (alist-cons-before 'configure 'pre-configure (lambda _ -- cgit v1.2.3 From ce6fc7d6a5345fd1c28e1a59cca807e81244b3e2 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 12 Apr 2015 15:16:48 +0200 Subject: build: Build and install (guix build-system haskell). * Makefile.am (MODULES): Add guix/build-system/haskell.scm. --- Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.am b/Makefile.am index 51884b9221..05ce9aa7b4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -51,6 +51,7 @@ MODULES = \ guix/build-system/cmake.scm \ guix/build-system/glib-or-gtk.scm \ guix/build-system/gnu.scm \ + guix/build-system/haskell.scm \ guix/build-system/perl.scm \ guix/build-system/python.scm \ guix/build-system/waf.scm \ -- cgit v1.2.3 From b158f1d751b17acc1700fce9777d2b85ffa8e914 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 12 Apr 2015 15:33:42 +0200 Subject: system: Allow users to PTRACE_ATTACH to their own processes. * gnu/build/activation.scm (activate-ptrace-attach): New procedure. * gnu/system.scm (operating-system-activation-script): Use it. --- gnu/build/activation.scm | 13 +++++++++++++ gnu/system.scm | 3 +++ 2 files changed, 16 insertions(+) diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm index 64c3410baf..0c60355a1c 100644 --- a/gnu/build/activation.scm +++ b/gnu/build/activation.scm @@ -30,6 +30,7 @@ activate-/bin/sh activate-modprobe activate-firmware + activate-ptrace-attach activate-current-system)) ;;; Commentary: @@ -335,6 +336,18 @@ by itself, without having to resort to a \"user helper\"." (lambda (port) (display directory port)))) +(define (activate-ptrace-attach) + "Allow users to PTRACE_ATTACH their own processes. + +This works around a regression introduced in the default \"security\" policy +found in Linux 3.4 onward that prevents users from attaching to their own +processes--see Yama.txt in the Linux source tree for the rationale. This +sounds like an unacceptable restriction for little or no security +improvement." + (call-with-output-file "/proc/sys/kernel/yama/ptrace_scope" + (lambda (port) + (display 0 port)))) + (define %current-system ;; The system that is current (a symlink.) This is not necessarily the same diff --git a/gnu/system.scm b/gnu/system.scm index a91c7136da..6cf12df604 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -681,6 +681,9 @@ etc." (activate-firmware (string-append #$firmware "/lib/firmware")) + ;; Let users debug their own processes! + (activate-ptrace-attach) + ;; Run the services' activation snippets. ;; TODO: Use 'load-compiled'. (for-each primitive-load '#$actions) -- cgit v1.2.3 From 99af4996ea4822b2da884bd51539b8a6e9863f99 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 12 Apr 2015 22:19:18 +0200 Subject: gnu: man-pages: Update to 3.82. * gnu/packages/man.scm (man-pages): Update to 3.82. --- gnu/packages/man.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm index f5bd339100..a92c6dd132 100644 --- a/gnu/packages/man.scm +++ b/gnu/packages/man.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2014 Ludovic Courtès +;;; Copyright © 2012, 2014, 2015 Ludovic Courtès ;;; Copyright © 2014 David Thompson ;;; Copyright © 2015 Ricardo Wurmus ;;; @@ -119,7 +119,7 @@ the traditional flat-text whatis databases.") (define-public man-pages (package (name "man-pages") - (version "3.69") + (version "3.82") (source (origin (method url-fetch) (uri (string-append @@ -127,7 +127,7 @@ the traditional flat-text whatis databases.") version ".tar.xz")) (sha256 (base32 - "18zzmdzjihdnyg4vamk0jp6v6826vrsgal3kqqxvfq9bzyrh8xm2")))) + "1c8q618shf469nfp55qrwjv9630fgq5abfk946xya9hw1bfp6wjl")))) (build-system gnu-build-system) (arguments '(#:phases (alist-delete 'configure %standard-phases) -- cgit v1.2.3 From 4c9050c63d707222730fc6112415f4324e0c7c37 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 12 Apr 2015 22:34:47 +0200 Subject: doc: Add example showing how to customize 'nscd-service'. * doc/guix.texi (Name Service Switch): Add link to nss-mdns. Add example show how to pass #:name-services to 'nscd-service'. (Base Services): Add link from 'nscd-service' to the above. * gnu/services/base.scm (nscd-service): Update docstring accordingly. --- doc/guix.texi | 38 +++++++++++++++++++++++++++++++++++--- gnu/services/base.scm | 2 +- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index c0af4cb722..872caa8bf0 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4531,7 +4531,8 @@ the ``message of the day''. Return a service that runs libc's name service cache daemon (nscd) with the given @var{config}---an @code{} object. Optionally, @code{#:name-services} is a list of packages that provide -name service switch (NSS) modules needed by nscd. +name service switch (NSS) modules needed by nscd. @xref{Name Service +Switch}, for an example. @end deffn @defvr {Scheme Variable} %nscd-default-configuration @@ -4898,9 +4899,12 @@ next method in the list. The NSS configuration is given in the @code{name-service-switch} field of @code{operating-system} declarations (@pxref{operating-system Reference, @code{name-service-switch}}). -@c See . +@cindex nss-mdns +@cindex .local, host name lookup As an example, the declaration below configures the NSS to use the -@code{nss-mdns} back-end for host name lookups: +@uref{http://0pointer.de/lennart/projects/nss-mdns/, @code{nss-mdns} +back-end}, which supports host name lookups over multicast DNS (mDNS) +for host names ending in @code{.local}: @example (name-service-switch @@ -4926,6 +4930,34 @@ As an example, the declaration below configures the NSS to use the (name "mdns"))))) @end example +Note that, in this case, in addition to setting the +@code{name-service-switch} of the @code{operating-system} declaration, +@code{nscd-service} must be told where to find the @code{nss-mdns} +shared library (@pxref{Base Services, @code{nscd-service}}). Since the +@code{nscd} service is part of @var{%base-services}, you may want to +customize it by adding this snippet in the operating system +configuration file: + +@example +(use-modules (guix) (gnu)) + +(define %my-base-services + ;; Replace the default nscd service with one that knows + ;; about nss-mdns. + (map (lambda (mservice) + ;; "Bind" the MSERVICE monadic value to inspect it. + (mlet %store-monad ((service mservice)) + (if (member 'nscd (service-provision service)) + (nscd-service (nscd-configuration) + #:name-services (list nss-mdns)) + mservice))) + %base-services)) +@end example + +@noindent +@dots{} and then refer to @var{%my-base-services} instead of +@var{%base-services} in the @code{operating-system} declaration. + The reference for name service switch configuration is given below. It is a direct mapping of the C library's configuration file format, so please refer to the C library manual for more information (@pxref{NSS diff --git a/gnu/services/base.scm b/gnu/services/base.scm index cd1ba0b7b9..956fa7efa0 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -499,7 +499,7 @@ the ``message of the day''." "Return a service that runs libc's name service cache daemon (nscd) with the given @var{config}---an @code{} object. Optionally, @code{#:name-services} is a list of packages that provide name service switch - (NSS) modules needed by nscd." + (NSS) modules needed by nscd. @xref{Name Service Switch}, for an example." (mlet %store-monad ((nscd.conf (nscd.conf-file config))) (return (service (documentation "Run libc's name service cache daemon (nscd).") -- cgit v1.2.3 From 8cba6fc9ee18ae7dd178860d196770036d804667 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 12 Apr 2015 15:27:54 -0400 Subject: gnu: nettle: Add debug output. * gnu/packages/nettle.scm (nettle)[outputs]: Add debug output. --- gnu/packages/nettle.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/nettle.scm b/gnu/packages/nettle.scm index 827fed2b1d..ed140d43c0 100644 --- a/gnu/packages/nettle.scm +++ b/gnu/packages/nettle.scm @@ -43,6 +43,7 @@ '(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")))) + (outputs '("out" "debug")) (native-inputs `(("m4" ,m4))) (propagated-inputs `(("gmp" ,gmp))) (home-page "http://www.lysator.liu.se/~nisse/nettle/") -- cgit v1.2.3 From 7ae3e06a322cc1801cecd90ae01eb811800a02cd Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 12 Apr 2015 15:28:19 -0400 Subject: gnu: gnutls: Add debug output. * gnu/packages/gnutls.scm (gnutls)[outputs]: Add debug output. --- gnu/packages/gnutls.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/gnutls.scm b/gnu/packages/gnutls.scm index 2a77243ef4..c55124cb67 100644 --- a/gnu/packages/gnutls.scm +++ b/gnu/packages/gnutls.scm @@ -131,6 +131,7 @@ living in the same process.") ;; fallback, and users have to configure each program ;; independently. This seems suboptimal. "--with-default-trust-store-dir=/etc/ssl/certs"))) + (outputs '("out" "debug")) (native-inputs `(("pkg-config" ,pkg-config) ("which" ,which))) -- cgit v1.2.3 From 866f469eddb6a28cfdbc3b2eec3d3a6a241f7168 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 12 Apr 2015 16:18:12 -0400 Subject: gnu: gnutls: Update to 3.4.0. * gnu/packages/patches/gnutls-fix-duplicate-manpages.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/gnutls.scm (gnutls)[source]: Update to 3.4.0. Add patch. [arguments]: Pass --without-p11-kit to 'configure'. [propagated-inputs]: Use 'nettle' instead of 'nettle-2'. Add 'libidn'. --- gnu-system.am | 1 + gnu/packages/gnutls.scm | 16 +++++++++--- .../patches/gnutls-fix-duplicate-manpages.patch | 30 ++++++++++++++++++++++ 3 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 gnu/packages/patches/gnutls-fix-duplicate-manpages.patch diff --git a/gnu-system.am b/gnu-system.am index 8ad58d0eaa..f28cd145ee 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -427,6 +427,7 @@ dist_patch_DATA = \ gnu/packages/patches/glibc-ldd-x86_64.patch \ gnu/packages/patches/glibc-locales.patch \ gnu/packages/patches/gmp-arm-asm-nothumb.patch \ + gnu/packages/patches/gnutls-fix-duplicate-manpages.patch \ gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch \ gnu/packages/patches/gobject-introspection-cc.patch \ gnu/packages/patches/gobject-introspection-girepository.patch \ diff --git a/gnu/packages/gnutls.scm b/gnu/packages/gnutls.scm index c55124cb67..8e8dc400bf 100644 --- a/gnu/packages/gnutls.scm +++ b/gnu/packages/gnutls.scm @@ -29,6 +29,7 @@ #:use-module (gnu packages) #:use-module (gnu packages guile) #:use-module (gnu packages libffi) + #:use-module (gnu packages libidn) #:use-module (gnu packages nettle) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -103,7 +104,7 @@ living in the same process.") (define-public gnutls (package (name "gnutls") - (version "3.3.14") + (version "3.4.0") (source (origin (method url-fetch) (uri @@ -114,7 +115,9 @@ living in the same process.") "/gnutls-" version ".tar.xz")) (sha256 (base32 - "0lpcgkp8bb1b7f9z935f7h9c0srd4fc52404x70hk2ddz8q01yhd")))) + "0bj7ydvsyvml59b6040wg7694iz37rwnqnv09bic9ddz652588ml")) + (patches + (list (search-patch "gnutls-fix-duplicate-manpages.patch"))))) (build-system gnu-build-system) (arguments '(#:configure-flags @@ -130,7 +133,11 @@ living in the same process.") ;; store is used, so each program has to provide its own ;; fallback, and users have to configure each program ;; independently. This seems suboptimal. - "--with-default-trust-store-dir=/etc/ssl/certs"))) + "--with-default-trust-store-dir=/etc/ssl/certs" + + ;; FIXME: Temporarily disable p11-kit support since it is not + ;; working on mips64el. + "--without-p11-kit"))) (outputs '("out" "debug")) (native-inputs `(("pkg-config" ,pkg-config) @@ -141,7 +148,8 @@ living in the same process.") (propagated-inputs ;; These are all in the 'Requires.private' field of gnutls.pc. `(("libtasn1" ,libtasn1) - ("nettle" ,nettle-2) + ("libidn" ,libidn) + ("nettle" ,nettle) ("zlib" ,zlib))) (home-page "http://www.gnu.org/software/gnutls/") (synopsis "Transport layer security library") diff --git a/gnu/packages/patches/gnutls-fix-duplicate-manpages.patch b/gnu/packages/patches/gnutls-fix-duplicate-manpages.patch new file mode 100644 index 0000000000..95a25560e5 --- /dev/null +++ b/gnu/packages/patches/gnutls-fix-duplicate-manpages.patch @@ -0,0 +1,30 @@ +Remove duplicate manpage entries from Makefile. + +--- gnutls-3.4.0/doc/manpages/Makefile.am.orig 2015-04-06 04:48:30.000000000 -0400 ++++ gnutls-3.4.0/doc/manpages/Makefile.am 2015-04-12 16:52:58.029694525 -0400 +@@ -134,11 +134,8 @@ + APIMANS += gnutls_certificate_get_peers_subkey_id.3 + APIMANS += gnutls_certificate_get_trust_list.3 + APIMANS += gnutls_certificate_get_verify_flags.3 +-APIMANS += gnutls_certificate_get_verify_flags.3 +-APIMANS += gnutls_certificate_get_x509_crt.3 + APIMANS += gnutls_certificate_get_x509_crt.3 + APIMANS += gnutls_certificate_get_x509_key.3 +-APIMANS += gnutls_certificate_get_x509_key.3 + APIMANS += gnutls_certificate_send_x509_rdn_sequence.3 + APIMANS += gnutls_certificate_server_set_request.3 + APIMANS += gnutls_certificate_set_dh_params.3 +--- gnutls-3.4.0/doc/manpages/Makefile.in.orig 2015-04-08 02:08:30.000000000 -0400 ++++ gnutls-3.4.0/doc/manpages/Makefile.in 2015-04-12 16:53:13.319694530 -0400 +@@ -1275,11 +1275,8 @@ + gnutls_certificate_get_peers_subkey_id.3 \ + gnutls_certificate_get_trust_list.3 \ + gnutls_certificate_get_verify_flags.3 \ +- gnutls_certificate_get_verify_flags.3 \ +- gnutls_certificate_get_x509_crt.3 \ + gnutls_certificate_get_x509_crt.3 \ + gnutls_certificate_get_x509_key.3 \ +- gnutls_certificate_get_x509_key.3 \ + gnutls_certificate_send_x509_rdn_sequence.3 \ + gnutls_certificate_server_set_request.3 \ + gnutls_certificate_set_dh_params.3 \ -- cgit v1.2.3 From 002c57c6f7d51077e4796106177456ebb564e25a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 12 Apr 2015 23:14:19 +0200 Subject: lint: Add a 'derivation' checker. * guix/scripts/lint.scm (check-derivation): New procedure. (%checkers): Add 'derivation' checker. * tests/lint.scm ("derivation: invalid arguments"): New test. --- guix/scripts/lint.scm | 27 +++++++++++++++++++++++++++ tests/lint.scm | 10 ++++++++++ 2 files changed, 37 insertions(+) diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index 699311a6a9..cced1bda66 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm @@ -19,6 +19,7 @@ ;;; along with GNU Guix. If not, see . (define-module (guix scripts lint) + #:use-module (guix store) #:use-module (guix base32) #:use-module (guix download) #:use-module (guix ftp-client) @@ -32,6 +33,8 @@ #:use-module (ice-9 regex) #:use-module (ice-9 format) #:use-module (web uri) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) #:use-module ((guix build download) #:select (maybe-expand-mirrors open-connection-for-uri)) @@ -49,6 +52,7 @@ check-inputs-should-be-native check-patch-file-names check-synopsis-style + check-derivation check-home-page check-source)) @@ -440,6 +444,25 @@ descriptions maintained upstream." (append-map (cut maybe-expand-mirrors <> %mirrors) uris)))))) +(define (check-derivation package) + "Emit a warning if we fail to compile PACKAGE to a derivation." + (catch #t + (lambda () + (guard (c ((nix-protocol-error? c) + (emit-warning package + (format #f (_ "failed to create derivation: ~a") + (nix-protocol-error-message c)))) + ((message-condition? c) + (emit-warning package + (format #f (_ "failed to create derivation: ~a") + (condition-message c))))) + (with-store store + (package-derivation store package)))) + (lambda args + (emit-warning package + (format #f (_ "failed to create derivation: ~s~%") + args))))) + ;;; @@ -472,6 +495,10 @@ descriptions maintained upstream." (name 'source) (description "Validate source URLs") (check check-source)) + (lint-checker + (name 'derivation) + (description "Report failure to compile a package to a derivation") + (check check-derivation)) (lint-checker (name 'synopsis) (description "Validate package synopses") diff --git a/tests/lint.scm b/tests/lint.scm index ab89a58ae6..2807eba1cc 100644 --- a/tests/lint.scm +++ b/tests/lint.scm @@ -319,6 +319,16 @@ requests." (check-patch-file-names pkg))) "patch not found"))) +(test-assert "derivation: invalid arguments" + (->bool + (string-contains + (with-warnings + (let ((pkg (dummy-package "x" + (arguments + '(#:imported-modules (invalid-module)))))) + (check-derivation pkg))) + "failed to create derivation"))) + (test-assert "home-page: wrong home-page" (->bool (string-contains -- cgit v1.2.3 From a1d5bb0ec790d55d6800ad7e740ded44a32ed215 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sun, 12 Apr 2015 23:31:36 +0200 Subject: gnu: Add upower. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/gnome.scm (upower): New variable. * gnu/packages/patches/upower-builddir.patch: New patch. * gnu-system.am (dist_patch_DATA): Add it. Signed-off-by: Ludovic Courtès --- gnu-system.am | 1 + gnu/packages/gnome.scm | 50 ++++++++++++++++++++++++++++++ gnu/packages/patches/upower-builddir.patch | 44 ++++++++++++++++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 gnu/packages/patches/upower-builddir.patch diff --git a/gnu-system.am b/gnu-system.am index f28cd145ee..7b83f4cf67 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -540,6 +540,7 @@ dist_patch_DATA = \ gnu/packages/patches/unzip-CVE-2014-8140.patch \ gnu/packages/patches/unzip-CVE-2014-8141.patch \ gnu/packages/patches/util-linux-tests.patch \ + gnu/packages/patches/upower-builddir.patch \ gnu/packages/patches/valgrind-glibc-2.21.patch \ gnu/packages/patches/vpnc-script.patch \ gnu/packages/patches/vtk-mesa-10.patch \ diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 55a4978480..217b1350b9 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2028,3 +2028,53 @@ and latitude from an address) and reverse geocoding (finding an address from coordinates) using the Nominatim service. geocode-glib caches requests for faster results and to avoid unnecessary server load.") (license license:lgpl2.0+))) + +(define-public upower + (package + (name "upower") + (version "0.99.2") + (source (origin + (method url-fetch) + (uri (string-append "http://upower.freedesktop.org/releases/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0vwlh20jmaf01m38kfn8yx2869a3clmkzlycrj99rf4nvwx4bp79")) + (patches (list (search-patch "upower-builddir.patch"))))) + (build-system glib-or-gtk-build-system) + (arguments + '( ;; The tests want to contact the system bus, which can't be done in the + ;; build environment. The integration test can run, but the last of + ;; the up-self-tests doesn't. Disable tests for now. + #:tests? #f + #:configure-flags (list "--localstatedir=/var" + (string-append "--with-udevrulesdir=" + (assoc-ref %outputs "out") + "/lib/udev/rules.d")) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'patch-/bin/true + (lambda _ + (substitute* "configure" + (("/bin/true") (which "true"))))) + (add-before 'configure 'patch-integration-test + (lambda _ + (substitute* "src/linux/integration-test" + (("/usr/bin/python3") (which "python3")))))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("intltool" ,intltool) + ("python" ,python))) + (inputs + `(("eudev" ,eudev) + ("dbus" ,dbus) + ("dbus-glib" ,dbus-glib) + ("libusb" ,libusb))) + (home-page "http://upower.freedesktop.org/") + (synopsis "System daemon for managing power devices") + (description + "UPower is an abstraction for enumerating power devices, +listening to device events and querying history and statistics. Any +application or service on the system can access the org.freedesktop.UPower +service via the system message bus.") + (license license:gpl2+))) diff --git a/gnu/packages/patches/upower-builddir.patch b/gnu/packages/patches/upower-builddir.patch new file mode 100644 index 0000000000..13cef5876a --- /dev/null +++ b/gnu/packages/patches/upower-builddir.patch @@ -0,0 +1,44 @@ +Remove explicit set of UPOWER_CONF_FILE_NAME in up-self-test.c; +instead the harness should set it. In Guix we set it explicitly; the +right thing is to use AM_TEST_ENVIRONMENT and regenerate the +makefiles, but we can't regenerate because current autotools carp on +some things, so we patch the Makefile.in instead. + +Also fix to not try to create /var/lib/upower if /var isn't writable. + +Patch by Andy Wingo + +--- upower-0.99.2.orig/src/Makefile.in 2014-12-18 10:32:01.000000000 +0100 ++++ upower-0.99.2/src/Makefile.in 2015-04-04 19:49:28.020843678 +0200 +@@ -780,6 +780,7 @@ + + @UP_BUILD_TESTS_TRUE@up_self_test_CFLAGS = $(AM_CFLAGS) $(WARNINGFLAGS_C) + @UP_BUILD_TESTS_TRUE@TESTS_ENVIRONMENT = $(DBUS_LAUNCH) ++@UP_BUILD_TESTS_TRUE@AM_TESTS_ENVIRONMENT = UPOWER_CONF_FILE_NAME=$(top_srcdir)/etc/UPower.conf + dbusservicedir = $(datadir)/dbus-1/system-services + dbusservice_in_files = org.freedesktop.UPower.service.in + dbusservice_DATA = $(dbusservice_in_files:.service.in=.service) +@@ -1789,7 +1790,7 @@ + @HAVE_SYSTEMDSYSTEMUNITDIR_TRUE@ @sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@ + + install-data-hook: +- if test -w $(DESTDIR)$(prefix)/; then \ ++ if test -w $(DESTDIR)$(localstatedir)/; then \ + mkdir -p $(DESTDIR)$(historydir); \ + fi + +--- upower-0.99.2.orig/src/up-self-test.c 2014-07-17 09:46:15.000000000 +0200 ++++ upower-0.99.2/src/up-self-test.c 2015-04-04 18:43:04.952741927 +0200 +@@ -295,12 +295,6 @@ + #endif + g_test_init (&argc, &argv, NULL); + +- /* make check, vs. make distcheck */ +- if (g_file_test ("../etc/UPower.conf", G_FILE_TEST_EXISTS)) +- g_setenv ("UPOWER_CONF_FILE_NAME", "../etc/UPower.conf", TRUE); +- else +- g_setenv ("UPOWER_CONF_FILE_NAME", "../../etc/UPower.conf", TRUE); +- + /* tests go here */ + g_test_add_func ("/power/backend", up_test_backend_func); + g_test_add_func ("/power/device", up_test_device_func); -- cgit v1.2.3 From be234128487306fd922c61fbb0162c53eb5fe6df Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sat, 4 Apr 2015 21:49:02 +0200 Subject: services: Add upower. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu-system.am (GNU_SYSTEM_MODULES): Add gnu/services/upower.scm. * gnu/services/upower.scm: New file, defining a upower service. * doc/guix.texi (Various Services): Mention it. Co-authored-by: Ludovic Courtès --- doc/guix.texi | 21 +++++++++ gnu-system.am | 1 + gnu/services/upower.scm | 122 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 144 insertions(+) create mode 100644 gnu/services/upower.scm diff --git a/doc/guix.texi b/doc/guix.texi index 7dbfb661b0..35b8cc1b45 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4831,6 +4831,27 @@ Finally, @var{extra-options} is a list of additional command-line options passed to @command{lircd}. @end deffn +@code{(gnu services upower)} provides a power-management daemon: + +@deffn {Monadic Procedure} upower-service [#:upower @var{upower}] @ + [#:watts-up-pro? #f] @ + [#:poll-batteries? #t] @ + [#:ignore-lid? #f] @ + [#:use-percentage-for-policy? #f] @ + [#:percentage-low 10] @ + [#:percentage-critical 3] @ + [#:percentage-action 2] @ + [#:time-low 1200] @ + [#:time-critical 300] @ + [#:time-action 120] @ + [#:critical-power-action 'hybrid-sleep] +Return a service that runs @uref{http://upower.freedesktop.org/, +@command{upowerd}}, a system-wide monitor for power consumption and battery +levels, with the given configuration settings. It implements the +@code{org.freedesktop.UPower} D-Bus interface, and is notably used by +GNOME. +@end deffn + @code{(gnu services colord)} provides a color management service: @deffn {Monadic Procedure} colord-service [#:colord @var{colord}] diff --git a/gnu-system.am b/gnu-system.am index 7b83f4cf67..afe43bc67a 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -330,6 +330,7 @@ GNU_SYSTEM_MODULES = \ gnu/services/lirc.scm \ gnu/services/networking.scm \ gnu/services/ssh.scm \ + gnu/services/upower.scm \ gnu/services/xorg.scm \ \ gnu/system.scm \ diff --git a/gnu/services/upower.scm b/gnu/services/upower.scm new file mode 100644 index 0000000000..3654c812f1 --- /dev/null +++ b/gnu/services/upower.scm @@ -0,0 +1,122 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Andy Wingo +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu services upower) + #:use-module (gnu services) + #:use-module (gnu system shadow) + #:use-module (gnu packages gnome) + #:use-module (ice-9 match) + #:use-module (guix monads) + #:use-module (guix store) + #:use-module (guix gexp) + #:export (upower-service)) + +;;; Commentary: +;;; +;;; This module provides service definitions for the UPower power and battery +;;; monitoring service. +;;; +;;; Code: + +(define* (configuration-file #:key watts-up-pro? poll-batteries? ignore-lid? + use-percentage-for-policy? percentage-low + percentage-critical percentage-action + time-low time-critical time-action + critical-power-action) + "Return an upower-daemon configuration file." + (define (bool value) + (if value "true\n" "false\n")) + + (text-file "UPower.conf" + (string-append + "[UPower]\n" + "EnableWattsUpPro=" (bool watts-up-pro?) + "NoPollBatteries=" (bool (not poll-batteries?)) + "IgnoreLid=" (bool ignore-lid?) + "UsePercentageForPolicy=" (bool use-percentage-for-policy?) + "PercentageLow=" (number->string percentage-low) "\n" + "PercentageCritical=" (number->string percentage-critical) "\n" + "PercentageAction=" (number->string percentage-action) "\n" + "TimeLow=" (number->string time-low) "\n" + "TimeCritical=" (number->string time-critical) "\n" + "TimeAction=" (number->string time-action) "\n" + "CriticalPowerAction=" (match critical-power-action + ('hybrid-sleep "HybridSleep") + ('hibernate "Hibernate") + ('power-off "PowerOff")) + "\n"))) + +(define* (upower-service #:key (upower upower) + (watts-up-pro? #f) + (poll-batteries? #t) + (ignore-lid? #f) + (use-percentage-for-policy? #f) + (percentage-low 10) + (percentage-critical 3) + (percentage-action 2) + (time-low 1200) + (time-critical 300) + (time-action 120) + (critical-power-action 'hybrid-sleep)) + "Return a service that runs @uref{http://upower.freedesktop.org/, +@command{upowerd}}, a system-wide monitor for power consumption and battery +levels, with the given configuration settings. It implements the +@code{org.freedesktop.UPower} D-Bus interface, and is notably used by GNOME." + (mlet %store-monad ((config (configuration-file + #:watts-up-pro? watts-up-pro? + #:poll-batteries? poll-batteries? + #:ignore-lid? ignore-lid? + #:use-percentage-for-policy? use-percentage-for-policy? + #:percentage-low percentage-low + #:percentage-critical percentage-critical + #:percentage-action percentage-action + #:time-low time-low + #:time-critical time-critical + #:time-action time-action + #:critical-power-action critical-power-action))) + (return + (service + (documentation "Run the UPower power and battery monitor.") + (provision '(upower-daemon)) + (requirement '(dbus-system udev)) + + (start #~(make-forkexec-constructor + (list (string-append #$upower "/libexec/upowerd")) + #:environment-variables + (list (string-append "UPOWER_CONF_FILE_NAME=" #$config)))) + (stop #~(make-kill-destructor)) + (activate #~(begin + (use-modules (guix build utils)) + (mkdir-p "/var/lib/upower") + (let ((user (getpwnam "upower"))) + (chown "/var/lib/upower" + (passwd:uid user) (passwd:gid user))))) + + (user-groups (list (user-group + (name "upower") + (system? #t)))) + (user-accounts (list (user-account + (name "upower") + (group "upower") + (system? #t) + (comment "UPower daemon user") + (home-directory "/var/empty") + (shell + "/run/current-system/profile/sbin/nologin")))))))) + +;;; upower.scm ends here -- cgit v1.2.3 From a153ff80c85c5aa426371a1b691395d953fc6a53 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 12 Apr 2015 19:46:20 -0400 Subject: gnu: net-tools: Adapt to linux-libre-headers-3.14.x. * gnu/packages/linux.scm (net-tools): Remove the HAVE_HWSTRIP and HAVE_HWTR options from the configuration. --- gnu/packages/linux.scm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index f04a94b3a3..4a0f61ef22 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -920,10 +920,12 @@ manpages.") ;; Pretend we have everything... (system "yes | make config") - ;; ... except we don't have libdnet, so remove that - ;; definition. + ;; ... except for the things we don't have. + ;; HAVE_AFDECnet requires libdnet, which we don't have. + ;; HAVE_HWSTRIP and HAVE_HWTR require kernel headers + ;; that have been removed. (substitute* '("config.make" "config.h") - (("^.*HAVE_AFDECnet.*$") "")))) + (("^.*HAVE_(AFDECnet|HWSTRIP|HWTR)[ =]1.*$") "")))) (alist-cons-after 'install 'remove-redundant-commands (lambda* (#:key outputs #:allow-other-keys) -- cgit v1.2.3 From 14fe9488f487e63f965b7ba103a95a38ba236569 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 12 Apr 2015 22:50:51 -0400 Subject: gnu: p11-kit: Update to 0.23.1. * gnu/packages/gnutls.scm (p11-kit): Update to 0.23.1. --- gnu/packages/gnutls.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnutls.scm b/gnu/packages/gnutls.scm index 8e8dc400bf..17cd4582ff 100644 --- a/gnu/packages/gnutls.scm +++ b/gnu/packages/gnutls.scm @@ -66,7 +66,7 @@ specifications.") (define-public p11-kit (package (name "p11-kit") - (version "0.22.1") + (version "0.23.1") (source (origin (method url-fetch) @@ -74,7 +74,7 @@ specifications.") version ".tar.gz")) (sha256 (base32 - "0p4sadq2c70jdm7b5a5xw8mk2mqy36krpxr3ihnf783arygk6fpg")) + "1i3a1wdpagm0p3y1bwaz5x5rjhcpqbcrnhkcp10p259vkxk72wz5")) (modules '((guix build utils))) ; for substitute* (snippet '(begin -- cgit v1.2.3 From 9bbd52e5366cb35406082a0289b3ce7ff164b9f3 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 13 Apr 2015 01:15:08 -0400 Subject: gnu: libepoxy: Fix tests on arm. * gnu/packages/gl.scm (libepoxy)[arguments]: When building for arm, patch test/dlwrap.c to fix the tests. --- gnu/packages/gl.scm | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index f3e63180c6..e640f83756 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2013 Joshua Grant ;;; Copyright © 2014 David Thompson -;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2014, 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -434,7 +434,7 @@ OpenGL graphics API.") (base32 "1xp8g6b7xlbym2rj4vkbl6xpb7ijq7glpv656mc7k9b01x22ihs2")))) (arguments - '(#:phases + `(#:phases (alist-cons-after 'unpack 'autoreconf (lambda _ @@ -449,6 +449,16 @@ OpenGL graphics API.") (substitute* (find-files "." "\\.[ch]$") (("libGL.so.1") (string-append mesa "/lib/libGL.so.1")) (("libEGL.so.1") (string-append mesa "/lib/libEGL.so.1"))) + + ;; XXX On armhf systems, we must add "GLIBC_2.4" to the list of + ;; versions in test/dlwrap.c:dlwrap_real_dlsym. It would be + ;; better to make this a normal patch, but for now we do it here + ;; to prevent rebuilding on other platforms. + ,@(if (string-prefix? "arm" (or (%current-target-system) + (%current-system))) + '((substitute* '"test/dlwrap.c" + (("\"GLIBC_2\\.0\"") "\"GLIBC_2.0\", \"GLIBC_2.4\""))) + '()) #t)) %standard-phases)))) (build-system gnu-build-system) -- cgit v1.2.3 From 2784a65af60b92bade714e16222ce1a68f35b20d Mon Sep 17 00:00:00 2001 From: Jason Self Date: Mon, 13 Apr 2015 05:57:50 -0700 Subject: gnu: linux-libre: Update to 4.0 * gnu/packages/linux.scm (linux-libre): Update to version 4.0. --- gnu/packages/linux-libre-i686.conf | 200 ++++++++++++++++++++++++++-------- gnu/packages/linux-libre-x86_64.conf | 204 +++++++++++++++++++++++++++-------- gnu/packages/linux.scm | 4 +- 3 files changed, 312 insertions(+), 96 deletions(-) diff --git a/gnu/packages/linux-libre-i686.conf b/gnu/packages/linux-libre-i686.conf index 2274ea2879..0bda70ef48 100644 --- a/gnu/packages/linux-libre-i686.conf +++ b/gnu/packages/linux-libre-i686.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 3.19.0-gnu Kernel Configuration +# Linux/x86 4.0.0-gnu Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -128,6 +128,7 @@ CONFIG_TASK_IO_ACCOUNTING=y # RCU Subsystem # CONFIG_TREE_RCU=y +CONFIG_SRCU=y # CONFIG_TASKS_RCU is not set CONFIG_RCU_STALL_COMMON=y CONFIG_RCU_FANOUT=32 @@ -135,6 +136,7 @@ CONFIG_RCU_FANOUT_LEAF=16 # CONFIG_RCU_FANOUT_EXACT is not set CONFIG_RCU_FAST_NO_HZ=y # CONFIG_TREE_RCU_TRACE is not set +CONFIG_RCU_KTHREAD_PRIO=0 # CONFIG_RCU_NOCB_CPU is not set # CONFIG_BUILD_BIN2C is not set # CONFIG_IKCONFIG is not set @@ -179,7 +181,6 @@ CONFIG_RD_LZMA=y CONFIG_RD_XZ=y CONFIG_RD_LZO=y CONFIG_RD_LZ4=y -CONFIG_INIT_FALLBACK=y # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y CONFIG_ANON_INODES=y @@ -295,11 +296,6 @@ CONFIG_MODULE_UNLOAD=y CONFIG_MODVERSIONS=y CONFIG_MODULE_SRCVERSION_ALL=y # CONFIG_MODULE_SIG is not set -# CONFIG_MODULE_SIG_SHA1 is not set -# CONFIG_MODULE_SIG_SHA224 is not set -# CONFIG_MODULE_SIG_SHA256 is not set -# CONFIG_MODULE_SIG_SHA384 is not set -# CONFIG_MODULE_SIG_SHA512 is not set # CONFIG_MODULE_COMPRESS is not set CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y @@ -364,6 +360,7 @@ CONFIG_INLINE_WRITE_UNLOCK_IRQ=y CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_LOCK_SPIN_ON_OWNER=y CONFIG_ARCH_USE_QUEUE_RWLOCK=y CONFIG_QUEUE_RWLOCK=y CONFIG_FREEZER=y @@ -379,7 +376,9 @@ CONFIG_X86_MPPARSE=y CONFIG_X86_EXTENDED_PLATFORM=y # CONFIG_X86_GOLDFISH is not set CONFIG_X86_INTEL_MID=y +# CONFIG_X86_INTEL_QUARK is not set CONFIG_X86_INTEL_LPSS=y +CONFIG_X86_AMD_PLATFORM_DEVICE=y CONFIG_IOSF_MBI=m CONFIG_IOSF_MBI_DEBUG=y # CONFIG_X86_RDC321X is not set @@ -539,6 +538,7 @@ CONFIG_ZPOOL=y CONFIG_ZBUD=y CONFIG_ZSMALLOC=y CONFIG_PGTABLE_MAPPING=y +# CONFIG_ZSMALLOC_STAT is not set CONFIG_GENERIC_EARLY_IOREMAP=y CONFIG_HIGHPTE=y CONFIG_X86_CHECK_BIOS_CORRUPTION=y @@ -629,6 +629,7 @@ CONFIG_ACPI_PCI_SLOT=y CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_HOTPLUG_MEMORY=y +CONFIG_ACPI_HOTPLUG_IOAPIC=y CONFIG_ACPI_SBS=m CONFIG_ACPI_HED=y # CONFIG_ACPI_CUSTOM_METHOD is not set @@ -677,6 +678,7 @@ CONFIG_X86_INTEL_PSTATE=y CONFIG_X86_PCC_CPUFREQ=y CONFIG_X86_ACPI_CPUFREQ=y CONFIG_X86_ACPI_CPUFREQ_CPB=y +CONFIG_X86_SFI_CPUFREQ=m CONFIG_X86_POWERNOW_K6=m CONFIG_X86_POWERNOW_K7=m CONFIG_X86_POWERNOW_K7_ACPI=y @@ -1277,7 +1279,6 @@ CONFIG_RDS_RDMA=m CONFIG_RDS_TCP=m # CONFIG_RDS_DEBUG is not set CONFIG_TIPC=m -CONFIG_TIPC_PORTS=8191 CONFIG_TIPC_MEDIA_IB=y CONFIG_ATM=m CONFIG_ATM_CLIP=m @@ -1326,6 +1327,7 @@ CONFIG_LAPB=m CONFIG_PHONET=m CONFIG_6LOWPAN=m CONFIG_IEEE802154=m +CONFIG_IEEE802154_SOCKET=m CONFIG_IEEE802154_6LOWPAN=m CONFIG_MAC802154=m CONFIG_NET_SCHED=y @@ -1396,6 +1398,8 @@ CONFIG_NET_ACT_SIMP=m CONFIG_NET_ACT_SKBEDIT=m CONFIG_NET_ACT_CSUM=m CONFIG_NET_ACT_VLAN=m +CONFIG_NET_ACT_BPF=m +CONFIG_NET_ACT_CONNMARK=m # CONFIG_NET_CLS_IND is not set CONFIG_NET_SCH_FIFO=y CONFIG_DCB=y @@ -1575,6 +1579,7 @@ CONFIG_BT_CMTP=m CONFIG_BT_HIDP=m CONFIG_BT_LE=y CONFIG_BT_6LOWPAN=m +# CONFIG_BT_SELFTEST is not set # # Bluetooth device drivers @@ -1843,6 +1848,7 @@ CONFIG_MTD_NAND_CAFE=m CONFIG_MTD_NAND_CS553X=m CONFIG_MTD_NAND_NANDSIM=m CONFIG_MTD_NAND_PLATFORM=m +CONFIG_MTD_NAND_HISI504=m CONFIG_MTD_ONENAND=m CONFIG_MTD_ONENAND_VERIFY_WRITE=y CONFIG_MTD_ONENAND_GENERIC=m @@ -1937,7 +1943,7 @@ CONFIG_BLK_DEV_SX8=m CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=65536 -# CONFIG_BLK_DEV_XIP is not set +CONFIG_BLK_DEV_RAM_DAX=y CONFIG_CDROM_PKTCDVD=m CONFIG_CDROM_PKTCDVD_BUFFERS=8 # CONFIG_CDROM_PKTCDVD_WCACHE is not set @@ -2370,16 +2376,6 @@ CONFIG_FIREWIRE_OHCI=m CONFIG_FIREWIRE_SBP2=m CONFIG_FIREWIRE_NET=m CONFIG_FIREWIRE_NOSY=m -CONFIG_I2O=m -CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y -CONFIG_I2O_EXT_ADAPTEC=y -CONFIG_I2O_EXT_ADAPTEC_DMA64=y -CONFIG_I2O_CONFIG=m -# CONFIG_I2O_CONFIG_OLD_IOCTL is not set -CONFIG_I2O_BUS=m -CONFIG_I2O_BLOCK=m -CONFIG_I2O_SCSI=m -CONFIG_I2O_PROC=m CONFIG_MACINTOSH_DRIVERS=y CONFIG_MAC_EMUMOUSEBTN=m CONFIG_NETDEVICES=y @@ -2503,6 +2499,8 @@ CONFIG_LANCE=m CONFIG_PCNET32=m CONFIG_PCMCIA_NMCLAN=m CONFIG_NI65=m +CONFIG_AMD_XGBE=m +CONFIG_AMD_XGBE_DCB=y # CONFIG_NET_XGENE is not set CONFIG_NET_VENDOR_ARC=y CONFIG_NET_VENDOR_ATHEROS=y @@ -2576,6 +2574,7 @@ CONFIG_IGB_DCA=y CONFIG_IGBVF=m CONFIG_IXGB=m CONFIG_IXGBE=m +CONFIG_IXGBE_VXLAN=y CONFIG_IXGBE_HWMON=y CONFIG_IXGBE_DCA=y CONFIG_IXGBE_DCB=y @@ -2687,6 +2686,7 @@ CONFIG_NIU=m CONFIG_NET_VENDOR_TEHUTI=y CONFIG_TEHUTI=m CONFIG_NET_VENDOR_TI=y +CONFIG_TI_CPSW_ALE=m CONFIG_TLAN=m CONFIG_NET_VENDOR_VIA=y CONFIG_VIA_RHINE=m @@ -2713,6 +2713,7 @@ CONFIG_PHYLIB=y # CONFIG_AT803X_PHY=m CONFIG_AMD_PHY=m +CONFIG_AMD_XGBE_PHY=m CONFIG_MARVELL_PHY=m CONFIG_DAVICOM_PHY=m CONFIG_QSEMI_PHY=m @@ -3281,6 +3282,7 @@ CONFIG_MOUSE_PS2_TRACKPOINT=y CONFIG_MOUSE_PS2_ELANTECH=y CONFIG_MOUSE_PS2_SENTELIC=y CONFIG_MOUSE_PS2_TOUCHKIT=y +CONFIG_MOUSE_PS2_FOCALTECH=y CONFIG_MOUSE_SERIAL=m CONFIG_MOUSE_APPLETOUCH=m CONFIG_MOUSE_BCM5974=m @@ -3420,6 +3422,7 @@ CONFIG_INPUT_AD714X_I2C=m CONFIG_INPUT_AD714X_SPI=m CONFIG_INPUT_ARIZONA_HAPTICS=m CONFIG_INPUT_BMA150=m +CONFIG_INPUT_E3X0_BUTTON=m CONFIG_INPUT_PCSPKR=m CONFIG_INPUT_MAX77693_HAPTIC=m CONFIG_INPUT_MAX8925_ONKEY=m @@ -3440,7 +3443,10 @@ CONFIG_INPUT_KXTJ9=m CONFIG_INPUT_POWERMATE=m CONFIG_INPUT_YEALINK=m CONFIG_INPUT_CM109=m +CONFIG_INPUT_REGULATOR_HAPTIC=m CONFIG_INPUT_RETU_PWRBUTTON=m +CONFIG_INPUT_TPS65218_PWRBUTTON=m +CONFIG_INPUT_AXP20X_PEK=m CONFIG_INPUT_TWL4030_PWRBUTTON=m CONFIG_INPUT_TWL4030_VIBRA=m CONFIG_INPUT_TWL6040_VIBRA=m @@ -3517,6 +3523,7 @@ CONFIG_N_HDLC=m CONFIG_N_GSM=m CONFIG_TRACE_ROUTER=m CONFIG_TRACE_SINK=m +# CONFIG_DEVMEM is not set # CONFIG_DEVKMEM is not set # @@ -3551,7 +3558,6 @@ CONFIG_SERIAL_8250_FINTEK=m CONFIG_SERIAL_KGDB_NMI=y CONFIG_SERIAL_MAX3100=m CONFIG_SERIAL_MAX310X=y -CONFIG_SERIAL_MRST_MAX3110=m CONFIG_SERIAL_MFD_HSU=m CONFIG_SERIAL_UARTLITE=m CONFIG_SERIAL_CORE=y @@ -3630,8 +3636,9 @@ CONFIG_TCG_TIS_I2C_NUVOTON=m CONFIG_TCG_NSC=m CONFIG_TCG_ATMEL=m CONFIG_TCG_INFINEON=m -CONFIG_TCG_ST33_I2C=m +CONFIG_TCG_TIS_I2C_ST33=m CONFIG_TCG_XEN=m +CONFIG_TCG_CRB=m CONFIG_TELCLOCK=m CONFIG_DEVPORT=y CONFIG_XILLYBUS=m @@ -3644,7 +3651,7 @@ CONFIG_I2C=y CONFIG_ACPI_I2C_OPREGION=y CONFIG_I2C_BOARDINFO=y CONFIG_I2C_COMPAT=y -CONFIG_I2C_CHARDEV=m +CONFIG_I2C_CHARDEV=y CONFIG_I2C_MUX=m # @@ -3738,6 +3745,7 @@ CONFIG_SPI_MASTER=y CONFIG_SPI_ALTERA=m CONFIG_SPI_BITBANG=m CONFIG_SPI_BUTTERFLY=m +CONFIG_SPI_DLN2=m CONFIG_SPI_GPIO=m CONFIG_SPI_LM70_LLP=m CONFIG_SPI_OC_TINY=m @@ -3962,6 +3970,7 @@ CONFIG_CHARGER_LP8788=m CONFIG_CHARGER_GPIO=m CONFIG_CHARGER_MANAGER=y CONFIG_CHARGER_MAX14577=m +CONFIG_CHARGER_MAX77693=m CONFIG_CHARGER_MAX8997=m CONFIG_CHARGER_MAX8998=m CONFIG_CHARGER_BQ2415X=m @@ -3969,7 +3978,10 @@ CONFIG_CHARGER_BQ24190=m CONFIG_CHARGER_BQ24735=m CONFIG_CHARGER_SMB347=m CONFIG_CHARGER_TPS65090=m +CONFIG_BATTERY_GAUGE_LTC2941=m +CONFIG_BATTERY_RT5033=m CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_RESTART=y CONFIG_POWER_AVS=y CONFIG_HWMON=y CONFIG_HWMON_VID=m @@ -4282,6 +4294,7 @@ CONFIG_MFD_DA9052_SPI=y CONFIG_MFD_DA9052_I2C=y CONFIG_MFD_DA9055=y CONFIG_MFD_DA9063=y +CONFIG_MFD_DA9150=m CONFIG_MFD_DLN2=m CONFIG_MFD_MC13XXX=m CONFIG_MFD_MC13XXX_SPI=m @@ -4298,7 +4311,6 @@ CONFIG_MFD_88PM800=m CONFIG_MFD_88PM805=m CONFIG_MFD_88PM860X=y CONFIG_MFD_MAX14577=y -CONFIG_MFD_MAX77686=y CONFIG_MFD_MAX77693=y CONFIG_MFD_MAX8907=m CONFIG_MFD_MAX8925=y @@ -4314,6 +4326,7 @@ CONFIG_PCF50633_GPIO=m CONFIG_UCB1400_CORE=m CONFIG_MFD_RDC321X=m CONFIG_MFD_RTSX_PCI=m +CONFIG_MFD_RT5033=m CONFIG_MFD_RTSX_USB=m CONFIG_MFD_RC5T583=y CONFIG_MFD_RN5T618=m @@ -4406,9 +4419,7 @@ CONFIG_REGULATOR_MAX8952=m CONFIG_REGULATOR_MAX8973=m CONFIG_REGULATOR_MAX8997=m CONFIG_REGULATOR_MAX8998=m -CONFIG_REGULATOR_MAX77686=m CONFIG_REGULATOR_MAX77693=m -CONFIG_REGULATOR_MAX77802=m CONFIG_REGULATOR_MC13XXX_CORE=m CONFIG_REGULATOR_MC13783=m CONFIG_REGULATOR_MC13892=m @@ -4419,6 +4430,7 @@ CONFIG_REGULATOR_PFUZE100=m CONFIG_REGULATOR_PWM=m CONFIG_REGULATOR_RC5T583=m CONFIG_REGULATOR_RN5T618=m +CONFIG_REGULATOR_RT5033=m CONFIG_REGULATOR_S2MPA01=m CONFIG_REGULATOR_S2MPS11=m CONFIG_REGULATOR_S5M8767=m @@ -4560,6 +4572,7 @@ CONFIG_USB_GSPCA_STV0680=m CONFIG_USB_GSPCA_SUNPLUS=m CONFIG_USB_GSPCA_T613=m CONFIG_USB_GSPCA_TOPRO=m +CONFIG_USB_GSPCA_TOUPTEK=m CONFIG_USB_GSPCA_TV8532=m CONFIG_USB_GSPCA_VC032X=m CONFIG_USB_GSPCA_VICAM=m @@ -4816,7 +4829,6 @@ CONFIG_MEDIA_COMMON_OPTIONS=y # common driver options # CONFIG_VIDEO_CX2341X=m -CONFIG_VIDEO_BTCX=m CONFIG_VIDEO_TVEEPROM=m CONFIG_CYPRESS_FIRMWARE=m CONFIG_DVB_B2C2_FLEXCOP=m @@ -5134,6 +5146,7 @@ CONFIG_VGA_SWITCHEROO=y # Direct Rendering Manager # CONFIG_DRM=m +CONFIG_DRM_MIPI_DSI=y CONFIG_DRM_KMS_HELPER=m CONFIG_DRM_KMS_FB_HELPER=y CONFIG_DRM_LOAD_EDID_FIRMWARE=y @@ -5146,7 +5159,6 @@ CONFIG_DRM_I2C_ADV7511=m CONFIG_DRM_I2C_CH7006=m CONFIG_DRM_I2C_SIL164=m CONFIG_DRM_I2C_NXP_TDA998X=m -CONFIG_DRM_PTN3460=m CONFIG_DRM_TDFX=m CONFIG_DRM_R128=m CONFIG_DRM_RADEON=m @@ -5176,6 +5188,11 @@ CONFIG_DRM_AST=m CONFIG_DRM_CIRRUS_QEMU=m CONFIG_DRM_QXL=m # CONFIG_DRM_BOCHS is not set +CONFIG_DRM_PANEL=y + +# +# Display Panels +# # # Frame buffer Devices @@ -5346,6 +5363,8 @@ CONFIG_VGA_CONSOLE=y # CONFIG_VGACON_SOFT_SCROLLBACK is not set CONFIG_MDA_CONSOLE=m CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y @@ -5557,6 +5576,11 @@ CONFIG_SND_USB_US122L=m CONFIG_SND_USB_6FIRE=m CONFIG_SND_USB_HIFACE=m CONFIG_SND_BCD2000=m +CONFIG_SND_USB_LINE6=m +CONFIG_SND_USB_POD=m +CONFIG_SND_USB_PODHD=m +CONFIG_SND_USB_TONEPORT=m +CONFIG_SND_USB_VARIAX=m CONFIG_SND_FIREWIRE=y CONFIG_SND_FIREWIRE_LIB=m CONFIG_SND_DICE=m @@ -5601,6 +5625,8 @@ CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH=m CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m +CONFIG_SND_SOC_XTFPGA_I2S=m CONFIG_SND_SOC_I2C_AND_SPI=m # @@ -5637,6 +5663,7 @@ CONFIG_SND_SOC_RL6231=m CONFIG_SND_SOC_RT286=m CONFIG_SND_SOC_RT5631=m CONFIG_SND_SOC_RT5640=m +CONFIG_SND_SOC_RT5645=m CONFIG_SND_SOC_RT5670=m # CONFIG_SND_SOC_RT5677_SPI is not set CONFIG_SND_SOC_SGTL5000=m @@ -5650,6 +5677,7 @@ CONFIG_SND_SOC_SSM2602=m CONFIG_SND_SOC_SSM2602_SPI=m CONFIG_SND_SOC_SSM2602_I2C=m CONFIG_SND_SOC_SSM4567=m +CONFIG_SND_SOC_STA32X=m CONFIG_SND_SOC_STA350=m CONFIG_SND_SOC_TAS2552=m CONFIG_SND_SOC_TAS5086=m @@ -5700,6 +5728,7 @@ CONFIG_HID_APPLE=m CONFIG_HID_APPLEIR=m CONFIG_HID_AUREAL=m CONFIG_HID_BELKIN=m +CONFIG_HID_BETOP_FF=m CONFIG_HID_CHERRY=m CONFIG_HID_CHICONY=m CONFIG_HID_PRODIKEYS=m @@ -5829,7 +5858,6 @@ CONFIG_USB_EHCI_PCI=y CONFIG_USB_EHCI_HCD_PLATFORM=y CONFIG_USB_OXU210HP_HCD=m CONFIG_USB_ISP116X_HCD=m -CONFIG_USB_ISP1760_HCD=m CONFIG_USB_ISP1362_HCD=m CONFIG_USB_FUSBH200_HCD=m CONFIG_USB_FOTG210_HCD=m @@ -5929,6 +5957,12 @@ CONFIG_USB_CHIPIDEA=m CONFIG_USB_CHIPIDEA_UDC=y CONFIG_USB_CHIPIDEA_HOST=y # CONFIG_USB_CHIPIDEA_DEBUG is not set +CONFIG_USB_ISP1760=m +CONFIG_USB_ISP1760_HCD=y +CONFIG_USB_ISP1761_UDC=y +# CONFIG_USB_ISP1760_HOST_ROLE is not set +# CONFIG_USB_ISP1760_GADGET_ROLE is not set +CONFIG_USB_ISP1760_DUAL_ROLE=y # # USB port drivers @@ -6111,6 +6145,7 @@ CONFIG_USB_CONFIGFS_F_UAC1=y CONFIG_USB_CONFIGFS_F_UAC2=y CONFIG_USB_CONFIGFS_F_MIDI=y CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_UVC=y CONFIG_USB_ZERO=m CONFIG_USB_AUDIO=m CONFIG_GADGET_UAC1=y @@ -6163,8 +6198,6 @@ CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_RICOH_MMC=y CONFIG_MMC_SDHCI_ACPI=m CONFIG_MMC_SDHCI_PLTFM=m -CONFIG_MMC_SDHCI_PXAV3=m -CONFIG_MMC_SDHCI_PXAV2=m CONFIG_MMC_WBSD=m CONFIG_MMC_TIFM_SD=m CONFIG_MMC_SDRICOH_CS=m @@ -6196,6 +6229,7 @@ CONFIG_MEMSTICK_REALTEK_PCI=m CONFIG_MEMSTICK_REALTEK_USB=m CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y +CONFIG_LEDS_CLASS_FLASH=m # # LED drivers @@ -6333,6 +6367,7 @@ CONFIG_RTC_INTF_DEV=y # CONFIG_RTC_DRV_88PM860X=m CONFIG_RTC_DRV_88PM80X=m +CONFIG_RTC_DRV_ABB5ZES3=m CONFIG_RTC_DRV_DS1307=m CONFIG_RTC_DRV_DS1374=m CONFIG_RTC_DRV_DS1374_WDT=y @@ -6344,8 +6379,6 @@ CONFIG_RTC_DRV_MAX8907=m CONFIG_RTC_DRV_MAX8925=m CONFIG_RTC_DRV_MAX8998=m CONFIG_RTC_DRV_MAX8997=m -CONFIG_RTC_DRV_MAX77686=m -CONFIG_RTC_DRV_MAX77802=m CONFIG_RTC_DRV_RS5C372=m CONFIG_RTC_DRV_ISL1208=m CONFIG_RTC_DRV_ISL12022=m @@ -6398,6 +6431,14 @@ CONFIG_RTC_DRV_VRTC=m CONFIG_RTC_DRV_DS1286=m CONFIG_RTC_DRV_DS1511=m CONFIG_RTC_DRV_DS1553=m +CONFIG_RTC_DRV_DS1685_FAMILY=m +CONFIG_RTC_DRV_DS1685=y +# CONFIG_RTC_DRV_DS1689 is not set +# CONFIG_RTC_DRV_DS17285 is not set +# CONFIG_RTC_DRV_DS17485 is not set +# CONFIG_RTC_DRV_DS17885 is not set +# CONFIG_RTC_DS1685_PROC_REGS is not set +# CONFIG_RTC_DS1685_SYSFS_REGS is not set CONFIG_RTC_DRV_DS1742=m CONFIG_RTC_DRV_DS2404=m CONFIG_RTC_DRV_DA9052=m @@ -6478,6 +6519,7 @@ CONFIG_VIRTIO=y # Virtio drivers # CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_PCI_LEGACY=y CONFIG_VIRTIO_BALLOON=y CONFIG_VIRTIO_MMIO=y CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y @@ -6495,6 +6537,7 @@ CONFIG_HYPERV_BALLOON=m CONFIG_XEN_BALLOON=y CONFIG_XEN_SELFBALLOONING=y CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG_LIMIT=4 CONFIG_XEN_SCRUB_PAGES=y CONFIG_XEN_DEV_EVTCHN=m CONFIG_XEN_BACKEND=y @@ -6646,6 +6689,7 @@ CONFIG_COMEDI_KCOMEDILIB=m CONFIG_COMEDI_AMPLC_DIO200=m CONFIG_COMEDI_AMPLC_PC236=m CONFIG_COMEDI_DAS08=m +CONFIG_COMEDI_ISADMA=m CONFIG_COMEDI_NI_LABPC=m CONFIG_COMEDI_NI_LABPC_ISADMA=m CONFIG_COMEDI_NI_TIO=m @@ -6666,8 +6710,6 @@ CONFIG_R8723AU=m CONFIG_8723AU_AP_MODE=y CONFIG_8723AU_BT_COEXIST=y CONFIG_RTS5208=m -CONFIG_LINE6_USB=m -# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set CONFIG_VT6655=m CONFIG_VT6656=m @@ -6768,6 +6810,7 @@ CONFIG_IIO_PERIODIC_RTC_TRIGGER=m CONFIG_IIO_SIMPLE_DUMMY=m # CONFIG_IIO_SIMPLE_DUMMY_EVENTS is not set # CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set +CONFIG_FB_SM7XX=m CONFIG_FB_XGI=m CONFIG_FT1000=m CONFIG_FT1000_USB=m @@ -6792,7 +6835,6 @@ CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m CONFIG_SPEAKUP_SYNTH_DUMMY=m -CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m CONFIG_STAGING_MEDIA=y CONFIG_I2C_BCM2048=m @@ -6800,15 +6842,8 @@ CONFIG_DVB_CXD2099=m CONFIG_VIDEO_DT3155=m # CONFIG_DT3155_CCIR is not set CONFIG_DT3155_STREAMING=y -CONFIG_VIDEO_TLG2300=m CONFIG_DVB_MN88472=m CONFIG_DVB_MN88473=m -CONFIG_MEDIA_PARPORT_SUPPORT=y -CONFIG_VIDEO_BWQCAM=m -CONFIG_VIDEO_CQCAM=m -CONFIG_VIDEO_PMS=m -CONFIG_VIDEO_W9966=m -CONFIG_VIDEO_SAA7191=m CONFIG_LIRC_STAGING=y CONFIG_LIRC_BT829=m CONFIG_LIRC_IMON=m @@ -6847,6 +6882,44 @@ CONFIG_LNET_XPRT_IB=m CONFIG_DGNC=m CONFIG_DGAP=m CONFIG_GS_FPGABOOT=m +CONFIG_FB_TFT=m +CONFIG_FB_TFT_AGM1264K_FL=m +CONFIG_FB_TFT_BD663474=m +CONFIG_FB_TFT_HX8340BN=m +CONFIG_FB_TFT_HX8347D=m +CONFIG_FB_TFT_HX8353D=m +CONFIG_FB_TFT_ILI9320=m +CONFIG_FB_TFT_ILI9325=m +CONFIG_FB_TFT_ILI9340=m +CONFIG_FB_TFT_ILI9341=m +CONFIG_FB_TFT_ILI9481=m +CONFIG_FB_TFT_ILI9486=m +CONFIG_FB_TFT_PCD8544=m +CONFIG_FB_TFT_RA8875=m +CONFIG_FB_TFT_S6D02A1=m +CONFIG_FB_TFT_S6D1121=m +CONFIG_FB_TFT_SSD1289=m +CONFIG_FB_TFT_SSD1306=m +CONFIG_FB_TFT_SSD1331=m +CONFIG_FB_TFT_SSD1351=m +CONFIG_FB_TFT_ST7735R=m +CONFIG_FB_TFT_TINYLCD=m +CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1701=m +CONFIG_FB_TFT_UPD161704=m +CONFIG_FB_TFT_WATTEROTT=m +CONFIG_FB_FLEX=m +CONFIG_FB_TFT_FBTFT_DEVICE=m +CONFIG_I2O=m +CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y +CONFIG_I2O_EXT_ADAPTEC=y +CONFIG_I2O_EXT_ADAPTEC_DMA64=y +CONFIG_I2O_CONFIG=m +# CONFIG_I2O_CONFIG_OLD_IOCTL is not set +CONFIG_I2O_BUS=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_SCSI=m +CONFIG_I2O_PROC=m CONFIG_X86_PLATFORM_DEVICES=y CONFIG_ACER_WMI=m CONFIG_ACERHDF=m @@ -6916,14 +6989,12 @@ CONFIG_COMMON_CLK=y # Common Clock Framework # CONFIG_COMMON_CLK_WM831X=m -CONFIG_COMMON_CLK_MAX_GEN=y -CONFIG_COMMON_CLK_MAX77686=m -CONFIG_COMMON_CLK_MAX77802=m CONFIG_COMMON_CLK_SI5351=m CONFIG_COMMON_CLK_S2MPS11=m CONFIG_CLK_TWL6040=m CONFIG_COMMON_CLK_PALMAS=m # CONFIG_COMMON_CLK_PXA is not set +CONFIG_COMMON_CLK_CDCE706=m # # Hardware Spinlock drivers @@ -6944,8 +7015,14 @@ CONFIG_DW_APB_TIMER=y # CONFIG_EM_TIMER_STI is not set CONFIG_MAILBOX=y CONFIG_PCC=y +CONFIG_ALTERA_MBOX=m CONFIG_IOMMU_API=y CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +CONFIG_IOMMU_IOVA=y CONFIG_DMAR_TABLE=y CONFIG_INTEL_IOMMU=y # CONFIG_INTEL_IOMMU_DEFAULT_ON is not set @@ -6978,6 +7055,7 @@ CONFIG_DEVFREQ_GOV_USERSPACE=y # # DEVFREQ Drivers # +CONFIG_PM_DEVFREQ_EVENT=y CONFIG_EXTCON=y # @@ -7013,6 +7091,9 @@ CONFIG_IIO_ST_ACCEL_SPI_3AXIS=m CONFIG_KXSD9=m CONFIG_MMA8452=m CONFIG_KXCJK1013=m +CONFIG_MMA9551_CORE=m +CONFIG_MMA9551=m +CONFIG_MMA9553=m # # Analog to digital converters @@ -7028,6 +7109,7 @@ CONFIG_AD7887=m CONFIG_AD7923=m CONFIG_AD799X=m CONFIG_AXP288_ADC=m +CONFIG_CC10001_ADC=m CONFIG_LP8788_ADC=m CONFIG_MAX1027=m CONFIG_MAX1363=m @@ -7036,6 +7118,7 @@ CONFIG_MCP3422=m CONFIG_MEN_Z188_ADC=m CONFIG_NAU7802=m CONFIG_QCOM_SPMI_IADC=m +CONFIG_QCOM_SPMI_VADC=m CONFIG_TI_ADC081C=m CONFIG_TI_ADC128S052=m CONFIG_TI_AM335X_ADC=m @@ -7053,6 +7136,12 @@ CONFIG_AD8366=m # CONFIG_HID_SENSOR_IIO_COMMON=m CONFIG_HID_SENSOR_IIO_TRIGGER=m + +# +# SSP Sensor Common +# +CONFIG_IIO_SSP_SENSORS_COMMONS=m +CONFIG_IIO_SSP_SENSORHUB=m CONFIG_IIO_ST_SENSORS_I2C=m CONFIG_IIO_ST_SENSORS_SPI=m CONFIG_IIO_ST_SENSORS_CORE=m @@ -7118,6 +7207,7 @@ CONFIG_SI7020=m # CONFIG_ADIS16400=m CONFIG_ADIS16480=m +CONFIG_KMX61=m CONFIG_INV_MPU6050_IIO=m CONFIG_IIO_ADIS_LIB=m CONFIG_IIO_ADIS_LIB_BUFFER=y @@ -7129,11 +7219,13 @@ CONFIG_ADJD_S311=m CONFIG_AL3320A=m CONFIG_APDS9300=m CONFIG_CM32181=m +CONFIG_CM3232=m CONFIG_CM36651=m CONFIG_GP2AP020A00F=m CONFIG_ISL29125=m CONFIG_HID_SENSOR_ALS=m CONFIG_HID_SENSOR_PROX=m +CONFIG_JSA1212=m CONFIG_SENSORS_LM3533=m CONFIG_LTR501=m CONFIG_TCS3414=m @@ -7182,6 +7274,11 @@ CONFIG_T5403=m # CONFIG_AS3935=m +# +# Proximity sensors +# +CONFIG_SX9500=m + # # Temperature sensors # @@ -7316,6 +7413,7 @@ CONFIG_BTRFS_FS_POSIX_ACL=y # CONFIG_BTRFS_DEBUG is not set # CONFIG_BTRFS_ASSERT is not set CONFIG_NILFS2_FS=m +CONFIG_FS_DAX=y CONFIG_FS_POSIX_ACL=y CONFIG_EXPORTFS=y CONFIG_FILE_LOCKING=y @@ -7386,6 +7484,7 @@ CONFIG_TMPFS_XATTR=y CONFIG_HUGETLBFS=y CONFIG_HUGETLB_PAGE=y CONFIG_CONFIGFS_FS=m +CONFIG_EFIVAR_FS=y CONFIG_MISC_FILESYSTEMS=y CONFIG_ADFS_FS=m # CONFIG_ADFS_FS_RW is not set @@ -7450,6 +7549,7 @@ CONFIG_ROMFS_BACKED_BY_BLOCK=y CONFIG_ROMFS_ON_BLOCK=y CONFIG_PSTORE=y # CONFIG_PSTORE_CONSOLE is not set +# CONFIG_PSTORE_PMSG is not set # CONFIG_PSTORE_FTRACE is not set CONFIG_PSTORE_RAM=m CONFIG_SYSV_FS=m @@ -7464,7 +7564,7 @@ CONFIG_F2FS_FS_XATTR=y CONFIG_F2FS_FS_POSIX_ACL=y CONFIG_F2FS_FS_SECURITY=y # CONFIG_F2FS_CHECK_FS is not set -CONFIG_EFIVAR_FS=y +# CONFIG_F2FS_IO_TRACE is not set CONFIG_ORE=m CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=m @@ -7478,6 +7578,7 @@ CONFIG_NFS_V4_2=y CONFIG_PNFS_FILE_LAYOUT=m CONFIG_PNFS_BLOCK=m CONFIG_PNFS_OBJLAYOUT=m +CONFIG_PNFS_FLEXFILE_LAYOUT=m CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" CONFIG_NFS_V4_1_MIGRATION=y CONFIG_NFS_V4_SECURITY_LABEL=y @@ -7490,6 +7591,7 @@ CONFIG_NFSD_V2_ACL=y CONFIG_NFSD_V3=y CONFIG_NFSD_V3_ACL=y CONFIG_NFSD_V4=y +CONFIG_NFSD_PNFS=y CONFIG_NFSD_V4_SECURITY_LABEL=y # CONFIG_NFSD_FAULT_INJECTION is not set CONFIG_GRACE_PERIOD=m @@ -7766,6 +7868,7 @@ CONFIG_INTERVAL_TREE_TEST=m CONFIG_PERCPU_TEST=m # CONFIG_ATOMIC64_SELFTEST is not set CONFIG_ASYNC_RAID6_TEST=m +CONFIG_TEST_HEXDUMP=m CONFIG_TEST_STRING_HELPERS=m CONFIG_TEST_KSTRTOX=m # CONFIG_TEST_RHASHTABLE is not set @@ -7825,7 +7928,6 @@ CONFIG_PERSISTENT_KEYRINGS=y CONFIG_BIG_KEYS=y CONFIG_TRUSTED_KEYS=y CONFIG_ENCRYPTED_KEYS=y -CONFIG_KEYS_DEBUG_PROC_KEYS=y # CONFIG_SECURITY_DMESG_RESTRICT is not set CONFIG_SECURITY=y CONFIG_SECURITYFS=y @@ -7844,6 +7946,7 @@ CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 # CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set CONFIG_SECURITY_SMACK=y # CONFIG_SECURITY_SMACK_BRINGUP is not set +CONFIG_SECURITY_SMACK_NETFILTER=y CONFIG_SECURITY_TOMOYO=y CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048 CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024 @@ -8018,6 +8121,7 @@ CONFIG_CRYPTO_DRBG=m CONFIG_CRYPTO_USER_API=m CONFIG_CRYPTO_USER_API_HASH=m CONFIG_CRYPTO_USER_API_SKCIPHER=m +CONFIG_CRYPTO_USER_API_RNG=m CONFIG_CRYPTO_HASH_INFO=y CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_DEV_PADLOCK=y @@ -8046,6 +8150,7 @@ CONFIG_KVM_ASYNC_PF=y CONFIG_HAVE_KVM_MSI=y CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y CONFIG_KVM_VFIO=y +CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y CONFIG_VIRTUALIZATION=y CONFIG_KVM=m CONFIG_KVM_INTEL=m @@ -8060,6 +8165,7 @@ CONFIG_BINARY_PRINTF=y # CONFIG_RAID6_PQ=m CONFIG_BITREVERSE=y +# CONFIG_HAVE_ARCH_BITREVERSE is not set CONFIG_RATIONAL=y CONFIG_GENERIC_STRNCPY_FROM_USER=y CONFIG_GENERIC_STRNLEN_USER=y diff --git a/gnu/packages/linux-libre-x86_64.conf b/gnu/packages/linux-libre-x86_64.conf index cf4cd766c0..90ea29a71e 100644 --- a/gnu/packages/linux-libre-x86_64.conf +++ b/gnu/packages/linux-libre-x86_64.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 3.19.0-gnu Kernel Configuration +# Linux/x86 4.0.0-gnu Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y @@ -131,6 +131,7 @@ CONFIG_TASK_IO_ACCOUNTING=y # RCU Subsystem # CONFIG_TREE_RCU=y +CONFIG_SRCU=y # CONFIG_TASKS_RCU is not set CONFIG_RCU_STALL_COMMON=y CONFIG_CONTEXT_TRACKING=y @@ -141,6 +142,7 @@ CONFIG_RCU_FANOUT_LEAF=16 # CONFIG_RCU_FANOUT_EXACT is not set CONFIG_RCU_FAST_NO_HZ=y # CONFIG_TREE_RCU_TRACE is not set +CONFIG_RCU_KTHREAD_PRIO=0 CONFIG_RCU_NOCB_CPU=y # CONFIG_RCU_NOCB_CPU_NONE is not set # CONFIG_RCU_NOCB_CPU_ZERO is not set @@ -192,7 +194,6 @@ CONFIG_RD_LZMA=y CONFIG_RD_XZ=y CONFIG_RD_LZO=y CONFIG_RD_LZ4=y -CONFIG_INIT_FALLBACK=y # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y CONFIG_ANON_INODES=y @@ -312,11 +313,6 @@ CONFIG_MODULE_UNLOAD=y CONFIG_MODVERSIONS=y CONFIG_MODULE_SRCVERSION_ALL=y # CONFIG_MODULE_SIG is not set -# CONFIG_MODULE_SIG_SHA1 is not set -# CONFIG_MODULE_SIG_SHA224 is not set -# CONFIG_MODULE_SIG_SHA256 is not set -# CONFIG_MODULE_SIG_SHA384 is not set -# CONFIG_MODULE_SIG_SHA512 is not set # CONFIG_MODULE_COMPRESS is not set CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y @@ -381,6 +377,7 @@ CONFIG_INLINE_WRITE_UNLOCK_IRQ=y CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_LOCK_SPIN_ON_OWNER=y CONFIG_ARCH_USE_QUEUE_RWLOCK=y CONFIG_QUEUE_RWLOCK=y CONFIG_FREEZER=y @@ -399,6 +396,7 @@ CONFIG_X86_NUMACHIP=y # CONFIG_X86_UV is not set # CONFIG_X86_GOLDFISH is not set CONFIG_X86_INTEL_LPSS=y +CONFIG_X86_AMD_PLATFORM_DEVICE=y CONFIG_IOSF_MBI=m CONFIG_IOSF_MBI_DEBUG=y CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y @@ -539,6 +537,7 @@ CONFIG_ZPOOL=y CONFIG_ZBUD=y CONFIG_ZSMALLOC=y CONFIG_PGTABLE_MAPPING=y +# CONFIG_ZSMALLOC_STAT is not set CONFIG_GENERIC_EARLY_IOREMAP=y CONFIG_X86_CHECK_BIOS_CORRUPTION=y CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y @@ -578,6 +577,8 @@ CONFIG_HOTPLUG_CPU=y # CONFIG_DEBUG_HOTPLUG_CPU0 is not set # CONFIG_COMPAT_VDSO is not set # CONFIG_CMDLINE_BOOL is not set +CONFIG_HAVE_LIVEPATCH=y +CONFIG_LIVEPATCH=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y CONFIG_USE_PERCPU_NUMA_NODE_ID=y @@ -633,6 +634,7 @@ CONFIG_ACPI_PCI_SLOT=y CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_HOTPLUG_MEMORY=y +CONFIG_ACPI_HOTPLUG_IOAPIC=y CONFIG_ACPI_SBS=m CONFIG_ACPI_HED=y # CONFIG_ACPI_CUSTOM_METHOD is not set @@ -1255,7 +1257,6 @@ CONFIG_RDS_RDMA=m CONFIG_RDS_TCP=m # CONFIG_RDS_DEBUG is not set CONFIG_TIPC=m -CONFIG_TIPC_PORTS=8191 CONFIG_TIPC_MEDIA_IB=y CONFIG_ATM=m CONFIG_ATM_CLIP=m @@ -1300,6 +1301,7 @@ CONFIG_LAPB=m CONFIG_PHONET=m CONFIG_6LOWPAN=m CONFIG_IEEE802154=m +CONFIG_IEEE802154_SOCKET=m CONFIG_IEEE802154_6LOWPAN=m CONFIG_MAC802154=m CONFIG_NET_SCHED=y @@ -1370,6 +1372,8 @@ CONFIG_NET_ACT_SIMP=m CONFIG_NET_ACT_SKBEDIT=m CONFIG_NET_ACT_CSUM=m CONFIG_NET_ACT_VLAN=m +CONFIG_NET_ACT_BPF=m +CONFIG_NET_ACT_CONNMARK=m # CONFIG_NET_CLS_IND is not set CONFIG_NET_SCH_FIFO=y CONFIG_DCB=y @@ -1543,6 +1547,7 @@ CONFIG_BT_CMTP=m CONFIG_BT_HIDP=m CONFIG_BT_LE=y CONFIG_BT_6LOWPAN=m +# CONFIG_BT_SELFTEST is not set # # Bluetooth device drivers @@ -1810,6 +1815,7 @@ CONFIG_MTD_NAND_DOCG4=m CONFIG_MTD_NAND_CAFE=m CONFIG_MTD_NAND_NANDSIM=m CONFIG_MTD_NAND_PLATFORM=m +CONFIG_MTD_NAND_HISI504=m CONFIG_MTD_ONENAND=m CONFIG_MTD_ONENAND_VERIFY_WRITE=y CONFIG_MTD_ONENAND_GENERIC=m @@ -1901,7 +1907,7 @@ CONFIG_BLK_DEV_SX8=m CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=65536 -# CONFIG_BLK_DEV_XIP is not set +CONFIG_BLK_DEV_RAM_DAX=y CONFIG_CDROM_PKTCDVD=m CONFIG_CDROM_PKTCDVD_BUFFERS=8 # CONFIG_CDROM_PKTCDVD_WCACHE is not set @@ -2306,16 +2312,6 @@ CONFIG_FIREWIRE_OHCI=m CONFIG_FIREWIRE_SBP2=m CONFIG_FIREWIRE_NET=m CONFIG_FIREWIRE_NOSY=m -CONFIG_I2O=m -CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y -CONFIG_I2O_EXT_ADAPTEC=y -CONFIG_I2O_EXT_ADAPTEC_DMA64=y -CONFIG_I2O_CONFIG=m -# CONFIG_I2O_CONFIG_OLD_IOCTL is not set -CONFIG_I2O_BUS=m -CONFIG_I2O_BLOCK=m -CONFIG_I2O_SCSI=m -CONFIG_I2O_PROC=m CONFIG_MACINTOSH_DRIVERS=y CONFIG_MAC_EMUMOUSEBTN=m CONFIG_NETDEVICES=y @@ -2434,6 +2430,8 @@ CONFIG_NET_VENDOR_AMD=y CONFIG_AMD8111_ETH=m CONFIG_PCNET32=m CONFIG_PCMCIA_NMCLAN=m +CONFIG_AMD_XGBE=m +CONFIG_AMD_XGBE_DCB=y # CONFIG_NET_XGENE is not set CONFIG_NET_VENDOR_ARC=y CONFIG_NET_VENDOR_ATHEROS=y @@ -2504,6 +2502,7 @@ CONFIG_IGB_DCA=y CONFIG_IGBVF=m CONFIG_IXGB=m CONFIG_IXGBE=m +CONFIG_IXGBE_VXLAN=y CONFIG_IXGBE_HWMON=y CONFIG_IXGBE_DCA=y CONFIG_IXGBE_DCB=y @@ -2610,6 +2609,7 @@ CONFIG_NIU=m CONFIG_NET_VENDOR_TEHUTI=y CONFIG_TEHUTI=m CONFIG_NET_VENDOR_TI=y +CONFIG_TI_CPSW_ALE=m CONFIG_TLAN=m CONFIG_NET_VENDOR_VIA=y CONFIG_VIA_RHINE=m @@ -2636,6 +2636,7 @@ CONFIG_PHYLIB=y # CONFIG_AT803X_PHY=m CONFIG_AMD_PHY=m +CONFIG_AMD_XGBE_PHY=m CONFIG_MARVELL_PHY=m CONFIG_DAVICOM_PHY=m CONFIG_QSEMI_PHY=m @@ -3182,6 +3183,7 @@ CONFIG_MOUSE_PS2_TRACKPOINT=y CONFIG_MOUSE_PS2_ELANTECH=y CONFIG_MOUSE_PS2_SENTELIC=y CONFIG_MOUSE_PS2_TOUCHKIT=y +CONFIG_MOUSE_PS2_FOCALTECH=y CONFIG_MOUSE_SERIAL=m CONFIG_MOUSE_APPLETOUCH=m CONFIG_MOUSE_BCM5974=m @@ -3316,6 +3318,7 @@ CONFIG_INPUT_AD714X_I2C=m CONFIG_INPUT_AD714X_SPI=m CONFIG_INPUT_ARIZONA_HAPTICS=m CONFIG_INPUT_BMA150=m +CONFIG_INPUT_E3X0_BUTTON=m CONFIG_INPUT_PCSPKR=m CONFIG_INPUT_MAX77693_HAPTIC=m CONFIG_INPUT_MAX8925_ONKEY=m @@ -3335,7 +3338,10 @@ CONFIG_INPUT_KXTJ9=m CONFIG_INPUT_POWERMATE=m CONFIG_INPUT_YEALINK=m CONFIG_INPUT_CM109=m +CONFIG_INPUT_REGULATOR_HAPTIC=m CONFIG_INPUT_RETU_PWRBUTTON=m +CONFIG_INPUT_TPS65218_PWRBUTTON=m +CONFIG_INPUT_AXP20X_PEK=m CONFIG_INPUT_TWL4030_PWRBUTTON=m CONFIG_INPUT_TWL4030_VIBRA=m CONFIG_INPUT_TWL6040_VIBRA=m @@ -3412,6 +3418,7 @@ CONFIG_N_HDLC=m CONFIG_N_GSM=m CONFIG_TRACE_ROUTER=m CONFIG_TRACE_SINK=m +# CONFIG_DEVMEM is not set # CONFIG_DEVKMEM is not set # @@ -3441,7 +3448,6 @@ CONFIG_SERIAL_8250_FINTEK=m CONFIG_SERIAL_KGDB_NMI=y CONFIG_SERIAL_MAX3100=m CONFIG_SERIAL_MAX310X=y -CONFIG_SERIAL_MRST_MAX3110=m CONFIG_SERIAL_MFD_HSU=m CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y @@ -3511,8 +3517,9 @@ CONFIG_TCG_TIS_I2C_NUVOTON=m CONFIG_TCG_NSC=m CONFIG_TCG_ATMEL=m CONFIG_TCG_INFINEON=m -CONFIG_TCG_ST33_I2C=m +CONFIG_TCG_TIS_I2C_ST33=m CONFIG_TCG_XEN=m +CONFIG_TCG_CRB=m CONFIG_TELCLOCK=m CONFIG_DEVPORT=y CONFIG_XILLYBUS=m @@ -3525,7 +3532,7 @@ CONFIG_I2C=y CONFIG_ACPI_I2C_OPREGION=y CONFIG_I2C_BOARDINFO=y CONFIG_I2C_COMPAT=y -CONFIG_I2C_CHARDEV=m +CONFIG_I2C_CHARDEV=y CONFIG_I2C_MUX=m # @@ -3616,6 +3623,7 @@ CONFIG_SPI_MASTER=y CONFIG_SPI_ALTERA=m CONFIG_SPI_BITBANG=m CONFIG_SPI_BUTTERFLY=m +CONFIG_SPI_DLN2=m CONFIG_SPI_GPIO=m CONFIG_SPI_LM70_LLP=m CONFIG_SPI_OC_TINY=m @@ -3833,6 +3841,7 @@ CONFIG_CHARGER_LP8788=m CONFIG_CHARGER_GPIO=m CONFIG_CHARGER_MANAGER=y CONFIG_CHARGER_MAX14577=m +CONFIG_CHARGER_MAX77693=m CONFIG_CHARGER_MAX8997=m CONFIG_CHARGER_MAX8998=m CONFIG_CHARGER_BQ2415X=m @@ -3840,7 +3849,10 @@ CONFIG_CHARGER_BQ24190=m CONFIG_CHARGER_BQ24735=m CONFIG_CHARGER_SMB347=m CONFIG_CHARGER_TPS65090=m +CONFIG_BATTERY_GAUGE_LTC2941=m +CONFIG_BATTERY_RT5033=m CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_RESTART=y CONFIG_POWER_AVS=y CONFIG_HWMON=y CONFIG_HWMON_VID=m @@ -4140,6 +4152,7 @@ CONFIG_MFD_DA9052_SPI=y CONFIG_MFD_DA9052_I2C=y CONFIG_MFD_DA9055=y CONFIG_MFD_DA9063=y +CONFIG_MFD_DA9150=m CONFIG_MFD_DLN2=m CONFIG_MFD_MC13XXX=m CONFIG_MFD_MC13XXX_SPI=m @@ -4155,7 +4168,6 @@ CONFIG_MFD_88PM800=m CONFIG_MFD_88PM805=m CONFIG_MFD_88PM860X=y CONFIG_MFD_MAX14577=y -CONFIG_MFD_MAX77686=y CONFIG_MFD_MAX77693=y CONFIG_MFD_MAX8907=m CONFIG_MFD_MAX8925=y @@ -4171,6 +4183,7 @@ CONFIG_PCF50633_GPIO=m CONFIG_UCB1400_CORE=m CONFIG_MFD_RDC321X=m CONFIG_MFD_RTSX_PCI=m +CONFIG_MFD_RT5033=m CONFIG_MFD_RTSX_USB=m CONFIG_MFD_RC5T583=y CONFIG_MFD_RN5T618=m @@ -4262,9 +4275,7 @@ CONFIG_REGULATOR_MAX8952=m CONFIG_REGULATOR_MAX8973=m CONFIG_REGULATOR_MAX8997=m CONFIG_REGULATOR_MAX8998=m -CONFIG_REGULATOR_MAX77686=m CONFIG_REGULATOR_MAX77693=m -CONFIG_REGULATOR_MAX77802=m CONFIG_REGULATOR_MC13XXX_CORE=m CONFIG_REGULATOR_MC13783=m CONFIG_REGULATOR_MC13892=m @@ -4275,6 +4286,7 @@ CONFIG_REGULATOR_PFUZE100=m CONFIG_REGULATOR_PWM=m CONFIG_REGULATOR_RC5T583=m CONFIG_REGULATOR_RN5T618=m +CONFIG_REGULATOR_RT5033=m CONFIG_REGULATOR_S2MPA01=m CONFIG_REGULATOR_S2MPS11=m CONFIG_REGULATOR_S5M8767=m @@ -4415,6 +4427,7 @@ CONFIG_USB_GSPCA_STV0680=m CONFIG_USB_GSPCA_SUNPLUS=m CONFIG_USB_GSPCA_T613=m CONFIG_USB_GSPCA_TOPRO=m +CONFIG_USB_GSPCA_TOUPTEK=m CONFIG_USB_GSPCA_TV8532=m CONFIG_USB_GSPCA_VC032X=m CONFIG_USB_GSPCA_VICAM=m @@ -4655,7 +4668,6 @@ CONFIG_MEDIA_COMMON_OPTIONS=y # common driver options # CONFIG_VIDEO_CX2341X=m -CONFIG_VIDEO_BTCX=m CONFIG_VIDEO_TVEEPROM=m CONFIG_CYPRESS_FIRMWARE=m CONFIG_DVB_B2C2_FLEXCOP=m @@ -4966,6 +4978,7 @@ CONFIG_VGA_SWITCHEROO=y # Direct Rendering Manager # CONFIG_DRM=m +CONFIG_DRM_MIPI_DSI=y CONFIG_DRM_KMS_HELPER=m CONFIG_DRM_KMS_FB_HELPER=y CONFIG_DRM_LOAD_EDID_FIRMWARE=y @@ -4978,7 +4991,6 @@ CONFIG_DRM_I2C_ADV7511=m CONFIG_DRM_I2C_CH7006=m CONFIG_DRM_I2C_SIL164=m CONFIG_DRM_I2C_NXP_TDA998X=m -CONFIG_DRM_PTN3460=m CONFIG_DRM_TDFX=m CONFIG_DRM_R128=m CONFIG_DRM_RADEON=m @@ -5007,6 +5019,11 @@ CONFIG_DRM_AST=m CONFIG_DRM_CIRRUS_QEMU=m CONFIG_DRM_QXL=m # CONFIG_DRM_BOCHS is not set +CONFIG_DRM_PANEL=y + +# +# Display Panels +# CONFIG_HSA_AMD=m # @@ -5171,6 +5188,8 @@ CONFIG_HDMI=y CONFIG_VGA_CONSOLE=y # CONFIG_VGACON_SOFT_SCROLLBACK is not set CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y @@ -5341,6 +5360,11 @@ CONFIG_SND_USB_US122L=m CONFIG_SND_USB_6FIRE=m CONFIG_SND_USB_HIFACE=m CONFIG_SND_BCD2000=m +CONFIG_SND_USB_LINE6=m +CONFIG_SND_USB_POD=m +CONFIG_SND_USB_PODHD=m +CONFIG_SND_USB_TONEPORT=m +CONFIG_SND_USB_VARIAX=m CONFIG_SND_FIREWIRE=y CONFIG_SND_FIREWIRE_LIB=m CONFIG_SND_DICE=m @@ -5383,6 +5407,8 @@ CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH=m CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m +CONFIG_SND_SOC_XTFPGA_I2S=m CONFIG_SND_SOC_I2C_AND_SPI=m # @@ -5419,6 +5445,7 @@ CONFIG_SND_SOC_RL6231=m CONFIG_SND_SOC_RT286=m CONFIG_SND_SOC_RT5631=m CONFIG_SND_SOC_RT5640=m +CONFIG_SND_SOC_RT5645=m CONFIG_SND_SOC_RT5670=m # CONFIG_SND_SOC_RT5677_SPI is not set CONFIG_SND_SOC_SGTL5000=m @@ -5431,6 +5458,7 @@ CONFIG_SND_SOC_SSM2602=m CONFIG_SND_SOC_SSM2602_SPI=m CONFIG_SND_SOC_SSM2602_I2C=m CONFIG_SND_SOC_SSM4567=m +CONFIG_SND_SOC_STA32X=m CONFIG_SND_SOC_STA350=m CONFIG_SND_SOC_TAS2552=m CONFIG_SND_SOC_TAS5086=m @@ -5481,6 +5509,7 @@ CONFIG_HID_APPLE=m CONFIG_HID_APPLEIR=m CONFIG_HID_AUREAL=m CONFIG_HID_BELKIN=m +CONFIG_HID_BETOP_FF=m CONFIG_HID_CHERRY=m CONFIG_HID_CHICONY=m CONFIG_HID_PRODIKEYS=m @@ -5610,7 +5639,6 @@ CONFIG_USB_EHCI_PCI=y CONFIG_USB_EHCI_HCD_PLATFORM=y CONFIG_USB_OXU210HP_HCD=m CONFIG_USB_ISP116X_HCD=m -CONFIG_USB_ISP1760_HCD=m CONFIG_USB_ISP1362_HCD=m CONFIG_USB_FUSBH200_HCD=m CONFIG_USB_FOTG210_HCD=m @@ -5710,6 +5738,12 @@ CONFIG_USB_CHIPIDEA=m CONFIG_USB_CHIPIDEA_UDC=y CONFIG_USB_CHIPIDEA_HOST=y # CONFIG_USB_CHIPIDEA_DEBUG is not set +CONFIG_USB_ISP1760=m +CONFIG_USB_ISP1760_HCD=y +CONFIG_USB_ISP1761_UDC=y +# CONFIG_USB_ISP1760_HOST_ROLE is not set +# CONFIG_USB_ISP1760_GADGET_ROLE is not set +CONFIG_USB_ISP1760_DUAL_ROLE=y # # USB port drivers @@ -5892,6 +5926,7 @@ CONFIG_USB_CONFIGFS_F_UAC1=y CONFIG_USB_CONFIGFS_F_UAC2=y CONFIG_USB_CONFIGFS_F_MIDI=y CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_UVC=y CONFIG_USB_ZERO=m CONFIG_USB_AUDIO=m CONFIG_GADGET_UAC1=y @@ -5944,8 +5979,6 @@ CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_RICOH_MMC=y CONFIG_MMC_SDHCI_ACPI=m CONFIG_MMC_SDHCI_PLTFM=m -CONFIG_MMC_SDHCI_PXAV3=m -CONFIG_MMC_SDHCI_PXAV2=m CONFIG_MMC_WBSD=m CONFIG_MMC_TIFM_SD=m CONFIG_MMC_SPI=m @@ -5978,6 +6011,7 @@ CONFIG_MEMSTICK_REALTEK_PCI=m CONFIG_MEMSTICK_REALTEK_USB=m CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y +CONFIG_LEDS_CLASS_FLASH=m # # LED drivers @@ -6111,6 +6145,7 @@ CONFIG_RTC_INTF_DEV=y # CONFIG_RTC_DRV_88PM860X=m CONFIG_RTC_DRV_88PM80X=m +CONFIG_RTC_DRV_ABB5ZES3=m CONFIG_RTC_DRV_DS1307=m CONFIG_RTC_DRV_DS1374=m CONFIG_RTC_DRV_DS1374_WDT=y @@ -6122,8 +6157,6 @@ CONFIG_RTC_DRV_MAX8907=m CONFIG_RTC_DRV_MAX8925=m CONFIG_RTC_DRV_MAX8998=m CONFIG_RTC_DRV_MAX8997=m -CONFIG_RTC_DRV_MAX77686=m -CONFIG_RTC_DRV_MAX77802=m CONFIG_RTC_DRV_RS5C372=m CONFIG_RTC_DRV_ISL1208=m CONFIG_RTC_DRV_ISL12022=m @@ -6175,6 +6208,14 @@ CONFIG_RTC_DRV_CMOS=y CONFIG_RTC_DRV_DS1286=m CONFIG_RTC_DRV_DS1511=m CONFIG_RTC_DRV_DS1553=m +CONFIG_RTC_DRV_DS1685_FAMILY=m +CONFIG_RTC_DRV_DS1685=y +# CONFIG_RTC_DRV_DS1689 is not set +# CONFIG_RTC_DRV_DS17285 is not set +# CONFIG_RTC_DRV_DS17485 is not set +# CONFIG_RTC_DRV_DS17885 is not set +# CONFIG_RTC_DS1685_PROC_REGS is not set +# CONFIG_RTC_DS1685_SYSFS_REGS is not set CONFIG_RTC_DRV_DS1742=m CONFIG_RTC_DRV_DS2404=m CONFIG_RTC_DRV_DA9052=m @@ -6254,6 +6295,7 @@ CONFIG_VIRTIO=y # Virtio drivers # CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_PCI_LEGACY=y CONFIG_VIRTIO_BALLOON=y CONFIG_VIRTIO_MMIO=y CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y @@ -6271,6 +6313,7 @@ CONFIG_HYPERV_BALLOON=m CONFIG_XEN_BALLOON=y CONFIG_XEN_SELFBALLOONING=y CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG_LIMIT=512 CONFIG_XEN_SCRUB_PAGES=y CONFIG_XEN_DEV_EVTCHN=m CONFIG_XEN_BACKEND=y @@ -6423,6 +6466,7 @@ CONFIG_COMEDI_KCOMEDILIB=m CONFIG_COMEDI_AMPLC_DIO200=m CONFIG_COMEDI_AMPLC_PC236=m CONFIG_COMEDI_DAS08=m +CONFIG_COMEDI_ISADMA=m CONFIG_COMEDI_NI_LABPC=m CONFIG_COMEDI_NI_LABPC_ISADMA=m CONFIG_COMEDI_NI_TIO=m @@ -6443,8 +6487,6 @@ CONFIG_R8723AU=m CONFIG_8723AU_AP_MODE=y CONFIG_8723AU_BT_COEXIST=y CONFIG_RTS5208=m -CONFIG_LINE6_USB=m -# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set CONFIG_VT6655=m CONFIG_VT6656=m @@ -6545,6 +6587,7 @@ CONFIG_IIO_PERIODIC_RTC_TRIGGER=m CONFIG_IIO_SIMPLE_DUMMY=m # CONFIG_IIO_SIMPLE_DUMMY_EVENTS is not set # CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set +CONFIG_FB_SM7XX=m CONFIG_FB_XGI=m CONFIG_FT1000=m CONFIG_FT1000_USB=m @@ -6565,7 +6608,6 @@ CONFIG_SPEAKUP_SYNTH_SOFT=m CONFIG_SPEAKUP_SYNTH_SPKOUT=m CONFIG_SPEAKUP_SYNTH_TXPRT=m CONFIG_SPEAKUP_SYNTH_DUMMY=m -CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m CONFIG_STAGING_MEDIA=y CONFIG_I2C_BCM2048=m @@ -6573,14 +6615,8 @@ CONFIG_DVB_CXD2099=m CONFIG_VIDEO_DT3155=m # CONFIG_DT3155_CCIR is not set CONFIG_DT3155_STREAMING=y -CONFIG_VIDEO_TLG2300=m CONFIG_DVB_MN88472=m CONFIG_DVB_MN88473=m -CONFIG_MEDIA_PARPORT_SUPPORT=y -CONFIG_VIDEO_BWQCAM=m -CONFIG_VIDEO_CQCAM=m -CONFIG_VIDEO_W9966=m -CONFIG_VIDEO_SAA7191=m CONFIG_LIRC_STAGING=y CONFIG_LIRC_BT829=m CONFIG_LIRC_IMON=m @@ -6624,10 +6660,47 @@ CONFIG_UNISYSSPAR=y CONFIG_UNISYS_VISORUTIL=m CONFIG_UNISYS_VISORCHANNEL=m CONFIG_UNISYS_VISORCHIPSET=m -CONFIG_UNISYS_CHANNELSTUB=m CONFIG_UNISYS_UISLIB=m CONFIG_UNISYS_VIRTPCI=m CONFIG_UNISYS_VIRTHBA=m +CONFIG_FB_TFT=m +CONFIG_FB_TFT_AGM1264K_FL=m +CONFIG_FB_TFT_BD663474=m +CONFIG_FB_TFT_HX8340BN=m +CONFIG_FB_TFT_HX8347D=m +CONFIG_FB_TFT_HX8353D=m +CONFIG_FB_TFT_ILI9320=m +CONFIG_FB_TFT_ILI9325=m +CONFIG_FB_TFT_ILI9340=m +CONFIG_FB_TFT_ILI9341=m +CONFIG_FB_TFT_ILI9481=m +CONFIG_FB_TFT_ILI9486=m +CONFIG_FB_TFT_PCD8544=m +CONFIG_FB_TFT_RA8875=m +CONFIG_FB_TFT_S6D02A1=m +CONFIG_FB_TFT_S6D1121=m +CONFIG_FB_TFT_SSD1289=m +CONFIG_FB_TFT_SSD1306=m +CONFIG_FB_TFT_SSD1331=m +CONFIG_FB_TFT_SSD1351=m +CONFIG_FB_TFT_ST7735R=m +CONFIG_FB_TFT_TINYLCD=m +CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1701=m +CONFIG_FB_TFT_UPD161704=m +CONFIG_FB_TFT_WATTEROTT=m +CONFIG_FB_FLEX=m +CONFIG_FB_TFT_FBTFT_DEVICE=m +CONFIG_I2O=m +CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y +CONFIG_I2O_EXT_ADAPTEC=y +CONFIG_I2O_EXT_ADAPTEC_DMA64=y +CONFIG_I2O_CONFIG=m +# CONFIG_I2O_CONFIG_OLD_IOCTL is not set +CONFIG_I2O_BUS=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_SCSI=m +CONFIG_I2O_PROC=m CONFIG_X86_PLATFORM_DEVICES=y CONFIG_ACER_WMI=m CONFIG_ACERHDF=m @@ -6691,14 +6764,12 @@ CONFIG_COMMON_CLK=y # Common Clock Framework # CONFIG_COMMON_CLK_WM831X=m -CONFIG_COMMON_CLK_MAX_GEN=y -CONFIG_COMMON_CLK_MAX77686=m -CONFIG_COMMON_CLK_MAX77802=m CONFIG_COMMON_CLK_SI5351=m CONFIG_COMMON_CLK_S2MPS11=m CONFIG_CLK_TWL6040=m CONFIG_COMMON_CLK_PALMAS=m # CONFIG_COMMON_CLK_PXA is not set +CONFIG_COMMON_CLK_CDCE706=m # # Hardware Spinlock drivers @@ -6717,8 +6788,14 @@ CONFIG_CLKBLD_I8253=y # CONFIG_EM_TIMER_STI is not set CONFIG_MAILBOX=y CONFIG_PCC=y +CONFIG_ALTERA_MBOX=m CONFIG_IOMMU_API=y CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +CONFIG_IOMMU_IOVA=y CONFIG_AMD_IOMMU=y CONFIG_AMD_IOMMU_STATS=y CONFIG_AMD_IOMMU_V2=m @@ -6755,6 +6832,7 @@ CONFIG_DEVFREQ_GOV_USERSPACE=y # # DEVFREQ Drivers # +CONFIG_PM_DEVFREQ_EVENT=y CONFIG_EXTCON=y # @@ -6790,6 +6868,9 @@ CONFIG_IIO_ST_ACCEL_SPI_3AXIS=m CONFIG_KXSD9=m CONFIG_MMA8452=m CONFIG_KXCJK1013=m +CONFIG_MMA9551_CORE=m +CONFIG_MMA9551=m +CONFIG_MMA9553=m # # Analog to digital converters @@ -6805,6 +6886,7 @@ CONFIG_AD7887=m CONFIG_AD7923=m CONFIG_AD799X=m CONFIG_AXP288_ADC=m +CONFIG_CC10001_ADC=m CONFIG_LP8788_ADC=m CONFIG_MAX1027=m CONFIG_MAX1363=m @@ -6813,6 +6895,7 @@ CONFIG_MCP3422=m CONFIG_MEN_Z188_ADC=m CONFIG_NAU7802=m CONFIG_QCOM_SPMI_IADC=m +CONFIG_QCOM_SPMI_VADC=m CONFIG_TI_ADC081C=m CONFIG_TI_ADC128S052=m CONFIG_TI_AM335X_ADC=m @@ -6830,6 +6913,12 @@ CONFIG_AD8366=m # CONFIG_HID_SENSOR_IIO_COMMON=m CONFIG_HID_SENSOR_IIO_TRIGGER=m + +# +# SSP Sensor Common +# +CONFIG_IIO_SSP_SENSORS_COMMONS=m +CONFIG_IIO_SSP_SENSORHUB=m CONFIG_IIO_ST_SENSORS_I2C=m CONFIG_IIO_ST_SENSORS_SPI=m CONFIG_IIO_ST_SENSORS_CORE=m @@ -6895,6 +6984,7 @@ CONFIG_SI7020=m # CONFIG_ADIS16400=m CONFIG_ADIS16480=m +CONFIG_KMX61=m CONFIG_INV_MPU6050_IIO=m CONFIG_IIO_ADIS_LIB=m CONFIG_IIO_ADIS_LIB_BUFFER=y @@ -6906,11 +6996,13 @@ CONFIG_ADJD_S311=m CONFIG_AL3320A=m CONFIG_APDS9300=m CONFIG_CM32181=m +CONFIG_CM3232=m CONFIG_CM36651=m CONFIG_GP2AP020A00F=m CONFIG_ISL29125=m CONFIG_HID_SENSOR_ALS=m CONFIG_HID_SENSOR_PROX=m +CONFIG_JSA1212=m CONFIG_SENSORS_LM3533=m CONFIG_LTR501=m CONFIG_TCS3414=m @@ -6959,6 +7051,11 @@ CONFIG_T5403=m # CONFIG_AS3935=m +# +# Proximity sensors +# +CONFIG_SX9500=m + # # Temperature sensors # @@ -7093,6 +7190,7 @@ CONFIG_BTRFS_FS_POSIX_ACL=y # CONFIG_BTRFS_DEBUG is not set # CONFIG_BTRFS_ASSERT is not set CONFIG_NILFS2_FS=m +CONFIG_FS_DAX=y CONFIG_FS_POSIX_ACL=y CONFIG_EXPORTFS=y CONFIG_FILE_LOCKING=y @@ -7164,6 +7262,7 @@ CONFIG_TMPFS_XATTR=y CONFIG_HUGETLBFS=y CONFIG_HUGETLB_PAGE=y CONFIG_CONFIGFS_FS=m +CONFIG_EFIVAR_FS=y CONFIG_MISC_FILESYSTEMS=y CONFIG_ADFS_FS=m # CONFIG_ADFS_FS_RW is not set @@ -7228,6 +7327,7 @@ CONFIG_ROMFS_BACKED_BY_BLOCK=y CONFIG_ROMFS_ON_BLOCK=y CONFIG_PSTORE=y # CONFIG_PSTORE_CONSOLE is not set +# CONFIG_PSTORE_PMSG is not set # CONFIG_PSTORE_FTRACE is not set CONFIG_PSTORE_RAM=m CONFIG_SYSV_FS=m @@ -7242,7 +7342,7 @@ CONFIG_F2FS_FS_XATTR=y CONFIG_F2FS_FS_POSIX_ACL=y CONFIG_F2FS_FS_SECURITY=y # CONFIG_F2FS_CHECK_FS is not set -CONFIG_EFIVAR_FS=y +# CONFIG_F2FS_IO_TRACE is not set CONFIG_ORE=m CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=m @@ -7256,6 +7356,7 @@ CONFIG_NFS_V4_2=y CONFIG_PNFS_FILE_LAYOUT=m CONFIG_PNFS_BLOCK=m CONFIG_PNFS_OBJLAYOUT=m +CONFIG_PNFS_FLEXFILE_LAYOUT=m CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" CONFIG_NFS_V4_1_MIGRATION=y CONFIG_NFS_V4_SECURITY_LABEL=y @@ -7268,6 +7369,7 @@ CONFIG_NFSD_V2_ACL=y CONFIG_NFSD_V3=y CONFIG_NFSD_V3_ACL=y CONFIG_NFSD_V4=y +CONFIG_NFSD_PNFS=y CONFIG_NFSD_V4_SECURITY_LABEL=y # CONFIG_NFSD_FAULT_INJECTION is not set CONFIG_GRACE_PERIOD=m @@ -7423,6 +7525,9 @@ CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m CONFIG_HAVE_DEBUG_STACKOVERFLOW=y # CONFIG_DEBUG_STACKOVERFLOW is not set CONFIG_HAVE_ARCH_KMEMCHECK=y +CONFIG_HAVE_ARCH_KASAN=y +# CONFIG_KASAN is not set +CONFIG_KASAN_SHADOW_OFFSET=0xdffffc0000000000 # CONFIG_DEBUG_SHIRQ is not set # @@ -7544,6 +7649,7 @@ CONFIG_INTERVAL_TREE_TEST=m CONFIG_PERCPU_TEST=m # CONFIG_ATOMIC64_SELFTEST is not set CONFIG_ASYNC_RAID6_TEST=m +CONFIG_TEST_HEXDUMP=m CONFIG_TEST_STRING_HELPERS=m CONFIG_TEST_KSTRTOX=m # CONFIG_TEST_RHASHTABLE is not set @@ -7603,7 +7709,6 @@ CONFIG_PERSISTENT_KEYRINGS=y CONFIG_BIG_KEYS=y CONFIG_TRUSTED_KEYS=y CONFIG_ENCRYPTED_KEYS=y -CONFIG_KEYS_DEBUG_PROC_KEYS=y # CONFIG_SECURITY_DMESG_RESTRICT is not set CONFIG_SECURITY=y CONFIG_SECURITYFS=y @@ -7622,6 +7727,7 @@ CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 # CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set CONFIG_SECURITY_SMACK=y # CONFIG_SECURITY_SMACK_BRINGUP is not set +CONFIG_SECURITY_SMACK_NETFILTER=y CONFIG_SECURITY_TOMOYO=y CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048 CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024 @@ -7813,6 +7919,7 @@ CONFIG_CRYPTO_DRBG=m CONFIG_CRYPTO_USER_API=m CONFIG_CRYPTO_USER_API_HASH=m CONFIG_CRYPTO_USER_API_SKCIPHER=m +CONFIG_CRYPTO_USER_API_RNG=m CONFIG_CRYPTO_HASH_INFO=y CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_DEV_PADLOCK=y @@ -7840,6 +7947,8 @@ CONFIG_KVM_ASYNC_PF=y CONFIG_HAVE_KVM_MSI=y CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y CONFIG_KVM_VFIO=y +CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y +CONFIG_KVM_COMPAT=y CONFIG_VIRTUALIZATION=y CONFIG_KVM=m CONFIG_KVM_INTEL=m @@ -7853,6 +7962,7 @@ CONFIG_BINARY_PRINTF=y # CONFIG_RAID6_PQ=m CONFIG_BITREVERSE=y +# CONFIG_HAVE_ARCH_BITREVERSE is not set CONFIG_RATIONAL=y CONFIG_GENERIC_STRNCPY_FROM_USER=y CONFIG_GENERIC_STRNLEN_USER=y diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 4dc543d8a4..8696a7d26e 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -198,7 +198,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." #f))) (define-public linux-libre - (let* ((version "3.19.3") + (let* ((version "4.0") (build-phase '(lambda* (#:key system inputs #:allow-other-keys #:rest args) ;; Apply the neat patch. @@ -271,7 +271,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." (uri (linux-libre-urls version)) (sha256 (base32 - "13nq0wzkjy7hrhnnvxlwzs1awlqd81vzriqddjn6s9ma3fzj44bn")) + "12nkzn1n4si2zcp10b645qri83m2y7iwp29vs2rjmy612azdab8f")) (patches (list (search-patch "linux-libre-libreboot-fix.patch") (search-patch "linux-libre-vblank-fix.patch"))))) -- cgit v1.2.3 From 279a587d60b7574752885e85bf1291df1700b7d7 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 13 Apr 2015 09:07:01 -0400 Subject: gnu: gst-libav: Add missing quotes in phase names passed to 'modify-phases'. This should have been done in 1ca8ff285ba0f055fbaf314d8a23fadc25839135. * gnu/packages/gstreamer.scm (gst-libav): Add missing quotes in phase names passed to 'modify-phases'. --- gnu/packages/gstreamer.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index 9758806cc5..e3019f630c 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -264,7 +264,7 @@ developers consider to have good quality code and correct functionality.") (arguments '(#:phases (modify-phases %standard-phases - (add-before configure patch-/bin/sh + (add-before 'configure 'patch-/bin/sh (lambda _ (substitute* "gst-libs/ext/libav/configure" (("#! /bin/sh") -- cgit v1.2.3 From 8214b7fbea7773143401811a0a582d0eed44c0dd Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 13 Apr 2015 15:37:40 +0200 Subject: gnu: rseqc: Update hash. * gnu/packages/bioinformatics.scm (rseqc): Update hash. --- gnu/packages/bioinformatics.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index e143fb2c55..1ad5f600fb 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -871,7 +871,7 @@ generated using the PacBio Iso-Seq protocol.") (string-append "mirror://sourceforge/rseqc/" version "/RSeQC-" version ".tar.gz")) (sha256 - (base32 "09rf0x9d6apjja5l01cgprj7vigpw6kiqhy34ibwwlxil0db0ri4")) + (base32 "15ly0254yi032qzkdplg00q144qfdsd986gh62829rl5bkxhj330")) (modules '((guix build utils))) (snippet '(begin -- cgit v1.2.3 From 1bef37ee2e0a6ba9048eb8087651c8dbd2c6c796 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 13 Apr 2015 23:09:06 +0200 Subject: gnu: emacs: Do not keep references to the entries of the build-time $PATH. This reduces the number of references of the output from 54 to 31, removing references notably to gcc, expat, glib:bin, ld-wrapper-0, texinfo, pkg-config, make, gawk, binutils, etc. Reported by David Thompson. * gnu/packages/patches/emacs-exec-path.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/emacs.scm (emacs)[source]: Use it. --- gnu-system.am | 1 + gnu/packages/emacs.scm | 3 ++- gnu/packages/patches/emacs-exec-path.patch | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/emacs-exec-path.patch diff --git a/gnu-system.am b/gnu-system.am index ccc755bb99..f65f87a8b3 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -407,6 +407,7 @@ dist_patch_DATA = \ gnu/packages/patches/doxygen-tmake.patch \ gnu/packages/patches/duplicity-piped-password.patch \ gnu/packages/patches/duplicity-test_selection-tmp.patch \ + gnu/packages/patches/emacs-exec-path.patch \ gnu/packages/patches/eudev-rules-directory.patch \ gnu/packages/patches/findutils-absolute-paths.patch \ gnu/packages/patches/flashrom-use-libftdi1.patch \ diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index d680f2b951..c7f91843bd 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -64,7 +64,8 @@ version ".tar.xz")) (sha256 (base32 - "0kn3rzm91qiswi0cql89kbv6mqn27rwsyjfb8xmwy9m5s8fxfiyx")))) + "0kn3rzm91qiswi0cql89kbv6mqn27rwsyjfb8xmwy9m5s8fxfiyx")) + (patches (list (search-patch "emacs-exec-path.patch"))))) (build-system glib-or-gtk-build-system) (arguments '(#:phases (alist-cons-before diff --git a/gnu/packages/patches/emacs-exec-path.patch b/gnu/packages/patches/emacs-exec-path.patch new file mode 100644 index 0000000000..884fa94a64 --- /dev/null +++ b/gnu/packages/patches/emacs-exec-path.patch @@ -0,0 +1,18 @@ +Do not capture the build-time value of $PATH in the 'emacs' executable +since this can noticeably increase the size of the closure of Emacs +with things like GCC being referenced. + +--- a/lisp/loadup.el ++++ b/lisp/loadup.el +@@ -64,6 +64,11 @@ + (expand-file-name "textmodes" dir) + (expand-file-name "vc" dir))))) + ++;; Reset 'exec-path' so we don't capture the build-time $PATH in the ++;; 'emacs' executable. ++(setq-default exec-path nil) ++(setq exec-path nil) ++ + (if (eq t purify-flag) + ;; Hash consing saved around 11% of pure space in my tests. + (setq purify-flag (make-hash-table :test 'equal :size 70000))) -- cgit v1.2.3 From 463acb4acb28e7d93c98780fc73e3b3cf7f6b19a Mon Sep 17 00:00:00 2001 From: David Thompson Date: Mon, 13 Apr 2015 19:56:01 -0400 Subject: gnu: ruby: Update to 2.2.2. * gnu/packages/ruby.scm (ruby): Update to 2.2.2. --- gnu/packages/ruby.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index feb4ec191d..42fcc93017 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -38,7 +38,7 @@ (define-public ruby (package (name "ruby") - (version "2.2.1") + (version "2.2.2") (source (origin (method url-fetch) @@ -47,7 +47,7 @@ "/ruby-" version ".tar.xz")) (sha256 (base32 - "1h16lrahp1m57la6sllsad0n3d72g9ccg62n5fxd04nwgz054a1v")))) + "0qj48a8ji8qj1sllsrhb6y65frwr77bvr08xikj86w5mib8baczh")))) (build-system gnu-build-system) (arguments `(#:test-target "test" -- cgit v1.2.3 From 46a1130207a2fc01ef16da4db1fe0839fe43d9af Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 14 Apr 2015 02:26:57 -0400 Subject: gnu: linux-libre: Remove linux-libre-vblank-fix.patch. * gnu/packages/patches/linux-libre-vblank-fix.patch: Remove file. * gnu-system.am (dist_patch_DATA): Remove it. * gnu/packages/linux.scm (linux-libre): Remove patch. --- gnu-system.am | 1 - gnu/packages/linux.scm | 3 +- gnu/packages/patches/linux-libre-vblank-fix.patch | 175 ---------------------- 3 files changed, 1 insertion(+), 178 deletions(-) delete mode 100644 gnu/packages/patches/linux-libre-vblank-fix.patch diff --git a/gnu-system.am b/gnu-system.am index f65f87a8b3..c581d799d4 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -459,7 +459,6 @@ dist_patch_DATA = \ gnu/packages/patches/libvpx-fix-ssse3-quantize.patch \ gnu/packages/patches/libvpx-vp9-out-of-bounds-access.patch \ gnu/packages/patches/linux-libre-libreboot-fix.patch \ - gnu/packages/patches/linux-libre-vblank-fix.patch \ gnu/packages/patches/lirc-localstatedir.patch \ gnu/packages/patches/lm-sensors-hwmon-attrs.patch \ gnu/packages/patches/lua51-liblua-so.patch \ diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 8696a7d26e..0452a1ce93 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -273,8 +273,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." (base32 "12nkzn1n4si2zcp10b645qri83m2y7iwp29vs2rjmy612azdab8f")) (patches - (list (search-patch "linux-libre-libreboot-fix.patch") - (search-patch "linux-libre-vblank-fix.patch"))))) + (list (search-patch "linux-libre-libreboot-fix.patch"))))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) ("bc" ,bc) diff --git a/gnu/packages/patches/linux-libre-vblank-fix.patch b/gnu/packages/patches/linux-libre-vblank-fix.patch deleted file mode 100644 index 7f242cfcc1..0000000000 --- a/gnu/packages/patches/linux-libre-vblank-fix.patch +++ /dev/null @@ -1,175 +0,0 @@ -From f9b61ff6bce9a44555324b29e593fdffc9a115bc Mon Sep 17 00:00:00 2001 -From: Daniel Vetter -Date: Wed, 7 Jan 2015 13:54:39 +0100 -Subject: [PATCH] drm/i915: Push vblank enable/disable past - encoder->enable/disable -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -It is platform/output depenedent when exactly the pipe will start -running. Sometimes we just need the (cpu) pipe enabled, in other cases -the pch transcoder is enough and in yet other cases the (DP) port is -sending the frame start signal. - -In a perfect world we'd put the drm_crtc_vblank_on call exactly where -the pipe starts running, but due to cloning and similar things this -will get messy. And the current approach of picking the most -conservative place for all combinations also doesn't work since that -results in legit vblank waits (in encoder->enable hooks, e.g. the 2 -vblank waits for sdvo) failing. - -Completely going back to the old world before - -commit 51e31d49c89055299e34b8f44d13f70e19aaaad1 -Author: Daniel Vetter -Date: Mon Sep 15 12:36:02 2014 +0200 - - drm/i915: Use generic vblank wait - -isn't great either since screaming when the vblank wait work because -the pipe is off is kinda nice. - -Pick a compromise and move the drm_crtc_vblank_on right before the -encoder->enable call. This is a lie on some outputs/platforms, but -after the ->enable callback the pipe is guaranteed to run everywhere. -So not that bad really. Suggested by Ville. - -v2: Same treatment for drm_crtc_vblank_off and encoder->disable: I've -missed the ibx pipe B select w/a, which also has a vblank wait in the -disable function (while the pipe is obviously still running). - -Cc: Ville Syrjälä -Cc: Chris Wilson -Acked-by: Ville Syrjälä -Signed-off-by: Daniel Vetter ---- - drivers/gpu/drm/i915/intel_display.c | 42 ++++++++++++++++++------------------ - 1 file changed, 21 insertions(+), 21 deletions(-) - -diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c -index a1dbe74..e224820 100644 ---- a/drivers/gpu/drm/i915/intel_display.c -+++ b/drivers/gpu/drm/i915/intel_display.c -@@ -4301,15 +4301,15 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc) - if (intel_crtc->config.has_pch_encoder) - ironlake_pch_enable(crtc); - -+ assert_vblank_disabled(crtc); -+ drm_crtc_vblank_on(crtc); -+ - for_each_encoder_on_crtc(dev, crtc, encoder) - encoder->enable(encoder); - - if (HAS_PCH_CPT(dev)) - cpt_verify_modeset(dev, intel_crtc->pipe); - -- assert_vblank_disabled(crtc); -- drm_crtc_vblank_on(crtc); -- - intel_crtc_enable_planes(crtc); - } - -@@ -4421,14 +4421,14 @@ static void haswell_crtc_enable(struct drm_crtc *crtc) - if (intel_crtc->config.dp_encoder_is_mst) - intel_ddi_set_vc_payload_alloc(crtc, true); - -+ assert_vblank_disabled(crtc); -+ drm_crtc_vblank_on(crtc); -+ - for_each_encoder_on_crtc(dev, crtc, encoder) { - encoder->enable(encoder); - intel_opregion_notify_encoder(encoder, true); - } - -- assert_vblank_disabled(crtc); -- drm_crtc_vblank_on(crtc); -- - /* If we change the relative order between pipe/planes enabling, we need - * to change the workaround. */ - haswell_mode_set_planes_workaround(intel_crtc); -@@ -4479,12 +4479,12 @@ static void ironlake_crtc_disable(struct drm_crtc *crtc) - - intel_crtc_disable_planes(crtc); - -- drm_crtc_vblank_off(crtc); -- assert_vblank_disabled(crtc); -- - for_each_encoder_on_crtc(dev, crtc, encoder) - encoder->disable(encoder); - -+ drm_crtc_vblank_off(crtc); -+ assert_vblank_disabled(crtc); -+ - if (intel_crtc->config.has_pch_encoder) - intel_set_pch_fifo_underrun_reporting(dev_priv, pipe, false); - -@@ -4544,14 +4544,14 @@ static void haswell_crtc_disable(struct drm_crtc *crtc) - - intel_crtc_disable_planes(crtc); - -- drm_crtc_vblank_off(crtc); -- assert_vblank_disabled(crtc); -- - for_each_encoder_on_crtc(dev, crtc, encoder) { - intel_opregion_notify_encoder(encoder, false); - encoder->disable(encoder); - } - -+ drm_crtc_vblank_off(crtc); -+ assert_vblank_disabled(crtc); -+ - if (intel_crtc->config.has_pch_encoder) - intel_set_pch_fifo_underrun_reporting(dev_priv, TRANSCODER_A, - false); -@@ -5021,12 +5021,12 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc) - intel_update_watermarks(crtc); - intel_enable_pipe(intel_crtc); - -- for_each_encoder_on_crtc(dev, crtc, encoder) -- encoder->enable(encoder); -- - assert_vblank_disabled(crtc); - drm_crtc_vblank_on(crtc); - -+ for_each_encoder_on_crtc(dev, crtc, encoder) -+ encoder->enable(encoder); -+ - intel_crtc_enable_planes(crtc); - - /* Underruns don't raise interrupts, so check manually. */ -@@ -5082,12 +5082,12 @@ static void i9xx_crtc_enable(struct drm_crtc *crtc) - intel_update_watermarks(crtc); - intel_enable_pipe(intel_crtc); - -- for_each_encoder_on_crtc(dev, crtc, encoder) -- encoder->enable(encoder); -- - assert_vblank_disabled(crtc); - drm_crtc_vblank_on(crtc); - -+ for_each_encoder_on_crtc(dev, crtc, encoder) -+ encoder->enable(encoder); -+ - intel_crtc_enable_planes(crtc); - - /* -@@ -5159,12 +5159,12 @@ static void i9xx_crtc_disable(struct drm_crtc *crtc) - */ - intel_wait_for_vblank(dev, pipe); - -- drm_crtc_vblank_off(crtc); -- assert_vblank_disabled(crtc); -- - for_each_encoder_on_crtc(dev, crtc, encoder) - encoder->disable(encoder); - -+ drm_crtc_vblank_off(crtc); -+ assert_vblank_disabled(crtc); -+ - intel_disable_pipe(intel_crtc); - - i9xx_pfit_disable(intel_crtc); --- -2.2.1 - -- cgit v1.2.3 From 0e05d01e4f579f4f4866528d53178506444974a9 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 14 Apr 2015 15:11:51 +0800 Subject: gnu: python: Use 'version-major+minor' to compute PYTHONPATH. Fixes a regression introduced in 08c0450. * gnu/packages/python.scm (python)[native-search-paths]: Use 'version-major+minor' to compute PYTHONPATH. --- gnu/packages/python.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 2381c7d2c7..d64f6331d9 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -216,7 +216,9 @@ data types.") (native-search-paths (list (search-path-specification (variable "PYTHONPATH") - (files '("lib/python3.3/site-packages"))))))) + (files (list (string-append "lib/python" + (version-major+minor version) + "/site-packages")))))))) (define-public python-wrapper (package (inherit python) -- cgit v1.2.3 From 5d4c6957218f4189d811012dc01d950e16710ec0 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 14 Apr 2015 15:23:23 +0800 Subject: gnu: openldap: Update to 2.4.40. * gnu/packages/openldap.scm (openldap): Update to 2.4.40. --- gnu/packages/openldap.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm index a6c4cb0d93..fe7961affb 100644 --- a/gnu/packages/openldap.scm +++ b/gnu/packages/openldap.scm @@ -34,14 +34,14 @@ (define-public openldap (package (name "openldap") - (version "2.4.33") + (version "2.4.40") (source (origin (method url-fetch) (uri (string-append "ftp://sunsite.cnlab-switch.ch/mirror/OpenLDAP/openldap-release/openldap-" version ".tgz")) (sha256 (base32 - "0k51mhrs7pkwph2j38w09x7xl1ii69mcdi7b2mfrm9hp1yifrsc1")))) + "1nyslrgwxwilgv5sixc37svls5rbvhsv9drb7hlrjr2vqaji29ni")))) (build-system gnu-build-system) (inputs `(("bdb" ,bdb) ("openssl" ,openssl) -- cgit v1.2.3 From b2a80c785d37a1f96895131d005df8a2b8872dab Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 14 Apr 2015 15:40:58 +0800 Subject: gnu: glib: Move html documentation to $doc/share/gtk-doc/html. * gnu/packages/glib.scm (glib)[arguments]<#:configure-flags>: Pass "--with-html-dir=$doc/share/gtk-doc/html". --- gnu/packages/glib.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index ab789b2d0e..688c0b61d0 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -176,7 +176,7 @@ shared NFS home directories.") ;; Note: `--docdir' and `--htmldir' are not honored, so work around it. #:configure-flags (list (string-append "--with-html-dir=" (assoc-ref %outputs "doc") - "/share/gtk-doc")) + "/share/gtk-doc/html")) ;; In 'gio/tests', 'gdbus-test-codegen-generated.h' is #included in a ;; file that gets compiled possibly before it has been fully generated. -- cgit v1.2.3 From fb799cb72e9a984929047fdd180c863413bb4991 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 14 Apr 2015 09:55:35 +0200 Subject: gnu: Disable RUNPATH validation for packages that use $ORIGIN. * gnu/packages/haskell.scm (ghc)[arguments]: Add #:validate-runpath?. * gnu/packages/julia.scm (julia)[arguments]: Likewise. * gnu/packages/java.scm (icedtea6)[arguments]: Likewise. --- gnu/packages/haskell.scm | 5 +++++ gnu/packages/java.scm | 5 +++++ gnu/packages/julia.scm | 6 ++++++ 3 files changed, 16 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 82c7109316..3bb5e3074a 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -111,6 +111,11 @@ ;; We get a smaller number of test failures by disabling parallel test ;; execution. #:parallel-tests? #f + + ;; The DSOs use $ORIGIN to refer to each other, but (guix build + ;; gremlin) doesn't support it yet, so skip this phase. + #:validate-runpath? #f + #:modules ((guix build gnu-build-system) (guix build utils) (guix build rpath) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index d50281839f..db730cd60e 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -160,6 +160,11 @@ build process and its dependencies, whereas Make uses Makefile format.") ;; made no attempts to make a list of failing JDK tests. At least ;; 222 tests are failing of which at least 132 are AWT tests. #:tests? #f + + ;; The DSOs use $ORIGIN to refer to each other, but (guix build + ;; gremlin) doesn't support it yet, so skip this phase. + #:validate-runpath? #f + #:configure-flags (let* ((gcjdir (assoc-ref %build-inputs "gcj")) (ecj (string-append gcjdir "/share/java/ecj.jar")) diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm index 036e485be3..e5990441f5 100644 --- a/gnu/packages/julia.scm +++ b/gnu/packages/julia.scm @@ -56,6 +56,12 @@ #:modules ((ice-9 match) (guix build gnu-build-system) (guix build utils)) + + + ;; The DSOs use $ORIGIN to refer to each other, but (guix build + ;; gremlin) doesn't support it yet, so skip this phase. + #:validate-runpath? #f + #:phases (alist-cons-after 'unpack 'hardcode-soname-map -- cgit v1.2.3 From 4836989a69142dda7bc245197008ee7363e5e67a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 14 Apr 2015 09:45:54 +0200 Subject: gnu: libmicrohttpd: Update to 0.9.40. * gnu/packages/gnunet.scm (libmicrohttpd): Update to 0.9.40. --- gnu/packages/gnunet.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm index e50de7cc5d..78279b0243 100644 --- a/gnu/packages/gnunet.scm +++ b/gnu/packages/gnunet.scm @@ -112,14 +112,14 @@ tool to extract metadata from a file and print the results.") (define-public libmicrohttpd (package (name "libmicrohttpd") - (version "0.9.39") + (version "0.9.40") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-" version ".tar.gz")) (sha256 (base32 - "0wz3sw62z3wsqivrssh0xb3yn064ix5x5cc6prvdfrn3cmh7p4sg")))) + "19mpqwjb3g4bsh1rzcvmka380kmg7sz5dwfr5cwdh2k9m134sga0")))) (build-system gnu-build-system) (inputs `(("curl" ,curl) -- cgit v1.2.3 From e91d1d3133fd986c782969a3333bf09c5292b305 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 14 Apr 2015 09:54:35 +0200 Subject: gnu: libtocc: Help the tests find libtocc.so. * gnu/packages/search.scm (libtocc)[arguments] : Pass -Wl,-rpath=../src/.libs for the tests. --- gnu/packages/search.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm index 4a4ad20759..5886c6a9ea 100644 --- a/gnu/packages/search.scm +++ b/gnu/packages/search.scm @@ -88,7 +88,9 @@ rich set of boolean query operators.") (string-append "SHELL=" (which "sh")) "CPPFLAGS=-I../src" - "LDFLAGS=-L../src/.libs")) + (string-append + "LDFLAGS=-L../src/.libs " + "-Wl,-rpath=../src/.libs"))) (zero? (system* "make")) (zero? (system* "./libtocctests"))))))))) (home-page "http://t-o-c-c.com/") -- cgit v1.2.3 From caf0c0a9e97be5c71e676dc20437d8bbaec593d6 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 14 Apr 2015 10:00:40 +0200 Subject: gnu: miniupnpc: Allow executables to find libupnp.so. * gnu/packages/upnp.scm (miniupnpc)[arguments]: Pass "LDFLAGS=-Wl,-rpath=...". --- gnu/packages/upnp.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm index a1a18d272c..c46e905c42 100644 --- a/gnu/packages/upnp.scm +++ b/gnu/packages/upnp.scm @@ -48,7 +48,11 @@ (string-append "SH=" (assoc-ref %build-inputs "bash") "/bin/sh") (string-append "INSTALLPREFIX=" (assoc-ref %outputs "out")) - "CC=gcc") + "CC=gcc" + + ;; Allow executables to find libminiupnpc.so. + (string-append "LDFLAGS=-Wl,-rpath=" + (assoc-ref %outputs "out") "/lib")) #:phases (alist-delete 'configure %standard-phases))) (home-page "http://miniupnp.free.fr/") -- cgit v1.2.3 From 9349655820110afb5ea8e20e54369f984b40cb79 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 14 Apr 2015 13:27:38 +0200 Subject: gnu: qt-5: Allow the use of DT_RUNPATH for libQt5WebEngineCore.so. * gnu/packages/patches/qt5-runpath.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/qt.scm (qt)[source]: Use it. --- gnu-system.am | 1 + gnu/packages/patches/qt5-runpath.patch | 25 +++++++++++++++++++++++++ gnu/packages/qt.scm | 1 + 3 files changed, 27 insertions(+) create mode 100644 gnu/packages/patches/qt5-runpath.patch diff --git a/gnu-system.am b/gnu-system.am index afe43bc67a..1d3496f81f 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -521,6 +521,7 @@ dist_patch_DATA = \ gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch \ gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ gnu/packages/patches/qt4-tests.patch \ + gnu/packages/patches/qt5-runpath.patch \ gnu/packages/patches/ratpoison-shell.patch \ gnu/packages/patches/readline-link-ncurses.patch \ gnu/packages/patches/ripperx-libm.patch \ diff --git a/gnu/packages/patches/qt5-runpath.patch b/gnu/packages/patches/qt5-runpath.patch new file mode 100644 index 0000000000..a6cbb26ff9 --- /dev/null +++ b/gnu/packages/patches/qt5-runpath.patch @@ -0,0 +1,25 @@ +Allow the use of DT_RUNPATH. This fixes a bug whereby libQt5WebEngineCore.so +ends up having an empty RUNPATH. + +--- qt-everywhere-opensource-src-5.4.1/qtwebengine/src/3rdparty/chromium/build/common.gypi 2015-04-14 10:21:09.330925545 +0200 ++++ qt-everywhere-opensource-src-5.4.1/qtwebengine/src/3rdparty/chromium/build/common.gypi 2015-04-14 10:21:38.735106097 +0200 +@@ -4142,19 +4142,6 @@ + '-B=223', { +- # Newer binutils don't set DT_RPATH unless you disable "new" dtags +- # and the new DT_RUNPATH doesn't work without --no-as-needed flag. +- # FIXME(mithro): Figure out the --as-needed/--no-as-needed flags +- # inside this file to allow usage of --no-as-needed and removal of +- # this flag. +- 'ldflags': [ +- '-Wl,--disable-new-dtags', +- ], +- }] + ], + }, + }], diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 4c750416e5..911de16024 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -103,6 +103,7 @@ X11 (yet).") (sha256 (base32 "0q6qzakq8xihw91xv310qi3vyylq7x2bzdkjgy8sqxii2lgbjzhv")) + (patches (list (search-patch "qt5-runpath.patch"))) (snippet '(begin ;; Remove broken symlinks. -- cgit v1.2.3 From 6a180f6f36c35461016a57f265305ca08123fd80 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Tue, 7 Apr 2015 14:56:42 +0200 Subject: gnu: Add libgweather. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/gnome.scm (libgweather): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/gnome.scm | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 217b1350b9..ec2508dfd5 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -31,6 +31,7 @@ #:use-module (guix build-system glib-or-gtk) #:use-module (gnu packages) #:use-module (gnu packages autotools) + #:use-module (gnu packages base) #:use-module (gnu packages bison) #:use-module (gnu packages curl) #:use-module (gnu packages databases) @@ -2078,3 +2079,50 @@ listening to device events and querying history and statistics. Any application or service on the system can access the org.freedesktop.UPower service via the system message bus.") (license license:gpl2+))) + +(define-public libgweather + (package + (name "libgweather") + (version "3.16.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0x1z6wv7hdw2ivlkifcbd940zyrnvqvc4zh2drgvd2r6jmd7bjza")))) + (build-system gnu-build-system) + (arguments + `(;; The tests want to write to $HOME/.cache/geocode-glib, which doesn't + ;; work for the builder. Punt. + #:tests? #f + #:make-flags '("CC=gcc") ; for g-ir-scanner + #:configure-flags + `(;; No introspection for now, as it wants to install to + ;; gobject-introspection's own directory and I don't know how to easily + ;; override this. + "--enable-introspection=no" + ,(string-append "--with-zoneinfo-dir=" + (assoc-ref %build-inputs "tzdata") + "/share/zoneinfo")))) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-mkenums + ("pkg-config" ,pkg-config) + ("intltool" ,intltool))) + (propagated-inputs + ;; gweather-3.0.pc refers to GTK+, GDK-Pixbuf, GLib/GObject, libxml, and + ;; libsoup. + `(("gtk+" ,gtk+) + ("gdk-pixbuf" ,gdk-pixbuf) + ("libxml2" ,libxml2) + ("libsoup" ,libsoup))) + (inputs + `(("tzdata" ,tzdata) + ("geocode-glib" ,geocode-glib))) + (home-page "https://wiki.gnome.org/action/show/Projects/LibGWeather") + (synopsis "Location, time zone, and weather library for GNOME") + (description + "libgweather is a library to access weather information from online +services for numerous locations.") + (license license:gpl2+))) -- cgit v1.2.3 From 23a22af694e408bf59cb780fc7bb8658d897f6ac Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Tue, 7 Apr 2015 15:01:30 +0200 Subject: gnu: Add gnome-settings-daemon. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/gnome.scm (gnome-settings-daemon): New variable. Co-authored-by: Ludovic Courtès --- gnu/packages/gnome.scm | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index ec2508dfd5..e7f854d636 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -33,6 +33,7 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages bison) + #:use-module (gnu packages cups) #:use-module (gnu packages curl) #:use-module (gnu packages databases) #:use-module (gnu packages flex) @@ -40,6 +41,7 @@ #:use-module (gnu packages docbook) #:use-module (gnu packages glib) #:use-module (gnu packages gnupg) + #:use-module (gnu packages gnuzilla) #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) #:use-module (gnu packages pdf) @@ -54,6 +56,7 @@ #:use-module (gnu packages image) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) #:use-module (gnu packages scanner) #:use-module (gnu packages xml) @@ -2126,3 +2129,66 @@ service via the system message bus.") "libgweather is a library to access weather information from online services for numerous locations.") (license license:gpl2+))) + +(define-public gnome-settings-daemon + (package + (name "gnome-settings-daemon") + (version "3.16.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1w29x2izq59125ga5ncmmaklc8kw7x7rdn6swn26bs23mah1r1g3")))) + (build-system glib-or-gtk-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; libwacom and xorg-wacom not yet packaged. Hackily disable by + ;; pretending to be s390 (!). + (add-before + 'configure 'disable-wacom + (lambda _ + (substitute* "configure" + (("if test \"\\$host_cpu\" = s390 -o \"\\$host_cpu\" = s390x") + "if true"))))) + ;; Network manager not yet packaged. + #:configure-flags '("--disable-network-manager") + ;; Color management test can't reach the colord system service. + #:tests? #f)) + (native-inputs + `(("pkg-config" ,pkg-config) + ("intltool" ,intltool) + ("xsltproc" ,libxslt) + ("libxml2" ,libxml2) ;for XML_CATALOG_FILES + ("docbook-xml" ,docbook-xml-4.2) + ("docbook-xsl" ,docbook-xsl))) + (inputs + `(("colord" ,colord) + ("eudev" ,eudev) + ("upower" ,upower) + ("polkit" ,polkit) + ("pulseaudio" ,pulseaudio) + ("libcanberra" ,libcanberra) + ("libx11" ,libx11) + ("libxtst" ,libxtst) + ("lcms" ,lcms) + ("libnotify" ,libnotify) + ("geoclue" ,geoclue) + ("geocode-glib" ,geocode-glib) + ("libgweather" ,libgweather) + ("gnome-desktop" ,gnome-desktop) + ("nss" ,nss) + ("cups" ,cups) + ("gsettings-desktop-schemas" ,gsettings-desktop-schemas))) + (home-page "http://www.gnome.org") + (synopsis "GNOME settings daemon") + (description + "This package contains the daemon responsible for setting the various +parameters of a GNOME session and the applications that run under it. It +handles settings such keyboard layout, shortcuts, and accessibility, clipboard +settings, themes, mouse settings, and startup of other daemons.") + (license license:gpl2+))) -- cgit v1.2.3 From 6915912506156868001777966ec218c8ebbe33ac Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 8 Apr 2015 21:00:32 -0400 Subject: gnu: Add mdadm. * gnu/packages/linux.scm (mdadm): New variable. --- gnu/packages/linux.scm | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 0452a1ce93..dc0532283e 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -2071,3 +2071,45 @@ the 1394 Trade Assocation. AV/C stands for Audio/Video Control.") "The libiec61883 library provides a higher level API for streaming DV, MPEG-2 and audio over Linux IEEE 1394.") (license lgpl2.1+))) + +(define-public mdadm + (package + (name "mdadm") + (version "3.3.2") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://kernel.org/linux/utils/raid/mdadm/mdadm-" + version ".tar.xz")) + (sha256 + (base32 + "132vdvh3myjgcjn6i9w90ck16ddjxjcszklzkyvr4f5ifqd7wfhg")))) + (build-system gnu-build-system) + (inputs + `(("udev" ,eudev))) + (arguments + `(#:make-flags (let ((out (assoc-ref %outputs "out"))) + (list "INSTALL=install" + "CHECK_RUN_DIR=0" + ;; TODO: tell it where to find 'sendmail' + ;; (string-append "MAILCMD=" "/sbin/sendmail") + (string-append "BINDIR=" out "/sbin") + (string-append "MANDIR=" out "/share/man") + (string-append "UDEVDIR=" out "/lib/udev"))) + #:phases (alist-cons-before + 'build 'patch-program-paths + (lambda* (#:key inputs #:allow-other-keys) + (let ((coreutils (assoc-ref inputs "coreutils"))) + (substitute* "udev-md-raid-arrays.rules" + (("/usr/bin/(readlink|basename)" all program) + (string-append coreutils "/bin/" program))))) + (alist-delete 'configure %standard-phases)) + ;;tests must be done as root + #:tests? #f)) + (home-page "http://neil.brown.name/blog/mdadm") + (synopsis "Tool for managing Linux Software RAID arrays") + (description + "mdadm is a tool for managing Linux Software RAID arrays. It can create, +assemble, report on, and monitor arrays. It can also move spares between raid +arrays when needed.") + (license gpl2+))) -- cgit v1.2.3 From d5f01e48e0810147c4f304a0e5c661e5a61e08ff Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 26 Mar 2015 17:25:09 -0400 Subject: guix package: Add '--do-not-upgrade' option. * guix/scripts/package.scm (%options): Add the '--do-not-upgrade' option. (show-help): Document it. (options->installable): Add 'do-not-upgrade-regexps' variable. Use it in 'packages-to-upgrade'. * doc/guix.texi (Invoking guix package): Document the '--do-not-upgrade' option. --- doc/guix.texi | 12 +++++++++++- guix/scripts/package.scm | 20 +++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 872caa8bf0..1bd2a841e8 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -947,13 +947,23 @@ and/or output name in addition to the package name. For instance, @itemx -u [@var{regexp} @dots{}] Upgrade all the installed packages. If one or more @var{regexp}s are specified, upgrade only installed packages whose name matches a -@var{regexp}. +@var{regexp}. Also see the @code{--do-not-upgrade} option below. Note that this upgrades package to the latest version of packages found in the distribution currently installed. To update your distribution, you should regularly run @command{guix pull} (@pxref{Invoking guix pull}). +@item --do-not-upgrade[=@var{regexp} @dots{}] +When used together with the @code{--upgrade} option, do @emph{not} +upgrade any packages whose name matches a @var{regexp}. For example, to +upgrade all packages in the current profile except those containing the +substring ``emacs'': + +@example +$ guix package --upgrade . --do-not-upgrade emacs +@end example + @item --roll-back Roll back to the previous @dfn{generation} of the profile---i.e., undo the last transaction. diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 09ae782751..53813c14ab 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2013 Nikita Karetnikov -;;; Copyright © 2013 Mark H Weaver +;;; Copyright © 2013, 2015 Mark H Weaver ;;; Copyright © 2014 Alex Kost ;;; ;;; This file is part of GNU Guix. @@ -464,6 +464,8 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n")) -r, --remove=PACKAGE remove PACKAGE")) (display (_ " -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP")) + (display (_ " + --do-not-upgrade[=REGEXP] do not upgrade any packages matching REGEXP")) (display (_ " --roll-back roll back to the previous generation")) (display (_ " @@ -543,6 +545,13 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n")) ;; would upgrade everything. (delete '(upgrade . #f) result)) arg-handler)))) + (option '("do-not-upgrade") #f #t + (lambda (opt name arg result arg-handler) + (let arg-handler ((arg arg) (result result)) + (values (if arg + (alist-cons 'do-not-upgrade arg result) + result) + arg-handler)))) (option '("roll-back") #f #f (lambda (opt name arg result arg-handler) (values (alist-cons 'roll-back? #t result) @@ -621,6 +630,13 @@ return the new list of manifest entries." (_ #f)) opts)) + (define do-not-upgrade-regexps + (filter-map (match-lambda + (('do-not-upgrade . regexp) + (make-regexp regexp)) + (_ #f)) + opts)) + (define packages-to-upgrade (match upgrade-regexps (() @@ -630,6 +646,8 @@ return the new list of manifest entries." (($ name version output path _) (and (any (cut regexp-exec <> name) upgrade-regexps) + (not (any (cut regexp-exec <> name) + do-not-upgrade-regexps)) (upgradeable? name version path) (let ((output (or output "out"))) (call-with-values -- cgit v1.2.3 From 04a20db2b302395d24ecfd41c270897e68f21345 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 14 Apr 2015 00:09:10 +0800 Subject: gnu: gst-libav: Use system ffmpeg instead of bundled libav. * gnu/packages/gstreamer.scm (gst-libav)[arguments]: Remove #:phases. Add #:configure-flags. [native-inputs]: Remove yasm. [inputs]: Add ffmpeg. --- gnu/packages/gstreamer.scm | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index 9758806cc5..e07bbec510 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -35,6 +35,7 @@ #:use-module (gnu packages linux) #:use-module (gnu packages perl) #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages video) #:use-module (gnu packages xorg) #:use-module (gnu packages xiph) #:use-module (gnu packages pkg-config) @@ -262,19 +263,13 @@ developers consider to have good quality code and correct functionality.") "1g7vg9amh3cc3nmc415h6g2rqxqi4wgwqi08hxfbpwq48ri64p30")))) (build-system gnu-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (add-before configure patch-/bin/sh - (lambda _ - (substitute* "gst-libs/ext/libav/configure" - (("#! /bin/sh") - (string-append "#! "(which "sh"))))))))) + '(#:configure-flags '("--with-system-libav"))) (native-inputs `(("pkg-config" ,pkg-config) - ("python" ,python) - ("yasm" ,yasm))) + ("python" ,python))) (inputs `(("gst-plugins-base" ,gst-plugins-base) + ("ffmpeg" ,ffmpeg) ("orc" ,orc) ("zlib" ,zlib))) (home-page "http://gstreamer.freedesktop.org/") -- cgit v1.2.3 From c3768fa49bc50b14c4bd5964eafc9a04f058b3dd Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Tue, 14 Apr 2015 20:00:55 +0200 Subject: gnu: calibre: Update to 2.23.0. * gnu/packages/ebook.scm (calibre): Update to 2.23.0. --- gnu/packages/ebook.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 05165774d7..9834ca64e4 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -60,7 +60,7 @@ (define-public calibre (package (name "calibre") - (version "2.22.0") + (version "2.23.0") (source (origin (method url-fetch) @@ -69,7 +69,7 @@ version ".tar.xz")) (sha256 (base32 - "19hpm5xzhjr0nfjm6xyqxjx2iwm3iw7y6bbs11337arfrxn16ly0")) + "0n99la1pacrw4ahb3wk0p68120p7j7v76mvpaf4qnkxy1vfdif7d")) ;; Remove non-free or doubtful code, see ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html (modules '((guix build utils))) -- cgit v1.2.3 From a84e523c4a470de06ca60478d5ac32289b444b03 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 14 Apr 2015 23:19:29 +0200 Subject: build: Silence warnings about 'make' portability. * configure.ac: Pass -Wno-portability to AM_INIT_AUTOMAKE. --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 2227c71c1b..5a9cea6fe2 100644 --- a/configure.ac +++ b/configure.ac @@ -7,7 +7,7 @@ AC_INIT([GNU Guix], [0.8.2], [bug-guix@gnu.org], [guix], AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE([1.12 gnu silent-rules subdir-objects \ - color-tests parallel-tests -Woverride]) + color-tests parallel-tests -Woverride -Wno-portability]) # Enable silent rules by default. AM_SILENT_RULES([yes]) -- cgit v1.2.3 From 9d3fb6c767913746340e8af4d967e386d2d0f1fd Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 14 Apr 2015 23:19:01 +0200 Subject: install: Add a procedure to build a self-contained binary tarball. Suggested by Pjotr Prins at . * gnu/build/install.scm (populate-single-profile-directory): New procedure. * gnu/system/install.scm (self-contained-tarball): New procedure. * Makefile.am (guix-binary.%.tar.xz): New target. --- Makefile.am | 7 +++++++ gnu/build/install.scm | 43 ++++++++++++++++++++++++++++++++++++++++++- gnu/system/install.scm | 39 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 87 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index 05ce9aa7b4..7bd689f6e1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -342,6 +342,13 @@ dist_emacsui_DATA = emacs/guix-main.scm nodist_emacsui_DATA = emacs/guix-helper.scm include emacs.am +# The self-contained tarball. +guix-binary.%.tar.xz: + -GUIX_PACKAGE_PATH= \ + $(top_builddir)/pre-inst-env "$(GUILE)" \ + "$(top_srcdir)/build-aux/make-binary-tarball.scm" "$*" "$@" + + dist-hook: sync-descriptions gen-ChangeLog assert-no-store-file-names distcheck-hook: assert-binaries-available assert-final-inputs-self-contained diff --git a/gnu/build/install.scm b/gnu/build/install.scm index 51895d58ec..f019fcb417 100644 --- a/gnu/build/install.scm +++ b/gnu/build/install.scm @@ -18,12 +18,14 @@ (define-module (gnu build install) #:use-module (guix build utils) + #:use-module (guix build store-copy) #:use-module (srfi srfi-26) #:use-module (ice-9 match) #:export (install-grub populate-root-file-system reset-timestamps - register-closure)) + register-closure + populate-single-profile-directory)) ;;; Commentary: ;;; @@ -157,4 +159,43 @@ by 'guix-register'. As a side effect, this resets timestamps on store files." (unless (zero? status) (error "failed to register store items" closure)))) +(define* (populate-single-profile-directory directory + #:key profile closure) + "Populate DIRECTORY with a store containing PROFILE, whose closure is given +in the file called CLOSURE (as generated by #:references-graphs.) DIRECTORY +is initialized to contain a single profile under /root pointing to PROFILE. +This is used to create the self-contained Guix tarball." + (define (scope file) + (string-append directory "/" file)) + + (define %root-profile + "/var/guix/profiles/per-user/root") + + (define (mkdir-p* dir) + (mkdir-p (scope dir))) + + (define (symlink* old new) + (symlink old (scope new))) + + ;; Populate the store. + (populate-store (list closure) directory) + (register-closure (canonicalize-path directory) closure) + + ;; XXX: 'guix-register' registers profiles as GC roots but the symlink + ;; target uses $TMPDIR. Fix that. + (delete-file (scope "/var/guix/gcroots/profiles")) + (symlink* "/var/guix/profiles" + "/var/guix/gcroots/profiles") + + ;; Make root's profile, which makes it a GC root. + (mkdir-p* %root-profile) + (symlink* profile + (string-append %root-profile "/guix-profile-1-link")) + (symlink* (string-append %root-profile "/guix-profile-1-link") + (string-append %root-profile "/guix-profile")) + + (mkdir-p* "/root") + (symlink* (string-append %root-profile "/guix-profile") + "/root/.guix-profile")) + ;;; install.scm ends here diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 2e7e4eafad..2fd35e8c48 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -22,6 +22,7 @@ #:use-module (guix store) #:use-module (guix monads) #:use-module ((guix store) #:select (%store-prefix)) + #:use-module (guix profiles) #:use-module (gnu packages admin) #:use-module (gnu packages linux) #:use-module (gnu packages cryptsetup) @@ -30,7 +31,8 @@ #:use-module (gnu packages grub) #:use-module (gnu packages texinfo) #:use-module (gnu packages compression) - #:export (installation-os)) + #:export (self-contained-tarball + installation-os)) ;;; Commentary: ;;; @@ -39,6 +41,41 @@ ;;; ;;; Code: + +(define* (self-contained-tarball #:key (guix guix)) + "Return a self-contained tarball containing a store initialized with the +closure of GUIX. The tarball contains /gnu/store, /var/guix, and a profile +under /root/.guix-profile where GUIX is installed." + (mlet %store-monad ((profile (profile-derivation + (manifest + (list (package->manifest-entry guix)))))) + (define build + #~(begin + (use-modules (guix build utils) + (gnu build install)) + + (define %root "root") + + (setenv "PATH" + (string-append #$guix "/sbin:" #$tar "/bin:" #$xz "/bin")) + + (populate-single-profile-directory %root + #:profile #$profile + #:closure "profile") + + ;; Create the tarball. Use GNU format so there's no file name + ;; length limitation. + (with-directory-excursion %root + (zero? (system* "tar" "--xz" "--format=gnu" + "-cvf" #$output "."))))) + + (gexp->derivation "guix-tarball.tar.xz" build + #:references-graphs `(("profile" ,profile)) + #:modules '((guix build utils) + (guix build store-copy) + (gnu build install))))) + + (define (log-to-info) "Return a script that spawns the Info reader on the right section of the manual." -- cgit v1.2.3 From a0bcaefd0885fdca898c3e60dc22c00a581c9b30 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 14 Apr 2015 23:06:12 +0200 Subject: Thank Pjotr. --- THANKS | 1 + 1 file changed, 1 insertion(+) diff --git a/THANKS b/THANKS index a7944c0f99..ff9714ebec 100644 --- a/THANKS +++ b/THANKS @@ -29,6 +29,7 @@ infrastructure help: Yutaka Niibe Andrei Osipov Adam Pribyl + Pjotr Prins rekado Bruno Félix Rezende Ribeiro Cyrill Schenkel -- cgit v1.2.3 From 890024c51cb6b52951b7395c09f9cb51147e8d1b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 14 Apr 2015 23:25:37 +0200 Subject: gnu: Don't use #:prefix in (gnu packages sdl). * gnu/packages/sdl.scm: Remove #:prefix for (gnu packages fontutils) import, and adjust accordingly. Add #:hide for (guix licenses) import. --- gnu/packages/sdl.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index 9a3b3898d8..4e9ebfb034 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -20,12 +20,12 @@ (define-module (gnu packages sdl) #:use-module (gnu packages) - #:use-module (guix licenses) + #:use-module ((guix licenses) #:hide (freetype)) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) - #:use-module ((gnu packages fontutils) #:prefix font:) + #:use-module (gnu packages fontutils) #:use-module (gnu packages guile) #:use-module (gnu packages image) #:use-module (gnu packages linux) @@ -260,7 +260,7 @@ SDL.") "1dydxd4f5kb1288i5n5568kdk2q7f8mqjr7i7sd33nplxjaxhk3j")))) (build-system gnu-build-system) (propagated-inputs `(("sdl" ,sdl))) - (inputs `(("freetype" ,font:freetype) + (inputs `(("freetype" ,freetype) ("mesa" ,mesa))) (native-inputs `(("pkg-config" ,pkg-config))) (synopsis "SDL TrueType font library") -- cgit v1.2.3 From b6075935338f59719efe39667a495011817292b3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 14 Apr 2015 23:26:41 +0200 Subject: hydra: Add jobs for the self-contained tarball. * build-aux/hydra/gnu-system.scm (tarball-jobs): New procedure. (hydra-jobs): Use it. --- build-aux/hydra/gnu-system.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm index cfef7dc425..f07b8589a9 100644 --- a/build-aux/hydra/gnu-system.scm +++ b/build-aux/hydra/gnu-system.scm @@ -54,6 +54,7 @@ (gnu packages multiprecision) (gnu packages make-bootstrap) (gnu packages commencement) + (gnu packages package-management) (gnu system) (gnu system vm) (gnu system install) @@ -161,6 +162,30 @@ system.") (* 800 MiB)))))) '())) +(define (tarball-jobs store system) + "Return Hydra jobs to build the self-contained Guix binary tarball." + (define (->alist drv) + `((derivation . ,(derivation-file-name drv)) + (description . "Stand-alone binary Guix tarball") + (long-description . "This is a tarball containing binaries of Guix and +all its dependencies, and ready to be installed on non-GuixSD distributions.") + (license . ,gpl3+) + (home-page . ,%guix-home-page-url) + (maintainers . ("bug-guix@gnu.org")))) + + (define (->job name drv) + (let ((name (symbol-append name (string->symbol ".") + (string->symbol system)))) + `(,name . ,(cut ->alist drv)))) + + ;; XXX: Add a job for the stable Guix? + (list (->job 'binary-tarball + (run-with-store store + (mbegin %store-monad + (set-guile-for-build (default-guile)) + (self-contained-tarball)) + #:system system)))) + (define job-name ;; Return the name of a package's job. (compose string->symbol package-full-name)) @@ -234,6 +259,7 @@ valid." (cons job result) result))) (append (qemu-jobs store system) + (tarball-jobs store system) (cross-jobs system)))) ((core) ;; Build core packages only. -- cgit v1.2.3 From 8bc35f85b75d9cf6b8d0d95f8dd25600f3d272c4 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 14 Apr 2015 23:29:26 +0200 Subject: build: Add missing 'make-binary-tarball.scm' script. This script is used by the target added in 9d3fb6c. * build-aux/make-binary-tarball.scm: New file. * Makefile.am (EXTRA_DIST): Add it. --- Makefile.am | 1 + build-aux/make-binary-tarball.scm | 50 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 build-aux/make-binary-tarball.scm diff --git a/Makefile.am b/Makefile.am index 7bd689f6e1..6cbc6af997 100644 --- a/Makefile.am +++ b/Makefile.am @@ -257,6 +257,7 @@ EXTRA_DIST = \ build-aux/check-final-inputs-self-contained.scm \ build-aux/download.scm \ build-aux/list-packages.scm \ + build-aux/make-binary-tarball.scm \ srfi/srfi-37.scm.in \ srfi/srfi-64.scm \ srfi/srfi-64.upstream.scm \ diff --git a/build-aux/make-binary-tarball.scm b/build-aux/make-binary-tarball.scm new file mode 100644 index 0000000000..0b5dbaf1de --- /dev/null +++ b/build-aux/make-binary-tarball.scm @@ -0,0 +1,50 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + + +;;; +;;; Build a self-contained tarball containing binaries for Guix and its +;;; dependencies. +;;; + +(use-modules (guix) + (guix ui) + (gnu system install) + (ice-9 match)) + +(define show-what-to-build* + (store-lift show-what-to-build)) + +(define copy-file* + (lift2 copy-file %store-monad)) + +(define rename-file* + (lift2 rename-file %store-monad)) + +(match (command-line) + ((_ system file) + (with-store store + (run-with-store store + (mlet %store-monad ((tarball (self-contained-tarball))) + (mbegin %store-monad + (show-what-to-build* (list tarball)) + (built-derivations (list tarball)) + (copy-file* (derivation->output-path tarball) + (string-append file ".part")) + (rename-file* (string-append file ".part") file))) + #:system system)))) -- cgit v1.2.3 From fee4693e4289c7b53903312fab48b3f574273edf Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 15 Apr 2015 12:04:51 +0800 Subject: gnu: recode: Fix tests. * gnu/packages/textutils.scm (recode): Rename phase 'fix-setup-py to 'pre-check. Set LD_LIBRARY_PATH to "$(pwd)/src/.libs" in pre-check phase. --- gnu/packages/textutils.scm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm index d6cc577e7d..c9483697df 100644 --- a/gnu/packages/textutils.scm +++ b/gnu/packages/textutils.scm @@ -44,11 +44,13 @@ (arguments '(#:phases (alist-cons-before - 'check 'fix-setup-py + 'check 'pre-check (lambda _ (substitute* "tests/setup.py" (("([[:space:]]*)include_dirs=.*" all space) - (string-append all space "library_dirs=['../src/.libs'],\n")))) + (string-append all space "library_dirs=['../src/.libs'],\n"))) + ;; The test extension 'Recode.so' lacks RUNPATH for 'librecode.so'. + (setenv "LD_LIBRARY_PATH" (string-append (getcwd) "/src/.libs"))) %standard-phases))) (home-page "https://github.com/pinard/Recode") (synopsis "Text encoding converter") -- cgit v1.2.3 From bda4ca76d4c6d7b34859176605cd81ccf946f2cc Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 15 Apr 2015 12:40:02 +0800 Subject: gnu: fltk: Update to 1.3.3. * gnu/packages/fltk.scm (fltk): Update to 1.3.33 --- gnu/packages/fltk.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm index 6aee41d31f..5c872cb233 100644 --- a/gnu/packages/fltk.scm +++ b/gnu/packages/fltk.scm @@ -27,7 +27,7 @@ (define-public fltk (package (name "fltk") - (version "1.3.2") + (version "1.3.3") (source (origin (method url-fetch) @@ -35,7 +35,7 @@ "/fltk-" version "-source.tar.gz")) (sha256 (base32 - "1974brlk723095vf8z72kazq1cbqr9a51kq6b0xda6zkjkgl8q0p")))) + "15qd7lkz5d5ynz70xhxhigpz3wns39v9xcf7ggkl0792syc8sfgq")))) (build-system gnu-build-system) (inputs `(("libx11" ,libx11) -- cgit v1.2.3 From 691cb22b1b4be122fc67d51c890e9fbf1643a182 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 15 Apr 2015 12:41:21 +0800 Subject: gnu: fltk: Add $libdir to the RUNPATH of binaries. * gnu/packages/fltk.scm (fltk)[arguments]: Add DSOFLAGS=-Wl,-rpath=$libdir to #:configure-flags. --- gnu/packages/fltk.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm index 5c872cb233..1ac1f2507e 100644 --- a/gnu/packages/fltk.scm +++ b/gnu/packages/fltk.scm @@ -42,7 +42,9 @@ ("mesa" ,mesa))) (arguments `(#:tests? #f ;TODO: compile programs in "test" dir - #:configure-flags '("--enable-shared") + #:configure-flags + (list "--enable-shared" + (string-append "DSOFLAGS=-Wl,-rpath=" %output "/lib")) #:phases (alist-cons-before 'configure 'patch-makeinclude -- cgit v1.2.3 From 1590e8a1dda793a16d9c70a666b0a8b5d41a94f5 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 28 Mar 2015 17:56:27 +0100 Subject: packages: Refer to the native tools when handling sources and downloads. * guix/packages.scm (patch-and-repack)[build]: Change most #$ to #+. * guix/cvs-download.scm (cvs-fetch)[build]: Likewise. * guix/download.scm (url-fetch)[builder]: Likewise. * guix/git-download.scm (git-fetch)[build]: Likewise. * guix/svn-download.scm (svn-fetch)[build]: Likewise. --- guix/cvs-download.scm | 2 +- guix/download.scm | 4 ++-- guix/git-download.scm | 4 ++-- guix/packages.scm | 36 ++++++++++++++++++------------------ guix/svn-download.scm | 2 +- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/guix/cvs-download.scm b/guix/cvs-download.scm index 8a0d479fa4..72478dd2c2 100644 --- a/guix/cvs-download.scm +++ b/guix/cvs-download.scm @@ -66,7 +66,7 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." '#$(cvs-reference-module ref) '#$(cvs-reference-revision ref) #$output - #:cvs-command (string-append #$cvs "/bin/cvs")))) + #:cvs-command (string-append #+cvs "/bin/cvs")))) (mlet %store-monad ((guile (package->derivation guile system))) (gexp->derivation (or name "cvs-checkout") build diff --git a/guix/download.scm b/guix/download.scm index d87d02e2af..3e4024fe1f 100644 --- a/guix/download.scm +++ b/guix/download.scm @@ -241,12 +241,12 @@ in the store." (define builder #~(begin - #$(if need-gnutls? + #+(if need-gnutls? ;; Add GnuTLS to the inputs and to the load path. #~(eval-when (load expand eval) (set! %load-path - (cons (string-append #$(gnutls-package) + (cons (string-append #+(gnutls-package) "/share/guile/site/" (effective-version)) %load-path))) diff --git a/guix/git-download.scm b/guix/git-download.scm index 94a1245480..f4b48d7a6b 100644 --- a/guix/git-download.scm +++ b/guix/git-download.scm @@ -76,7 +76,7 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." ;; The 'git submodule' commands expects Coreutils, sed, ;; grep, etc. to be in $PATH. (set-path-environment-variable "PATH" '("bin") - (match '#$inputs + (match '#+inputs (((names dirs) ...) dirs))) @@ -84,7 +84,7 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." '#$(git-reference-commit ref) #$output #:recursive? '#$(git-reference-recursive? ref) - #:git-command (string-append #$git "/bin/git")))) + #:git-command (string-append #+git "/bin/git")))) (mlet %store-monad ((guile (package->derivation guile system))) (gexp->derivation (or name "git-checkout") build diff --git a/guix/packages.scm b/guix/packages.scm index 7d4696fb5e..8ebe8d06b5 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -436,8 +436,8 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET." ;; Use '--force' so that patches that do not apply perfectly are ;; rejected. - (zero? (system* (string-append #$patch "/bin/patch") - "--force" #$@flags "--input" patch))) + (zero? (system* (string-append #+patch "/bin/patch") + "--force" #+@flags "--input" patch))) (define (first-file directory) ;; Return the name of the first file in DIRECTORY. @@ -448,49 +448,49 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET." ;; Encoding/decoding errors shouldn't be silent. (fluid-set! %default-port-conversion-strategy 'error) - (when #$locales + (when #+locales ;; First of all, install a UTF-8 locale so that UTF-8 file names ;; are correctly interpreted. During bootstrap, LOCALES is #f. - (setenv "LOCPATH" (string-append #$locales "/lib/locale")) + (setenv "LOCPATH" (string-append #+locales "/lib/locale")) (setlocale LC_ALL "en_US.UTF-8")) - (setenv "PATH" (string-append #$xz "/bin" ":" - #$decomp "/bin")) + (setenv "PATH" (string-append #+xz "/bin" ":" + #+decomp "/bin")) ;; SOURCE may be either a directory or a tarball. - (and (if (file-is-directory? #$source) + (and (if (file-is-directory? #+source) (let* ((store (or (getenv "NIX_STORE") "/gnu/store")) (len (+ 1 (string-length store))) - (base (string-drop #$source len)) + (base (string-drop #+source len)) (dash (string-index base #\-)) (directory (string-drop base (+ 1 dash)))) (mkdir directory) - (copy-recursively #$source directory) + (copy-recursively #+source directory) #t) - #$(if (string=? decompression-type "unzip") - #~(zero? (system* "unzip" #$source)) - #~(zero? (system* (string-append #$tar "/bin/tar") - "xvf" #$source)))) + #+(if (string=? decompression-type "unzip") + #~(zero? (system* "unzip" #+source)) + #~(zero? (system* (string-append #+tar "/bin/tar") + "xvf" #+source)))) (let ((directory (first-file "."))) (format (current-error-port) "source is under '~a'~%" directory) (chdir directory) - (and (every apply-patch '#$patches) - #$@(if snippet + (and (every apply-patch '#+patches) + #+@(if snippet #~((let ((module (make-fresh-user-module))) (module-use-interfaces! module (map resolve-interface - '#$modules)) + '#+modules)) ((@ (system base compile) compile) - '#$snippet + '#+snippet #:to 'value #:opts %auto-compilation-options #:env module))) #~()) (begin (chdir "..") #t) - (zero? (system* (string-append #$tar "/bin/tar") + (zero? (system* (string-append #+tar "/bin/tar") "cvfa" #$output directory))))))) (let ((name (tarxz-name original-file-name)) diff --git a/guix/svn-download.scm b/guix/svn-download.scm index 92b03d13f3..d6853ca861 100644 --- a/guix/svn-download.scm +++ b/guix/svn-download.scm @@ -62,7 +62,7 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." (svn-fetch '#$(svn-reference-url ref) '#$(svn-reference-revision ref) #$output - #:svn-command (string-append #$svn "/bin/svn")))) + #:svn-command (string-append #+svn "/bin/svn")))) (mlet %store-monad ((guile (package->derivation guile system))) (gexp->derivation (or name "svn-checkout") build -- cgit v1.2.3 From cd6c6d60a83fcd081097705ec5f51243d3d701d9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 15 Apr 2015 10:27:19 +0200 Subject: build-system/haskell: Refer to %GNU-BUILD-SYSTEM-MODULES. Fixes a regression whereby haskell-build-system was using an incomplete module list. * guix/build-system/haskell.scm (%haskell-build-system-modules): New variable. (haskell-build): Use it as the default value of #:imported-modules. --- guix/build-system/haskell.scm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/guix/build-system/haskell.scm b/guix/build-system/haskell.scm index 79faa5a09e..0fbf0b8e75 100644 --- a/guix/build-system/haskell.scm +++ b/guix/build-system/haskell.scm @@ -25,7 +25,8 @@ #:use-module (guix build-system gnu) #:use-module (ice-9 match) #:use-module (srfi srfi-26) - #:export (haskell-build + #:export (%haskell-build-system-modules + haskell-build haskell-build-system)) ;; Commentary: @@ -35,6 +36,11 @@ ;; ;; Code: +(define %haskell-build-system-modules + ;; Build-side modules imported by default. + `((guix build haskell-build-system) + ,@%gnu-build-system-modules)) + (define (default-haskell) "Return the default Haskell package." ;; Lazily resolve the binding to avoid a circular dependency. @@ -80,9 +86,7 @@ (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules '((guix build haskell-build-system) - (guix build gnu-build-system) - (guix build utils))) + (imported-modules %haskell-build-system-modules) (modules '((guix build haskell-build-system) (guix build utils)))) "Build SOURCE using HASKELL, and with INPUTS. This assumes that SOURCE -- cgit v1.2.3 From a8bd3e5ebbf2378ff64f19140f27585cddae07ac Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Tue, 14 Apr 2015 20:08:47 +0200 Subject: gnu: calibre: Update to 2.24.0. * gnu/packages/ebook.scm (calibre): Update to 2.24.0. --- gnu/packages/ebook.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 9834ca64e4..0602463a87 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -60,7 +60,7 @@ (define-public calibre (package (name "calibre") - (version "2.23.0") + (version "2.24.0") (source (origin (method url-fetch) @@ -69,7 +69,7 @@ version ".tar.xz")) (sha256 (base32 - "0n99la1pacrw4ahb3wk0p68120p7j7v76mvpaf4qnkxy1vfdif7d")) + "1l9gdna8vzc48yh20kwidb5hfp04cawg6vggkkqnn5zh9dwcvm4d")) ;; Remove non-free or doubtful code, see ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html (modules '((guix build utils))) -- cgit v1.2.3 From d43ba6f851e7acc4487d7682abada4573315d3e6 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 15 Apr 2015 19:07:10 +0800 Subject: gnu: wine: Update to 1.7.40. * gnu/packages/wine.scm (wine): Update to 1.7.40. --- gnu/packages/wine.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm index bdf153054e..cc7b28f464 100644 --- a/gnu/packages/wine.scm +++ b/gnu/packages/wine.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Sou Bunnbu +;;; Copyright © 2014, 2015 Sou Bunnbu ;;; ;;; This file is part of GNU Guix. ;;; @@ -48,14 +48,14 @@ (define-public wine (package (name "wine") - (version "1.7.31") + (version "1.7.40") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/wine/" name "-" version ".tar.bz2")) (sha256 (base32 - "14747ihmyanxvv8mnrafbj3l6807h7zf1gcwidgm1f7s7g5n4viw")) + "1dnasmw1rnlz7wk1bn0x1zmy3r78hgrn9y53z4vm8xjkllwyd0hd")) (modules '((guix build utils))) (snippet '(substitute* "Make.vars.in" -- cgit v1.2.3 From 6c0dfb195c1ff65a60ab6f0e297fd37ea3d4c841 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 15 Apr 2015 19:07:55 +0800 Subject: gnu: wine: Add $libdir to the RUNPATH of binaries. * gnu/packages/wine.scm (wine)[arguments]: Add #:configure-flags. --- gnu/packages/wine.scm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm index cc7b28f464..5b0758c6b2 100644 --- a/gnu/packages/wine.scm +++ b/gnu/packages/wine.scm @@ -108,6 +108,9 @@ ;; pass. #:tests? #f + #:configure-flags + (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")) + #:phases (alist-cons-after 'configure 'patch-dlopen-paths -- cgit v1.2.3 From e46d517f6d0be939cca74ee9fdd181db04cbe1a1 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 15 Apr 2015 15:55:30 +0200 Subject: gnu: icedtea6: Update to 1.13.7. * gnu/packages/java.scm (icedtea6): Update to version 1.13.7. --- gnu/packages/java.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index d50281839f..3149c55eee 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -102,7 +102,7 @@ build process and its dependencies, whereas Make uses Makefile format.") (define-public icedtea6 (package (name "icedtea6") - (version "1.13.6") + (version "1.13.7") (source (origin (method url-fetch) (uri (string-append @@ -110,7 +110,7 @@ build process and its dependencies, whereas Make uses Makefile format.") version ".tar.xz")) (sha256 (base32 - "16ac3f7kkln5skg202vllagkhjxrwd47h56diwzhfidhwjlz7410")) + "0fqq898h0mk554mya5z4j9p4x6sg2qj0ckqzx65x49zcjjp69jm5")) (modules '((guix build utils))) (snippet '(substitute* "Makefile.in" @@ -462,10 +462,10 @@ build process and its dependencies, whereas Make uses Makefile format.") ("openjdk6-src" ,(origin (method url-fetch) - (uri "https://java.net/downloads/openjdk6/openjdk-6-src-b34-20_jan_2015.tar.xz") + (uri "https://java.net/downloads/openjdk6/openjdk-6-src-b35-14_apr_2015.tar.gz") (sha256 (base32 - "0lafxvi255r22pjljkj9x6liacqdgin8smdmh6nzkdjjw7hv9l8k")))) + "05glw29vy4yw9rkjy9y8wg6ybzi89gjwi19qpnfda978x02r2x5p")))) ("lcms" ,lcms) ("zlib" ,zlib) ("gtk" ,gtk+-2) -- cgit v1.2.3 From d29843466abcd3e3a6e638c7c2b3511b82f70646 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 15 Apr 2015 13:30:25 +0200 Subject: gnu: qt-4: Do not set $LDFLAGS since that triggerred a build failure. Fixes the build failure at : g++ -licui18n -Wl,-O1 [...] -o ../../../../bin/assistant [...] ld: warning: libQtCLucene.so.4, needed by /tmp/nix-build-qt-4.8.6.drv-0/qt-everywhere-opensource-src-4.8.6/lib/libQtHelp.so, not found (try using -rpath or -rpath-link) /tmp/nix-build-qt-4.8.6.drv-0/qt-everywhere-opensource-src-4.8.6/lib/libQtHelp.so: undefined reference to `QCLucenePhraseQuery::getTerms() const' [...] * gnu/packages/patches/qt4-ldflags.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/qt.scm (qt-4)[source]: Use it. [arguments]: Remove 'setenv' call in 'configure' phase. --- gnu-system.am | 1 + gnu/packages/patches/qt4-ldflags.patch | 18 ++++++++++++++++++ gnu/packages/qt.scm | 14 ++++---------- 3 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 gnu/packages/patches/qt4-ldflags.patch diff --git a/gnu-system.am b/gnu-system.am index 1d3496f81f..d92aaaf891 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -520,6 +520,7 @@ dist_patch_DATA = \ gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \ gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch \ gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ + gnu/packages/patches/qt4-ldflags.patch \ gnu/packages/patches/qt4-tests.patch \ gnu/packages/patches/qt5-runpath.patch \ gnu/packages/patches/ratpoison-shell.patch \ diff --git a/gnu/packages/patches/qt4-ldflags.patch b/gnu/packages/patches/qt4-ldflags.patch new file mode 100644 index 0000000000..0d6398018a --- /dev/null +++ b/gnu/packages/patches/qt4-ldflags.patch @@ -0,0 +1,18 @@ +Explicitly link against libicui18n so that libQtCore.so always finds it. + +--- qt-everywhere-opensource-src-4.8.6/src/corelib/corelib.pro 2015-04-15 12:01:41.661862663 +0200 ++++ qt-everywhere-opensource-src-4.8.6/src/corelib/corelib.pro 2015-04-15 12:03:57.954586336 +0200 +@@ -19,6 +19,13 @@ include(codecs/codecs.pri) + include(statemachine/statemachine.pri) + include(xml/xml.pri) + ++# Explicitly link with icui18n, which is dlopened by libQtCore.so. ++# We cannot do this by setting LDFLAGS because that then overrides ++# other LDFLAGS: . ++# XXX: According to the Nixpkgs recipe, this may be necessary for ++# further libraries (cups, gtk-x11-2.0, libgdk-x11-2.0). ++LIBS_PRIVATE += -licui18n ++ + !qpa:mac|darwin:LIBS_PRIVATE += -framework ApplicationServices + qpa:mac { + !ios { diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 911de16024..1787059f51 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -230,7 +230,8 @@ developers using C++ or QML, a CSS & JavaScript like language.") (sha256 (base32 "0b036iqgmbbv37dgwwfihw3mihjbnw3kb5kaisdy0qi8nn8xs54b")) - (patches (list (search-patch "qt4-tests.patch"))))) + (patches (map search-patch + '("qt4-ldflags.patch" "qt4-tests.patch"))))) (inputs `(,@(alist-delete "libjpeg" (package-inputs qt)) ("libjepg" ,libjpeg-8) ("libsm" ,libsm))) @@ -241,15 +242,8 @@ developers using C++ or QML, a CSS & JavaScript like language.") (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (substitute* '("configure") - (("/bin/pwd") (which "pwd"))) - ;; Explicitly link with icui18n, which is dlopened by - ;; QtCore.so. The LDFLAGS are in fact added to other flags - ;; determined by the configure phase. - ;; According to the nix recipe, this may be necessary for - ;; further libraries (cups, gtk-x11-2.0, libgdk-x11-2.0). - (setenv "LDFLAGS" "-licui18n") - ;; do not pass "--enable-fast-install", which makes the - ;; configure process fail + (("/bin/pwd") (which "pwd"))) + (zero? (system* "./configure" "-verbose" -- cgit v1.2.3 From 3158097940fe14273da2f568b13391ca0b2141e5 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 15 Apr 2015 18:13:38 +0200 Subject: gnu: qt-4: Add "doc" output; use more standard directory names. * gnu/packages/qt.scm (qt-4)[outputs]: New field. (qt-4)[arguments]: Pass '-docdir', '-demosdir', and '-examplesdir'. --- gnu/packages/qt.scm | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 1787059f51..8de1ffe398 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015 Andreas Enge ;;; Copyright © 2015 Sou Bunnbu +;;; Copyright © 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -235,12 +236,19 @@ developers using C++ or QML, a CSS & JavaScript like language.") (inputs `(,@(alist-delete "libjpeg" (package-inputs qt)) ("libjepg" ,libjpeg-8) ("libsm" ,libsm))) + + ;; Note: there are 37 MiB of examples and a '-exampledir' configure flags, + ;; but we can't make them a separate output because "out" and "examples" + ;; would refer to each other. + (outputs '("out" ;112MiB core + 37MiB examples + "doc")) ;280MiB of HTML + code (arguments `(#:phases (alist-replace 'configure (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) + (let ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc"))) (substitute* '("configure") (("/bin/pwd") (which "pwd"))) @@ -248,6 +256,11 @@ developers using C++ or QML, a CSS & JavaScript like language.") "./configure" "-verbose" "-prefix" out + "-docdir" (string-append doc "/share/doc/qt-" ,version) + "-demosdir" (string-append out "/share/qt-" ,version + "/demos") + "-examplesdir" (string-append out "/share/qt-" ,version + "/examples") "-opensource" "-confirm-license" ;; explicitly link with dbus instead of dlopening it -- cgit v1.2.3 From aa46a028c4ff46e3f2e6866921866d2ed6373ba3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 15 Apr 2015 22:44:51 +0200 Subject: profiles: Generalize "hooks" for 'profile-derivation'. * guix/profiles.scm (info-dir-file): Remove (null? (manifest-entries manifest)) test. (ca-certificate-bundle): Likewise. (ghc-package-cache-file): Turn 'if' into 'and', and remove second arm. (%default-profile-hooks): New variable. (profile-derivation): Remove #:info-dir?, #:ghc-package-cache?, and #:ca-certificate-bundle?. Add #:hooks. Iterate over HOOKS. Adjust 'inputs' accordingly. * guix/scripts/package.scm (guix-package): Adjust 'profile-derivation' call accordingly. * tests/packages.scm ("--search-paths with pattern"): Likewise. * tests/profiles.scm ("profile-derivation", "profile-derivation, inputs"): Likewise. --- guix/profiles.scm | 72 +++++++++++++++++++----------------------------- guix/scripts/package.scm | 6 ++-- tests/packages.scm | 4 +-- tests/profiles.scm | 8 ++---- 4 files changed, 35 insertions(+), 55 deletions(-) diff --git a/guix/profiles.scm b/guix/profiles.scm index a2f63d1cca..620feff97e 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -78,6 +78,7 @@ profile-manifest package->manifest-entry + %default-profile-hooks profile-derivation generation-number generation-numbers @@ -398,15 +399,12 @@ MANIFEST." (append-map info-files '#$(manifest-inputs manifest))))) - ;; Don't depend on Texinfo when there's nothing to do. - (if (null? (manifest-entries manifest)) - (gexp->derivation "info-dir" #~(mkdir #$output)) - (gexp->derivation "info-dir" build - #:modules '((guix build utils))))) + (gexp->derivation "info-dir" build + #:modules '((guix build utils)))) (define (ghc-package-cache-file manifest) "Return a derivation that builds the GHC 'package.cache' file for all the -entries of MANIFEST." +entries of MANIFEST, or #f if MANIFEST does not have any GHC packages." (define ghc ;lazy reference (module-ref (resolve-interface '(gnu packages haskell)) 'ghc)) @@ -446,12 +444,11 @@ entries of MANIFEST." success))) ;; Don't depend on GHC when there's nothing to do. - (if (any (cut string-prefix? "ghc" <>) - (map manifest-entry-name (manifest-entries manifest))) - (gexp->derivation "ghc-package-cache" build - #:modules '((guix build utils)) - #:local-build? #t) - (gexp->derivation "ghc-package-cache" #~(mkdir #$output)))) + (and (any (cut string-prefix? "ghc" <>) + (map manifest-entry-name (manifest-entries manifest))) + (gexp->derivation "ghc-package-cache" build + #:modules '((guix build utils)) + #:local-build? #t))) (define (ca-certificate-bundle manifest) "Return a derivation that builds a single-file bundle containing the CA @@ -503,42 +500,31 @@ MANIFEST. Single-file bundles are required by programs such as Git and Lynx." (string-append result "/ca-certificates.crt"))))) - ;; Don't depend on 'glibc-utf8-locales' and its dependencies when there's - ;; nothing to do. - (if (null? (manifest-entries manifest)) - (gexp->derivation "ca-certificate-bundle" #~(mkdir #$output)) - (gexp->derivation "ca-certificate-bundle" build - #:modules '((guix build utils)) - #:local-build? #t))) + (gexp->derivation "ca-certificate-bundle" build + #:modules '((guix build utils)) + #:local-build? #t)) + +(define %default-profile-hooks + ;; This is the list of derivation-returning procedures that are called by + ;; default when making a non-empty profile. + (list info-dir-file + ghc-package-cache-file + ca-certificate-bundle)) (define* (profile-derivation manifest #:key - (info-dir? #t) - (ghc-package-cache? #t) - (ca-certificate-bundle? #t)) + (hooks %default-profile-hooks)) "Return a derivation that builds a profile (aka. 'user environment') with -the given MANIFEST. The profile includes a top-level Info 'dir' file unless -INFO-DIR? is #f, a GHC 'package.cache' file unless GHC-PACKAGE-CACHE? is #f -and a single-file CA certificate bundle unless CA-CERTIFICATE-BUNDLE? is #f." - (mlet %store-monad ((info-dir (if info-dir? - (info-dir-file manifest) - (return #f))) - (ghc-package-cache (if ghc-package-cache? - (ghc-package-cache-file manifest) - (return #f))) - (ca-cert-bundle (if ca-certificate-bundle? - (ca-certificate-bundle manifest) - (return #f)))) +the given MANIFEST. The profile includes additional derivations returned by +the monadic procedures listed in HOOKS--such as an Info 'dir' file, etc." + (mlet %store-monad ((extras (if (null? (manifest-entries manifest)) + (return '()) + (sequence %store-monad + (filter-map (lambda (hook) + (hook manifest)) + hooks))))) (define inputs - (append (if info-dir - (list (gexp-input info-dir)) - '()) - (if ghc-package-cache - (list (gexp-input ghc-package-cache)) - '()) - (if ca-cert-bundle - (list (gexp-input ca-cert-bundle)) - '()) + (append (map gexp-input extras) (manifest-inputs manifest))) (define builder diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 53813c14ab..5ee3a89ba6 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -855,9 +855,9 @@ more information.~%")) (let* ((prof-drv (run-with-store (%store) (profile-derivation new - #:info-dir? (not bootstrap?) - #:ghc-package-cache? (not bootstrap?) - #:ca-certificate-bundle? (not bootstrap?)))) + #:hooks (if bootstrap? + '() + %default-profile-hooks)))) (prof (derivation->output-path prof-drv))) (show-manifest-transaction (%store) manifest transaction #:dry-run? dry-run?) diff --git a/tests/packages.scm b/tests/packages.scm index 4e3a116cb8..d7c169a585 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -599,9 +599,7 @@ (profile-derivation (manifest (map package->manifest-entry (list p1 p2))) - #:info-dir? #f - #:ghc-package-cache? #f - #:ca-certificate-bundle? #f) + #:hooks '()) #:guile-for-build (%guile-for-build)))) (build-derivations %store (list prof)) (string-match (format #f "^export XML_CATALOG_FILES=\"~a/xml/+bar/baz/catalog\\.xml\"\n" diff --git a/tests/profiles.scm b/tests/profiles.scm index d20cb9d808..54fbaea864 100644 --- a/tests/profiles.scm +++ b/tests/profiles.scm @@ -183,9 +183,7 @@ ((entry -> (package->manifest-entry %bootstrap-guile)) (guile (package->derivation %bootstrap-guile)) (drv (profile-derivation (manifest (list entry)) - #:info-dir? #f - #:ghc-package-cache? #f - #:ca-certificate-bundle? #f)) + #:hooks '())) (profile -> (derivation->output-path drv)) (bindir -> (string-append profile "/bin")) (_ (built-derivations (list drv)))) @@ -197,9 +195,7 @@ (mlet* %store-monad ((entry -> (package->manifest-entry packages:glibc "debug")) (drv (profile-derivation (manifest (list entry)) - #:info-dir? #f - #:ghc-package-cache? #f - #:ca-certificate-bundle? #f))) + #:hooks '()))) (return (derivation-inputs drv)))) (test-end "profiles") -- cgit v1.2.3 From 09722b11e5e618028051d5f6d14eb13529dc7100 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 15 Apr 2015 23:25:04 +0200 Subject: doc: Add section on installation from a binary tarball. * doc/guix.texi (Binary Installation): New section. --- doc/guix.texi | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 74 insertions(+), 4 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 1bd2a841e8..07ef96627a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -236,20 +236,90 @@ manager, which can be done on top of a running GNU/Linux system. If, instead, you want to install the complete GNU operating system, @pxref{System Installation}. -The build procedure for Guix is the same as for other GNU software, and -is not covered here. Please see the files @file{README} and -@file{INSTALL} in the Guix source tree for additional details. - @menu +* Binary Installation:: Getting Guix running in no time! * Requirements:: Software needed to build and run Guix. * Running the Test Suite:: Testing Guix. * Setting Up the Daemon:: Preparing the build daemon's environment. * Invoking guix-daemon:: Running the build daemon. @end menu +@node Binary Installation +@section Binary Installation + +This section describes how to install Guix on an arbitrary system from a +self-contained tarball providing binaries for Guix and for all its +dependencies. This is often quicker than installing from source, which +is described in the next sections. The only requirement is to have +GNU@tie{}tar and Xz. + +Installing goes along these lines: + +@enumerate +@item +Download the binary tarball from +@code{ftp://alpha.gnu.org/gnu/guix/guix-binary-@value{VERSION}.@var{system}.tar.xz}@footnote{As +usual, make sure to download the associated @file{.sig} file and to +verify the authenticity of the tarball against it!}, where @var{system} +is @code{x86_64-linux} for an @code{x86_64} machine already running the +kernel Linux, and so on. + +@item +As @code{root}, run: + +@example +# cd / +# tar xf guix-binary-@value{VERSION}.@var{system}.tar.xz +@end example + +This creates @file{/gnu/store} (@pxref{The Store}), @file{/var/guix}, +and @file{/root/.guix-profile}. @file{/root/.guix-profile} is a +ready-to-use profile for @code{root} where Guix is installed. + +@item +Setup the daemon as explained below (@pxref{Setting Up the Daemon}), and +run it: + +@example +# /root/.guix-profile/bin/guix-daemon --build-users-group=guix-builder +@end example + +@item +Make the @command{guix} command available to other users on the machine, +for instance with: + +@example +# mkdir -p /usr/local/bin +# cd /usr/local/bin +# ln -s /root/.guix-profile/bin/guix +@end example +@end enumerate + +And that's it! + +There are two things to note. First, don't unpack the tarball on a +working Guix system since that would overwrite its own essential files. +Second, the @code{guix} package must remain available in @code{root}'s +profile, or it would become subject to garbage collection---in which +case you would find yourself badly handicapped by the lack of the +@command{guix} command. + +The tarball in question can be (re)produced simply by running the +following command in the Guix source tree: + +@example +make guix-binary.@var{system}.tar.xz +@end example + + @node Requirements @section Requirements +This section lists requirements when building Guix from source. The +build procedure for Guix is the same as for other GNU software, and is +not covered here. Please see the files @file{README} and @file{INSTALL} +in the Guix source tree for additional details. + GNU Guix depends on the following packages: @itemize -- cgit v1.2.3 From 9fd6c2ba949efef394291f37f9e7a098a80001fd Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 16 Apr 2015 09:49:52 +0200 Subject: build: Build and install (guix build haskell-build-system). * Makefile.am (MODULES): Add guix/build/haskell-build-system.scm. --- Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.am b/Makefile.am index 05ce9aa7b4..c1fa5332be 100644 --- a/Makefile.am +++ b/Makefile.am @@ -75,6 +75,7 @@ MODULES = \ guix/build/python-build-system.scm \ guix/build/ruby-build-system.scm \ guix/build/waf-build-system.scm \ + guix/build/haskell-build-system.scm \ guix/build/store-copy.scm \ guix/build/utils.scm \ guix/build/union.scm \ -- cgit v1.2.3 From b7615c56a751635fa4db8d0ecfd2bd18f0c3c3df Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 16 Apr 2015 09:51:38 +0200 Subject: build-system/haskell: Adjust to new 'modify-phases' syntax. * guix/build/haskell-build-system.scm (%standard-phases): Add missing quotes, as needed since commit f8503e2. --- guix/build/haskell-build-system.scm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/guix/build/haskell-build-system.scm b/guix/build/haskell-build-system.scm index e17967fb72..d382ee403d 100644 --- a/guix/build/haskell-build-system.scm +++ b/guix/build/haskell-build-system.scm @@ -196,13 +196,13 @@ generate the cache as it would clash in user profiles." (define %standard-phases (modify-phases gnu:%standard-phases - (add-before configure setup-compiler setup-compiler) - (add-before install haddock haddock) - (add-after install register register) - (replace install install) - (replace check check) - (replace build build) - (replace configure configure))) + (add-before 'configure 'setup-compiler setup-compiler) + (add-before 'install 'haddock haddock) + (add-after 'install 'register register) + (replace 'install install) + (replace 'check check) + (replace 'build build) + (replace 'configure configure))) (define* (haskell-build #:key inputs (phases %standard-phases) #:allow-other-keys #:rest args) -- cgit v1.2.3 From 945e9c0cefcf8d89939e831114154147cd4eca9a Mon Sep 17 00:00:00 2001 From: Paul van der Walt Date: Thu, 16 Apr 2015 09:54:05 +0200 Subject: gnu: mu: Update to 0.9.12. * gnu/packages/mail.scm (mu): Update to version 0.9.12. --- gnu/packages/mail.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 6d20b182cd..752f0a9833 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -309,7 +309,7 @@ repository and Maildir/IMAP as LOCAL repository.") (define-public mu (package (name "mu") - (version "0.9.11") + (version "0.9.12") (source (origin (method url-fetch) (uri (string-append "https://github.com/djcb/mu/archive/v" @@ -317,7 +317,7 @@ repository and Maildir/IMAP as LOCAL repository.") (file-name (string-append "mu-" version ".tar.gz")) (sha256 (base32 - "01n1lzq4pfsm5pn932p948d1z55yqc7kkm1ifjxjchb3k8lr66fh")))) + "1bxryacmas2llj68m2dv8dr1vwx8f5k2i2azh69jajkpqx7i4wdq")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) -- cgit v1.2.3 From 73b1b4eba93b5b7a0ac098296a152489119dc7ab Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 16 Apr 2015 09:56:10 +0200 Subject: gnu: icecat: Disable RUNPATH validation. * gnu/packages/gnuzilla.scm (icecat)[arguments]: Pass #:validate-runpath? #f. --- gnu/packages/gnuzilla.scm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index fbe63d99ea..419ff7adb9 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -266,6 +266,13 @@ standards.") `(#:tests? #f ; no check target #:out-of-source? #t ; must be built outside of the source directory + + ;; XXX: There are RUNPATH issues such as + ;; $prefix/lib/icecat-31.6.0/plugin-container NEEDing libmozalloc.so, + ;; which is not in its RUNPATH, but they appear to be harmless in + ;; practice somehow. See . + #:validate-runpath? #f + #:configure-flags '(;; Building with debugging symbols takes ~5GiB, so ;; disable it. "--disable-debug" -- cgit v1.2.3 From e1600f699699556dd7f5fb8a2252606bd984c836 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 16 Apr 2015 10:05:36 +0200 Subject: hydra: Increase size of USB image. * build-aux/hydra/gnu-system.scm (qemu-jobs) : Increase from 800 MiB to 850 MiB. --- build-aux/hydra/gnu-system.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm index cfef7dc425..cb2e209b21 100644 --- a/build-aux/hydra/gnu-system.scm +++ b/build-aux/hydra/gnu-system.scm @@ -158,7 +158,7 @@ system.") (set-guile-for-build (default-guile)) (system-disk-image installation-os #:disk-image-size - (* 800 MiB)))))) + (* 850 MiB)))))) '())) (define job-name -- cgit v1.2.3 From 4f2bde44330b32d5d34170a46553b9b5036cd2d3 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 14 Apr 2015 14:11:42 +0200 Subject: gnu: tbb: Set library rpath. * gnu/packages/tbb.scm (tbb)[arguments]: Add the rpath for lib directory of output to LDFLAGS. --- gnu/packages/tbb.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gnu/packages/tbb.scm b/gnu/packages/tbb.scm index 42670d77c0..3c41141dc6 100644 --- a/gnu/packages/tbb.scm +++ b/gnu/packages/tbb.scm @@ -46,8 +46,13 @@ (build-system gnu-build-system) (arguments `(#:test-target "test" - #:phases (alist-delete + #:phases (alist-replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "build/linux.gcc.inc" + (("LIB_LINK_FLAGS =") + (string-append "LIB_LINK_FLAGS = -Wl,-rpath=" + (assoc-ref outputs "out") "/lib")))) (alist-replace 'install (lambda* (#:key outputs #:allow-other-keys) -- cgit v1.2.3 From f571e1c34600dc4621506e8745e36442f9896970 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 14 Apr 2015 16:35:30 +0200 Subject: gnu: Add libgtextutils. * gnu/packages/textutils.scm (libgtextutils): New variable. --- gnu/packages/textutils.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm index d6cc577e7d..8f00b1f6aa 100644 --- a/gnu/packages/textutils.scm +++ b/gnu/packages/textutils.scm @@ -23,6 +23,7 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system gnu) + #:use-module (gnu packages autotools) #:use-module (gnu packages python)) (define-public recode @@ -122,3 +123,33 @@ libenca and several charset conversion libraries and tools.") normalization, case-folding, and other operations for data in the UTF-8 encoding, supporting Unicode version 7.0.") (license license:expat))) + +(define-public libgtextutils + (package + (name "libgtextutils") + (version "0.7") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/agordon/libgtextutils/releases/download/" + version "/libgtextutils-" version ".tar.gz")) + (sha256 + (base32 "0jiybkb2z58wa2msvllnphr4js2hvjvh988pavb3mzkgr6ihwbkr")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (alist-cons-after + 'unpack 'autoreconf + (lambda _ (zero? (system* "autoreconf" "-vif"))) + %standard-phases))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool))) + (home-page "https://github.com/agordon/libgtextutils") + (synopsis "Gordon's text utils library") + (description + "libgtextutils is a text utilities library used by the fastx toolkit from +the Hannon Lab.") + (license license:agpl3+))) -- cgit v1.2.3 From 2127cedb23ab051d9f03bdab7b7ae5d5c472baff Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 14 Apr 2015 16:36:30 +0200 Subject: gnu: Add FASTX Toolkit. * gnu/packages/bioinformatics.scm (fastx-toolkit): New variable. --- gnu/packages/bioinformatics.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 1ad5f600fb..b1258220b4 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -39,6 +39,7 @@ #:use-module (gnu packages statistics) #:use-module (gnu packages swig) #:use-module (gnu packages tbb) + #:use-module (gnu packages textutils) #:use-module (gnu packages vim) #:use-module (gnu packages xml) #:use-module (gnu packages zip)) @@ -471,6 +472,38 @@ file formats including SAM/BAM, Wiggle/BigWig, BED, GFF/GTF, VCF.") other types of unwanted sequence from high-throughput sequencing reads.") (license license:expat))) +(define-public fastx-toolkit + (package + (name "fastx-toolkit") + (version "0.0.14") + (source (origin + (method url-fetch) + (uri + (string-append + "https://github.com/agordon/fastx_toolkit/releases/download/" + version "/fastx_toolkit-" version ".tar.bz2")) + (sha256 + (base32 + "01jqzw386873sr0pjp1wr4rn8fsga2vxs1qfmicvx1pjr72007wy")))) + (build-system gnu-build-system) + (inputs + `(("libgtextutils" ,libgtextutils))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://hannonlab.cshl.edu/fastx_toolkit/") + (synopsis "Tools for FASTA/FASTQ file preprocessing") + (description + "The FASTX-Toolkit is a collection of command line tools for Short-Reads +FASTA/FASTQ files preprocessing. + +Next-Generation sequencing machines usually produce FASTA or FASTQ files, +containing multiple short-reads sequences. The main processing of such +FASTA/FASTQ files is mapping the sequences to reference genomes. However, it +is sometimes more productive to preprocess the files before mapping the +sequences to the genome---manipulating the sequences to produce better mapping +results. The FASTX-Toolkit tools perform some of these preprocessing tasks.") + (license license:agpl3+))) + (define-public flexbar (package (name "flexbar") -- cgit v1.2.3 From f2feb0ce7c9a846cdb0fae2ba24f98fe0b681a9e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 16 Apr 2015 10:35:33 +0200 Subject: gnu: ffmpeg: Use 'modify-phases'. * gnu/packages/video.scm (ffmpeg)[arguments]: Use 'modify-phases' instead of 'alist-cons-after' et al. --- gnu/packages/video.scm | 108 ++++++++++++++++++++++++------------------------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 5dd4531ec4..693a8251f8 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -323,7 +323,8 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") #:imported-modules (,@%gnu-build-system-modules (guix build rpath)) #:phases - (alist-replace + (modify-phases %standard-phases + (replace 'configure ;; configure does not work followed by "SHELL=..." and ;; "CONFIG_SHELL=..."; set environment variables instead @@ -333,48 +334,48 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") (("#! /bin/sh") (string-append "#!" (which "bash")))) (setenv "SHELL" (which "bash")) (setenv "CONFIG_SHELL" (which "bash")) - ;; FIXME: only needed for ffmpeg-2.2.13, but easier to add - ;; globally; drop as soon as ffmpeg-2.2.13 is dropped + ;; FIXME: only needed for ffmpeg-2.2.13, but easier to add + ;; globally; drop as soon as ffmpeg-2.2.13 is dropped (setenv "LDFLAGS" "-ldl") -;; possible additional inputs: -;; --enable-avisynth enable reading of AviSynth script files [no] -;; --enable-frei0r enable frei0r video filtering -;; --enable-libaacplus enable AAC+ encoding via libaacplus [no] -;; --enable-libcelt enable CELT decoding via libcelt [no] -;; --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394 -;; and libraw1394 [no] -;; --enable-libfaac enable AAC encoding via libfaac [no] -;; --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no] -;; --enable-libflite enable flite (voice synthesis) support via libflite [no] -;; --enable-libgme enable Game Music Emu via libgme [no] -;; --enable-libgsm enable GSM de/encoding via libgsm [no] -;; --enable-libiec61883 enable iec61883 via libiec61883 [no] -;; --enable-libilbc enable iLBC de/encoding via libilbc [no] -;; --enable-libmodplug enable ModPlug via libmodplug [no] -;; --enable-libnut enable NUT (de)muxing via libnut, -;; native (de)muxer exists [no] -;; --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no] -;; --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no] -;; --enable-libopencv enable video filtering via libopencv [no] -;; --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no] -;; --enable-librtmp enable RTMP[E] support via librtmp [no] -;; --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no] -;; --enable-libshine enable fixed-point MP3 encoding via libshine [no] -;; --enable-libssh enable SFTP protocol via libssh [no] -;; (libssh2 does not work) -;; --enable-libstagefright-h264 enable H.264 decoding via libstagefright [no] -;; --enable-libutvideo enable Ut Video encoding and decoding via libutvideo [no] -;; --enable-libv4l2 enable libv4l2/v4l-utils [no] -;; --enable-libvidstab enable video stabilization using vid.stab [no] -;; --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no] -;; --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no] -;; --enable-libwavpack enable wavpack encoding via libwavpack [no] -;; --enable-libx264 enable H.264 encoding via x264 [no] -;; --enable-libxavs enable AVS encoding via xavs [no] -;; --enable-libzmq enable message passing via libzmq [no] -;; --enable-libzvbi enable teletext support via libzvbi [no] -;; --enable-opencl enable OpenCL code -;; --enable-x11grab enable X11 grabbing [no] + ;; possible additional inputs: + ;; --enable-avisynth enable reading of AviSynth script files [no] + ;; --enable-frei0r enable frei0r video filtering + ;; --enable-libaacplus enable AAC+ encoding via libaacplus [no] + ;; --enable-libcelt enable CELT decoding via libcelt [no] + ;; --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394 + ;; and libraw1394 [no] + ;; --enable-libfaac enable AAC encoding via libfaac [no] + ;; --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no] + ;; --enable-libflite enable flite (voice synthesis) support via libflite [no] + ;; --enable-libgme enable Game Music Emu via libgme [no] + ;; --enable-libgsm enable GSM de/encoding via libgsm [no] + ;; --enable-libiec61883 enable iec61883 via libiec61883 [no] + ;; --enable-libilbc enable iLBC de/encoding via libilbc [no] + ;; --enable-libmodplug enable ModPlug via libmodplug [no] + ;; --enable-libnut enable NUT (de)muxing via libnut, + ;; native (de)muxer exists [no] + ;; --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no] + ;; --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no] + ;; --enable-libopencv enable video filtering via libopencv [no] + ;; --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no] + ;; --enable-librtmp enable RTMP[E] support via librtmp [no] + ;; --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no] + ;; --enable-libshine enable fixed-point MP3 encoding via libshine [no] + ;; --enable-libssh enable SFTP protocol via libssh [no] + ;; (libssh2 does not work) + ;; --enable-libstagefright-h264 enable H.264 decoding via libstagefright [no] + ;; --enable-libutvideo enable Ut Video encoding and decoding via libutvideo [no] + ;; --enable-libv4l2 enable libv4l2/v4l-utils [no] + ;; --enable-libvidstab enable video stabilization using vid.stab [no] + ;; --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no] + ;; --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no] + ;; --enable-libwavpack enable wavpack encoding via libwavpack [no] + ;; --enable-libx264 enable H.264 encoding via x264 [no] + ;; --enable-libxavs enable AVS encoding via xavs [no] + ;; --enable-libzmq enable message passing via libzmq [no] + ;; --enable-libzvbi enable teletext support via libzvbi [no] + ;; --enable-opencl enable OpenCL code + ;; --enable-x11grab enable X11 grabbing [no] (zero? (system* "./configure" (string-append "--prefix=" out) @@ -409,18 +410,17 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") "--disable-mips32r2" "--disable-mipsdspr1" "--disable-mipsdspr2" - "--disable-mipsfpu")))) - (alist-cons-after - 'strip 'add-lib-to-runpath - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (lib (string-append out "/lib"))) - ;; Add LIB to the RUNPATH of all the executables and libraries. - (with-directory-excursion out - (for-each (cut augment-rpath <> lib) - (append (find-files "bin" ".*") - (find-files "lib" "\\.so\\..*\\.")))))) - %standard-phases)))) + "--disable-mipsfpu"))))) + (add-after + 'strip 'add-lib-to-runpath + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + ;; Add LIB to the RUNPATH of all the executables and libraries. + (with-directory-excursion out + (for-each (cut augment-rpath <> lib) + (append (find-files "bin" ".*") + (find-files "lib" "\\.so\\..*\\.")))))))))) (home-page "http://www.ffmpeg.org/") (synopsis "Audio and video framework") (description "FFmpeg is a complete, cross-platform solution to record, -- cgit v1.2.3 From 457e528eb910225d55b08f200fabe29c1eebbb52 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 16 Apr 2015 10:54:07 +0200 Subject: gnu: ffmpeg: Allow tests to run from the build tree. * gnu/packages/video.scm (ffmpeg)[arguments]: Add 'set-ld-library-path' phase. --- gnu/packages/video.scm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 693a8251f8..114ad7e61b 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -411,6 +411,16 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") "--disable-mipsdspr1" "--disable-mipsdspr2" "--disable-mipsfpu"))))) + (add-before + 'check 'set-ld-library-path + (lambda _ + ;; Allow $(top_builddir)/ffmpeg to find its dependencies when + ;; running tests. + (let* ((dso (find-files "." "\\.so$")) + (path (string-join (map dirname dso) ":"))) + (format #t "setting LD_LIBRARY_PATH to ~s~%" path) + (setenv "LD_LIBRARY_PATH" path) + #t))) (add-after 'strip 'add-lib-to-runpath (lambda* (#:key outputs #:allow-other-keys) -- cgit v1.2.3 From 1a189da0e7c54e19484d2b79d505b860e436bd35 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Thu, 16 Apr 2015 13:11:24 +0200 Subject: gnu: vlc: Update to 2.2.0. * gnu/packages/video.scm (vlc): Update to 2.2.0. [inputs]: Switch from ffmpeg-2.2 to latest one. --- gnu/packages/video.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 114ad7e61b..e5e4743b2c 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -453,7 +453,7 @@ audio/video codec library.") (define-public vlc (package (name "vlc") - (version "2.1.5") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append @@ -461,7 +461,7 @@ audio/video codec library.") version "/vlc-" version ".tar.xz")) (sha256 (base32 - "0whzbn7ahn5maarcwl1yhk9lq10b0q0y9w5pjl9kh3frdjmncrbg")))) + "05smn9hqdp7iscc1dj4cxp1mrlad7b50lhlnlqisfzf493i2f2jy")))) (build-system gnu-build-system) (native-inputs `(("git" ,git) ; needed for a test @@ -472,7 +472,7 @@ audio/video codec library.") ("avahi" ,avahi) ("dbus" ,dbus) ("flac" ,flac) - ("ffmpeg" ,ffmpeg-2.2) ; FIXME: vlc-2.1.5 won't work with ffmpeg-2.4 + ("ffmpeg" ,ffmpeg) ("fontconfig" ,fontconfig) ("freetype" ,freetype) ("gnutls" ,gnutls) -- cgit v1.2.3 From 78dc44908edbb9e7d773a351ca12cef22755fb91 Mon Sep 17 00:00:00 2001 From: Manolis Ragkousis Date: Thu, 16 Apr 2015 13:09:02 +0300 Subject: gnu: gnumach-headers: Update to 1.5 * gnu/packages/hurd.scm (gnumach-headers): Update to version 1.5. --- gnu/packages/hurd.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm index 8ac78d3ece..94cd51651d 100644 --- a/gnu/packages/hurd.scm +++ b/gnu/packages/hurd.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Manolis Fragkiskos Ragkousis +;;; Copyright © 2014, 2015 Manolis Fragkiskos Ragkousis ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,7 +29,7 @@ (define-public gnumach-headers (package (name "gnumach-headers") - (version "1.4") + (version "1.5") (source (origin (method url-fetch) @@ -37,7 +37,7 @@ version ".tar.gz")) (sha256 (base32 - "0r371wsm7imx356p0xsls5hifb1gf9y90rm1phr0qkahbmfk9hlv")))) + "0wsf57q4h6xl2jn28d423qx7zplmhpnf9ssm4f1c0sf8513xm81j")))) (build-system gnu-build-system) (arguments `(#:phases (alist-replace -- cgit v1.2.3 From 41d9c5d39af8a085e76a2be05fae8f2deae2e48c Mon Sep 17 00:00:00 2001 From: Manolis Ragkousis Date: Thu, 16 Apr 2015 13:51:55 +0300 Subject: gnu: hurd-headers: Update to 0.6 * gnu/packages/hurd.scm (hurd-headers): Update to version 0.6. --- gnu/packages/hurd.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm index 94cd51651d..50453bb777 100644 --- a/gnu/packages/hurd.scm +++ b/gnu/packages/hurd.scm @@ -92,14 +92,14 @@ communication.") (define-public hurd-headers (package (name "hurd-headers") - (version "0.5") + (version "0.6") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/hurd/hurd-" version ".tar.gz")) (sha256 (base32 - "0lvkz3r0ngb4bsn2hzdc9vjpyrfa3ls36jivrvy1n7f7f55zan7q")))) + "059lbspbpcjpcq5jf98f47jw9sm0ngs3x6phxax53m3rwca1fk7y")))) (build-system gnu-build-system) (native-inputs `(;; Autoconf shouldn't be necessary but there seems to be a bug in the -- cgit v1.2.3 From d67513fa05a95256fe9ef8c611dc9cfab307be03 Mon Sep 17 00:00:00 2001 From: Manolis Ragkousis Date: Thu, 16 Apr 2015 14:00:17 +0300 Subject: gnu: mig: Update to 1.5 * gnu/packages/hurd.scm (mig): Update to version 1.5. --- gnu/packages/hurd.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm index 50453bb777..62dc04385f 100644 --- a/gnu/packages/hurd.scm +++ b/gnu/packages/hurd.scm @@ -63,7 +63,7 @@ (define-public mig (package (name "mig") - (version "1.4") + (version "1.5") (source (origin (method url-fetch) @@ -71,7 +71,7 @@ version ".tar.gz")) (sha256 (base32 - "1jgzggnbp22sa8z5dilm43zy12vlf1pjxfb3kh13xrfhcay0l97b")))) + "13r1pg8icyc0pl082z7k36i440pr1f3nr7ahig3rrc0r7qndqmk9")))) (build-system gnu-build-system) (inputs `(("gnumach-headers" ,gnumach-headers))) (native-inputs -- cgit v1.2.3 From f0ad3c76973fbf1518eecac76eab0b657722a9ba Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 16 Apr 2015 22:22:45 +0200 Subject: gnu: bigloo: Add RUNPATH to the libraries. * gnu/packages/scheme.scm (bigloo)[arguments]: Pass --ldflags 'configure' flag. --- gnu/packages/scheme.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index b450e33bbd..77d0d846c8 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -188,7 +188,10 @@ features an integrated Emacs-like editor and a large runtime library.") ;; . ;; "--customgc=no" ; use our libgc (string-append"--mv=" (which "mv")) - (string-append "--rm=" (which "rm")))))) + (string-append "--rm=" (which "rm")) + (string-append "--ldflags=-Wl,-rpath=" + (assoc-ref outputs "out") + "/lib/bigloo/" ,version))))) (alist-cons-after 'install 'install-emacs-modes (lambda* (#:key outputs #:allow-other-keys) -- cgit v1.2.3 From 77db91addc57faa000db05563820f57a9ffdedfc Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 16 Apr 2015 23:11:32 +0200 Subject: gnu: Add second ld-wrapper to work around readlink dereferencing bug. Suggested by Mark H Weaver. * gnu/packages/ld-wrapper2.in: New file. * gnu-system.am (MISC_DISTRO_FILES): Add it. * gnu/packages/commencement.scm (fixed-ld-wrapper): New procedure. --- gnu-system.am | 3 +- gnu/packages/commencement.scm | 15 +++- gnu/packages/ld-wrapper2.in | 201 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 217 insertions(+), 2 deletions(-) create mode 100644 gnu/packages/ld-wrapper2.in diff --git a/gnu-system.am b/gnu-system.am index d92aaaf891..0e23175415 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -575,7 +575,8 @@ dist_patch_DATA = \ gnu/packages/patches/zathura-plugindir-environment-variable.patch MISC_DISTRO_FILES = \ - gnu/packages/ld-wrapper.in + gnu/packages/ld-wrapper.in \ + gnu/packages/ld-wrapper2.in bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap bootstrap_x86_64_linuxdir = $(bootstrapdir)/x86_64-linux diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 4342dc56d1..22da2e0fb3 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -708,6 +708,19 @@ COREUTILS-FINAL vs. COREUTILS, etc." ;;; GCC toolchain. ;;; +(define (fixed-ld-wrapper) + ;; FIXME: In this cycle, a bug was introduced in ld-wrapper: it would + ;; incorrectly flag ~/.guix-profile/lib/libfoo.so as "impure", due to a bug + ;; in its symlink resolution code. To work around that while avoiding a + ;; full rebuild, use an ld-wrapper with the bug-fix for 'gcc-toolchain'. + (let ((orig (car (assoc-ref %final-inputs "ld-wrapper")))) + (package + (inherit orig) + (location (source-properties->location (current-source-location))) + (inputs `(("wrapper" ,(search-path %load-path + "gnu/packages/ld-wrapper2.in")) + ,@(package-inputs orig)))))) + (define (gcc-toolchain gcc) "Return a complete toolchain for GCC." (package @@ -746,7 +759,7 @@ and binaries, plus debugging symbols in the 'debug' output), and Binutils.") ;; install everything that we need, and (2) to make sure ld-wrapper comes ;; before Binutils' ld in the user's profile. (inputs `(("gcc" ,gcc) - ("ld-wrapper" ,(car (assoc-ref %final-inputs "ld-wrapper"))) + ("ld-wrapper" ,(fixed-ld-wrapper)) ("binutils" ,binutils-final) ("libc" ,glibc-final) ("libc-debug" ,glibc-final "debug"))))) diff --git a/gnu/packages/ld-wrapper2.in b/gnu/packages/ld-wrapper2.in new file mode 100644 index 0000000000..2f0e0ab24a --- /dev/null +++ b/gnu/packages/ld-wrapper2.in @@ -0,0 +1,201 @@ +#!@BASH@ +# -*- mode: scheme; coding: utf-8; -*- + +# XXX: We have to go through Bash because there's no command-line switch to +# augment %load-compiled-path, and because of the silly 127-byte limit for +# the shebang line in Linux. +# Use `load-compiled' because `load' (and `-l') doesn't otherwise load our +# .go file (see ). + +main="(@ (gnu build-support ld-wrapper) ld-wrapper)" +exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)))" "$@" +!# +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu build-support ld-wrapper) + #:use-module (srfi srfi-1) + #:use-module (ice-9 match) + #:export (ld-wrapper)) + +;;; Commentary: +;;; +;;; This is a wrapper for the linker. Its purpose is to inspect the -L and +;;; -l switches passed to the linker, add corresponding -rpath arguments, and +;;; invoke the actual linker with this new set of arguments. +;;; +;;; The alternatives to this hack would be: +;;; +;;; 1. Using $LD_RUN_PATH. However, that would tend to include more than +;;; needed in the RPATH; for instance, given a package with `libfoo' as +;;; an input, all its binaries would have libfoo in their RPATH, +;;; regardless of whether they actually NEED it. +;;; +;;; 2. Use a GCC "lib" spec string such as `%{L*:-rpath %*}', which adds a +;;; `-rpath LIBDIR' argument for each occurrence of `-L LIBDIR'. +;;; However, this doesn't work when $LIBRARY_PATH is used, because the +;;; additional `-L' switches are not matched by the above rule, because +;;; the rule only matches explicit user-provided switches. See +;;; for details. +;;; +;;; As a bonus, this wrapper checks for "impurities"--i.e., references to +;;; libraries outside the store. +;;; +;;; Code: + +(define %real-ld + ;; Name of the linker that we wrap. + "@LD@") + +(define %store-directory + ;; File name of the store. + (or (getenv "NIX_STORE") "/gnu/store")) + +(define %temporary-directory + ;; Temporary directory. + (or (getenv "TMPDIR") "/tmp")) + +(define %build-directory + ;; Top build directory when run from a builder. + (getenv "NIX_BUILD_TOP")) + +(define %allow-impurities? + ;; Whether to allow references to libraries outside the store. + (getenv "GUIX_LD_WRAPPER_ALLOW_IMPURITIES")) + +(define %debug? + ;; Whether to emit debugging output. + (getenv "GUIX_LD_WRAPPER_DEBUG")) + +(define %disable-rpath? + ;; Whether to disable automatic '-rpath' addition. + (getenv "GUIX_LD_WRAPPER_DISABLE_RPATH")) + +(define (readlink* file) + ;; Call 'readlink' until the result is not a symlink. + (define %max-symlink-depth 50) + + (let loop ((file file) + (depth 0)) + (define (absolute target) + (if (absolute-file-name? target) + target + (string-append (dirname file) "/" target))) + + (catch 'system-error + (lambda () + (if (>= depth %max-symlink-depth) + file + (loop (absolute (readlink file)) (+ depth 1)))) + (lambda args + (let ((errno (system-error-errno args))) + (if (or (= errno EINVAL) (= errno ENOENT)) + file + (apply throw args))))))) + +(define (pure-file-name? file) + ;; Return #t when FILE is the name of a file either within the store + ;; (possibly via a symlink) or within the build directory. + (let ((file (readlink* file))) + (or (not (string-prefix? "/" file)) + (string-prefix? %store-directory file) + (string-prefix? %temporary-directory file) + (and %build-directory + (string-prefix? %build-directory file))))) + +(define (store-file-name? file) + ;; Return #t when FILE is a store file, possibly indirectly. + (string-prefix? %store-directory (readlink* file))) + +(define (shared-library? file) + ;; Return #t when FILE denotes a shared library. + (or (string-suffix? ".so" file) + (let ((index (string-contains file ".so."))) + ;; Since we cannot use regexps during bootstrap, roll our own. + (and index + (string-every (char-set-union (char-set #\.) char-set:digit) + (string-drop file (+ index 3))))))) + +(define (library-files-linked args) + ;; Return the file names of shared libraries explicitly linked against via + ;; `-l' or with an absolute file name in ARGS. + (define path+files + (fold (lambda (argument result) + (match result + ((library-path . library-files) + (cond ((string-prefix? "-L" argument) ;augment the search path + (cons (append library-path + (list (string-drop argument 2))) + library-files)) + ((string-prefix? "-l" argument) ;add library + (let* ((lib (string-append "lib" + (string-drop argument 2) + ".so")) + (full (search-path library-path lib))) + (if full + (cons library-path + (cons full library-files)) + result))) + ((and (string-prefix? %store-directory argument) + (shared-library? argument)) ;add library + (cons library-path + (cons argument library-files))) + (else + result))))) + (cons '() '()) + args)) + + (match path+files + ((path . files) + (reverse files)))) + +(define (rpath-arguments library-files) + ;; Return the `-rpath' argument list for each of LIBRARY-FILES, a list of + ;; absolute file names. + (fold-right (lambda (file args) + ;; Add '-rpath' if and only if FILE is in the store; we don't + ;; want to add '-rpath' for files under %BUILD-DIRECTORY or + ;; %TEMPORARY-DIRECTORY because that could leak to installed + ;; files. + (cond ((and (not %disable-rpath?) + (store-file-name? file)) + (cons* "-rpath" (dirname file) args)) + ((or %allow-impurities? + (pure-file-name? file)) + args) + (else + (begin + (format (current-error-port) + "ld-wrapper: error: attempt to use \ +impure library ~s~%" + file) + (exit 1))))) + '() + library-files)) + +(define (ld-wrapper . args) + ;; Invoke the real `ld' with ARGS, augmented with `-rpath' switches. + (let* ((libs (library-files-linked args)) + (args (append args (rpath-arguments libs)))) + (when %debug? + (format (current-error-port) + "ld-wrapper: invoking `~a' with ~s~%" + %real-ld args)) + (apply execl %real-ld (basename %real-ld) args))) + +;;; ld-wrapper.scm ends here -- cgit v1.2.3 From 4b9b3cbbc45afa3e374889847d4ab8673b8b2db2 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 16 Apr 2015 23:13:28 +0200 Subject: refresh: Allow users to refer to specific package versions. * guix/scripts/refresh.scm (guix-refresh): Use 'specification->package' instead of 'find-packages-by-name'. This allows users to specify things like "qt-4.8.6". * doc/guix.texi (Invoking guix refresh): Add an example. --- doc/guix.texi | 2 +- guix/scripts/refresh.scm | 17 +++++++---------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 97fa3b6548..6b6604a426 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3285,7 +3285,7 @@ In addition, @command{guix refresh} can be passed one or more package names, as in this example: @example -guix refresh -u emacs idutils +guix refresh -u emacs idutils gcc-4.8.4 @end example @noindent diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm index 04886499a2..28519d78e2 100644 --- a/guix/scripts/refresh.scm +++ b/guix/scripts/refresh.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2013 Nikita Karetnikov ;;; Copyright © 2014 Eric Bavier ;;; @@ -207,16 +207,13 @@ update would trigger a complete rebuild." (list-dependent? (assoc-ref opts 'list-dependent?)) (key-download (assoc-ref opts 'key-download)) (packages - (match (concatenate - (filter-map (match-lambda - (('argument . value) - (let ((p (find-packages-by-name value))) - (when (null? p) - (leave (_ "~a: no package by that name~%") - value)) - p)) + (match (filter-map (match-lambda + (('argument . spec) + ;; Take either the specified version or the + ;; latest one. + (specification->package spec)) (_ #f)) - opts)) + opts) (() ; default to all packages (let ((select? (match (assoc-ref opts 'select) ('core core-package?) -- cgit v1.2.3 From 007aa90b2116e73c2288f04ace37d4a6d0142d6c Mon Sep 17 00:00:00 2001 From: Jason Self Date: Tue, 14 Apr 2015 15:04:08 -0700 Subject: gnu: linux-libre: Set CONFIG_DEVMEM=y * gnu/packages/linux.scm (linux-libre): Set CONFIG_DEVMEM=y. Signed-off-by: Jason Self --- gnu/packages/linux-libre-i686.conf | 2 +- gnu/packages/linux-libre-x86_64.conf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux-libre-i686.conf b/gnu/packages/linux-libre-i686.conf index 0bda70ef48..0b66cc0e7c 100644 --- a/gnu/packages/linux-libre-i686.conf +++ b/gnu/packages/linux-libre-i686.conf @@ -3523,7 +3523,7 @@ CONFIG_N_HDLC=m CONFIG_N_GSM=m CONFIG_TRACE_ROUTER=m CONFIG_TRACE_SINK=m -# CONFIG_DEVMEM is not set +CONFIG_DEVMEM=y # CONFIG_DEVKMEM is not set # diff --git a/gnu/packages/linux-libre-x86_64.conf b/gnu/packages/linux-libre-x86_64.conf index 90ea29a71e..04cf66ea72 100644 --- a/gnu/packages/linux-libre-x86_64.conf +++ b/gnu/packages/linux-libre-x86_64.conf @@ -3418,7 +3418,7 @@ CONFIG_N_HDLC=m CONFIG_N_GSM=m CONFIG_TRACE_ROUTER=m CONFIG_TRACE_SINK=m -# CONFIG_DEVMEM is not set +CONFIG_DEVMEM=y # CONFIG_DEVKMEM is not set # -- cgit v1.2.3 From 9e12bc3493c701ceb3bb0b81a6d26f938d13dcf8 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 17 Apr 2015 03:02:41 -0400 Subject: gnu: gnome-vfs: Expect 'test-async-cancel' failure, and clean up. * gnu/packages/gnome.scm (gnome-vfs)[arguments]: Add "XFAIL_TESTS=test-async-cancel" to make flags. Remove ignored and undocumented 'DISABLE_DEPRECATED_CFLAGS' configure flag. Simplify 'ignore-deprecations' phase and return #t. Reformat to fit within 80 columns. --- gnu/packages/gnome.scm | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index e7f854d636..487dd8dcd2 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -880,22 +880,22 @@ designed to be accessed through the MIME functions in GnomeVFS.") (version-major+minor version) "/" name "-" version ".tar.bz2")) (sha256 - (base32 "1ajg8jb8k3snxc7rrgczlh8daxkjidmcv3zr9w809sq4p2sn9pk2")))) + (base32 + "1ajg8jb8k3snxc7rrgczlh8daxkjidmcv3zr9w809sq4p2sn9pk2")))) (build-system gnu-build-system) (arguments - ;; The programmer kindly gives us a hook to turn off deprecation warnings ... - `(#:configure-flags '("DISABLE_DEPRECATED_CFLAGS=-DGLIB_DISABLE_DEPRECATION_WARNINGS") - ;; ... which they then completly ignore !! - #:phases - (alist-cons-before - 'configure 'ignore-deprecations - (lambda _ - (begin - (substitute* "libgnomevfs/Makefile.in" - (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS")) - (substitute* "daemon/Makefile.in" - (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS")))) - %standard-phases))) + `(;; XXX The 'test-async-cancel' test often fails. + #:make-flags '("XFAIL_TESTS=test-async-cancel") + + #:phases + (alist-cons-before + 'configure 'ignore-deprecations + (lambda _ + (substitute* '("libgnomevfs/Makefile.in" + "daemon/Makefile.in") + (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS")) + #t) + %standard-phases))) (inputs `(("glib" ,glib) ("libxml2" ,libxml2) ("dbus-glib" ,dbus-glib) @@ -909,9 +909,10 @@ designed to be accessed through the MIME functions in GnomeVFS.") ("pkg-config" ,pkg-config))) (home-page "https://developer.gnome.org/gnome-vfs/") (synopsis "Access files and folders in GNOME applications") - (description "GnomeVFS is the core library used to access files and -folders in GNOME applications. It provides a file system abstraction which -allows applications to access local and remote files with a single consistent API.") + (description + "GnomeVFS is the core library used to access files and folders in GNOME +applications. It provides a file system abstraction which allows applications +to access local and remote files with a single consistent API.") (license license:lgpl2.0+))) -- cgit v1.2.3 From 9128e323c0a23243c3f70b1716c68ad0b241f30d Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 17 Apr 2015 02:20:41 -0400 Subject: gnu: icecat: Use system sqlite. * gnu/packages/gnuzilla.scm (icecat)[inputs]: Add sqlite. [arguments]: Pass "--enable-system-sqlite" to configure. --- gnu/packages/gnuzilla.scm | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 419ff7adb9..522404f280 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -253,6 +253,7 @@ standards.") ("mesa" ,mesa) ("nspr" ,nspr) ("nss" ,nss) + ("sqlite" ,sqlite) ("unzip" ,unzip) ("yasm" ,yasm) ("zip" ,zip) @@ -291,11 +292,7 @@ standards.") "--enable-system-pixman" "--enable-system-cairo" "--enable-system-ffi" - - ;; Fails with "configure: error: System - ;; SQLite library is not compiled with - ;; SQLITE_ENABLE_UNLOCK_NOTIFY." - ;; "--enable-system-sqlite" + "--enable-system-sqlite" ;; Fails with "--with-system-png won't work because ;; the system's libpng doesn't have APNG support". -- cgit v1.2.3 From 3c9e35cce748355a3955a3fdf15010c7868bfab8 Mon Sep 17 00:00:00 2001 From: David Hashe Date: Fri, 17 Apr 2015 00:09:42 -0500 Subject: gnu: Add libsrtp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/telephony.scm (libsrtp): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/telephony.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index b9e38c33d0..4506690500 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 John Darrington ;;; Copyright © 2015 Andreas Enge +;;; Copyright © 2015 David Hashe ;;; ;;; This file is part of GNU Guix. ;;; @@ -20,6 +21,7 @@ (define-module (gnu packages telephony) #:use-module (gnu packages) #:use-module (gnu packages gnupg) + #:use-module (gnu packages linux) #:use-module (gnu packages pkg-config) #:use-module (guix licenses) #:use-module (guix packages) @@ -183,3 +185,25 @@ internet.") (license gpl3+) (home-page "http://www.gnu.org/software/sipwitch"))) +(define-public libsrtp + (package + (name "libsrtp") + (version "1.5.2") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/cisco/libsrtp/archive/v" + version ".tar.gz")) + (sha256 + (base32 + "1njf62f6sazz2q7qc4j495v1pga385whkmxxyr8hfz1ragiyzqc6")))) + (native-inputs + `(("procps" ,procps))) + (build-system gnu-build-system) + (arguments + `(#:test-target "runtest")) + (synopsis "Secure RTP (SRTP) Reference Implementation") + (description "This package provides an implementation of the Secure +Real-time Transport Protocol (SRTP), the Universal Security Transform (UST), +and a supporting cryptographic kernel.") + (home-page "https://github.com/cisco/libsrtp") + (license bsd-3))) -- cgit v1.2.3 From 8e974b9b98d15b41073b9061d40949517bbf35be Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 17 Apr 2015 13:43:43 +0200 Subject: system: Populate /etc/shells with the list of all the shells in use. Reported by Andy Wingo . * gnu/system.scm (user-shells, shells-file): New procedures. (etc-directory): Add #:shell parameter. Use 'shells-file' instead of 'text-file'. (operating-system-etc-directory): Call 'user-shells' and pass #:shells to 'etc-directory'. --- gnu/system.scm | 45 ++++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/gnu/system.scm b/gnu/system.scm index 6cf12df604..609604a9b5 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -405,30 +405,47 @@ settings for 'guix.el' to work out-of-the-box." (chdir #$output) (symlink #$file "site-start.el"))))) +(define (user-shells os) + "Return the list of all the shells used by the accounts of OS. These may be +gexps or strings." + (mlet %store-monad ((accounts (operating-system-accounts os))) + (return (map user-account-shell accounts)))) + +(define (shells-file shells) + "Return a derivation that builds a shell list for use as /etc/shells based +on SHELLS. /etc/shells is used by xterm, polkit, and other programs." + (gexp->derivation "shells" + #~(begin + (use-modules (srfi srfi-1)) + + (define shells + (delete-duplicates (list #$@shells))) + + (call-with-output-file #$output + (lambda (port) + (display "\ +/bin/sh +/run/current-system/profile/bin/sh +/run/current-system/profile/bin/bash\n" port) + (for-each (lambda (shell) + (display shell port) + (newline port)) + shells)))))) + (define* (etc-directory #:key (locale "C") (timezone "Europe/Paris") (issue "Hello!\n") (skeletons '()) (pam-services '()) (profile "/run/current-system/profile") - hosts-file nss + hosts-file nss (shells '()) (sudoers "")) "Return a derivation that builds the static part of the /etc directory." (mlet* %store-monad ((pam.d (pam-services->directory pam-services)) (sudoers (text-file "sudoers" sudoers)) (login.defs (text-file "login.defs" "# Empty for now.\n")) - - ;; /etc/shells is used by xterm and other programs. We don't check - ;; whether these shells are installed, should be OK. - (shells (text-file "shells" - "\ -/bin/sh -/run/current-system/profile/bin/sh -/run/current-system/profile/bin/bash -/run/current-system/profile/bin/fish -/run/current-system/profile/bin/tcsh -/run/current-system/profile/bin/zsh\n")) + (shells (shells-file shells)) (emacs (emacs-site-directory)) (issue (text-file "issue" issue)) (nsswitch (text-file "nsswitch.conf" @@ -543,7 +560,8 @@ fi\n")) (profile-drv (operating-system-profile os)) (skeletons (operating-system-skeletons os)) (/etc/hosts (or (operating-system-hosts-file os) - (default-/etc/hosts (operating-system-host-name os))))) + (default-/etc/hosts (operating-system-host-name os)))) + (shells (user-shells os))) (etc-directory #:pam-services pam-services #:skeletons skeletons #:issue (operating-system-issue os) @@ -551,6 +569,7 @@ fi\n")) #:nss (operating-system-name-service-switch os) #:timezone (operating-system-timezone os) #:hosts-file /etc/hosts + #:shells shells #:sudoers (operating-system-sudoers os) #:profile profile-drv))) -- cgit v1.2.3 From 5e25ebe2fa70297d094fe891b81c4970e45a906a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 17 Apr 2015 13:53:05 +0200 Subject: services: Explicitly refer to Shadow when requiring the 'nologin' shell. * gnu/services/avahi.scm (avahi-service): Change 'shell' to a gexp referring to "nologin" in the SHADOW package. * gnu/services/dbus.scm (dbus-service): Likewise. * gnu/services/networking.scm (ntp-service, tor-service): Likewise. --- gnu/services/avahi.scm | 3 ++- gnu/services/dbus.scm | 3 ++- gnu/services/networking.scm | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/gnu/services/avahi.scm b/gnu/services/avahi.scm index 89478cb997..0a56f3d7f6 100644 --- a/gnu/services/avahi.scm +++ b/gnu/services/avahi.scm @@ -20,6 +20,7 @@ #:use-module (gnu services) #:use-module (gnu system shadow) #:use-module (gnu packages avahi) + #:use-module (gnu packages admin) #:use-module (guix monads) #:use-module (guix store) #:use-module (guix gexp) @@ -106,6 +107,6 @@ sockets." (comment "Avahi daemon user") (home-directory "/var/empty") (shell - "/run/current-system/profile/sbin/nologin")))))))) + #~(string-append #$shadow "/sbin/nologin"))))))))) ;;; avahi.scm ends here diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm index 671dafa194..8f3b350951 100644 --- a/gnu/services/dbus.scm +++ b/gnu/services/dbus.scm @@ -20,6 +20,7 @@ #:use-module (gnu services) #:use-module (gnu system shadow) #:use-module (gnu packages glib) + #:use-module (gnu packages admin) #:use-module (guix monads) #:use-module (guix store) #:use-module (guix gexp) @@ -99,7 +100,7 @@ and policy files. For example, to allow avahi-daemon to use the system bus, (comment "D-Bus system bus user") (home-directory "/var/run/dbus") (shell - "/run/current-system/profile/sbin/nologin")))) + #~(string-append #$shadow "/sbin/nologin"))))) (activate #~(begin (use-modules (guix build utils)) diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index af8dd43bd6..f9d262d977 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -227,7 +227,7 @@ restrict -6 ::1\n")) (comment "NTP daemon user") (home-directory "/var/empty") (shell - "/run/current-system/profile/sbin/nologin")))))))) + #~(string-append #$shadow "/sbin/nologin"))))))))) (define* (tor-service #:key (tor tor)) "Return a service to run the @uref{https://torproject.org,Tor} daemon. @@ -257,7 +257,7 @@ policy) as the @code{tor} unprivileged user." (comment "Tor daemon user") (home-directory "/var/empty") (shell - "/run/current-system/profile/sbin/nologin")))) + #~(string-append #$shadow "/sbin/nologin"))))) (documentation "Run the Tor anonymous network overlay."))))) -- cgit v1.2.3 From db5127d889d29895c9bb72337598001f7f8bdb53 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 17 Apr 2015 11:40:34 -0400 Subject: gnu: gnome-vfs: Tolerate 'test-async-cancel' failures, take two. * gnu/packages/gnome.scm (gnome-vfs)[arguments]: Remove 'XFAIL_TESTS' make flag, which caused 'make check' to fail if the test unexpectedly passed. Add 'patch-test-async-cancel-to-never-fail' phase. --- gnu/packages/gnome.scm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 487dd8dcd2..f508ba9cbb 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -884,10 +884,7 @@ designed to be accessed through the MIME functions in GnomeVFS.") "1ajg8jb8k3snxc7rrgczlh8daxkjidmcv3zr9w809sq4p2sn9pk2")))) (build-system gnu-build-system) (arguments - `(;; XXX The 'test-async-cancel' test often fails. - #:make-flags '("XFAIL_TESTS=test-async-cancel") - - #:phases + `(#:phases (alist-cons-before 'configure 'ignore-deprecations (lambda _ @@ -895,7 +892,12 @@ designed to be accessed through the MIME functions in GnomeVFS.") "daemon/Makefile.in") (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS")) #t) - %standard-phases))) + (alist-cons-before + 'configure 'patch-test-async-cancel-to-never-fail + (lambda _ + (substitute* "test/test-async-cancel.c" + (("EXIT_FAILURE") "77"))) + %standard-phases)))) (inputs `(("glib" ,glib) ("libxml2" ,libxml2) ("dbus-glib" ,dbus-glib) -- cgit v1.2.3 From 8d7dc5d9dbf009009d33e21598f92c4685965cd5 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 17 Apr 2015 18:15:38 +0200 Subject: monads: Optimize 'sequence'. * guix/monads.scm (sequence): Rewrite as a macro. This yields a 10% improvement in wall-clock time for 'guix system build'. --- guix/monads.scm | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/guix/monads.scm b/guix/monads.scm index 5bb860aadd..f693e99a59 100644 --- a/guix/monads.scm +++ b/guix/monads.scm @@ -250,11 +250,23 @@ to happen in that order." lst))) (return (reverse result)))) -(define-inlinable (sequence monad lst) +(define-syntax-rule (sequence monad lst) "Turn the list of monadic values LST into a monadic list of values, by evaluating each item of LST in sequence." + ;; XXX: Making it a macro is a bit brutal as it leads to a lot of code + ;; duplication. However, it allows >>= and return to be open-coded, which + ;; avoids struct-ref's to MONAD and a few closure allocations when using + ;; %STATE-MONAD. (with-monad monad - (mapm monad return lst))) + (let seq ((lstx lst) + (result '())) + (match lstx + (() + (return (reverse result))) + ((head . tail) + (>>= head + (lambda (item) + (seq tail (cons item result))))))))) (define (anym monad proc lst) "Apply PROC to the list of monadic values LST; return the first value, -- cgit v1.2.3 From 09dd019490e4a269b0a2d9512a07688f8ee657d3 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Fri, 17 Apr 2015 20:54:47 +0200 Subject: gnu: ffmpeg: Drop old version 2.2. * gnu/packages/video.scm (ffmpeg-2.2): Remove variable. (ffmpeg)[arguments]: Drop LDFLAGS environment variable needed only for older versions. --- gnu/packages/video.scm | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index e5e4743b2c..822d9021cb 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -334,9 +334,6 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") (("#! /bin/sh") (string-append "#!" (which "bash")))) (setenv "SHELL" (which "bash")) (setenv "CONFIG_SHELL" (which "bash")) - ;; FIXME: only needed for ffmpeg-2.2.13, but easier to add - ;; globally; drop as soon as ffmpeg-2.2.13 is dropped - (setenv "LDFLAGS" "-ldl") ;; possible additional inputs: ;; --enable-avisynth enable reading of AviSynth script files [no] ;; --enable-frei0r enable frei0r video filtering @@ -438,18 +435,6 @@ convert and stream audio and video. It includes the libavcodec audio/video codec library.") (license license:gpl2+))) -;; We need this older ffmpeg because vlc-2.1.5 doesn't work with ffmpeg-2.4. -(define-public ffmpeg-2.2 - (package (inherit ffmpeg) - (version "2.2.13") - (source (origin - (method url-fetch) - (uri (string-append "http://www.ffmpeg.org/releases/ffmpeg-" - version ".tar.bz2")) - (sha256 - (base32 - "1vva8ffwxi3rg44byy09qlbiqrrd1h4rmsl5b1mbmvzvwl1lq1l0")))))) - (define-public vlc (package (name "vlc") -- cgit v1.2.3 From ba42f54df6fede1ce6aec268e78784640ee642db Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 18 Apr 2015 02:24:07 -0400 Subject: gnu: tor: Update to 0.2.5.12. * gnu/packages/tor.scm (tor): Update to 0.2.5.12. --- gnu/packages/tor.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm index dcb6dab83e..0f19d9f2a4 100644 --- a/gnu/packages/tor.scm +++ b/gnu/packages/tor.scm @@ -32,14 +32,14 @@ (define-public tor (package (name "tor") - (version "0.2.5.11") + (version "0.2.5.12") (source (origin (method url-fetch) (uri (string-append "https://www.torproject.org/dist/tor-" version ".tar.gz")) (sha256 (base32 - "0sb7ai8r9c0nvdagjrbfqpri6x4njfxv954fxrjv46rzkkpgmq5f")))) + "0j9byw3i2b7ji88vsqwmsxxg2nlxwkk45k5qbc1y7hdlzvzxl3sm")))) (build-system gnu-build-system) (inputs `(("zlib" ,zlib) -- cgit v1.2.3 From 989a9fffa74f42a4c2a979b16fd01ae218cf0bb8 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 18 Apr 2015 02:27:30 -0400 Subject: gnu: ntp: Update to 4.2.8p2. * gnu/packages/ntp.scm (ntp): Update to 4.2.8p2. --- gnu/packages/ntp.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm index 0fb7fe6c7d..dcc881a4bf 100644 --- a/gnu/packages/ntp.scm +++ b/gnu/packages/ntp.scm @@ -34,7 +34,7 @@ (define-public ntp (package (name "ntp") - (version "4.2.8p1") + (version "4.2.8p2") (source (origin (method url-fetch) (uri (string-append @@ -43,7 +43,7 @@ "/ntp-" version ".tar.gz")) (sha256 (base32 - "124xslljdzv778msr18jn5l9d6fhvzpsmmnfczc05l0yiyw790ll")))) + "0ccv9kh5asxpk7bjn73vwrqimbkbfl743bgx0km47bfajl7bqs8d")))) (native-inputs `(("which" ,which) ("pkg-config" ,pkg-config))) (inputs -- cgit v1.2.3 From 40f6f76ed1eb29673f1da5eb9f976c566104abe6 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 7 Apr 2015 14:49:05 +0800 Subject: gnu: gst-plugins-good: Add more inputs and remove unneeded ones. * gnu/packages/gstreamer.scm (gst-plugins-good): Move gst-plugins-base from 'native-inputs' to 'inputs'. [inputs]: Add aalib, jack, libavc1394, libcaca, libdv, libiec61833, libshout, libsoup, libvpx, orc, taglib and wavpack. Remove glib, gstreamer, libogg, libx11, libxext, libxv, and zlib. [arguments]: Remove. --- gnu/packages/gstreamer.scm | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index 977ca14e3a..b882208d76 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -25,14 +25,17 @@ #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (gnu packages) + #:use-module (gnu packages audio) #:use-module (gnu packages bison) #:use-module (gnu packages cdrom) #:use-module (gnu packages compression) #:use-module (gnu packages flex) #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) #:use-module (gnu packages image) #:use-module (gnu packages linux) + #:use-module (gnu packages mp3) #:use-module (gnu packages perl) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages video) @@ -217,30 +220,30 @@ for the GStreamer multimedia library.") "0hg6qzdpib9nwn3hdxv0d4rvivi1c4bmxsq2a9hqmamwyzrvbcbr")))) (build-system gnu-build-system) (inputs - `(("glib" ,glib) + `(("aalib" ,aalib) ("cairo" ,cairo) - ("gdk-pixbuf" ,gdk-pixbuf) ("flac" ,flac) - ("speex" ,speex) - ("libogg" ,libogg) ;; should be a propagated input of the above - ("libx11" ,libx11) - ("zlib" ,zlib) - ("libpng" ,libpng) + ("gdk-pixbuf" ,gdk-pixbuf) + ("gst-plugins-base" ,gst-plugins-base) + ("jack" ,jack-2) + ("libavc1394" ,libavc1394) + ("libcaca" ,libcaca) + ("libdv" ,libdv) + ("libiec61883" ,libiec61883) ("libjpeg" ,libjpeg) - ("libXext" ,libxext) - ("libxv" ,libxv) + ("libpng" ,libpng) + ("libshout" ,libshout) + ("libsoup" ,libsoup) + ("libvpx" ,libvpx) + ("orc" ,orc) ("pulseaudio" ,pulseaudio) - ("gstreamer" ,gstreamer))) + ("speex" ,speex) + ("taglib" ,taglib) + ("wavpack" ,wavpack))) (native-inputs - `(("pkg-config" ,pkg-config) - ("glib" ,glib "bin") - ("gst-plugins-base" ,gst-plugins-base) - ("python-wrapper" ,python-wrapper))) - (arguments - `(#:configure-flags (list "--disable-osx_audio" - "--disable-osx_video" - "--disable-directsound" - "--disable-waveform"))) + `(("glib:bin" ,glib "bin") + ("pkg-config" ,pkg-config) + ("python-wrapper" ,python-wrapper))) (home-page "http://gstreamer.freedesktop.org/") (synopsis "Plugins for the GStreamer multimedia library") -- cgit v1.2.3 From 82d8729b24bc4dfec638373dd561ced40f4933d9 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Thu, 16 Apr 2015 16:46:03 +0800 Subject: gnu: Add jemalloc. * gnu/packages/jemalloc.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/jemalloc.scm | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 gnu/packages/jemalloc.scm diff --git a/gnu-system.am b/gnu-system.am index a3ad603ab5..7c4678c12b 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -158,6 +158,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/irssi.scm \ gnu/packages/iso-codes.scm \ gnu/packages/java.scm \ + gnu/packages/jemalloc.scm \ gnu/packages/jrnl.scm \ gnu/packages/julia.scm \ gnu/packages/kde.scm \ diff --git a/gnu/packages/jemalloc.scm b/gnu/packages/jemalloc.scm new file mode 100644 index 0000000000..8a25cb08b8 --- /dev/null +++ b/gnu/packages/jemalloc.scm @@ -0,0 +1,43 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Sou Bunnbu +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages jemalloc) + #:use-module ((guix licenses) #:select (bsd-2)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public jemalloc + (package + (name "jemalloc") + (version "3.6.0") + (source (origin + (method url-fetch) + (uri (string-append + "http://www.canonware.com/download/jemalloc/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "1zl4vxxjvhg72bdl53sl0idz9wp18c6yzjdmqcnwm09wvmcj2v71")))) + (build-system gnu-build-system) + (home-page "http://www.canonware.com/jemalloc/") + (synopsis "General-purpose scalable concurrent malloc implementation") + (description + "This library providing a malloc(3) implementation that emphasizes +fragmentation avoidance and scalable concurrency support.") + (license bsd-2))) -- cgit v1.2.3 From 01ccdfb6d3641b4dc0de4d4dba1f40892ff111e9 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Thu, 16 Apr 2015 16:47:44 +0800 Subject: gnu: Add libaio. * gnu/packages/linux.scm (libaio): New variable. --- gnu/packages/linux.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 101982114c..2232e8611e 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -2132,3 +2132,32 @@ MPEG-2 and audio over Linux IEEE 1394.") assemble, report on, and monitor arrays. It can also move spares between raid arrays when needed.") (license gpl2+))) + +(define-public libaio + (package + (name "libaio") + (version "0.3.110") + (source (origin + (method url-fetch) + (uri (list + (string-append "mirror://debian/pool/main/liba/libaio/" + name "_" version ".orig.tar.gz") + (string-append "https://fedorahosted.org/releases/l/i/libaio/" + name "-" version ".tar.gz"))) + (sha256 + (base32 + "0zjzfkwd1kdvq6zpawhzisv7qbq1ffs343i5fs9p498pcf7046g0")))) + (build-system gnu-build-system) + (arguments + '(#:make-flags + (list "CC=gcc" (string-append "prefix=" %output)) + #:test-target "partcheck" ; need root for a full 'check' + #:phases + (alist-delete 'configure %standard-phases))) ; no configure script + (home-page "http://lse.sourceforge.net/io/aio.html") + (synopsis "Linux-native asynchronous I/O access library") + (description + "This library enables userspace to use Linux kernel asynchronous I/O +system calls, important for the performance of databases and other advanced +applications.") + (license lgpl2.1+))) -- cgit v1.2.3 From 776317450992011701753b9a9d0568937396b3cb Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Thu, 16 Apr 2015 16:48:31 +0800 Subject: gnu: Add MariaDB. * gnu/packages/databases.scm (mariadb): New variable. --- gnu/packages/databases.scm | 76 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 6498091aaf..b22f0c752e 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2014 David Thompson ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2015 Eric Bavier +;;; Copyright © 2015 Sou Bunnbu ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,6 +37,10 @@ #:use-module (gnu packages curl) #:use-module (gnu packages gnupg) #:use-module (gnu packages python) + #:use-module (gnu packages pcre) + #:use-module (gnu packages xml) + #:use-module (gnu packages bison) + #:use-module (gnu packages jemalloc) #:use-module ((guix licenses) #:select (gpl2 gpl3+ lgpl2.1+ lgpl3+ x11-style non-copyleft bsd-2 public-domain)) @@ -43,6 +48,7 @@ #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix build-system perl) + #:use-module (guix build-system cmake) #:use-module (srfi srfi-26) #:use-module (ice-9 match)) @@ -149,6 +155,76 @@ management system that supports the standardized Structured Query Language.") (license gpl2))) +(define-public mariadb + (package + (name "mariadb") + (version "10.0.17") + (source (origin + (method url-fetch) + (uri (string-append "https://downloads.mariadb.org/f/" + name "-" version "/source/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "04ckq67qgkghh7yzrbzwidk7wn7yjml15gzj2c5p1hs2k7lr9lww")))) + (build-system cmake-build-system) + (arguments + '(#:configure-flags + '("-DBUILD_CONFIG=mysql_release" + "-DDEFAULT_CHARSET=utf8" + "-DDEFAULT_COLLATION=utf8_general_ci" + "-DMYSQL_DATADIR=/var/lib/mysql" + "-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock" + "-DINSTALL_INFODIR=share/mysql/docs" + "-DINSTALL_MANDIR=share/man" + "-DINSTALL_PLUGINDIR=lib/mysql/plugin" + "-DINSTALL_SCRIPTDIR=bin" + "-DINSTALL_INCLUDEDIR=include/mysql" + "-DINSTALL_DOCREADMEDIR=share/mysql/docs" + "-DINSTALL_SUPPORTFILESDIR=share/mysql/support-files" + "-DINSTALL_MYSQLSHAREDIR=share/mysql" + "-DINSTALL_DOCDIR=share/mysql/docs" + "-DINSTALL_SHAREDIR=share/mysql") + #:phases + (modify-phases %standard-phases + (add-before + 'configure 'pre-configure + (lambda _ + (setenv "CONFIG_SHELL" (which "sh")) + ;; XXX: libstdc++.so lacks RUNPATH for libgcc_s.so. + (setenv "LDFLAGS" "-lgcc_s") + #t)) + (add-after + 'install 'post-install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (test (assoc-ref outputs "test"))) + (substitute* (string-append out "/bin/mysql_install_db") + (("basedir=\"\"") + (string-append "basedir=\"" out "\""))) + ;; Remove unneeded files for testing. + (with-directory-excursion out + (for-each delete-file-recursively + '("data" "mysql-test" "sql-bench" + "share/man/man1/mysql-test-run.pl.1"))))))))) + (native-inputs + `(("bison" ,bison) + ("perl" ,perl))) + (inputs + `(("jemalloc" ,jemalloc) + ("libaio" ,libaio) + ("libxml2" ,libxml2) + ("ncurses" ,ncurses) + ("openssl" ,openssl) + ("pcre" ,pcre) + ("zlib" ,zlib))) + (home-page "https://mariadb.org/") + (synopsis "SQL database server") + (description + "MariaDB is a multi-user and multi-threaded SQL database server, designed +as a drop-in replacement of MySQL.") + (license gpl2))) + (define-public postgresql (package (name "postgresql") -- cgit v1.2.3 From 3434a65ba17069a13adc22256ea7051ed0329c97 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 18 Apr 2015 20:04:53 +0200 Subject: gnu: calibre: Update to 2.25.0. * gnu/packages/ebook.scm (calibre): Update to 2.25.0. --- gnu/packages/ebook.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 0602463a87..101c5bad37 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -60,7 +60,7 @@ (define-public calibre (package (name "calibre") - (version "2.24.0") + (version "2.25.0") (source (origin (method url-fetch) @@ -69,7 +69,7 @@ version ".tar.xz")) (sha256 (base32 - "1l9gdna8vzc48yh20kwidb5hfp04cawg6vggkkqnn5zh9dwcvm4d")) + "0h7cnwdd9phk4n5hl6xggkn7szvqsds5847mnk2wg2j2j1lzp2r0")) ;; Remove non-free or doubtful code, see ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html (modules '((guix build utils))) -- cgit v1.2.3 From 24ba72402b97bca49ef03a97c13a5cce23d97418 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 18 Apr 2015 20:16:57 +0200 Subject: gnu: nano: Update to 2.4.1. * gnu/packages/nano.scm (nano): Update to 2.4.1. --- gnu/packages/nano.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm index 150e1e0641..c5b8f7ebd0 100644 --- a/gnu/packages/nano.scm +++ b/gnu/packages/nano.scm @@ -27,7 +27,7 @@ (define-public nano (package (name "nano") - (version "2.4.0") + (version "2.4.1") (source (origin (method url-fetch) @@ -35,7 +35,7 @@ version ".tar.gz")) (sha256 (base32 - "1gbm9bcv4k55y01r5q8a8a9s3yrrgq3z5jxxiij3wl404r8gnxjh")))) + "1li99ycnva40hiavm9lf34gjny74mj469x6ismrfm6wv3dgfn33a")))) (build-system gnu-build-system) (inputs `(("gettext" ,gnu-gettext) -- cgit v1.2.3 From 936e86bdae8087c46db9b6c735b019546e5b5398 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 18 Apr 2015 20:20:57 +0200 Subject: gnu: sipwitch: Update to 1.9.7. * gnu/packages/telephony.scm (sipwitch): Update to 1.9.7. --- gnu/packages/telephony.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index 4506690500..45591c1760 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -145,13 +145,13 @@ multiplayer games.") (define-public sipwitch (package (name "sipwitch") - (version "1.9.6") + (version "1.9.7") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/sipwitch/sipwitch-" version ".tar.gz")) (sha256 (base32 - "04kfzcg12zn47y70gc5w5yi6jwgj1z2xyma2ljzz48lg1236qiqq")))) + "07a069cx35pndl96c9v3vsyjcmrrr97xnv37k74m21q31isc458c")))) (build-system gnu-build-system) ;; The configure.ac uses pkg-config but in a kludgy way which breaks when ;; cross-compiling. Among other issues there the program name "pkg-config" -- cgit v1.2.3 From 9dc9053f1d682f6359e5975b2cec7fbe81181958 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 18 Apr 2015 21:19:32 +0200 Subject: gnu: ccrtp: Update to 2.1.2. * gnu/packages/telephony.scm (ccrtp): Update to 2.1.2. --- gnu/packages/telephony.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index 45591c1760..b8619b1820 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -78,13 +78,13 @@ support.") (define-public ccrtp (package (name "ccrtp") - (version "2.1.1") + (version "2.1.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/ccrtp/ccrtp-" version ".tar.gz")) (sha256 (base32 - "1p1pk2m7v75rdrh05rizpqcd5p08g3n541rw0kssyfzd805fb90d")))) + "17ili8l7zqbbkzr1rcy4hlnazkf50mds41wg6n7bfdsx3c7cldgh")))) (build-system gnu-build-system) (inputs `(("ucommon" ,ucommon) ("libgcrypt" ,libgcrypt))) -- cgit v1.2.3 From e7bf0e446553d928b2adef84a70f274f242b1b88 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 18 Apr 2015 21:20:31 +0200 Subject: gnu: ucommon: Update to 6.3.1. * gnu/packages/telephony.scm (ucommon): Update to 6.3.1. --- gnu/packages/telephony.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index b8619b1820..61bd1d3c83 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -59,13 +59,13 @@ reimplementation.") (define-public ucommon (package (name "ucommon") - (version "6.3.0") + (version "6.3.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/commoncpp/" name "-" version ".tar.gz")) (sha256 (base32 - "0l3s3vf8x3mhz85v23caf3p1xh0lirhl1xvbragapfcl1y4klmgv")))) + "1marbwbqnllhm9nh22lvyfjy802pgy1wx7j7kkpkasbm9r0sb6mm")))) (build-system gnu-build-system) (synopsis "Common C++ framework for threaded applications") (description "GNU uCommon C++ is meant as a very light-weight C++ library -- cgit v1.2.3 From 724311a26b5205dd5721439389ab70aab4082371 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 18 Apr 2015 22:30:07 +0200 Subject: packages: Allow package lookups with version prefixes. * gnu/packages.scm (find-packages-by-name): Sort MATCHING according to 'version>?'. Use 'string-prefix?' instead of 'string=?' to compare against VERSION. * doc/guix.texi (Invoking guix package): Add example and explanation. --- doc/guix.texi | 5 ++++- gnu/packages.scm | 12 ++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index ad572365a8..69d65998c5 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -962,7 +962,10 @@ Install the specified @var{package}s. Each @var{package} may specify either a simple package name, such as @code{guile}, or a package name followed by a hyphen and version number, -such as @code{guile-1.8.8}. If no version number is specified, the +such as @code{guile-1.8.8} or simply @code{guile-1.8} (in the latter +case, the newest version prefixed by @code{1.8} is selected.) + +If no version number is specified, the newest available version will be selected. In addition, @var{package} may contain a colon, followed by the name of one of the outputs of the package, as in @code{gcc:doc} or @code{binutils-2.22:lib} diff --git a/gnu/packages.scm b/gnu/packages.scm index 6ef0fb6de7..9eb4877be8 100644 --- a/gnu/packages.scm +++ b/gnu/packages.scm @@ -211,14 +211,18 @@ same package twice." (let ((packages (delay (fold-packages (lambda (p r) (vhash-cons (package-name p) p r)) - vlist-null)))) + vlist-null))) + (version>? (lambda (p1 p2) + (version>? (package-version p1) (package-version p2))))) (lambda* (name #:optional version) "Return the list of packages with the given NAME. If VERSION is not #f, -then only return packages whose version is equal to VERSION." - (let ((matching (vhash-fold* cons '() name (force packages)))) +then only return packages whose version is prefixed by VERSION, sorted in +decreasing version order." + (let ((matching (sort (vhash-fold* cons '() name (force packages)) + version>?))) (if version (filter (lambda (package) - (string=? (package-version package) version)) + (string-prefix? version (package-version package))) matching) matching))))) -- cgit v1.2.3 From f1f7049ec1f4b94fcf83ba68dcaab011280e7cb9 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sat, 18 Apr 2015 22:42:00 +0200 Subject: gnu: Add libwacom. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/xdisorg.scm (libwacom): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/xdisorg.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index bf15b38f09..9e240db6c5 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2013, 2015 Ludovic Courtès ;;; Copyright © 2015 Mathieu Lirzin ;;; Copyright © 2015 Alexander I.Grafov +;;; Copyright © 2015 Andy Wingo ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,6 +29,7 @@ #:use-module (guix download) #:use-module (guix utils) #:use-module (guix build-system gnu) + #:use-module (guix build-system glib-or-gtk) #:use-module (gnu packages) #:use-module (gnu packages compression) #:use-module (gnu packages image) @@ -36,6 +38,8 @@ #:use-module (gnu packages perl) #:use-module (gnu packages linux) #:use-module (gnu packages guile) + #:use-module (gnu packages xml) + #:use-module (gnu packages gtk) #:use-module (gnu packages xorg)) ;; packages outside the x.org system proper @@ -527,3 +531,32 @@ within a single process.") pressed and released on its own. The default behaviour is to generate the Escape key when Left Control is pressed and released on its own.") (license license:gpl3+))) + +(define-public libwacom + (package + (name "libwacom") + (version "0.12") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/linuxwacom/libwacom/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "022d0097dk2glgb6772zpcsqm1w42sbsbr3i72pdhzq6naqawys8")))) + (build-system glib-or-gtk-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("glib" ,glib) + ("gtk+" ,gtk+) + ("eudev" ,eudev) + ("libxml2" ,libxml2))) + (home-page "http://linuxwacom.sourceforge.net/") + (synopsis "Helper library for Wacom tablet settings") + (description + "Libwacom is a library to help implement Wacom tablet settings. It +is intended to be used by client-programs that need model identification. It +is already being used by the gnome-settings-daemon and the GNOME 3.4 Control +Center Wacom tablet applet. In the future, the xf86-input-wacom driver may +use it as well.") + (license license:x11))) -- cgit v1.2.3 From ab42a2a7272d7925c30a69e770f0e3281c1a7a2b Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sat, 18 Apr 2015 22:42:24 +0200 Subject: gnu: Add xf86-input-wacom. * gnu/packages/xdisorg.scm (xf86-input-wacom): New variable. --- gnu/packages/xdisorg.scm | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 9e240db6c5..f928aa1f58 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -560,3 +560,39 @@ is already being used by the gnome-settings-daemon and the GNOME 3.4 Control Center Wacom tablet applet. In the future, the xf86-input-wacom driver may use it as well.") (license license:x11))) + +(define-public xf86-input-wacom + (package + (name "xf86-input-wacom") + (version "0.29.0") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/linuxwacom/xf86-input-wacom/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "15lbzjkaf690i69qy0n0ibwczbclqq1nx0418c6a567by5v7wl48")))) + (arguments + `(#:configure-flags + (list (string-append "--with-sdkdir=" + (assoc-ref %outputs "out") + "/include/xorg") + (string-append "--with-xorg-conf-dir=" + (assoc-ref %outputs "out") + "/share/X11/xorg.conf.d")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("xorg-server" ,xorg-server) + ("libxrandr" ,libxrandr) + ("libxinerama" ,libxinerama) + ("libxi" ,libxi) + ("eudev" ,eudev))) + (home-page "http://linuxwacom.sourceforge.net/") + (synopsis "Wacom input driver for X") + (description + "The xf86-input-wacom driver is the wacom-specific X11 input driver for +the X.Org X Server version 1.7 and later (X11R7.5 or later).") + (license license:x11))) -- cgit v1.2.3 From ec2b19210f0861ecb0207e618dabd5c066ba43b3 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Tue, 7 Apr 2015 19:37:29 +0200 Subject: gnu: gnome-settings-daemon: Use wacom packages. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/gnome.scm (gnome-settings-daemon): Use the wacom packages. Signed-off-by: Ludovic Courtès --- gnu/packages/gnome.scm | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index f508ba9cbb..33ce2e8717 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2148,17 +2148,7 @@ services for numerous locations.") "1w29x2izq59125ga5ncmmaklc8kw7x7rdn6swn26bs23mah1r1g3")))) (build-system glib-or-gtk-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - ;; libwacom and xorg-wacom not yet packaged. Hackily disable by - ;; pretending to be s390 (!). - (add-before - 'configure 'disable-wacom - (lambda _ - (substitute* "configure" - (("if test \"\\$host_cpu\" = s390 -o \"\\$host_cpu\" = s390x") - "if true"))))) - ;; Network manager not yet packaged. + `(;; Network manager not yet packaged. #:configure-flags '("--disable-network-manager") ;; Color management test can't reach the colord system service. #:tests? #f)) @@ -2186,7 +2176,10 @@ services for numerous locations.") ("gnome-desktop" ,gnome-desktop) ("nss" ,nss) ("cups" ,cups) - ("gsettings-desktop-schemas" ,gsettings-desktop-schemas))) + ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("libwacom" ,libwacom) + ("librsvg" ,librsvg) + ("xf86-input-wacom" ,xf86-input-wacom))) (home-page "http://www.gnome.org") (synopsis "GNOME settings daemon") (description -- cgit v1.2.3 From 5dc3ce5f6c7990f44143f8e9bb9a873a014a82e4 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 18 Apr 2015 22:53:54 +0200 Subject: doc: Warn earlier about the risk of overwriting with the binary install. Suggested by Pjotr Prins . * doc/guix.texi (Binary Installation): Move warning about overwriting higher up. --- doc/guix.texi | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 69d65998c5..d47120da0b 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -276,8 +276,11 @@ This creates @file{/gnu/store} (@pxref{The Store}), @file{/var/guix}, and @file{/root/.guix-profile}. @file{/root/.guix-profile} is a ready-to-use profile for @code{root} where Guix is installed. +Do @emph{not} unpack the tarball on a working Guix system since that +would overwrite its own essential files. + @item -Setup the daemon as explained below (@pxref{Setting Up the Daemon}), and +Set up the daemon as explained below (@pxref{Setting Up the Daemon}), and run it: @example @@ -297,9 +300,7 @@ for instance with: And that's it! -There are two things to note. First, don't unpack the tarball on a -working Guix system since that would overwrite its own essential files. -Second, the @code{guix} package must remain available in @code{root}'s +The @code{guix} package must remain available in @code{root}'s profile, or it would become subject to garbage collection---in which case you would find yourself badly handicapped by the lack of the @command{guix} command. -- cgit v1.2.3 From 42f118010be14b761144efccae9bdeb33a3db212 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 19 Apr 2015 09:55:01 -0400 Subject: gnu: ccl: Fix inputs on non-Intel platforms. * gnu/packages/lisp.scm (ccl)[inputs]: Add default cases in 'match' forms. Fix pattern in "armhf-linux" case of sha256 field. --- gnu/packages/lisp.scm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index f0599a95c6..8f12efb9eb 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -309,15 +309,19 @@ statistical profiler, a code coverage tool, and many other extensions.") "ftp://ftp.clozure.com/pub/release/1.10/ccl-" version "-" (match (%current-system) ((or "i686-linux" "x86_64-linux") "linuxx86") - ("armhf-linux" "linuxarm")) + ("armhf-linux" "linuxarm") + ;; Prevent errors when querying this package on unsupported + ;; platforms, e.g. when running "guix package --search=" + (_ "UNSUPPORTED")) ".tar.gz")) (sha256 (base32 (match (%current-system) ((or "i686-linux" "x86_64-linux") "0mr653q5px05lr11z2mk551m5g47b4wq96vbfibpp0qlc9jp58lc") - ("armhf" - "1py02irpmi2qz5rq3h33wfv6impf15z8i2rign6hvhlqn7s99wwh")))))))) + ("armhf-linux" + "1py02irpmi2qz5rq3h33wfv6impf15z8i2rign6hvhlqn7s99wwh") + (_ "")))))))) (native-inputs `(("m4" ,m4) ("subversion" ,subversion))) -- cgit v1.2.3 From bbceb0ef8a1e05faaa15c5b4135275fb4572b8d9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 19 Apr 2015 16:49:09 +0200 Subject: packages: Add 'supported-package?'. * guix/packages.scm (supported-package?): New procedure. * tests/packages.scm ("supported-package?"): New test. * build-aux/hydra/gnu-system.scm (package->job): Use it instead of 'package-transitive-supported-systems'. --- build-aux/hydra/gnu-system.scm | 3 +-- guix/packages.scm | 6 ++++++ tests/packages.scm | 8 ++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm index 01e2859f1a..b1432f6660 100644 --- a/build-aux/hydra/gnu-system.scm +++ b/build-aux/hydra/gnu-system.scm @@ -204,8 +204,7 @@ all its dependencies, and ready to be installed on non-GuixSD distributions.") valid." (cond ((member package base-packages) #f) - ((member system - (package-transitive-supported-systems package)) + ((supported-package? package system) (package-job store (job-name package) package system)) (else #f))))) diff --git a/guix/packages.scm b/guix/packages.scm index 8ebe8d06b5..fde46d5d6a 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -95,6 +95,7 @@ package-grafts %supported-systems + supported-package? &package-error package-error? @@ -581,6 +582,11 @@ supported by its dependencies." (package-supported-systems package) (bag-direct-inputs (package->bag package)))) +(define* (supported-package? package #:optional (system (%current-system))) + "Return true if PACKAGE is supported on SYSTEM--i.e., if PACKAGE and all its +dependencies are known to build on SYSTEM." + (member system (package-transitive-supported-systems package))) + (define (bag-direct-inputs bag) "Same as 'package-direct-inputs', but applied to a bag." (append (bag-build-inputs bag) diff --git a/tests/packages.scm b/tests/packages.scm index 3007b50b92..91910324fe 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -166,6 +166,14 @@ `("does-not-exist" "foobar" ,@%supported-systems))))) (package-transitive-supported-systems p))) +(test-assert "supported-package?" + (let ((p (dummy-package "foo" + (build-system gnu-build-system) + (supported-systems '("x86_64-linux" "does-not-exist"))))) + (and (supported-package? p "x86_64-linux") + (not (supported-package? p "does-not-exist")) + (not (supported-package? p "i686-linux"))))) + (test-skip (if (not %store) 8 0)) (test-assert "package-source-derivation, file" -- cgit v1.2.3 From 5763ad9266ec7682d53b87a874fc6ae04f92b6c4 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 19 Apr 2015 19:12:22 +0200 Subject: guix package: -A and -s take supported systems into account. * guix/scripts/package.scm (guix-package)[process-query] : Restrict results to packages matching 'supported-package?". * guix/ui.scm (package->recutils): Print "systems:". * tests/guix-package.sh: Add tests. * doc/guix.texi (Invoking guix package): Adjust description of '--list-available' accordingly. --- doc/guix.texi | 4 ++-- guix/scripts/package.scm | 12 +++++++----- guix/ui.scm | 2 ++ tests/guix-package.sh | 10 ++++++++++ 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index d47120da0b..09dcff59f4 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -1105,7 +1105,7 @@ availability of packages: @item --search=@var{regexp} @itemx -s @var{regexp} -List the available packages whose synopsis or description matches +List the available packages whose name, synopsis, or description matches @var{regexp}. Print all the meta-data of matching packages in @code{recutils} format (@pxref{Top, GNU recutils databases,, recutils, GNU recutils manual}). @@ -1171,7 +1171,7 @@ the store. @item --list-available[=@var{regexp}] @itemx -A [@var{regexp}] -List packages currently available in the software distribution +List packages currently available in the distribution for this system (@pxref{GNU Distribution}). When @var{regexp} is specified, list only installed packages whose name matches @var{regexp}. diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 5ee3a89ba6..a42452ae70 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -960,11 +960,13 @@ more information.~%")) (available (fold-packages (lambda (p r) (let ((n (package-name p))) - (if regexp - (if (regexp-exec regexp n) - (cons p r) - r) - (cons p r)))) + (if (supported-package? p) + (if regexp + (if (regexp-exec regexp n) + (cons p r) + r) + (cons p r)) + r))) '()))) (leave-on-EPIPE (for-each (lambda (p) diff --git a/guix/ui.scm b/guix/ui.scm index 5ca5afe457..f80ce37146 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -653,6 +653,8 @@ WIDTH columns." ;; Note: Don't i18n field names so that people can post-process it. (format port "name: ~a~%" (package-name p)) (format port "version: ~a~%" (package-version p)) + (format port "systems: ~a~%" + (string-join (package-transitive-supported-systems p))) (format port "dependencies: ~a~%" (match (package-direct-inputs p) (((labels inputs . _) ...) diff --git a/tests/guix-package.sh b/tests/guix-package.sh index 6cfd50b5e5..a732110d5c 100644 --- a/tests/guix-package.sh +++ b/tests/guix-package.sh @@ -212,9 +212,19 @@ cat > "$module_dir/foo.scm"< Date: Sun, 19 Apr 2015 17:24:37 +0200 Subject: gnu: ld-wrapper2: Make 'readlink*' tail-recursive. * gnu/packages/ld-wrapper2.in (readlink*): Make tail-recursive. --- gnu/packages/ld-wrapper2.in | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/gnu/packages/ld-wrapper2.in b/gnu/packages/ld-wrapper2.in index 2f0e0ab24a..f4ab17c59f 100644 --- a/gnu/packages/ld-wrapper2.in +++ b/gnu/packages/ld-wrapper2.in @@ -97,16 +97,22 @@ exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)) target (string-append (dirname file) "/" target))) - (catch 'system-error - (lambda () - (if (>= depth %max-symlink-depth) - file - (loop (absolute (readlink file)) (+ depth 1)))) - (lambda args - (let ((errno (system-error-errno args))) - (if (or (= errno EINVAL) (= errno ENOENT)) - file - (apply throw args))))))) + (if (>= depth %max-symlink-depth) + file + (call-with-values + (lambda () + (catch 'system-error + (lambda () + (values #t (readlink file))) + (lambda args + (let ((errno (system-error-errno args))) + (if (or (= errno EINVAL) (= errno ENOENT)) + (values #f file) + (apply throw args)))))) + (lambda (success? target) + (if success? + (loop (absolute target) (+ depth 1)) + file)))))) (define (pure-file-name? file) ;; Return #t when FILE is the name of a file either within the store -- cgit v1.2.3 From ee8591990fd38ee2860f0ab659b05052b10f14c6 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 19 Apr 2015 18:49:29 +0200 Subject: guix package: Fix 'readlink*' implementation. * guix/scripts/package.scm (readlink*): Fix to handle symlinks with relative targets. Taken from ld-wrapper2.in. --- guix/scripts/package.scm | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index a42452ae70..1e724b4e19 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -730,13 +730,31 @@ doesn't need it." (define (readlink* file) "Call 'readlink' until the result is not a symlink." - (catch 'system-error - (lambda () - (readlink* (readlink file))) - (lambda args - (if (= EINVAL (system-error-errno args)) - file - (apply throw args))))) + (define %max-symlink-depth 50) + + (let loop ((file file) + (depth 0)) + (define (absolute target) + (if (absolute-file-name? target) + target + (string-append (dirname file) "/" target))) + + (if (>= depth %max-symlink-depth) + file + (call-with-values + (lambda () + (catch 'system-error + (lambda () + (values #t (readlink file))) + (lambda args + (let ((errno (system-error-errno args))) + (if (or (= errno EINVAL)) + (values #f file) + (apply throw args)))))) + (lambda (success? target) + (if success? + (loop (absolute target) (+ depth 1)) + file)))))) ;;; -- cgit v1.2.3 From b16b77905cd8c5a33dd5240d2e5c7ae0c4b2cdf6 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 19 Apr 2015 22:46:10 +0200 Subject: gnu: bash-completion: Remove completions redundant with those of util-linux. * gnu/packages/bash.scm (bash-completion)[arguments]: New field. --- gnu/packages/bash.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm index 02cb45c955..45676f568b 100644 --- a/gnu/packages/bash.scm +++ b/gnu/packages/bash.scm @@ -23,6 +23,7 @@ #:use-module (gnu packages ncurses) #:use-module (gnu packages readline) #:use-module (gnu packages bison) + #:use-module (gnu packages linux) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) @@ -247,6 +248,29 @@ without modification.") (patches (list (search-patch "bash-completion-directories.patch"))))) (build-system gnu-build-system) + (native-inputs `(("util-linux" ,util-linux))) + (arguments + `(#:phases (alist-cons-after + 'install 'remove-redundant-completions + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Util-linux comes with a bunch of completion files for + ;; its own commands which are more sophisticated and + ;; up-to-date than those of bash-completion. Remove those + ;; from bash-completion. + (let* ((out (assoc-ref outputs "out")) + (util-linux (assoc-ref inputs "util-linux")) + (completions (string-append out + "/share/bash-completion" + "/completions")) + (already (find-files (string-append util-linux + "/etc/bash_completion.d")))) + (with-directory-excursion completions + (for-each (lambda (file) + (when (file-exists? file) + (delete-file file))) + (map basename already))) + #t)) + %standard-phases))) (synopsis "Bash completions for common commands") (description "This package provides extensions that allow Bash to provide adapted -- cgit v1.2.3 From 9e4a022bda603b571bd7d6c97a226398331591cc Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Sat, 4 Apr 2015 11:06:54 -0500 Subject: gnu: Add Template-Timer. * gnu/packages/perl.scm (perl-template-timer): New variable. --- gnu/packages/perl.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 902192bb6f..d3f30cc5ac 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -3602,6 +3602,27 @@ it can be used equally well for processing any other kind of text based documents: HTML, XML, POD, PostScript, LaTeX, and so on.") (license (package-license perl)))) +(define-public perl-template-timer + (package + (name "perl-template-timer") + (version "1.00") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/" + "Template-Timer-" version ".tar.gz")) + (sha256 + (base32 + "1d3pbcx1kz73ncg8s8lx3ifwphz838qy0m40gdar7790cnrlqcdp")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-template-toolkit" ,perl-template-toolkit))) + (home-page "http://search.cpan.org/dist/Template-Timer") + (synopsis "Profiling for Template Toolkit") + (description "Template::Timer provides inline profiling of the template +processing in Perl code.") + (license (list gpl3 artistic2.0)))) + (define-public perl-test-base (package (name "perl-test-base") -- cgit v1.2.3 From 5c2c9ab2f8a852ee94ca7ed7286d1b8d2e6181bd Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Sat, 4 Apr 2015 20:19:19 -0500 Subject: gnu: Add Catalyst-View-TT. * gnu/packages/web.scm (perl-catalyst-view-tt): New variable. --- gnu/packages/web.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index c6a3938546..12d87c2709 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1139,6 +1139,32 @@ table based report in a variety of formats (CSV, HTML, etc.). ") stash data in JSON format.") (license (package-license perl)))) +(define-public perl-catalyst-view-tt + (package + (name "perl-catalyst-view-tt") + (version "0.42") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/" + "Catalyst-View-TT-" version ".tar.gz")) + (sha256 + (base32 + "18ciik9fqaqjfasa9wicbjrsl3gjhjc15xzaj3rif57an25cl178")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-catalyst-runtime" ,perl-catalyst-runtime) + ("perl-class-accessor" ,perl-class-accessor) + ("perl-mro-compat" ,perl-mro-compat) + ("perl-path-class" ,perl-path-class) + ("perl-template-timer" ,perl-template-timer) + ("perl-template-toolkit" ,perl-template-toolkit))) + (home-page "http://search.cpan.org/dist/Catalyst-View-TT") + (synopsis "Template View Class") + (description "This module is a Catalyst view class for the Template +Toolkit.") + (license (package-license perl)))) + (define-public perl-catalystx-component-traits (package (name "perl-catalystx-component-traits") -- cgit v1.2.3 From d3182b42a0ffe3c567a6502eee0708a9020c4d29 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Sat, 4 Apr 2015 20:56:32 -0500 Subject: gnu: Add HTTP-Parser. * gnu/packages/web.scm (perl-http-parser): New variable. --- gnu/packages/web.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 12d87c2709..d848e7b635 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1597,6 +1597,30 @@ of the negotiable variants and the value of the various Accept* header fields in the request.") (home-page "http://search.cpan.org/~gaas/HTTP-Negotiate/"))) +(define-public perl-http-parser + (package + (name "perl-http-parser") + (version "0.06") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/E/ED/EDECA/" + "HTTP-Parser-" version ".tar.gz")) + (sha256 + (base32 + "0idwq3jk595xil65lmxz128ha7s3r2n5zknisddpgwnqrghs3igq")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-http-message" ,perl-http-message) + ("perl-uri" ,perl-uri))) + (home-page "http://search.cpan.org/dist/HTTP-Parser") + (synopsis "Parse HTTP/1.1 requests") + (description "This is an HTTP request parser. It takes chunks of text as +received and returns a 'hint' as to what is required, or returns the +HTTP::Request when a complete request has been read. HTTP/1.1 chunking is +supported.") + (license (package-license perl)))) + (define-public perl-http-request-ascgi (package (name "perl-http-request-ascgi") -- cgit v1.2.3 From 8ab39c2d26bfb8a3234473083c64d5a33c43cbdb Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Sat, 4 Apr 2015 21:06:02 -0500 Subject: gnu: Add HTTP-Parser-XS. * gnu/packages/web.scm (perl-http-parser-xs): New variable. --- gnu/packages/web.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index d848e7b635..8e6f05218a 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1621,6 +1621,25 @@ HTTP::Request when a complete request has been read. HTTP/1.1 chunking is supported.") (license (package-license perl)))) +(define-public perl-http-parser-xs + (package + (name "perl-http-parser-xs") + (version "0.17") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/K/KA/KAZUHO/" + "HTTP-Parser-XS-" version ".tar.gz")) + (sha256 + (base32 + "02d84xq1mm53c7jl33qyb7v5w4372vydp74z6qj0vc96wcrnhkkr")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/HTTP-Parser-XS") + (synopsis "Fast HTTP request parser") + (description "HTTP::Parser::XS is a fast, primitive HTTP request/response +parser.") + (license (package-license perl)))) + (define-public perl-http-request-ascgi (package (name "perl-http-request-ascgi") -- cgit v1.2.3 From be22d5fc635188cdc2299c4dc6642f158ec7b329 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Sat, 4 Apr 2015 21:40:52 -0500 Subject: gnu: Add Net-Server. * gnu/packages/web.scm (perl-net-server): New variable. --- gnu/packages/web.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 8e6f05218a..1d9aaed921 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1871,6 +1871,33 @@ is described in RFC 2616. The Net::HTTP class supports HTTP/1.0 and HTTP/1.1.") (home-page "http://search.cpan.org/~gaas/Net-HTTP/"))) +(define-public perl-net-server + (package + (name "perl-net-server") + (version "2.008") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/R/RH/RHANDOM/" + "Net-Server-" version ".tar.gz")) + (sha256 + (base32 + "182gfikn7r40kmm3d35m2qc6r8g0y1j8gxbn9ffaawf8xmm0a889")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Net-Server") + (synopsis "Extensible Perl server engine") + (description "Net::Server is an extensible, generic Perl server engine. +It attempts to be a generic server as in Net::Daemon and NetServer::Generic. +It includes with it the ability to run as an inetd +process (Net::Server::INET), a single connection server (Net::Server or +Net::Server::Single), a forking server (Net::Server::Fork), a preforking +server which maintains a constant number of preforked +children (Net::Server::PreForkSimple), or as a managed preforking server which +maintains the number of children based on server load (Net::Server::PreFork). +In all but the inetd type, the server provides the ability to connect to one +or to multiple server ports.") + (license (package-license perl)))) + (define-public perl-plack (package (name "perl-plack") -- cgit v1.2.3 From a641b5791aa57966ade906bf1a82384601ce0079 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Sat, 4 Apr 2015 21:42:37 -0500 Subject: gnu: Add Starman. * gnu/packages/web.scm (starman): New variable. --- gnu/packages/web.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 1d9aaed921..1fc236c37d 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -166,6 +166,38 @@ and as a proxy to reduce the load on back-end HTTP or mail servers.") ;; except for two source files which are bsd-4 licensed. (license (list l:bsd-2 l:expat l:bsd-3 l:bsd-4)))) +(define-public starman + (package + (name "starman") + (version "0.4011") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/" + "Starman-" version ".tar.gz")) + (sha256 + (base32 + "1337zhi6v1sg4gd9rs3giybc7g1ysw8ak2da0vy098k4dacxyb57")))) + (build-system perl-build-system) + (native-inputs + `(("perl-libwww" ,perl-libwww) + ("perl-module-build-tiny" ,perl-module-build-tiny) + ("perl-test-requires" ,perl-test-requires))) + (propagated-inputs + `(("perl-data-dump" ,perl-data-dump) + ("perl-http-date" ,perl-http-date) + ("perl-http-message" ,perl-http-message) + ("perl-http-parser-xs" ,perl-http-parser-xs) + ("perl-net-server" ,perl-net-server) + ("perl-plack" ,perl-plack) + ("perl-test-tcp" ,perl-test-tcp))) + (home-page "http://search.cpan.org/dist/Starman") + (synopsis "PSGI/Plack web server") + (description "Starman is a PSGI perl web server that has unique features +such as high performance, preforking, signal support, superdaemon awareness, +and UNIX socket support.") + (license (package-license perl)))) + (define-public jansson (package (name "jansson") -- cgit v1.2.3 From ca8e61960af7725fc16258df2a5024830366e334 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Sat, 4 Apr 2015 21:46:30 -0500 Subject: gnu: Add CatalystX-Script-Server-Starman. * gnu/packages/web.scm (perl-catalystx-script-server-starman): New variable. --- gnu/packages/web.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 1fc236c37d..e84f089be2 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1253,6 +1253,33 @@ MooseX::Traits::Pluggable.") application classes.") (license (package-license perl)))) +(define-public perl-catalystx-script-server-starman + (package + (name "perl-catalystx-script-server-starman") + (version "0.02") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/A/AB/ABRAXXA/" + "CatalystX-Script-Server-Starman-" + version ".tar.gz")) + (sha256 + (base32 + "0h02mpkc4cmi3jpvcd7iw7xyzx55bqvvl1qkf967gqkvpklm0qx5")))) + (build-system perl-build-system) + (native-inputs + `(("perl-test-www-mechanize-catalyst" ,perl-test-www-mechanize-catalyst))) + (propagated-inputs + `(("perl-catalyst-runtime" ,perl-catalyst-runtime) + ("perl-moose" ,perl-moose) + ("perl-namespace-autoclean" ,perl-namespace-autoclean) + ("starman" ,starman))) + (home-page "http://search.cpan.org/dist/CatalystX-Script-Server-Starman") + (synopsis "Catalyst development server with Starman") + (description "This module provides a Catalyst extension to replace the +development server with Starman.") + (license (package-license perl)))) + (define-public perl-cgi-simple (package (name "perl-cgi-simple") -- cgit v1.2.3 From 19c0e5a72828bd7b638f12f68e98aa0cab2a3fec Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Sat, 4 Apr 2015 23:32:29 -0500 Subject: gnu: Add Crypt-RandPasswd. * gnu/packages/perl.scm (perl-crypt-randpasswd): New variable. --- gnu/packages/perl.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index d3f30cc5ac..f212afeaf4 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -923,6 +923,30 @@ CPAN::Meta object are present.") versa.") (license (package-license perl)))) +(define-public perl-crypt-randpasswd + (package + (name "perl-crypt-randpasswd") + (version "0.06") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/" + "Crypt-RandPasswd-" version ".tar.gz")) + (sha256 + (base32 + "0ca8544371wp4vvqsa19lnhl02hczpkbwkgsgm65ziwwim3r1gdi")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Crypt-RandPasswd") + (synopsis "Random password generator") + (description "Crypt::RandPasswd provides three functions that can be used +to generate random passwords, constructed from words, letters, or characters. +This code is a Perl implementation of the Automated Password Generator +standard, like the program described in \"A Random Word Generator For +Pronounceable Passwords\". This code is a re-engineering of the program +contained in Appendix A of FIPS Publication 181, \"Standard for Automated +Password Generator\".") + (license (package-license perl)))) + (define-public perl-data-dump (package (name "perl-data-dump") -- cgit v1.2.3 From 186eb1324811ebe87ffe81d0b4554aba4b07b56f Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 11:25:23 -0500 Subject: gnu: add DBD-Pg. * gnu/packages/databases.scm (perl-dbd-pg): New variable. --- gnu/packages/databases.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index b22f0c752e..ccb21fa70c 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -543,6 +543,29 @@ DBIx::Class::Schema by scanning database table definitions and setting up the columns, primary keys, unique constraints and relationships.") (license (package-license perl)))) +(define-public perl-dbd-pg + (package + (name "perl-dbd-pg") + (version "3.5.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/T/TU/TURNSTEP/" + "DBD-Pg-" version ".tar.gz")) + (sha256 + (base32 + "0z0kf1kjgbi5f6nr63i2fnrx7629d9lvxg1q8sficwb3zdf1ggzx")))) + (build-system perl-build-system) + (native-inputs + `(("perl-dbi" ,perl-dbi))) + (propagated-inputs + `(("perl-dbi" ,perl-dbi) + ("postgresql" ,postgresql))) + (home-page "http://search.cpan.org/dist/DBD-Pg") + (synopsis "DBI PostgreSQL interface") + (description "") + (license (package-license perl)))) + (define-public perl-dbd-sqlite (package (name "perl-dbd-sqlite") -- cgit v1.2.3 From e3cfe3d6d18e6fd9db7341ba3a6c4a21e5fab268 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 11:34:17 -0500 Subject: gnu: Move perl-mime-types to (gnu packages perl). * gnu/packages/web.scm (perl-mime-types): Move this... * gnu/packages/perl.scm (perl-mime-types): ... to here. --- gnu/packages/perl.scm | 20 ++++++++++++++++++++ gnu/packages/web.scm | 20 -------------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index f212afeaf4..c393ec792a 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -2179,6 +2179,26 @@ follows LRU semantics, that is, the last n results, where n is specified as the argument to the CACHESIZE parameter, will be cached.") (license (package-license perl)))) +(define-public perl-mime-types + (package + (name "perl-mime-types") + (version "2.09") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/" + "MIME-Types-" version ".tar.gz")) + (sha256 + (base32 + "0s7s2z9xc1nc2l59rk80iaa04r36k0y95231212kz5p3ln7szk1c")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/MIME-Types") + (synopsis "Definition of MIME types") + (description "This module provides a list of known mime-types, combined +from various sources. For instance, it contains all IANA types and the +knowledge of Apache.") + (license (package-license perl)))) + (define-public perl-module-build-tiny (package (name "perl-module-build-tiny") diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index e84f089be2..0b029086d6 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1888,26 +1888,6 @@ media types is defined by the media.types file. If the ~/.media.types file exists it is used instead.") (home-page "http://search.cpan.org/~gaas/LWP-MediaTypes/"))) -(define-public perl-mime-types - (package - (name "perl-mime-types") - (version "2.09") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/" - "MIME-Types-" version ".tar.gz")) - (sha256 - (base32 - "0s7s2z9xc1nc2l59rk80iaa04r36k0y95231212kz5p3ln7szk1c")))) - (build-system perl-build-system) - (home-page "http://search.cpan.org/dist/MIME-Types") - (synopsis "Definition of MIME types") - (description "This module provides a list of known mime-types, combined -from various sources. For instance, it contains all IANA types and the -knowledge of Apache.") - (license (package-license perl)))) - (define-public perl-net-http (package (name "perl-net-http") -- cgit v1.2.3 From ebda902fb593b2aee97372151260fd615044bbcb Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 12:03:11 -0500 Subject: gnu: Add Email-Address. * gnu/packages/mail.scm (perl-email-address): New variable. --- gnu/packages/mail.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 752f0a9833..e33d5758e7 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2014 Julien Lepiller ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer ;;; Copyright © 2015 Paul van der Walt +;;; Copyright © 2015 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -69,6 +70,7 @@ #:use-module (guix download) #:use-module (guix utils) #:use-module (guix build-system gnu) + #:use-module (guix build-system perl) #:use-module (guix build-system python)) (define-public mailutils @@ -648,4 +650,24 @@ facilities for checking incoming mail.") mailboxes. Currently Maildir and IMAP are supported types.") (license gpl2+))) +(define-public perl-email-address + (package + (name "perl-email-address") + (version "1.907") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/" + "Email-Address-" version ".tar.gz")) + (sha256 + (base32 + "1ai4r149pzjv9dc2vddir8zylj0z1pii93rm4g591lx7avim71hx")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Email-Address") + (synopsis "Email address parsing and creation") + (description "Email::Address implements a regex-based RFC 2822 parser that +locates email addresses in strings and returns a list of Email::Address +objects found. Alternatively you may construct objects manually.") + (license (package-license perl)))) + ;;; mail.scm ends here -- cgit v1.2.3 From 08bf70953faa189a73335f97902ccf0b06d5a3e5 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 12:03:55 -0500 Subject: gnu: Add Email-MessageID. * gnu/packages/mail.scm (perl-email-messageid): New variable. --- gnu/packages/mail.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index e33d5758e7..1121ea91c8 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -670,4 +670,23 @@ locates email addresses in strings and returns a list of Email::Address objects found. Alternatively you may construct objects manually.") (license (package-license perl)))) +(define-public perl-email-messageid + (package + (name "perl-email-messageid") + (version "1.405") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/" + "Email-MessageID-" version ".tar.gz")) + (sha256 + (base32 + "09216naz21x99ff33wdm3j3zq1zhdbxhrsmx8bvavjrw3gjsvrq3")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Email-MessageID") + (synopsis "Generate world unique message-ids") + (description "Email::MessageID generates recommended message-ids to +identify a message uniquely.") + (license (package-license perl)))) + ;;; mail.scm ends here -- cgit v1.2.3 From 55025bb516157db8a8e8dbd774fdd1bb1382e920 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 12:04:24 -0500 Subject: gnu: Add Email-MIME-ContentType. * gnu/packages/mail.scm (perl-email-mime-contenttype): New variable. --- gnu/packages/mail.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 1121ea91c8..afa1f64ddb 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -689,4 +689,25 @@ objects found. Alternatively you may construct objects manually.") identify a message uniquely.") (license (package-license perl)))) +(define-public perl-email-mime-contenttype + (package + (name "perl-email-mime-contenttype") + (version "1.017") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/" + "Email-MIME-ContentType-" version ".tar.gz")) + (sha256 + (base32 + "1cl1l97lg690dh7i704hqi7yhxalq1chy7ylld5yc5v38jqa6gcn")))) + (build-system perl-build-system) + (native-inputs + `(("perl-capture-tiny" ,perl-capture-tiny))) + (home-page "http://search.cpan.org/dist/Email-MIME-ContentType") + (synopsis "Parse MIME Content-Type headers") + (description "Email::MIME::ContentType parses a MIME Content-Type +header.") + (license (package-license perl)))) + ;;; mail.scm ends here -- cgit v1.2.3 From 02e299360776b36608723860e18f62aaffec3b55 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 12:04:57 -0500 Subject: gnu: Add Email-MIME-Encodings. * gnu/packages/mail.scm (perl-email-mime-encodings): New variable. --- gnu/packages/mail.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index afa1f64ddb..f4dc8695e3 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -710,4 +710,24 @@ identify a message uniquely.") header.") (license (package-license perl)))) +(define-public perl-email-mime-encodings + (package + (name "perl-email-mime-encodings") + (version "1.315") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/" + "Email-MIME-Encodings-" version ".tar.gz")) + (sha256 + (base32 + "0p5b8g9gh35m8fqrpx60g4bp98rvwd02n5b0vm9wh7mk0xah8wac")))) + (build-system perl-build-system) + (native-inputs + `(("perl-capture-tiny" ,perl-capture-tiny))) + (home-page "http://search.cpan.org/dist/Email-MIME-Encodings") + (synopsis "Unified interface to MIME encoding and decoding") + (description "This module wraps MIME::Base64 and MIME::QuotedPrint.") + (license (package-license perl)))) + ;;; mail.scm ends here -- cgit v1.2.3 From aa86a3be20197a3cc0a058d7bf5b057a64916512 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 12:05:32 -0500 Subject: gnu: Add Email-Date-Format. * gnu/packages/mail.scm (perl-email-date-format): New variable. --- gnu/packages/mail.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index f4dc8695e3..10ad2f6763 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -670,6 +670,25 @@ locates email addresses in strings and returns a list of Email::Address objects found. Alternatively you may construct objects manually.") (license (package-license perl)))) +(define-public perl-email-date-format + (package + (name "perl-email-date-format") + (version "1.005") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/" + "Email-Date-Format-" version ".tar.gz")) + (sha256 + (base32 + "012ivfwpnbl3wr50f9c6f4azhdlxnm31pdn72528g79v61z6372p")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Email-Date-Format") + (synopsis "Produce RFC 2822 date strings") + (description "Email::Date::Format provides a means for generating an RFC +2822 compliant datetime string.") + (license (package-license perl)))) + (define-public perl-email-messageid (package (name "perl-email-messageid") -- cgit v1.2.3 From 151ef3edc3dccc5ee65b9f6d2e78aa69b70b12bc Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 12:06:23 -0500 Subject: gnu: Add Email-Simple. * gnu/packages/mail.scm (perl-email-simple): New variable. --- gnu/packages/mail.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 10ad2f6763..2c795f6eda 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -749,4 +749,25 @@ header.") (description "This module wraps MIME::Base64 and MIME::QuotedPrint.") (license (package-license perl)))) +(define-public perl-email-simple + (package + (name "perl-email-simple") + (version "2.206") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/" + "Email-Simple-" version ".tar.gz")) + (sha256 + (base32 + "19dpy3j5na2k9qw1jcpc8ia25038068r9j1bn34f9yyrisz7s522")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-email-date-format" ,perl-email-date-format))) + (home-page "http://search.cpan.org/dist/Email-Simple") + (synopsis "Parsing of RFC 2822 messages") + (description "Email::Simple provides simple parsing of RFC 2822 message +format and headers.") + (license (package-license perl)))) + ;;; mail.scm ends here -- cgit v1.2.3 From 0a4c49f6134fb3da7e96805455d45aa4c143763a Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 12:06:45 -0500 Subject: gnu: Add Email-MIME. * gnu/packages/mail.scm (perl-email-mime): New variable. --- gnu/packages/mail.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 2c795f6eda..10978fe62a 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -708,6 +708,34 @@ objects found. Alternatively you may construct objects manually.") identify a message uniquely.") (license (package-license perl)))) +(define-public perl-email-mime + (package + (name "perl-email-mime") + (version "1.929") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/" + "Email-MIME-" version ".tar.gz")) + (sha256 + (base32 + "1sf7dldg4dvicyw6dl1vx6s1gjq3fcppi0103ikl0vi6v5xjdjdh")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-email-address" ,perl-email-address) + ("perl-email-messageid" ,perl-email-messageid) + ("perl-email-mime-contenttype" ,perl-email-mime-contenttype) + ("perl-email-mime-encodings" ,perl-email-mime-encodings) + ("perl-email-simple" ,perl-email-simple) + ("perl-mime-types" ,perl-mime-types))) + (home-page "http://search.cpan.org/dist/Email-MIME") + (synopsis "MIME message handling") + (description "Email::MIME is an extension of the Email::Simple module, to +handle MIME encoded messages. It takes a message as a string, splits it up +into its constituent parts, and allows you access to various parts of the +message. Headers are decoded from MIME encoding.") + (license (package-license perl)))) + (define-public perl-email-mime-contenttype (package (name "perl-email-mime-contenttype") -- cgit v1.2.3 From 26b8de19630af0873495c67f63120d9d044a6cdc Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 12:22:20 -0500 Subject: gnu: Add Email-Abstract. * gnu/packages/mail.scm (perl-email-abstract): New variable. --- gnu/packages/mail.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 10978fe62a..0db3284233 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -650,6 +650,28 @@ facilities for checking incoming mail.") mailboxes. Currently Maildir and IMAP are supported types.") (license gpl2+))) +(define-public perl-email-abstract + (package + (name "perl-email-abstract") + (version "3.008") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/" + "Email-Abstract-" version ".tar.gz")) + (sha256 + (base32 + "0h42rhvp769wb421cpbbg6v6xjp8iv86mvz70pqgfgf4nsn6jwgw")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-email-simple" ,perl-email-simple) + ("perl-mro-compat" ,perl-mro-compat))) + (home-page "http://search.cpan.org/dist/Email-Abstract") + (synopsis "Interface to mail representations") + (description "Email::Abstract provides module writers with the ability to +write simple, representation-independent mail handling code.") + (license (package-license perl)))) + (define-public perl-email-address (package (name "perl-email-address") -- cgit v1.2.3 From 70de16eaf41a0b4d402ca89678e90f326190fc04 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 12:23:04 -0500 Subject: gnu: Add MooX-Types-MooseLike. * gnu/packages/perl.scm (perl-moox-types-mooselike): New variable. --- gnu/packages/perl.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index c393ec792a..9090046ac2 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -2845,6 +2845,32 @@ prevent name clashes between packages.") constraint with coercion to load the class.") (license (package-license perl)))) +(define-public perl-moox-types-mooselike + (package + (name "perl-moox-types-mooselike") + (version "0.28") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/M/MA/MATEU/" + "MooX-Types-MooseLike-" version ".tar.gz")) + (sha256 + (base32 + "15af2xmpari4vwjwxn1m9yzjfffkr2aiisqqfij31gxcdk15fpk3")))) + (build-system perl-build-system) + (native-inputs + `(("perl-moo" ,perl-moo) + ("perl-test-fatal" ,perl-test-fatal))) + (propagated-inputs + `(("perl-module-runtime" ,perl-module-runtime) + ("perl-strictures" ,perl-strictures))) + (home-page "http://search.cpan.org/dist/MooX-Types-MooseLike") + (synopsis "Moosish types and type builder") + (description "MooX::Types::MooseLike provides a possibility to build your +own set of Moose-like types. These custom types can then be used to describe +fields in Moo-based classes.") + (license (package-license perl)))) + (define-public perl-mro-compat (package (name "perl-mro-compat") -- cgit v1.2.3 From 0677b1af3bc7574a29c0ec6618042abaf3f50a53 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 12:23:37 -0500 Subject: gnu: Add Throwable. * gnu/packages/perl.scm (perl-throwable): New variable. --- gnu/packages/perl.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 9090046ac2..eb2a0c0e08 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -4438,6 +4438,31 @@ letters, the pronunciation expressed by the text in some other writing system.") (license (package-license perl)))) +(define-public perl-throwable + (package + (name "perl-throwable") + (version "0.200012") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/" + "Throwable-" version ".tar.gz")) + (sha256 + (base32 + "0cy8kza9pd9y5m7k5385asf4xqm54vdqnqm0am10z6j2mrxwr527")))) + (build-system perl-build-system) + (native-inputs + `(("perl-devel-stacktrace" ,perl-devel-stacktrace))) + (propagated-inputs + `(("perl-devel-stacktrace" ,perl-devel-stacktrace) + ("perl-module-runtime" ,perl-module-runtime) + ("perl-moo" ,perl-moo))) + (home-page "http://search.cpan.org/dist/Throwable") + (synopsis "Role for classes that can be thrown") + (description "Throwable is a role for classes that are meant to be thrown +as exceptions to standard program flow.") + (license (package-license perl)))) + (define-public perl-tie-ixhash (package (name "perl-tie-ixhash") -- cgit v1.2.3 From a24c54201daf566c1ca8326b036a1567f490158f Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 12:24:21 -0500 Subject: gnu: Add Email-Sender. * gnu/packages/mail.scm (perl-email-sender): New variable. --- gnu/packages/mail.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 0db3284233..9a61cf4580 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -799,6 +799,38 @@ header.") (description "This module wraps MIME::Base64 and MIME::QuotedPrint.") (license (package-license perl)))) +(define-public perl-email-sender + (package + (name "perl-email-sender") + (version "1.300016") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/" + "Email-Sender-" version ".tar.gz")) + (sha256 + (base32 + "18x26fjh399q3s2g8dajb9r10633c46jrnbvycpnpclgnzhjs100")))) + (build-system perl-build-system) + (native-inputs + `(("perl-capture-tiny" ,perl-capture-tiny))) + (propagated-inputs + `(("perl-email-abstract" ,perl-email-abstract) + ("perl-email-address" ,perl-email-address) + ("perl-email-simple" ,perl-email-simple) + ("perl-list-moreutils" ,perl-list-moreutils) + ("perl-module-runtime" ,perl-module-runtime) + ("perl-moo" ,perl-moo) + ("perl-moox-types-mooselike" ,perl-moox-types-mooselike) + ("perl-sub-exporter" ,perl-sub-exporter) + ("perl-throwable" ,perl-throwable) + ("perl-try-tiny" ,perl-try-tiny))) + (home-page "http://search.cpan.org/dist/Email-Sender") + (synopsis "Perl library for sending email") + (description "Email::Sender replaces the old and sometimes problematic +Email::Send library.") + (license (package-license perl)))) + (define-public perl-email-simple (package (name "perl-email-simple") -- cgit v1.2.3 From 38973df7469f62f9242c69b0cd99b689eb7dd619 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 12:28:57 -0500 Subject: gnu: Add File-Slurp. * gnu/packages/perl.scm (perl-file-slurp): New variable. --- gnu/packages/perl.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index eb2a0c0e08..e6b1041c8b 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1783,6 +1783,26 @@ files from a distribution. It is a companion module to File::ShareDir, which allows you to locate these files after installation.") (license (package-license perl)))) +(define-public perl-file-slurp + (package + (name "perl-file-slurp") + (version "9999.19") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/U/UR/URI/" + "File-Slurp-" version ".tar.gz")) + (sha256 + (base32 + "0hrn4nipwx40d6ji8ssgr5nw986z9iqq8cn0kdpbszh9jplynaff")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/File-Slurp") + (synopsis "Reading/Writing/Modifying of complete files") + (description "File::Slurp provides subroutines to read or write entire +files with a simple call. It also has a subroutine for reading the list of +filenames in a directory.") + (license (package-license perl)))) + (define-public perl-file-temp (package (name "perl-file-temp") -- cgit v1.2.3 From 73f542c3681ea665bdf2f9df26d0060e963d5f00 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 14:46:38 -0500 Subject: gnu: Add Compress-Raw-Bzip2. * gnu/packages/compression.scm (perl-compress-raw-bzip2): New variable. --- gnu/packages/compression.scm | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 8b36766200..61a94b31a2 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer +;;; Copyright © 2015 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,7 +25,9 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) - #:use-module (gnu packages base)) + #:use-module (guix build-system perl) + #:use-module (gnu packages base) + #:use-module (gnu packages perl)) (define-public zlib (package @@ -343,3 +346,23 @@ This package is mostly for compatibility and historical interest.") "The purpose of libmspack is to provide both compression and decompression of some loosely related file formats used by Microsoft.") (license license:lgpl2.1+))) + +(define-public perl-compress-raw-bzip2 + (package + (name "perl-compress-raw-bzip2") + (version "2.068") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/P/PM/PMQS/" + "Compress-Raw-Bzip2-" version ".tar.gz")) + (sha256 + (base32 + "16hl58xppckldz05zdyid1l5gpaykzwvkq682h3rc3nilbhgjqqg")))) + (build-system perl-build-system) + ;; TODO: Use our bzip2 package. + (home-page "http://search.cpan.org/dist/Compress-Raw-Bzip2") + (synopsis "Low-level interface to bzip2 compression library") + (description "This module provides a Perl interface to the bzip2 +compression library.") + (license (package-license perl)))) -- cgit v1.2.3 From 8e18514a69f670d8817842a76cfaa3d404b66c3f Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 14:50:44 -0500 Subject: gnu: Add Compress-Raw-Zlib. * gnu/packages/compression.scm (perl-compress-raw-zlib): New variable. --- gnu/packages/compression.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 61a94b31a2..7dc62c7c12 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -366,3 +366,38 @@ decompression of some loosely related file formats used by Microsoft.") (description "This module provides a Perl interface to the bzip2 compression library.") (license (package-license perl)))) + +(define-public perl-compress-raw-zlib + (package + (name "perl-compress-raw-zlib") + (version "2.068") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/P/PM/PMQS/" + "Compress-Raw-Zlib-" version ".tar.gz")) + (sha256 + (base32 + "06q7n87g26nn5gv4z2p31ca32f6zk124hqxc25rfgkjd3qi5798i")))) + (build-system perl-build-system) + (inputs + `(("zlib" ,zlib))) + (arguments + `(#:phases (modify-phases %standard-phases + (add-before + configure configure-zlib + (lambda* (#:key inputs #:allow-other-keys) + (call-with-output-file "config.in" + (lambda (port) + (format port " +BUILD_ZLIB = False +INCLUDE = ~a/include +LIB = ~:*~a/lib +OLD_ZLIB = False +GZIP_OS_CODE = AUTO_DETECT" + (assoc-ref inputs "zlib"))))))))) + (home-page "http://search.cpan.org/dist/Compress-Raw-Zlib") + (synopsis "Low-level interface to zlib compression library") + (description "This module provides a Perl interface to the zlib +compression library.") + (license (package-license perl)))) -- cgit v1.2.3 From 8aaafd34c82b2f8faf6c46451ec7f6a1fc06b443 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 14:52:01 -0500 Subject: gnu: Add IO-Compress. * gnu/packages/compression.scm (perl-io-compress): New variable. --- gnu/packages/compression.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 7dc62c7c12..234ea338a1 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -401,3 +401,25 @@ GZIP_OS_CODE = AUTO_DETECT" (description "This module provides a Perl interface to the zlib compression library.") (license (package-license perl)))) + +(define-public perl-io-compress + (package + (name "perl-io-compress") + (version "2.068") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/P/PM/PMQS/" + "IO-Compress-" version ".tar.gz")) + (sha256 + (base32 + "0dy0apjp7j9dfkzfjspjd3z9gh26srx5vac72g59bkkz1jf8s1gs")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-compress-raw-zlib" ,perl-compress-raw-zlib) ; >=2.068 + ("perl-compress-raw-bzip2" ,perl-compress-raw-bzip2))) ; >=2.068 + (home-page "http://search.cpan.org/dist/IO-Compress") + (synopsis "IO Interface to compressed files/buffers") + (description "IO-Compress provides a Perl interface to allow reading and +writing of compressed data created with the zlib and bzip2 libraries.") + (license (package-license perl)))) -- cgit v1.2.3 From e3d84c4e3a650a41d94958bdf44b9afbff4e33bd Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 15:05:41 -0500 Subject: gnu: Add IPC-Run. * gnu/packages/perl.scm (perl-ipc-run): New variable. --- gnu/packages/perl.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index e6b1041c8b..05255b1e7e 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -2019,6 +2019,37 @@ filehandles; in particular, IO::Scalar, IO::ScalarArray, and IO::Lines.") pseudo ttys.") (license (package-license perl)))) +(define-public perl-ipc-run + (package + (name "perl-ipc-run") + (version "0.94") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/T/TO/TODDR/" + "IPC-Run-" version ".tar.gz")) + (sha256 + (base32 + "0nv0lpw31zaz6vi42q7ihjj3j382j4njicp5k0gsczib3b4kdcrf")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-io-tty" ,perl-io-tty))) + (arguments + `(#:phases (modify-phases %standard-phases + (add-before + check disable-w32-test + (lambda _ + ;; This test fails, and we're not really interested in + ;; it, so disable it. + (delete-file "t/win32_compile.t")))))) + (home-page "http://search.cpan.org/dist/IPC-Run") + (synopsis "system() and background procs w/ piping, redirs, ptys") + (description "IPC::Run allows you run and interact with child processes +using files, pipes, and pseudo-ttys. Both system()-style and scripted usages +are supported and may be mixed. Likewise, functional and OO API styles are +both supported and may be mixed.") + (license (package-license perl)))) + (define-public perl-ipc-run3 (package (name "perl-ipc-run3") -- cgit v1.2.3 From 0eb3b5bdf11198a84101c2ed3d55fd6dd0d34d4e Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 15:43:25 -0500 Subject: gnu: Net-HTTP: Update to 6.07. * gnu/packages/web.scm (perl-net-http)[version]: Update to 6.07. [source]: Adjust uri. [propagated-inputs]: New field. [home-page]: Point to generic distribution page. --- gnu/packages/web.scm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 0b029086d6..e566a93a74 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1891,16 +1891,19 @@ exists it is used instead.") (define-public perl-net-http (package (name "perl-net-http") - (version "6.06") + (version "6.07") (source (origin (method url-fetch) (uri (string-append - "mirror://cpan/authors/id/G/GA/GAAS/Net-HTTP-" + "mirror://cpan/authors/id/M/MS/MSCHILLI/Net-HTTP-" version ".tar.gz")) (sha256 (base32 - "1m1rvniffadq99gsy25298ia3lixwymr6kan64jd3ylyi7nkqkhx")))) + "0r034hhci0yqbrkrh1gv6vi5g3i0kpd1k84z62nk02asb8rf0ccz")))) (build-system perl-build-system) + (propagated-inputs + `(("perl-io-socket-ssl" ,perl-io-socket-ssl) + ("perl-uri" ,perl-uri))) (license (package-license perl)) (synopsis "Perl low-level HTTP connection (client)") (description @@ -1908,7 +1911,7 @@ exists it is used instead.") Net::HTTP class represents a connection to an HTTP server. The HTTP protocol is described in RFC 2616. The Net::HTTP class supports HTTP/1.0 and HTTP/1.1.") - (home-page "http://search.cpan.org/~gaas/Net-HTTP/"))) + (home-page "http://search.cpan.org/dist/Net-HTTP"))) (define-public perl-net-server (package -- cgit v1.2.3 From bec820d94adb5db778e9c81434a1d2b35b2fb7ec Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 15:44:32 -0500 Subject: gnu: libwww-perl: Update to 6.13. * gnu/packages/web.scm (perl-libwww)[version]: Update to 6.13. [source]: Adjust uri. [home-page]: Point to generic distribution page. --- gnu/packages/web.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index e566a93a74..a918841286 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1836,15 +1836,15 @@ select or poll.") (define-public perl-libwww (package (name "perl-libwww") - (version "6.05") + (version "6.13") (source (origin (method url-fetch) (uri (string-append - "mirror://cpan/authors/id/G/GA/GAAS/libwww-perl-" + "mirror://cpan/authors/id/E/ET/ETHER/libwww-perl-" version ".tar.gz")) (sha256 (base32 - "08wgwyz7748pv5cyngxia0xl6nragfnhrp4p9s78xhgfyygpj9bv")))) + "1cpqjl59viw50bnbdyn8xzrwzg7g54b2rszw0fifacqrppp17gaz")))) (build-system perl-build-system) (propagated-inputs `(("perl-encode-locale" ,perl-encode-locale) @@ -1864,7 +1864,7 @@ World-Wide Web. The main focus of the library is to provide classes and functions that allow you to write WWW clients. The library also contains modules that are of more general use and even classes that help you implement simple HTTP servers.") - (home-page "http://search.cpan.org/~gaas/libwww-perl/"))) + (home-page "http://search.cpan.org/dist/libwww-perl/"))) (define-public perl-lwp-mediatypes (package -- cgit v1.2.3 From bdcfd18e4bee27a8a3d80e262084be0fab8519fc Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 15:45:10 -0500 Subject: gnu: Add LWP-Protocol-https. * gnu/packages/web.scm (perl-lwp-protocol-https): New variable. --- gnu/packages/web.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index a918841286..397bacb8af 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1888,6 +1888,31 @@ media types is defined by the media.types file. If the ~/.media.types file exists it is used instead.") (home-page "http://search.cpan.org/~gaas/LWP-MediaTypes/"))) +(define-public perl-lwp-protocol-https + (package + (name "perl-lwp-protocol-https") + (version "6.06") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/M/MS/MSCHILLI/" + "LWP-Protocol-https-" version ".tar.gz")) + (sha256 + (base32 + "1vxdjqj4bwq56m9h1bqqwkk3c6jr76f2zqzvwa26yjng3p686v5q")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-io-socket-ssl" ,perl-io-socket-ssl) + ("perl-libwww" ,perl-libwww) + ;; Users should instead make sure SSL_ca_path is set properly. + ;; ("perl-mozilla-ca" ,perl-mozilla-ca) + ("perl-net-http" ,perl-net-http))) + (home-page "http://search.cpan.org/dist/LWP-Protocol-https") + (synopsis "HTTPS support for LWP::UserAgent") + (description "The LWP::Protocol::https module provides support for using +https schemed URLs with LWP.") + (license (package-license perl)))) + (define-public perl-net-http (package (name "perl-net-http") -- cgit v1.2.3 From 1cebf8736e3ef5bd8d1fbd2bcf7ed0ff009cb619 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 16:43:41 -0500 Subject: gnu: Add Data-Stream-Bulk. * gnu/packages/perl.scm (perl-data-stream-bulk): New variable. --- gnu/packages/perl.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 05255b1e7e..689047da7f 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1034,6 +1034,35 @@ on one page. This results in wanting to page through various pages of data. The maths behind this is unfortunately fiddly, hence this module.") (license (package-license perl)))) +(define-public perl-data-stream-bulk + (package + (name "perl-data-stream-bulk") + (version "0.11") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/D/DO/DOY/" + "Data-Stream-Bulk-" version ".tar.gz")) + (sha256 + (base32 + "05q9ygcv7r318j7daxz42rjr5b99j6whjmwjdih0axxrlqr89q06")))) + (build-system perl-build-system) + (native-inputs + `(("perl-test-requires" ,perl-test-requires))) + (propagated-inputs + `(("perl-moose" ,perl-moose) + ("perl-namespace-clean" ,perl-namespace-clean) + ("perl-path-class" ,perl-path-class) + ("perl-sub-exporter" ,perl-sub-exporter))) + (home-page "http://search.cpan.org/dist/Data-Stream-Bulk") + (synopsis "N at a time iteration API") + (description "This module tries to find middle ground between one at a +time and all at once processing of data sets. The purpose of this module is +to avoid the overhead of implementing an iterative api when this isn't +necessary, without breaking forward compatibility in case that becomes +necessary later on.") + (license (package-license perl)))) + (define-public perl-data-tumbler (package (name "perl-data-tumbler") -- cgit v1.2.3 From 9151712c55c573277d97aceb66dac53c8ce488f4 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 16:47:54 -0500 Subject: gnu: Add DateTime-Format-HTTP. * gnu/packages/web.scm (perl-datetime-format-http): New variable. --- gnu/packages/web.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 397bacb8af..991ec69f86 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1323,6 +1323,28 @@ parameter parsing, file upload, cookie handling and header generation.") inputs, in a manner reminiscent of how PHP does.") (license l:bsd-2))) +(define-public perl-datetime-format-http + (package + (name "perl-datetime-format-http") + (version "0.42") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/C/CK/CKRAS/" + "DateTime-Format-HTTP-" version ".tar.gz")) + (sha256 + (base32 + "0h6qqdg1yzqkdxp7hqlp0qa7d1y64nilgimxs79dys2ryjfpcknh")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-datetime" ,perl-datetime) + ("perl-http-date" ,perl-http-date))) + (home-page "http://search.cpan.org/dist/DateTime-Format-HTTP") + (synopsis "Date conversion routines") + (description "This module provides functions that deal with the date +formats used by the HTTP protocol.") + (license (package-license perl)))) + (define-public perl-encode-locale (package (name "perl-encode-locale") -- cgit v1.2.3 From 31170d139020f29e06c5e708d8d9b16d806aef33 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 16:52:48 -0500 Subject: gnu: Add Digest-HMAC. * gnu/packages/perl.scm (perl-digest-hmac): New variable. --- gnu/packages/perl.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 689047da7f..2ebc7143ab 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1376,6 +1376,25 @@ Devel::StackTrace::WithLexicals, you even get to see the lexical variables of each stack frame.") (license (package-license perl)))) +(define-public perl-digest-hmac + (package + (name "perl-digest-hmac") + (version "1.03") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/G/GA/GAAS/" + "Digest-HMAC-" version ".tar.gz")) + (sha256 + (base32 + "0naavabbm1c9zgn325ndy66da4insdw9l3mrxwxdfi7i7xnjrirv")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Digest-HMAC") + (synopsis "Keyed-Hashing for Message Authentication") + (description "The Digest::HMAC module follows the common Digest:: +interface for the RFC 2104 HMAC mechanism.") + (license (package-license perl)))) + (define-public perl-digest-sha1 (package (name "perl-digest-sha1") -- cgit v1.2.3 From 0a24e9b8878066b124733f787174f1c6dd40616d Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 16:58:22 -0500 Subject: gnu: Add Digest-MD5-File. * gnu/packages/web.scm (perl-digest-md5-file): New variable. --- gnu/packages/web.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 991ec69f86..3a55fa67e5 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1345,6 +1345,27 @@ inputs, in a manner reminiscent of how PHP does.") formats used by the HTTP protocol.") (license (package-license perl)))) +(define-public perl-digest-md5-file + (package + (name "perl-digest-md5-file") + (version "0.08") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/D/DM/DMUEY/" + "Digest-MD5-File-" version ".tar.gz")) + (sha256 + (base32 + "060jzf45dlwysw5wsm7av1wvpl06xgk415kwwpvv89r6wda3md5d")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-libwww" ,perl-libwww))) + (home-page "http://search.cpan.org/dist/Digest-MD5-File") + (synopsis "MD5 sums for files and urls") + (description "Digest::MD5::File is a Perl extension for getting MD5 sums +for files and urls.") + (license (package-license perl)))) + (define-public perl-encode-locale (package (name "perl-encode-locale") -- cgit v1.2.3 From 6a58b09280578d7bb22028314a5104c7467cf552 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 17:03:46 -0500 Subject: gnu: Add LWP-UserAgent-Determined. * gnu/packages/web.scm (perl-lwp-useragent-determined): New variable. --- gnu/packages/web.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 3a55fa67e5..6de626968a 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1956,6 +1956,29 @@ exists it is used instead.") https schemed URLs with LWP.") (license (package-license perl)))) +(define-public perl-lwp-useragent-determined + (package + (name "perl-lwp-useragent-determined") + (version "1.07") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/A/AL/ALEXMV/" + "LWP-UserAgent-Determined-" version ".tar.gz")) + (sha256 + (base32 + "0lyvbpjng7yfvyha9rp2y2c6liz5hhplmd2grc8jlsfkih7dbn06")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-libwww" ,perl-libwww))) + (home-page "http://search.cpan.org/dist/LWP-UserAgent-Determined") + (synopsis "Virtual browser that retries errors") + (description "LWP::UserAgent::Determined works just like LWP::UserAgent, +except that when you use it to get a web page but run into a +possibly-temporary error (like a DNS lookup timeout), it'll wait a few seconds +and retry a few times.") + (license (package-license perl)))) + (define-public perl-net-http (package (name "perl-net-http") -- cgit v1.2.3 From 4be514cb47e2df65bea88770c6149f6a5abc9e7f Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 17:14:14 -0500 Subject: gnu: Add MooseX-StrictConstructor. * gnu/packages/perl.scm (perl-moosex-strictconstructor): New variable. --- gnu/packages/perl.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 2ebc7143ab..fc5e0c9999 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -2860,6 +2860,32 @@ separated into get and set methods. The get methods have the same name as the accessor, while set methods are prefixed with \"_set_\".") (license artistic2.0))) +(define-public perl-moosex-strictconstructor + (package + (name "perl-moosex-strictconstructor") + (version "0.19") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/" + "MooseX-StrictConstructor-" version ".tar.gz")) + (sha256 + (base32 + "0ccawja1kabgglrkdw5v82m1pbw189a0mnd33l43rs01d70p6ra8")))) + (build-system perl-build-system) + (native-inputs + `(("perl-moose" ,perl-moose) + ("perl-test-fatal" ,perl-test-fatal))) + (propagated-inputs + `(("perl-moose" ,perl-moose) + ("perl-namespace-autoclean" ,perl-namespace-autoclean))) + (home-page "http://search.cpan.org/dist/MooseX-StrictConstructor") + (synopsis "Strict object constructors for Moose") + (description "Simply loading this module makes your constructors +\"strict\". If your constructor is called with an attribute init argument that +your class does not declare, then it calls Moose->throw_error(). ") + (license artistic2.0))) + (define-public perl-moosex-traits-pluggable (package (name "perl-moosex-traits-pluggable") -- cgit v1.2.3 From bd44b05dcaa678e75f05dc527d82f8ddcaf9d19c Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 17:33:27 -0500 Subject: gnu: Add Class-Factory-Util. * gnu/packages/perl.scm (perl-class-factory-util): New variable. --- gnu/packages/perl.scm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index fc5e0c9999..100fb28ce1 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -573,6 +573,24 @@ subclasses and can be overriden.") type for perl.") (license (package-license perl)))) +(define-public perl-class-factory-util + (package + (name "perl-class-factory-util") + (version "1.7") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/" + "Class-Factory-Util-" version ".tar.gz")) + (sha256 + (base32 + "09ifd6v0c94vr20n9yr1dxgcp7hyscqq851szdip7y24bd26nlbc")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Class-Factory-Util") + (synopsis "Utility methods for factory classes") + (description "This module exports methods useful for factory classes.") + (license (package-license perl)))) + (define-public perl-class-inspector (package (name "perl-class-inspector") -- cgit v1.2.3 From 6f170fe5965bca61ec74ee0df5c59e51db277fa5 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 17:37:23 -0500 Subject: gnu: Add DateTime-Format-Strptime. * gnu/packages/perl.scm (perl-datetime-format-strptime): New variable. --- gnu/packages/perl.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 100fb28ce1..3947757064 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1163,6 +1163,32 @@ combinations. It represents the Gregorian calendar, extended backwards in time before its creation (in 1582).") (license artistic2.0))) +(define-public perl-datetime-format-strptime + (package + (name "perl-datetime-format-strptime") + (version "1.56") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/" + "DateTime-Format-Strptime-" version ".tar.gz")) + (sha256 + (base32 + "0a4bszmff16rw6fz1yr4v9001q9vxrdxnxkj9sqaln83b87rvxig")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-datetime" ,perl-datetime) + ("perl-datetime-locale" ,perl-datetime-locale) + ("perl-datetime-timezone" ,perl-datetime-timezone) + ("perl-params-validate" ,perl-params-validate))) + (home-page "http://search.cpan.org/dist/DateTime-Format-Strptime") + (synopsis "Parse and format strp and strf time patterns") + (description "This module implements most of `strptime(3)`, the POSIX +function that is the reverse of `strftime(3)`, for `DateTime`. While +`strftime` takes a `DateTime` and a pattern and returns a string, `strptime` +takes a string and a pattern and returns the `DateTime` object associated.") + (license artistic2.0))) + (define-public perl-datetime-locale (package (name "perl-datetime-locale") -- cgit v1.2.3 From 3dcfec09c3822188fea441c989341d8825aa506f Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 17:43:25 -0500 Subject: gnu: Add DateTime-Format-Builder. * gnu/packages/perl.scm (perl-datetime-format-builder): New variable. --- gnu/packages/perl.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 3947757064..e1aabcf5be 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1163,6 +1163,32 @@ combinations. It represents the Gregorian calendar, extended backwards in time before its creation (in 1582).") (license artistic2.0))) +(define-public perl-datetime-format-builder + (package + (name "perl-datetime-format-builder") + (version "0.81") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/" + "DateTime-Format-Builder-" version ".tar.gz")) + (sha256 + (base32 + "1vrkzw7kmxnyy403ykxgbg2kvgs99nggi4n9gi09ixivnn68mmbw")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-class-factory-util" ,perl-class-factory-util) + ("perl-datetime" ,perl-datetime) + ("perl-datetime-format-strptime" ,perl-datetime-format-strptime) + ("perl-params-validate" ,perl-params-validate))) + (home-page "http://search.cpan.org/dist/DateTime-Format-Builder") + (synopsis "Create DateTime parser classes and objects.") + (description "DateTime::Format::Builder creates DateTime parsers. Many +string formats of dates and times are simple and just require a basic regular +expression to extract the relevant information. Builder provides a simple way +to do this without writing reams of structural code.") + (license artistic2.0))) + (define-public perl-datetime-format-strptime (package (name "perl-datetime-format-strptime") -- cgit v1.2.3 From b271f727f0094c770c8f9d2d5023c24d92678857 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 17:45:45 -0500 Subject: gnu: Add DateTime-Format-Flexible. * gnu/packages/perl.scm (perl-datetime-format-flexible): New variable. --- gnu/packages/perl.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index e1aabcf5be..bc845f0078 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1189,6 +1189,31 @@ expression to extract the relevant information. Builder provides a simple way to do this without writing reams of structural code.") (license artistic2.0))) +(define-public perl-datetime-format-flexible + (package + (name "perl-datetime-format-flexible") + (version "0.26") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/T/TH/THINC/" + "DateTime-Format-Flexible-" version ".tar.gz")) + (sha256 + (base32 + "0gb9dsn178dpvgbbgwnaf3v2v8zy4xj36i0w5q8qbhvwx32znvj3")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-datetime" ,perl-datetime) + ("perl-datetime-format-builder" ,perl-datetime-format-builder) + ("perl-datetime-timezone" ,perl-datetime-timezone) + ("perl-list-moreutils" ,perl-list-moreutils) + ("perl-test-mocktime" ,perl-test-mocktime))) + (home-page "http://search.cpan.org/dist/DateTime-Format-Flexible") + (synopsis "Parse data/time strings") + (description "DateTime::Format::Flexible attempts to take any string you +give it and parse it into a DateTime object.") + (license (package-license perl)))) + (define-public perl-datetime-format-strptime (package (name "perl-datetime-format-strptime") -- cgit v1.2.3 From 23c28360419fb4c2577b78bd67e9be59a84598fd Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 22:43:39 -0500 Subject: gnu: Add Set-Infinite. * gnu/packages/perl.scm (perl-set-infinite): New variable. --- gnu/packages/perl.scm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index bc845f0078..11efa8c6f8 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -3567,6 +3567,24 @@ of execution is aborted prematurely. This effectively allows lexically-scoped collector.") (license (package-license perl)))) +(define-public perl-set-infinite + (package + (name "perl-set-infinite") + (version "0.65") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/F/FG/FGLOCK/" + "Set-Infinite-" version ".tar.gz")) + (sha256 + (base32 + "07vyp0jpndcxkbyjk432nillxxk22wrmm2rs985y8ba96h3qig07")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Set-Infinite") + (synopsis "Infinite sets") + (description "Set::Infinite is a set theory module for infinite sets.") + (license (package-license perl)))) + (define-public perl-spiffy (package (name "perl-spiffy") -- cgit v1.2.3 From f89fe3bff7ce0ccf12c9a8d122b357f85a9b3bc5 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 22:45:14 -0500 Subject: gnu: Add DateTime-Set. * gnu/packages/perl.scm (perl-datetime-set): New variable. --- gnu/packages/perl.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 11efa8c6f8..32c2eed4cd 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1163,6 +1163,31 @@ combinations. It represents the Gregorian calendar, extended backwards in time before its creation (in 1582).") (license artistic2.0))) +(define-public perl-datetime-set + (package + (name "perl-datetime-set") + (version "0.3400") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/F/FG/FGLOCK/" + "DateTime-Set-" version ".tar.gz")) + (sha256 + (base32 + "1b27699zkj68w5ll9chjhs52vmf39f9via6x5r5844as30qh9zxb")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-datetime" ,perl-datetime) + ("perl-params-validate" ,perl-params-validate) + ("perl-set-infinite" ,perl-set-infinite))) + (home-page "http://search.cpan.org/dist/DateTime-Set") + (synopsis "DateTime set objects") + (description "The DateTime::Set module provides a date/time sets +implementation. It allows, for example, the generation of groups of dates, +like \"every wednesday\", and then find all the dates matching that pattern, +within a time range.") + (license (package-license perl)))) + (define-public perl-datetime-format-builder (package (name "perl-datetime-format-builder") -- cgit v1.2.3 From 47e049c44652befbc2c08ed7895326019e5f8ceb Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 22:46:46 -0500 Subject: gnu: Add DateTime-Event-Recurrence. * gnu/packages/perl.scm (perl-datetime-event-recurrence): New variable. --- gnu/packages/perl.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 32c2eed4cd..26dd11331d 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1188,6 +1188,30 @@ like \"every wednesday\", and then find all the dates matching that pattern, within a time range.") (license (package-license perl)))) +(define-public perl-datetime-event-recurrence + (package + (name "perl-datetime-event-recurrence") + (version "0.16") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/F/FG/FGLOCK/" + "DateTime-Event-Recurrence-" version ".tar.gz")) + (sha256 + (base32 + "02c6ky3k26r0c8r87rcsd8gbn7rd6j2pylryin8pllnrdh9f0wiq")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-datetime" ,perl-datetime) + ("perl-datetime-set" ,perl-datetime-set))) + (home-page "http://search.cpan.org/dist/DateTime-Event-Recurrence") + (synopsis "DateTime::Set extension for basic recurrences") + (description "This module provides convenience methods that let you easily +create DateTime::Set objects for various recurrences, such as \"once a month\" +or \"every day\". You can also create more complicated recurrences, such as +\"every Monday, Wednesday and Thursday at 10:00 AM and 2:00 PM\".") + (license (package-license perl)))) + (define-public perl-datetime-format-builder (package (name "perl-datetime-format-builder") -- cgit v1.2.3 From 21c9adcca6217189c43f61134cfac45b41a6b85a Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 22:47:53 -0500 Subject: gnu: Add DateTime-Event-ICal. * gnu/packages/perl.scm (perl-datetime-event-ical): New variable. --- gnu/packages/perl.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 26dd11331d..c3911b2db4 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1188,6 +1188,28 @@ like \"every wednesday\", and then find all the dates matching that pattern, within a time range.") (license (package-license perl)))) +(define-public perl-datetime-event-ical + (package + (name "perl-datetime-event-ical") + (version "0.12") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/F/FG/FGLOCK/" + "DateTime-Event-ICal-" version ".tar.gz")) + (sha256 + (base32 + "1rfrjhczfmasf7aaz8rfd89vhwjj2nkxlnirxxrmy75z10nmrpjk")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-datetime" ,perl-datetime) + ("perl-datetime-event-recurrence" ,perl-datetime-event-recurrence))) + (home-page "http://search.cpan.org/dist/DateTime-Event-ICal") + (synopsis "DateTime rfc2445 recurrences") + (description "This module provides convenience methods that let you easily +create DateTime::Set objects for RFC 2445 style recurrences.") + (license (package-license perl)))) + (define-public perl-datetime-event-recurrence (package (name "perl-datetime-event-recurrence") -- cgit v1.2.3 From e58a2fa16ec4f7fcf4072e4d152dc381107871a8 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 22:49:26 -0500 Subject: gnu: Add DateTime-Format-ICal. * gnu/packages/perl.scm (perl-datetime-format-ical): New variable. --- gnu/packages/perl.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index c3911b2db4..a488815451 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1285,6 +1285,32 @@ to do this without writing reams of structural code.") give it and parse it into a DateTime object.") (license (package-license perl)))) +(define-public perl-datetime-format-ical + (package + (name "perl-datetime-format-ical") + (version "0.09") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/" + "DateTime-Format-ICal-" version ".tar.gz")) + (sha256 + (base32 + "0cvwk7pigj7czsp81z35h7prxvylkrlk2l0kwvq0v72ykx9zc2cb")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-datetime" ,perl-datetime) + ("perl-datetime-event-ical" ,perl-datetime-event-ical) + ("perl-datetime-set" ,perl-datetime-set) + ("perl-datetime-timezone" ,perl-datetime-timezone) + ("perl-params-validate" ,perl-params-validate))) + (home-page "http://search.cpan.org/dist/DateTime-Format-ICal") + (synopsis "Parse and format iCal datetime and duration strings") + (description "This module understands the ICal date/time and duration +formats, as defined in RFC 2445. It can be used to parse these formats in +order to create the appropriate objects.") + (license (package-license perl)))) + (define-public perl-datetime-format-strptime (package (name "perl-datetime-format-strptime") -- cgit v1.2.3 From 85690ec1449a4ef997b3b55caf2692f497637f57 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 22:58:33 -0500 Subject: gnu: Add Perl boolean. * gnu/packages/perl.scm (perl-boolean): New variable. --- gnu/packages/perl.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index a488815451..10c292cd88 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -254,6 +254,25 @@ but don't want to go all out and profile your code.") "Benchmark-Timer-" version)) (license gpl2))) +(define-public perl-boolean + (package + (name "perl-boolean") + (version "0.45") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/I/IN/INGY/" + "boolean-" version ".tar.gz")) + (sha256 + (base32 + "18hrgldzwnhs0c0r8hxx6r05qvk9p7gwinjwcybixfs2h0n43ypj")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/boolean") + (synopsis "Boolean support for Perl") + (description "This module provides basic Boolean support, by defining two +special objects: true and false.") + (license (package-license perl)))) + (define-public perl-cache-cache (package (name "perl-cache-cache") -- cgit v1.2.3 From bb90ae0cb043b45152d5f92628eef944f854cd7a Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 23:16:23 -0500 Subject: gnu: Add Bit-Vector. * gnu/packages/perl.scm (perl-bit-vector): New variable. --- gnu/packages/perl.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 10c292cd88..56cb2d9ca8 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -254,6 +254,31 @@ but don't want to go all out and profile your code.") "Benchmark-Timer-" version)) (license gpl2))) +(define-public perl-bit-vector + (package + (name "perl-bit-vector") + (version "7.4") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/S/ST/STBEY/" + "Bit-Vector-" version ".tar.gz")) + (sha256 + (base32 + "09m96p8c0ipgz42li2ywdgy0vxb57mb5nf59j9gw7yzc3xkslv9w")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-carp-clan" ,perl-carp-clan))) + (home-page "http://search.cpan.org/dist/Bit-Vector") + (synopsis "Bit vector library") + (description "Bit::Vector is an efficient C library which allows you to +handle bit vectors, sets (of integers), \"big integer arithmetic\" and boolean +matrices, all of arbitrary sizes. The package also includes an +object-oriented Perl module for accessing the C library from Perl, and +optionally features overloaded operators for maximum ease of use. The C +library can nevertheless be used stand-alone, without Perl.") + (license (list (package-license perl) lgpl2.0+)))) + (define-public perl-boolean (package (name "perl-boolean") -- cgit v1.2.3 From 59f423214e2cff50ca7cdecebc70dc783286d3cc Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 23:29:03 -0500 Subject: gnu: Add Date-Calc. * gnu/packages/perl.scm (perl-date-calc, perl-date-calc-xs): New variables. --- gnu/packages/perl.scm | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 56cb2d9ca8..432a11af76 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1179,6 +1179,53 @@ support for per-object behavior, circular structures, visiting tied structures, and all ref types (hashes, arrays, scalars, code, globs).") (license (package-license perl)))) +(define-public perl-date-calc + (package + (name "perl-date-calc") + (version "6.4") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/S/ST/STBEY/" + "Date-Calc-" version ".tar.gz")) + (sha256 + (base32 + "1barz0jgdaan3jm7ciphs5n3ahwkl42imprs3y8c1dwpwyr3gqbw")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-bit-vector" ,perl-bit-vector) + ("perl-carp-clan" ,perl-carp-clan))) + (home-page "http://search.cpan.org/dist/Date-Calc") + (synopsis "Gregorian calendar date calculations") + (description "This package consists of a Perl module for date calculations +based on the Gregorian calendar, thereby complying with all relevant norms and +standards: ISO/R 2015-1971, DIN 1355 and, to some extent, ISO 8601 (where +applicable).") + (license (package-license perl)))) + +(define-public perl-date-calc-xs + (package + (name "perl-date-calc-xs") + (version "6.4") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/S/ST/STBEY/" + "Date-Calc-XS-" version ".tar.gz")) + (sha256 + (base32 + "1cssi9rmd31cgaafgp4m70jqbm1mgh3aphxsxz1dwdz8h283n6jz")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-bit-vector" ,perl-bit-vector) + ("perl-carp-clan" ,perl-carp-clan) + ("perl-date-calc" ,perl-date-calc))) + (home-page "http://search.cpan.org/dist/Date-Calc-XS") + (synopsis "XS wrapper for Date::Calc") + (description "Date::Calc::XS is an XS wrapper and C library plug-in for +Date::Calc.") + (license (list (package-license perl) lgpl2.0+)))) + (define-public perl-datetime (package (name "perl-datetime") -- cgit v1.2.3 From 55069500a291a42278286bf7509ef6423601110a Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 23:30:00 -0500 Subject: gnu: Add Module-Util. * gnu/packages/perl.scm (perl-module-util): New variable. --- gnu/packages/perl.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 432a11af76..db45532603 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -2764,6 +2764,29 @@ from Moose::Conflicts and moose-outdated.") programs for dependencies.") (license (package-license perl)))) +(define-public perl-module-util + (package + (name "perl-module-util") + (version "1.09") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/M/MA/MATTLAW/" + "Module-Util-" version ".tar.gz")) + (sha256 + (base32 + "1ip2yg3x517gg8c48crhd52ba864vmyimvm0ibn4ci068mmcpyvc")))) + (build-system perl-build-system) + (native-inputs + `(("perl-module-build" ,perl-module-build))) ; >= 0.40 + (home-page "http://search.cpan.org/dist/Module-Util") + (synopsis "Module name tools and transformations") + (description "This module provides a few useful functions for manipulating +module names. Its main aim is to centralise some of the functions commonly +used by modules that manipulate other modules in some way, like converting +module names to relative paths.") + (license (package-license perl)))) + (define-public perl-moo (package (name "perl-moo") -- cgit v1.2.3 From 69d2261f77afac7a82757514e2560c20b71f9790 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 23:30:48 -0500 Subject: gnu: Add DateTime-Format-Natural. * gnu/packages/perl.scm (perl-datetime-format-natural): New variable. --- gnu/packages/perl.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index db45532603..f94b2f2fad 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1402,6 +1402,38 @@ formats, as defined in RFC 2445. It can be used to parse these formats in order to create the appropriate objects.") (license (package-license perl)))) +(define-public perl-datetime-format-natural + (package + (name "perl-datetime-format-natural") + (version "1.02") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/S/SC/SCHUBIGER/" + "DateTime-Format-Natural-" version ".tar.gz")) + (sha256 + (base32 + "1qq3adq1y08d0jlmwk9059s5d39hb26f3zjag099gjjyvs5c8yal")))) + (build-system perl-build-system) + (native-inputs + `(("perl-module-util" ,perl-module-util) + ("perl-test-mocktime" ,perl-test-mocktime))) + (propagated-inputs + `(("perl-boolean" ,perl-boolean) + ("perl-clone" ,perl-clone) + ("perl-date-calc" ,perl-date-calc) + ("perl-date-calc-xs" ,perl-date-calc-xs) + ("perl-datetime" ,perl-datetime) + ("perl-datetime-timezone" ,perl-datetime-timezone) + ("perl-list-moreutils" ,perl-list-moreutils) + ("perl-params-validate" ,perl-params-validate))) + (home-page "http://search.cpan.org/dist/DateTime-Format-Natural") + (synopsis "Machine-readable date/time with natural parsing") + (description "DateTime::Format::Natural takes a string with a human +readable date/time and creates a machine readable one by applying natural +parsing logic.") + (license (package-license perl)))) + (define-public perl-datetime-format-strptime (package (name "perl-datetime-format-strptime") -- cgit v1.2.3 From ef96132220b3b0027afc29154c5c1d49be8a0dd5 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 23:33:09 -0500 Subject: gnu: Add DateTimeX-Easy. * gnu/packages/perl.scm (perl-datetimex-easy): New variable. --- gnu/packages/perl.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index f94b2f2fad..be4f7949a2 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1514,6 +1514,34 @@ through a DateTime object, and most users will not need to directly use DateTime::TimeZone methods.") (license (package-license perl)))) +(define-public perl-datetimex-easy + (package + (name "perl-datetimex-easy") + (version "0.089") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/R/RO/ROKR/" + "DateTimeX-Easy-" version ".tar.gz")) + (sha256 + (base32 + "0ybs9175h4s39x8a23ap129cgqwmy6w7psa86194jq5cww1d5rhp")))) + (build-system perl-build-system) + (native-inputs + `(("perl-test-most" ,perl-test-most))) + (propagated-inputs + `(("perl-datetime" ,perl-datetime) + ("perl-datetime-format-flexible" ,perl-datetime-format-flexible) + ("perl-datetime-format-ical" ,perl-datetime-format-ical) + ("perl-datetime-format-natural" ,perl-datetime-format-natural) + ("perl-timedate" ,perl-timedate))) + (home-page "http://search.cpan.org/dist/DateTimeX-Easy") + (synopsis "Parse date/time strings") + (description "DateTimeX::Easy uses a variety of DateTime::Format packages +to create DateTime objects, with some custom tweaks to smooth out the rough +edges (mainly concerning timezone detection and selection).") + (license (package-license perl)))) + (define-public perl-devel-caller (package (name "perl-devel-caller") -- cgit v1.2.3 From 3e7a86cdc5fddebaa882986e29b797c37b6bc66e Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 23:34:39 -0500 Subject: gnu: Add MooseX-Types-DateTime. * gnu/packages/perl.scm (perl-moosex-types-datetime): New variable. --- gnu/packages/perl.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index be4f7949a2..b3b6061c7c 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -3307,6 +3307,37 @@ behind the scenes it namespaces all your type declarations, effectively prevent name clashes between packages.") (license (package-license perl)))) +(define-public perl-moosex-types-datetime + (package + (name "perl-moosex-types-datetime") + (version "0.10") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/" + "MooseX-Types-DateTime-" version ".tar.gz")) + (sha256 + (base32 + "03p66rx0qj2p23n2i2rj7c7x41621jzzaxscrpg95mb3mqmravc0")))) + (build-system perl-build-system) + (native-inputs + `(("perl-module-build-tiny" ,perl-module-build-tiny) + ("perl-moose" ,perl-moose) + ("perl-test-fatal" ,perl-test-fatal) + ("perl-test-simple" ,perl-test-simple))) + (propagated-inputs + `(("perl-datetime" ,perl-datetime) + ("perl-datetime-locale" ,perl-datetime-locale) + ("perl-datetime-timezone" ,perl-datetime-timezone) + ("perl-moose" ,perl-moose) + ("perl-moosex-types" ,perl-moosex-types) + ("perl-namespace-clean" ,perl-namespace-clean))) + (home-page "http://search.cpan.org/dist/MooseX-Types-DateTime") + (synopsis "DateTime related constraints and coercions for Moose") + (description "This module packages several Moose::Util::TypeConstraints +with coercions, designed to work with the DateTime suite of objects.") + (license (package-license perl)))) + (define-public perl-moosex-types-loadableclass (package (name "perl-moosex-types-loadableclass") -- cgit v1.2.3 From 7300092693fa048bdd38a59ed84a505b0030e4bc Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 23:47:53 -0500 Subject: gnu: Add Devel-Symdump. * gnu/packages/perl.scm (perl-devel-symdump): New variable. --- gnu/packages/perl.scm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index b3b6061c7c..19a7550917 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1719,6 +1719,24 @@ Devel::StackTrace::WithLexicals, you even get to see the lexical variables of each stack frame.") (license (package-license perl)))) +(define-public perl-devel-symdump + (package + (name "perl-devel-symdump") + (version "2.14") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/A/AN/ANDK/" + "Devel-Symdump-" version ".tar.gz")) + (sha256 + (base32 + "1phyyxgxsymgzbjd524zlaavvay6vjw34af5zn9153qffqign54v")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Devel-Symdump") + (synopsis "Dump symbol names or the symbol table") + (description "Devel::Symdump provides access to the perl symbol table.") + (license (package-license perl)))) + (define-public perl-digest-hmac (package (name "perl-digest-hmac") -- cgit v1.2.3 From 29fda459a628dfdc7eddd73beb30bd30200c25d4 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 23:48:54 -0500 Subject: gnu: Add Pod-Coverage. * gnu/packages/perl.scm (perl-pod-coverage): New variable. --- gnu/packages/perl.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 19a7550917..92e947a6b5 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -3753,6 +3753,27 @@ up inheritance from those modules at the same time.") directory specifications in a cross-platform manner.") (license (package-license perl)))) +(define-public perl-pod-coverage + (package + (name "perl-pod-coverage") + (version "0.23") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/R/RC/RCLAMP/" + "Pod-Coverage-" version ".tar.gz")) + (sha256 + (base32 + "01xifj83dv492lxixijmg6va02rf3ydlxly0a9slmx22r6qa1drh")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-devel-symdump" ,perl-devel-symdump))) + (home-page "http://search.cpan.org/dist/Pod-Coverage") + (synopsis "Check for comprehensive documentation of a module") + (description "This module provides a mechanism for determining if the pod +for a given module is comprehensive.") + (license (package-license perl)))) + (define-public perl-posix-strftime-compiler (package (name "perl-posix-strftime-compiler") -- cgit v1.2.3 From bbe81cc0dd4b9b3aa4dded9ec7d08af5a2de33c5 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 23:49:52 -0500 Subject: gnu: Add Test-Pod-Coverage. * gnu/packages/perl.scm (perl-test-pod-coverage): New variable. --- gnu/packages/perl.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 92e947a6b5..b17557db7e 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -4634,6 +4634,27 @@ as flexible as possible to the tester.") Pod::Simple to do the heavy lifting.") (license (package-license perl)))) +(define-public perl-test-pod-coverage + (package + (name "perl-test-pod-coverage") + (version "1.10") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/" + "Test-Pod-Coverage-" version ".tar.gz")) + (sha256 + (base32 + "1m203mhgfilz7iqc8mxaw4lw02fz391mni3n25sfx7nryylwrja8")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-pod-coverage" ,perl-pod-coverage))) + (home-page "http://search.cpan.org/dist/Test-Pod-Coverage") + (synopsis "Check for pod coverage") + (description "This module adds a test to your Perl distribution which +checks for pod coverage of all appropriate files.") + (license artistic2.0))) + (define-public perl-test-requires (package (name "perl-test-requires") -- cgit v1.2.3 From a15145d93bc8d5fff92ffab56e3339d3377c6642 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 23:52:05 -0500 Subject: gnu: Add Time-Duration. * gnu/packages/perl.scm (perl-time-duration): New variable. --- gnu/packages/perl.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index b17557db7e..6cf478c35e 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -5107,6 +5107,28 @@ object it was given as it's first argument. This way side effects of calling $object->TIEHASH are avoided.") (license (package-license perl)))) +(define-public perl-time-duration + (package + (name "perl-time-duration") + (version "1.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/A/AV/AVIF/" + "Time-Duration-" version ".tar.gz")) + (sha256 + (base32 + "0klg33yzb7pr9ra76s6gj5k7nravqnw2lbh022x1xwlj92f43756")))) + (build-system perl-build-system) + (native-inputs + `(("perl-test-pod" ,perl-test-pod) + ("perl-test-pod-coverage" ,perl-test-pod-coverage))) + (home-page "http://search.cpan.org/dist/Time-Duration") + (synopsis "English expression of durations") + (description "This module provides functions for expressing durations in +rounded or exact terms.") + (license (package-license perl)))) + (define-public perl-time-local (package (name "perl-time-local") -- cgit v1.2.3 From 4f43da182bc0dadb7b421b82516f63e2cbf30c8a Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 23:52:52 -0500 Subject: gnu: Add Time-Duration-Parse. * gnu/packages/perl.scm (perl-time-duration-parse): New variable. --- gnu/packages/perl.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 6cf478c35e..65b2496694 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -5129,6 +5129,29 @@ $object->TIEHASH are avoided.") rounded or exact terms.") (license (package-license perl)))) +(define-public perl-time-duration-parse + (package + (name "perl-time-duration-parse") + (version "0.11") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/" + "Time-Duration-Parse-" version ".tar.gz")) + (sha256 + (base32 + "1yk4cqkldwzkfy9y9ngqrj7p7sbsrsfa26mrm8f70z5n5m8q31x0")))) + (build-system perl-build-system) + (native-inputs + `(("perl-time-duration" ,perl-time-duration))) + (propagated-inputs + `(("perl-exporter-lite" ,perl-exporter-lite))) + (home-page "http://search.cpan.org/dist/Time-Duration-Parse") + (synopsis "Parse time duration strings") + (description "Time::Duration::Parse is a module to parse human readable +duration strings like \"2 minutes\" and \"3 seconds\" to seconds.") + (license (package-license perl)))) + (define-public perl-time-local (package (name "perl-time-local") -- cgit v1.2.3 From d2401db9ff760344165775d2e69abf8cb4feba98 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 6 Apr 2015 23:54:20 -0500 Subject: gnu: Add MooseX-Types-DateTime-MoreCoercions. * gnu/packages/perl.scm (perl-moosex-types-datetime-morecoercions): New variable. --- gnu/packages/perl.scm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 65b2496694..2640fefd78 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -3356,6 +3356,40 @@ prevent name clashes between packages.") with coercions, designed to work with the DateTime suite of objects.") (license (package-license perl)))) +(define-public perl-moosex-types-datetime-morecoercions + (package + (name "perl-moosex-types-datetime-morecoercions") + (version "0.14") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/" + "MooseX-Types-DateTime-MoreCoercions-" + version ".tar.gz")) + (sha256 + (base32 + "0888ns6fmvpcj5vh86n8mra9anq8jak7gf0b1z5hvww4birki6dn")))) + (build-system perl-build-system) + (native-inputs + `(("perl-module-build-tiny" ,perl-module-build-tiny) + ("perl-test-fatal" ,perl-test-fatal) + ("perl-test-simple" ,perl-test-simple))) + (propagated-inputs + `(("perl-datetime" ,perl-datetime) + ("perl-datetimex-easy" ,perl-datetimex-easy) + ("perl-moose" ,perl-moose) + ("perl-moosex-types" ,perl-moosex-types) + ("perl-moosex-types-datetime" ,perl-moosex-types-datetime) + ("perl-namespace-clean" ,perl-namespace-clean) + ("perl-time-duration-parse" ,perl-time-duration-parse))) + (home-page + "http://search.cpan.org/dist/MooseX-Types-DateTime-MoreCoercions") + (synopsis "Extensions to MooseX::Types::DateTime") + (description "This module builds on MooseX::Types::DateTime to add +additional custom types and coercions. Since it builds on an existing type, +all coercions and constraints are inherited.") + (license (package-license perl)))) + (define-public perl-moosex-types-loadableclass (package (name "perl-moosex-types-loadableclass") -- cgit v1.2.3 From 257fa40b234de75c3c6ef3b57c1b19f989ee8101 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 00:07:17 -0500 Subject: gnu: Add Term-Encoding. * gnu/packages/perl.scm (perl-term-encoding): New variable. --- gnu/packages/perl.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 2640fefd78..d879b94b54 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -4306,6 +4306,25 @@ documents: HTML, XML, POD, PostScript, LaTeX, and so on.") processing in Perl code.") (license (list gpl3 artistic2.0)))) +(define-public perl-term-encoding + (package + (name "perl-term-encoding") + (version "0.02") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/" + "Term-Encoding-" version ".tar.gz")) + (sha256 + (base32 + "1k6g4q7snxggv5fdqnzw29al4mwbwg0hl0skzfnczh508qiyfx7j")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Term-Encoding") + (synopsis "Detect encoding of the current terminal") + (description "Term::Encoding is a simple module to detect the encoding of +the current terminal expects in various ways.") + (license (package-license perl)))) + (define-public perl-test-base (package (name "perl-test-base") -- cgit v1.2.3 From 56da2a1abda868da46e8c6e4436f0e96fd004797 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 15:28:58 -0500 Subject: gnu: Add IO-Interactive. * gnu/packages/perl.scm (perl-io-interactive): New variable. --- gnu/packages/perl.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index d879b94b54..600de6e3b7 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -2389,6 +2389,26 @@ dependencies for CPAN distributions. These dependencies get bundled into the inc directory within a distribution and are used by Makefile.PL or Build.PL.") (license asl2.0))) +(define-public perl-io-interactive + (package + (name "perl-io-interactive") + (version "0.0.6") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/B/BD/BDFOY/" + "IO-Interactive-" version ".tar.gz")) + (sha256 + (base32 + "1303q6rbcf2cag5z08pq3d1y91wls5q51jrpw4kh0l2bv75idh4w")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/IO-Interactive") + (synopsis "Utilities for interactive I/O") + (description "This module provides three utility subroutines that make it +easier to develop interactive applications: is_interactive(), interactive(), +and busy()") + (license (package-license perl)))) + (define-public perl-io-stringy (package (name "perl-io-stringy") -- cgit v1.2.3 From cd718b8201d00ef26fc49ea88a2a0a4c42358d7d Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 15:29:43 -0500 Subject: gnu: Add Class-MethodMaker. * gnu/packages/perl.scm (perl-class-methodmaker): New variable. --- gnu/packages/perl.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 600de6e3b7..38c6224b73 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -707,6 +707,26 @@ names, not Class::Name. For that, this module provides \"load_class Class::Load") (license artistic2.0))) +(define-public perl-class-methodmaker + (package + (name "perl-class-methodmaker") + (version "2.24") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/S/SC/SCHWIGON/" + "class-methodmaker/Class-MethodMaker-" + version ".tar.gz")) + (sha256 + (base32 + "0a03i4k3a33qqwhykhz5k437ld5mag2vq52vvsy03gbynb65ivsy")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Class-MethodMaker") + (synopsis "Create generic methods for OO Perl") + (description "This module solves the problem of having to continually +write accessor methods for your objects that perform standard tasks.") + (license (package-license perl)))) + (define-public perl-class-method-modifiers (package (name "perl-class-method-modifiers") -- cgit v1.2.3 From 70fe0008f7cd011f3f3c685c14341347f6bb5abe Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 15:30:18 -0500 Subject: gnu: Add TermReadKey. * gnu/packages/perl.scm (perl-term-readkey): New variable. --- gnu/packages/perl.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 38c6224b73..a4c666cc33 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -4365,6 +4365,28 @@ processing in Perl code.") the current terminal expects in various ways.") (license (package-license perl)))) +(define-public perl-term-readkey + (package + (name "perl-term-readkey") + (version "2.32") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/J/JS/JSTOWE/" + "TermReadKey-" version ".tar.gz")) + (sha256 + (base32 + "1y79w5cj98w0a1nqxjhmaw01p2hfhzfw340m2qxd11p6124hxfaq")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/TermReadKey") + (synopsis "Simple terminal control") + (description "This module, ReadKey, provides ioctl control for terminals +so the input modes can be changed (thus allowing reads of a single character +at a time), and also provides non-blocking reads of stdin, as well as several +other terminal related features, including retrieval/modification of the +screen size, and retrieval/modification of the control characters.") + (license (package-license perl)))) + (define-public perl-test-base (package (name "perl-test-base") -- cgit v1.2.3 From cc307bda85f410f14258723c65413daf95820e41 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 15:30:50 -0500 Subject: gnu: Add Term-ProgressBar. * gnu/packages/perl.scm (perl-term-progressbar): New variable. --- gnu/packages/perl.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index a4c666cc33..f37f962385 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -4365,6 +4365,32 @@ processing in Perl code.") the current terminal expects in various ways.") (license (package-license perl)))) +(define-public perl-term-progressbar + (package + (name "perl-term-progressbar") + (version "2.17") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/S/SZ/SZABGAB/" + "Term-ProgressBar-" version ".tar.gz")) + (sha256 + (base32 + "15pn42zf793dplpfnmawh7v7xc4qm38s1jhvn1agx4cafcn61q61")))) + (build-system perl-build-system) + (native-inputs + `(("perl-capture-tiny" ,perl-capture-tiny) + ("perl-test-exception" ,perl-test-exception))) + (propagated-inputs + `(("perl-class-methodmaker" ,perl-class-methodmaker) + ("perl-term-readkey" ,perl-term-readkey))) + (home-page "http://search.cpan.org/dist/Term-ProgressBar") + (synopsis "Progress meter on a standard terminal") + (description "Term::ProgressBar provides a simple progress bar on the +terminal, to let the user know that something is happening, roughly how much +stuff has been done, and maybe an estimate at how long remains.") + (license (package-license perl)))) + (define-public perl-term-readkey (package (name "perl-term-readkey") -- cgit v1.2.3 From f9671ab689b2743797e974a2260473543add7b3a Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 15:47:05 -0500 Subject: gnu: Add UNIVERSAL-can. * gnu/packages/perl.scm (perl-universal-can): New variable. --- gnu/packages/perl.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index f37f962385..ecda80a8d8 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -5443,6 +5443,25 @@ else.") common serialisation formats such as JSON or CBOR.") (license (package-license perl)))) +(define-public perl-universal-can + (package + (name "perl-universal-can") + (version "1.20140328") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/C/CH/CHROMATIC/" + "UNIVERSAL-can-" version ".tar.gz")) + (sha256 + (base32 + "03wr25zznbfn1g8zmmq3g6a6288xr30priwvm75y4vvqfkrajbaj")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/UNIVERSAL-can") + (synopsis "UNIVERSAL::can() reimplementation") + (description "This module attempts to work around people calling +UNIVERSAL::can() as a function, which it is not.") + (license (package-license perl)))) + (define-public perl-variable-magic (package (name "perl-variable-magic") -- cgit v1.2.3 From 7332618df3987785402d6d8f5931b172002804c6 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 15:47:32 -0500 Subject: gnu: Add UNIVERSAL-isa. * gnu/packages/perl.scm (perl-universal-isa): New variable. --- gnu/packages/perl.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index ecda80a8d8..15b7d9a50c 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -5462,6 +5462,27 @@ common serialisation formats such as JSON or CBOR.") UNIVERSAL::can() as a function, which it is not.") (license (package-license perl)))) +(define-public perl-universal-isa + (package + (name "perl-universal-isa") + (version "1.20140927") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/" + "UNIVERSAL-isa-" version ".tar.gz")) + (sha256 + (base32 + "0ryqk58nkzhdq26si7mh49h8wand1wlmyf4m78qgiyn8ib6989bb")))) + (build-system perl-build-system) + (native-inputs + `(("perl-module-build-tiny" ,perl-module-build-tiny))) + (home-page "http://search.cpan.org/dist/UNIVERSAL-isa") + (synopsis "UNIVERSAL::isa() reimplementation") + (description "This module attempts to recover from people calling +UNIVERSAL::isa as a function") + (license (package-license perl)))) + (define-public perl-variable-magic (package (name "perl-variable-magic") -- cgit v1.2.3 From 4dbac597ebd322ed1b3c851e3e657407a4b41f23 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 15:49:44 -0500 Subject: gnu: Add Test-MockObject. * gnu/packages/perl.scm (perl-test-mockobject): New variable. --- gnu/packages/perl.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 15b7d9a50c..efa94beab6 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -4659,6 +4659,34 @@ string comparison functions of Test::More, but which are more suitable when you test against long strings.") (license (package-license perl)))) +(define-public perl-test-mockobject + (package + (name "perl-test-mockobject") + (version "1.20140408") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/C/CH/CHROMATIC/" + "Test-MockObject-" version ".tar.gz")) + (sha256 + (base32 + "1anpf9l2wdriwaxw6pf76ghxkh4zm25n3wnhfqy1b439xqnhvzg5")))) + (build-system perl-build-system) + (native-inputs + `(("perl-test-exception" ,perl-test-exception) + ("perl-test-warn" ,perl-test-warn))) + (propagated-inputs + `(("perl-test-exception" ,perl-test-exception) + ("perl-test-warn" ,perl-test-warn) + ("perl-universal-can" ,perl-universal-can) + ("perl-universal-isa" ,perl-universal-isa))) + (home-page "http://search.cpan.org/dist/Test-MockObject") + (synopsis "Emulate troublesome interfaces in Perl") + (description "Test::MockObject allows you to create objects that conform +to particular interfaces with very little code. You don't have to reimplement +the behavior, just the input and the output.") + (license (package-license perl)))) + (define-public perl-test-mocktime (package (name "perl-test-mocktime") -- cgit v1.2.3 From 0d54bd259c63b0f5c54743cde5dd9812c8a8e3bd Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 15:52:22 -0500 Subject: gnu: Add Term-ProgressBar-Quiet. * gnu/packages/perl.scm (perl-term-progressbar-quiet): New variable. --- gnu/packages/perl.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index efa94beab6..b11b825c37 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -4391,6 +4391,31 @@ terminal, to let the user know that something is happening, roughly how much stuff has been done, and maybe an estimate at how long remains.") (license (package-license perl)))) +(define-public perl-term-progressbar-quiet + (package + (name "perl-term-progressbar-quiet") + (version "0.31") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/L/LB/LBROCARD/" + "Term-ProgressBar-Quiet-" version ".tar.gz")) + (sha256 + (base32 + "19l4476iinwz19vh360k3rss38m9gmkg633i5v9jkg48yn954rr5")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-io-interactive" ,perl-io-interactive) + ("perl-term-progressbar" ,perl-term-progressbar) + ("perl-test-mockobject" ,perl-test-mockobject))) + (home-page "http://search.cpan.org/dist/Term-ProgressBar-Quiet") + (synopsis "Progress meter if run interactively") + (description "Term::ProgressBar is a wonderful module for showing progress +bars on the terminal. This module acts very much like that module when it is +run interactively. However, when it is not run interactively (for example, as +a cron job) then it does not show the progress bar.") + (license (package-license perl)))) + (define-public perl-term-readkey (package (name "perl-term-readkey") -- cgit v1.2.3 From 0955342bf7bc0788c59cdbd4854ab5cb8fa9254a Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 15:56:51 -0500 Subject: gnu: Add Term-ProgressBar-Simple. * gnu/packages/perl.scm (perl-term-progressbar-simple): New variable. --- gnu/packages/perl.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index b11b825c37..b3442052c5 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -4416,6 +4416,27 @@ run interactively. However, when it is not run interactively (for example, as a cron job) then it does not show the progress bar.") (license (package-license perl)))) +(define-public perl-term-progressbar-simple + (package + (name "perl-term-progressbar-simple") + (version "0.03") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/E/EV/EVDB/" + "Term-ProgressBar-Simple-" version ".tar.gz")) + (sha256 + (base32 + "19kr6l2aflwv9yph5xishkpag038qb8wd4mkzb0x1psvgp3b63d2")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-term-progressbar-quiet" ,perl-term-progressbar-quiet))) + (home-page "http://search.cpan.org/dist/Term-ProgressBar-Simple") + (synopsis "Simple progress bars") + (description "Term::ProgressBar::Simple tells you how much work has been +done, how much is left to do, and estimate how long it will take.") + (license (package-license perl)))) + (define-public perl-term-readkey (package (name "perl-term-readkey") -- cgit v1.2.3 From b715dbac7b917e799e4d520ad6cfd99962d9fc02 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 16:38:15 -0500 Subject: gnu: Add XML-NamespaceSupport. * gnu/packages/xml.scm (perl-xml-namespacesupport): New variable. --- gnu/packages/xml.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index 173435d2a5..4f8cafdb71 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2013 Andreas Enge +;;; Copyright © 2015 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -178,6 +179,27 @@ given at XML::Parser creation time.") module.") (home-page "http://search.cpan.org/~kmacleod/libxml-perl/lib/XML/Parser/PerlSAX.pm"))) +(define-public perl-xml-namespacesupport + (package + (name "perl-xml-namespacesupport") + (version "1.11") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/P/PE/PERIGRIN/" + "XML-NamespaceSupport-" version ".tar.gz")) + (sha256 + (base32 + "1sklgcldl3w6gn706vx1cgz6pm4y5lfgsjxnfqyk20pilgq530bd")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/XML-NamespaceSupport") + (synopsis "XML namespace support class") + (description "This module offers a simple to process namespaced XML +names (unames) from within any application that may need them. It also helps +maintain a prefix to namespace URI map, and provides a number of basic +checks.") + (license (package-license perl)))) + (define-public perl-xml-simple (package (name "perl-xml-simple") -- cgit v1.2.3 From 1ed6d5bc86d3c30243855c3996b473e83ac8ba03 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 16:44:31 -0500 Subject: gnu: Add XML-SAX-Base. * gnu/packages/xml.scm (perl-xml-sax-base): New variable. --- gnu/packages/xml.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index 4f8cafdb71..e298369668 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -200,6 +200,28 @@ maintain a prefix to namespace URI map, and provides a number of basic checks.") (license (package-license perl)))) +(define-public perl-xml-sax-base + (package + (name "perl-xml-sax-base") + (version "1.08") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/G/GR/GRANTM/" + "XML-SAX-Base-" version ".tar.gz")) + (sha256 + (base32 + "17i161rq1ngjlk0c8vdkrkkc56y1pf51k1g54y28py0micqp0qk6")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/XML-SAX-Base") + (synopsis "Base class for SAX Drivers and Filters") + (description "This module has a very simple task - to be a base class for +PerlSAX drivers and filters. It's default behaviour is to pass the input +directly to the output unchanged. It can be useful to use this module as a +base class so you don't have to, for example, implement the characters() +callback.") + (license (package-license perl)))) + (define-public perl-xml-simple (package (name "perl-xml-simple") -- cgit v1.2.3 From 18b8bbb3043382e946b3d6bf6d4c464a5406e35e Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 16:54:44 -0500 Subject: gnu: Add XML-SAX; * gnu/packages/xml.scm (perl-xml-sax): New variable. --- gnu/packages/xml.scm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index e298369668..80f8582521 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -200,6 +200,40 @@ maintain a prefix to namespace URI map, and provides a number of basic checks.") (license (package-license perl)))) +(define-public perl-xml-sax + (package + (name "perl-xml-sax") + (version "0.99") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/G/GR/GRANTM/" + "XML-SAX-" version ".tar.gz")) + (sha256 + (base32 + "115dypb50w1l94y3iwihv5nkixbsv1cxiqkd93y4rk5n6s74pc1j")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-xml-namespacesupport" ,perl-xml-namespacesupport) + ("perl-xml-sax-base" ,perl-xml-sax-base))) + (arguments + `(#:phases (modify-phases %standard-phases + (add-before + install augment-path + ;; The install target tries to load the newly-installed + ;; XML::SAX module, but can't find it, so we need to tell + ;; perl where to look. + (lambda* (#:key outputs #:allow-other-keys) + (setenv "PERL5LIB" + (string-append (getenv "PERL5LIB") ":" + (assoc-ref outputs "out") + "/lib/perl5/site_perl"))))))) + (home-page "http://search.cpan.org/dist/XML-SAX") + (synopsis "Perl API for XML") + (description "XML::SAX consists of several framework classes for using and +building Perl SAX2 XML parsers, filters, and drivers.") + (license (package-license perl)))) + (define-public perl-xml-sax-base (package (name "perl-xml-sax-base") -- cgit v1.2.3 From 3dd6bee1f2eb79aba660742a81810641b8616766 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 17:00:13 -0500 Subject: gnu: Add XML-LibXML. * gnu/packages/xml.scm (perl-xml-libxml): New variable. --- gnu/packages/xml.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index 80f8582521..739f3fc384 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -179,6 +179,32 @@ given at XML::Parser creation time.") module.") (home-page "http://search.cpan.org/~kmacleod/libxml-perl/lib/XML/Parser/PerlSAX.pm"))) +(define-public perl-xml-libxml + (package + (name "perl-xml-libxml") + (version "2.0118") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/S/SH/SHLOMIF/" + "XML-LibXML-" version ".tar.gz")) + (sha256 + (base32 + "170c8dbk4p6jw9is0cria73021yp3hpmhb19p9j0zg2yxwkawr6c")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-xml-namespacesupport" ,perl-xml-namespacesupport) + ("perl-xml-sax" ,perl-xml-sax))) + (inputs + `(("libxml2" ,libxml2))) + (home-page "http://search.cpan.org/dist/XML-LibXML") + (synopsis "Perl interface to libxml2") + (description "This module implements a Perl interface to the libxml2 +library which provides interfaces for parsing and manipulating XML files. This +module allows Perl programmers to make use of the highly capable validating +XML parser and the high performance DOM implementation.") + (license (package-license perl)))) + (define-public perl-xml-namespacesupport (package (name "perl-xml-namespacesupport") -- cgit v1.2.3 From 38e62c81ee548c466bfa4310e6984485d64e2074 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 17:03:04 -0500 Subject: gnu: Add Perl Net-Amazon-S3. * gnu/packages/patches/perl-net-amazon-s3-moose-warning.patch: New patch. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/web.scm (perl-net-amazon-s3): New variable. --- gnu-system.am | 1 + .../patches/perl-net-amazon-s3-moose-warning.patch | 17 +++++++++ gnu/packages/web.scm | 44 ++++++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 gnu/packages/patches/perl-net-amazon-s3-moose-warning.patch diff --git a/gnu-system.am b/gnu-system.am index 7c4678c12b..beb8948d52 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -502,6 +502,7 @@ dist_patch_DATA = \ gnu/packages/patches/patchutils-xfail-gendiff-tests.patch \ gnu/packages/patches/pavucontrol-sigsegv.patch \ gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch \ + gnu/packages/patches/perl-net-amazon-s3-moose-warning.patch \ gnu/packages/patches/perl-no-sys-dirs.patch \ gnu/packages/patches/perl-tk-x11-discover.patch \ gnu/packages/patches/petsc-fix-threadcomm.patch \ diff --git a/gnu/packages/patches/perl-net-amazon-s3-moose-warning.patch b/gnu/packages/patches/perl-net-amazon-s3-moose-warning.patch new file mode 100644 index 0000000000..c6408d5251 --- /dev/null +++ b/gnu/packages/patches/perl-net-amazon-s3-moose-warning.patch @@ -0,0 +1,17 @@ +Patch borrowed from nixpkgs. Works around warning message produced by the +current version of Moose: + +"Passing a list of values to enum is deprecated. Enum values should be wrapped +in an arrayref." + +--- Net-Amazon-S3-0.60/lib/Net/Amazon/S3/Client/Object.pm 2015-04-15 16:18:47.226410022 -0500 ++++ Net-Amazon-S3-0.60/lib/Net/Amazon/S3/Client/Object.pm 2015-04-15 16:19:25.410408425 -0500 +@@ -19,7 +19,7 @@ + [ qw(private public-read public-read-write authenticated-read) ]; + + enum 'StorageClass' => +- qw(standard reduced_redundancy); ++ [ qw(standard reduced_redundancy) ]; + + has 'client' => + ( is => 'ro', isa => 'Net::Amazon::S3::Client', required => 1 ); diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 6de626968a..0c22562aa6 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -32,6 +32,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system perl) #:use-module (guix build-system cmake) + #:use-module (gnu packages) #:use-module (gnu packages apr) #:use-module (gnu packages asciidoc) #:use-module (gnu packages docbook) @@ -1979,6 +1980,49 @@ possibly-temporary error (like a DNS lookup timeout), it'll wait a few seconds and retry a few times.") (license (package-license perl)))) +(define-public perl-net-amazon-s3 + (package + (name "perl-net-amazon-s3") + (version "0.60") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/P/PF/PFIG/" + "Net-Amazon-S3-" version ".tar.gz")) + (sha256 + (base32 + "10dcsq4s2kc9cb1vccx17r187c81drirc3s1hbxh3rb8489kg2b2")) + (patches (list + (search-patch "perl-net-amazon-s3-moose-warning.patch"))))) + (build-system perl-build-system) + (native-inputs + `(("perl-libwww" ,perl-libwww) + ("perl-test-exception" ,perl-test-exception))) + (propagated-inputs + `(("perl-data-stream-bulk" ,perl-data-stream-bulk) + ("perl-datetime-format-http" ,perl-datetime-format-http) + ("perl-digest-hmac" ,perl-digest-hmac) + ("perl-digest-md5-file" ,perl-digest-md5-file) + ("perl-file-find-rule" ,perl-file-find-rule) + ("perl-http-date" ,perl-http-date) + ("perl-http-message" ,perl-http-message) + ("perl-lwp-useragent-determined" ,perl-lwp-useragent-determined) + ("perl-mime-types" ,perl-mime-types) + ("perl-moose" ,perl-moose) + ("perl-moosex-strictconstructor" ,perl-moosex-strictconstructor) + ("perl-moosex-types-datetime-morecoercions" + ,perl-moosex-types-datetime-morecoercions) + ("perl-path-class" ,perl-path-class) + ("perl-regexp-common" ,perl-regexp-common) + ("perl-term-encoding" ,perl-term-encoding) + ("perl-term-progressbar-simple" ,perl-term-progressbar-simple) + ("perl-uri" ,perl-uri) + ("perl-xml-libxml" ,perl-xml-libxml))) + (home-page "http://search.cpan.org/dist/Net-Amazon-S3") + (synopsis "Perl interface to Amazon S3") + (description "This module provides a Perlish interface to Amazon S3.") + (license (package-license perl)))) + (define-public perl-net-http (package (name "perl-net-http") -- cgit v1.2.3 From 8ce231287505dde4339258f3c93a5f409d843b76 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 17:12:16 -0500 Subject: gnu: Add Perl Readonly. * gnu/packages/perl.scm (perl-readonly): New variable. --- gnu/packages/perl.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index b3442052c5..afa2ba50aa 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -3891,6 +3891,27 @@ Module::Build project, but has been externalized here for general use.") "Probe-Perl-" version)) (license (package-license perl)))) +(define-public perl-readonly + (package + (name "perl-readonly") + (version "2.00") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/S/SA/SANKO/" + "Readonly-" version ".tar.gz")) + (sha256 + (base32 + "165zcf9lpijdpkx82za0g9rx8ckjnhipmcivdkyzshl8jmp1bl4v")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Readonly") + (synopsis "Create read-only scalars, arrays, hashes") + (description "This module provides a facility for creating non-modifiable +variables in Perl. This is useful for configuration files, headers, etc. It +can also be useful as a development and debugging tool for catching updates to +variables that should not be changed.") + (license (package-license perl)))) + (define-public perl-regexp-common (package (name "perl-regexp-common") -- cgit v1.2.3 From 718c89c1a1629f6e34770a5097f228b1de6798d7 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 17:16:16 -0500 Subject: gnu: Add SQL-Tokenizer. * gnu/packages/databases.scm (perl-sql-tokenizer): New variable. --- gnu/packages/databases.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index ccb21fa70c..fe87e23bec 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -621,6 +621,26 @@ structures you provide it, so that you don't have to modify your code every time your data changes") (license (package-license perl)))) +(define-public perl-sql-tokenizer + (package + (name "perl-sql-tokenizer") + (version "0.24") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/I/IZ/IZUT/" + "SQL-Tokenizer-" version ".tar.gz")) + (sha256 + (base32 + "1qa2dfbzdlr5qqdam9yn78z5w3al5r8577x06qan8wv58ay6ka7s")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/SQL-Tokenizer") + (synopsis "SQL tokenizer") + (description "SQL::Tokenizer is a tokenizer for SQL queries. It does not +claim to be a parser or query verifier. It just creates sane tokens from a +valid SQL query.") + (license (package-license perl)))) + (define-public unixodbc (package (name "unixodbc") -- cgit v1.2.3 From b4dcb026d6e4def401d71f39b5e219130f521967 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 7 Apr 2015 17:17:13 -0500 Subject: gnu: Add SQL-SplitStatement. * gnu/packages/databases.scm (perl-sql-splitstatement): New variable. --- gnu/packages/databases.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index fe87e23bec..9df4a14d26 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -621,6 +621,32 @@ structures you provide it, so that you don't have to modify your code every time your data changes") (license (package-license perl)))) +(define-public perl-sql-splitstatement + (package + (name "perl-sql-splitstatement") + (version "1.00020") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/E/EM/EMAZEP/" + "SQL-SplitStatement-" version ".tar.gz")) + (sha256 + (base32 + "0bqg45k4c9qkb2ypynlwhpvzsl4ssfagmsalys18s5c79ps30z7p")))) + (build-system perl-build-system) + (native-inputs + `(("perl-test-exception" ,perl-test-exception))) + (propagated-inputs + `(("perl-class-accessor" ,perl-class-accessor) + ("perl-list-moreutils" ,perl-list-moreutils) + ("perl-regexp-common" ,perl-regexp-common) + ("perl-sql-tokenizer" ,perl-sql-tokenizer))) + (home-page "http://search.cpan.org/dist/SQL-SplitStatement") + (synopsis "Split SQL code into atomic statements") + (description "This module tries to split any SQL code, even including +non-standard extensions, into the atomic statements it is composed of.") + (license (package-license perl)))) + (define-public perl-sql-tokenizer (package (name "perl-sql-tokenizer") -- cgit v1.2.3 From f21671f46950207d77a48ec0bd760a3161c15c03 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 8 Apr 2015 16:07:27 -0500 Subject: gnu: Add Set-Scalar. * gnu/packages/perl.scm (perl-set-scalar): New variable. --- gnu/packages/perl.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index afa2ba50aa..90b867a535 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -4021,6 +4021,27 @@ collector.") (description "Set::Infinite is a set theory module for infinite sets.") (license (package-license perl)))) +(define-public perl-set-scalar + (package + (name "perl-set-scalar") + (version "1.29") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/D/DA/DAVIDO/" + "Set-Scalar-" version ".tar.gz")) + (sha256 + (base32 + "07aiqkyi1p22drpcyrrmv7f8qq6fhrxh007achy2vryxyck1bp53")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Set-Scalar") + (synopsis "Set operations for Perl") + (description "The first priority of Set::Scalar is to be a convenient +interface to sets (as in: unordered colletions of Perl scalars.) While not +designed to be slow or big, neither has it been designed to be fast or +compact.") + (license (package-license perl)))) + (define-public perl-spiffy (package (name "perl-spiffy") -- cgit v1.2.3 From 7ae9557181d5d94a7ed707d4ae8a49d4f94a2156 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 8 Apr 2015 16:09:00 -0500 Subject: gnu: Add Text-Aligner. * gnu/packages/perl.scm (perl-text-aligner): New variable. --- gnu/packages/perl.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 90b867a535..cdfbbacf7e 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -5171,6 +5171,25 @@ generation of tests in nested combinations of contexts.") support.") (license (package-license perl)))) +(define-public perl-text-aligner + (package + (name "perl-text-aligner") + (version "0.12") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/S/SH/SHLOMIF/" + "Text-Aligner-" version ".tar.gz")) + (sha256 + (base32 + "0a6zkchc0apvzkch6z18cx6h97xfiv50r7n4xhg90x8dvk75qzcs")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Text-Aligner") + (synopsis "Align text") + (description "Text::Aligner exports a single function, align(), which is +used to justify strings to various alignment styles.") + (license x11))) + (define-public perl-text-balanced (package (name "perl-text-balanced") -- cgit v1.2.3 From 10ef803e7ddc742fcb39076eb8a60bacbf4c3d6a Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 8 Apr 2015 16:09:23 -0500 Subject: gnu: Add Text-Table. * gnu/packages/perl.scm (perl-text-table): New variable. --- gnu/packages/perl.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index cdfbbacf7e..2c2cead112 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -5291,6 +5291,26 @@ you want to do full file globbing use the File::Glob module instead.") (description "Text::SimpleTable draws simple ASCII tables.") (license artistic2.0))) +(define-public perl-text-table + (package + (name "perl-text-table") + (version "1.130") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/S/SH/SHLOMIF/" + "Text-Table-" version ".tar.gz")) + (sha256 + (base32 + "02c8v38k639r23dgxwgvsy4myjjzvgdb238kpiffsiz25ab3xp5j")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-text-aligner" ,perl-text-aligner))) + (home-page "http://search.cpan.org/dist/Text-Table") + (synopsis "Organize Data in Tables") + (description "Text::Table renders plaintext tables.") + (license x11))) + (define-public perl-text-unidecode (package (name "perl-text-unidecode") -- cgit v1.2.3 From 8ac84f230c85bcd8803bb994c801c1076bbfc7e3 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 8 Apr 2015 16:13:45 -0500 Subject: gnu: Add Sys-Hostname-Long. * gnu/packages/perl.scm (perl-sys-hostname-long): New variable. --- gnu/packages/perl.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 2c2cead112..26c193fe4e 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -4319,6 +4319,26 @@ clock speed.") "Sys-CPU-" version)) (license (package-license perl)))) +(define-public perl-sys-hostname-long + (package + (name "perl-sys-hostname-long") + (version "1.5") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/S/SC/SCOTT/" + "Sys-Hostname-Long-" version ".tar.gz")) + (sha256 + (base32 + "1jv5n8jv48c1p8svjsigyxndv1ygsq8wgwj9c7ypx1vaf3rns679")))) + (build-system perl-build-system) + (arguments `(#:tests? #f)) ;no `hostname' during build + (home-page "http://search.cpan.org/dist/Sys-Hostname-Long") + (synopsis "Get full hostname in Perl") + (description "Sys::Hostname::Long tries very hard to get the full hostname +of a system.") + (license (package-license perl)))) + (define-public perl-task-weaken (package (name "perl-task-weaken") -- cgit v1.2.3 From ae6904dc0b9d38175ff07cea845b58cd94492ead Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 15 Apr 2015 17:12:09 -0500 Subject: gnu: nix: Propagate perl inputs. * gnu/packages/package-management.scm (nix)[inputs]: Move perl-www-curl, perl-dbi, perl-dbd-sqlite to... [propagated-inputs]: ...this new field --- gnu/packages/package-management.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 9512fcd3b5..b056bd09e3 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -200,10 +200,10 @@ the Nix package manager.") ("openssl" ,openssl) ("libgc" ,libgc) ("sqlite" ,sqlite) - ("bzip2" ,bzip2) - ("perl-www-curl" ,perl-www-curl) - ("perl-dbi" ,perl-dbi) - ("perl-dbd-sqlite" ,perl-dbd-sqlite))) + ("bzip2" ,bzip2))) + (propagated-inputs `(("perl-www-curl" ,perl-www-curl) + ("perl-dbi" ,perl-dbi) + ("perl-dbd-sqlite" ,perl-dbd-sqlite))) (home-page "http://nixos.org/nix/") (synopsis "The Nix package manager") (description -- cgit v1.2.3 From 47945cf353de78bbdbf70f5095289bfa8aa62470 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Sun, 19 Apr 2015 09:37:35 -0500 Subject: import: cpan: Fix license string for Artistic license. * guix/import/cpan.scm (string->license): Remove extraneous "_0" suffix for Artistics licenses. --- guix/import/cpan.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guix/import/cpan.scm b/guix/import/cpan.scm index 37dd3b162c..c80d568101 100644 --- a/guix/import/cpan.scm +++ b/guix/import/cpan.scm @@ -49,8 +49,8 @@ ("agpl_3" 'agpl3) ;; apache_1_1 ("apache_2_0" 'asl2.0) - ;; artistic_1_0 - ("artistic_2_0" 'artistic2.0) + ;; artistic_1 + ("artistic_2" 'artistic2.0) ("bsd" 'bsd-3) ("freebsd" 'bsd-2) ;; gfdl_1_2 -- cgit v1.2.3 From 97b05abe6d85d5b3db89fe0c353d1ee901e4235e Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Sun, 19 Apr 2015 09:38:45 -0500 Subject: gnu: Add JSON-Any. * gnu/packages/perl.scm (perl-json-any): New variable. --- gnu/packages/perl.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 26c193fe4e..723b6d2d72 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -2563,6 +2563,35 @@ allowing data to be efficiently communicated between processes.") versa using either JSON::XS or JSON::PP.") (license (package-license perl)))) +(define-public perl-json-any + (package + (name "perl-json-any") + (version "1.38") + (source + (origin + (method url-fetch) + (uri (string-append "mirros://cpan/authors/id/E/ET/ETHER/" + "JSON-Any-" version ".tar.gz")) + (sha256 + (base32 + "0mk6shg82i7y852bvj5d0qqma1d9k0jh10k4mg62hbgr800gb2m4")))) + (build-system perl-build-system) + (native-inputs + `(("perl-test-fatal" ,perl-test-fatal) + ("perl-test-requires", perl-test-requires) + ("perl-test-warnings", perl-test-warnings) + ("perl-test-without-module", perl-test-without-module))) + (propagated-inputs + `(("perl-namespace-clean" ,perl-namespace-clean))) + (home-page "http://search.cpan.org/dist/JSON-Any") + (synopsis "Wrapper for Perl JSON classes") + (description + "This module tries to provide a coherent API to bring together the +various JSON modules currently on CPAN. This module will allow you to code to +any JSON API and have it work regardless of which JSON module is actually +installed.") + (license (package-license perl)))) + (define-public perl-json-maybexs (package (name "perl-json-maybexs") -- cgit v1.2.3 From 61c21ad31994954c6c4467353afd1960ae0573a1 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 19 Apr 2015 17:58:49 +0800 Subject: gnu: Add WebKitGTK+. * gnu/packages/webkit.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/webkit.scm | 105 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 gnu/packages/webkit.scm diff --git a/gnu-system.am b/gnu-system.am index beb8948d52..b11706cb99 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -302,6 +302,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/w3m.scm \ gnu/packages/wdiff.scm \ gnu/packages/web.scm \ + gnu/packages/webkit.scm \ gnu/packages/weechat.scm \ gnu/packages/wget.scm \ gnu/packages/wicd.scm \ diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm new file mode 100644 index 0000000000..e6de8ab0df --- /dev/null +++ b/gnu/packages/webkit.scm @@ -0,0 +1,105 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Sou Bunnbu +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages webkit) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system cmake) + #:use-module (gnu packages bison) + #:use-module (gnu packages databases) + #:use-module (gnu packages enchant) + #:use-module (gnu packages gettext) + #:use-module (gnu packages gl) + #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) + #:use-module (gnu packages gnutls) + #:use-module (gnu packages gperf) + #:use-module (gnu packages gstreamer) + #:use-module (gnu packages gtk) + #:use-module (gnu packages icu4c) + #:use-module (gnu packages image) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages ruby) + #:use-module (gnu packages video) + #:use-module (gnu packages xml) + #:use-module (gnu packages xorg)) + +(define-public webkitgtk + (package + (name "webkitgtk") + (version "2.8.1") + (source (origin + (method url-fetch) + (uri (string-append "http://www.webkitgtk.org/releases/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1zv030ryfwwp57yzlpr9bgpxcmc64izsxk2vsyd4kjhns9cl88bx")))) + (build-system cmake-build-system) + (arguments + '(#:tests? #f ; no tests + #:build-type "Release" ; turn off debugging symbols to save space + #:configure-flags '("-DPORT=GTK"))) + (native-inputs + `(("bison" ,bison) + ("gettext" ,gnu-gettext) + ("glib:bin" ,glib "bin") ; for glib-mkenums, etc. + ("gobject-introspection" ,gobject-introspection) + ("gperf" ,gperf) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python-2) ; incompatible with Python 3 (print syntax) + ("ruby" ,ruby))) + (propagated-inputs + `(("gtk+" ,gtk+) + ("libsoup" ,libsoup))) + (inputs + `(("at-spi2-core" ,at-spi2-core) + ("enchant" ,enchant) + ("geoclue" ,geoclue) + ("gnutls" ,gnutls) + ("gst-plugins-base" ,gst-plugins-base) + ("gtk+-2" ,gtk+-2) + ("harfbuzz" ,harfbuzz) + ("icu4c" ,icu4c) + ("libjpeg" ,libjpeg) + ("libnotify" ,libnotify) + ("libpng" ,libpng) + ("libsecret" ,libsecret) + ("libwebp" ,libwebp) + ("libxcomposite" ,libxcomposite) + ("libxml2" ,libxml2) + ("libxslt" ,libxslt) + ("libxt" ,libxt) + ("mesa" ,mesa) + ("sqlite" ,sqlite))) + (home-page "http://www.webkitgtk.org/") + (synopsis "Web content engine for GTK+") + (description + "WebKitGTK+ is a full-featured port of the WebKit rendering engine, +suitable for projects requiring any kind of web integration, from hybrid +HTML/CSS applications to full-fledged web browsers.") + ;; WebKit's JavaScriptCore and WebCore components are available under + ;; the GNU LGPL, while the rest is available under a BSD-style license. + (license (list license:lgpl2.0 + license:lgpl2.1+ + license:bsd-2 + license:bsd-3)))) -- cgit v1.2.3 From 40b084a32679a59061f736b8f199f86eda42fd1f Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Sun, 19 Apr 2015 21:37:28 -0500 Subject: gnu: Adjust latest perl modules to new 'modify-phases' syntax. * gnu/packages/compression.scm (perl-compress-raw-zlib)[arguments]: Add missing quotes, as needed since commit f8503e2. * gnu/packages/perl.scm (perl-ipc-run)[arguments]: Likewise. * gnu/packages/xml.scm (perl-xml-sax)[arguments]: Likewise. --- gnu/packages/compression.scm | 2 +- gnu/packages/perl.scm | 2 +- gnu/packages/xml.scm | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 234ea338a1..4684fce130 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -385,7 +385,7 @@ compression library.") (arguments `(#:phases (modify-phases %standard-phases (add-before - configure configure-zlib + 'configure 'configure-zlib (lambda* (#:key inputs #:allow-other-keys) (call-with-output-file "config.in" (lambda (port) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 723b6d2d72..e55eb8791d 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -2486,7 +2486,7 @@ pseudo ttys.") (arguments `(#:phases (modify-phases %standard-phases (add-before - check disable-w32-test + 'check 'disable-w32-test (lambda _ ;; This test fails, and we're not really interested in ;; it, so disable it. diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index 739f3fc384..d30c40ce1a 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -245,7 +245,7 @@ checks.") (arguments `(#:phases (modify-phases %standard-phases (add-before - install augment-path + 'install 'augment-path ;; The install target tries to load the newly-installed ;; XML::SAX module, but can't find it, so we need to tell ;; perl where to look. -- cgit v1.2.3 From 85c37e29a47b3c01db014fdbffc8f45905628903 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 15 Apr 2015 17:46:35 +0200 Subject: gnu: Add Biopython. * gnu/packages/bioinformatics.scm (python-biopython, python2-biopython): New variables. --- gnu/packages/bioinformatics.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index b1258220b4..551da4eafc 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -185,6 +185,39 @@ pybedtools extends BEDTools by offering feature-level manipulations from with Python.") (license license:gpl2+))) +(define-public python-biopython + (package + (name "python-biopython") + (version "1.65") + (source (origin + (method url-fetch) + (uri (string-append + "http://biopython.org/DIST/biopython-" + version ".tar.gz")) + (sha256 + (base32 + "13m8s9jkrw40zvdp1rl709n6lmgdh4f52aann7gzr6sfp0fwhg26")))) + (build-system python-build-system) + (inputs + `(("python-numpy" ,python-numpy))) + (native-inputs + `(("python-setuptools" ,python2-setuptools))) + (home-page "http://biopython.org/") + (synopsis "Tools for biological computation in Python") + (description + "Biopython is a set of tools for biological computation including parsers +for bioinformatics files into Python data structures; interfaces to common +bioinformatics programs; a standard sequence class and tools for performing +common operations on them; code to perform data classification; code for +dealing with alignments; code making it easy to split up parallelizable tasks +into separate processes; and more.") + (license (license:non-copyleft "http://www.biopython.org/DIST/LICENSE")))) + +(define-public python2-biopython + (package (inherit (package-with-python2 python-biopython)) + (inputs + `(("python2-numpy" ,python2-numpy))))) + (define-public bowtie (package (name "bowtie") -- cgit v1.2.3 From 282c5087b4be022b832cf73f43942bca924c3006 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 14 Apr 2015 14:23:19 +0200 Subject: gnu: Add NGS SDK. * gnu/packages/bioinformatics.scm (ngs-sdk): New variable. --- gnu/packages/bioinformatics.scm | 56 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 551da4eafc..b5c557bb95 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -1031,6 +1031,62 @@ variant calling (in conjunction with bcftools), and a simple alignment viewer.") (license license:expat))) +(define-public ngs-sdk + (package + (name "ngs-sdk") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri + (string-append "https://github.com/ncbi/ngs/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "09fakv9w87lfg9g70kwzmnryqdjj1sz2c7kw01i6drjf787gkjhw")))) + (build-system gnu-build-system) + (arguments + `(#:parallel-build? #f ; not supported + #:tests? #f ; no "check" target + #:phases + (alist-replace + 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; Only replace the version suffix, not the version number in the + ;; directory name; fixed in commit 46d4509fa8 (no release yet). + (substitute* "setup/konfigure.perl" + (((string-append "\\$\\(subst " + "(\\$\\(VERSION[^\\)]*\\))," + "(\\$\\([^\\)]+\\))," + "(\\$\\([^\\)]+\\)|\\$\\@)" + "\\)") + _ pattern replacement target) + (string-append "$(patsubst " + "%" pattern "," + "%" replacement "," + target ")"))) + + ;; The 'configure' script doesn't recognize things like + ;; '--enable-fast-install'. + (zero? (system* "./configure" + (string-append "--build-prefix=" (getcwd) "/build") + (string-append "--prefix=" out))))) + (alist-cons-after + 'unpack 'enter-dir + (lambda _ (chdir "ngs-sdk") #t) + %standard-phases)))) + (native-inputs `(("perl" ,perl))) + (home-page "https://github.com/ncbi/ngs") + (synopsis "API for accessing Next Generation Sequencing data") + (description + "NGS is a domain-specific API for accessing reads, alignments and pileups +produced from Next Generation Sequencing. The API itself is independent from +any particular back-end implementation, and supports use of multiple back-ends +simultaneously.") + (license license:public-domain))) + (define-public seqan (package (name "seqan") -- cgit v1.2.3 From 2651a5e6952785347f35f337b2cb65568d73d080 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 14 Apr 2015 14:24:01 +0200 Subject: gnu: Add NGS Java bindings. * gnu/packages/bioinformatics.scm (ngs-java): New variable. --- gnu/packages/bioinformatics.scm | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index b5c557bb95..4c4eedba2b 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -1087,6 +1087,42 @@ any particular back-end implementation, and supports use of multiple back-ends simultaneously.") (license license:public-domain))) +(define-public ngs-java + (package (inherit ngs-sdk) + (name "ngs-java") + (arguments + `(,@(substitute-keyword-arguments + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1) + (srfi srfi-26)) + ,@(package-arguments ngs-sdk)) + ((#:phases phases) + `(alist-cons-after + 'enter-dir 'fix-java-symlink-installation + (lambda _ + ;; Only replace the version suffix, not the version number in + ;; the directory name. Reported here: + ;; https://github.com/ncbi/ngs/pull/4 + (substitute* "Makefile.java" + (((string-append "\\$\\(subst " + "(\\$\\(VERSION[^\\)]*\\))," + "(\\$\\([^\\)]+\\))," + "(\\$\\([^\\)]+\\)|\\$\\@)" + "\\)") + _ pattern replacement target) + (string-append "$(patsubst " + "%" pattern "," + "%" replacement "," + target ")")))) + (alist-replace + 'enter-dir (lambda _ (chdir "ngs-java") #t) + ,phases)))))) + (inputs + `(("jdk" ,icedtea6 "jdk") + ("ngs-sdk" ,ngs-sdk))) + (synopsis "Java bindings for NGS SDK"))) + (define-public seqan (package (name "seqan") -- cgit v1.2.3 From 75dd2424806b1ceb6d2a01732e7474b8a3c1d0e3 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 14 Apr 2015 14:42:49 +0200 Subject: gnu: Add NCBI VDB. * gnu/packages/bioinformatics.scm (ncbi-vdb): New variable. --- gnu/packages/bioinformatics.scm | 96 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 4c4eedba2b..f2f4355d87 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -29,6 +29,7 @@ #:use-module (gnu packages) #:use-module (gnu packages base) #:use-module (gnu packages compression) + #:use-module (gnu packages file) #:use-module (gnu packages java) #:use-module (gnu packages maths) #:use-module (gnu packages ncurses) @@ -1123,6 +1124,101 @@ simultaneously.") ("ngs-sdk" ,ngs-sdk))) (synopsis "Java bindings for NGS SDK"))) +(define-public ncbi-vdb + (package + (name "ncbi-vdb") + (version "2.4.5-5") + (source + (origin + (method url-fetch) + (uri + (string-append "https://github.com/ncbi/ncbi-vdb/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1cj8nk6if8sqagv20vx36v566fdvhcaadf0x1ycnbgql6chbs6vy")))) + (build-system gnu-build-system) + (arguments + `(#:parallel-build? #f ; not supported + #:tests? #f ; no "check" target + #:phases + (alist-replace + 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; Only replace the version suffix, not the version number in the + ;; directory name; fixed in commit 4dbba5c6a809 (no release yet). + (substitute* "setup/konfigure.perl" + (((string-append "\\$\\(subst " + "(\\$\\(VERSION[^\\)]*\\))," + "(\\$\\([^\\)]+\\))," + "(\\$\\([^\\)]+\\)|\\$\\@)" + "\\)") + _ pattern replacement target) + (string-append "$(patsubst " + "%" pattern "," + "%" replacement "," + target ")"))) + + ;; Override include path for libmagic + (substitute* "setup/package.prl" + (("name => 'magic', Include => '/usr/include'") + (string-append "name=> 'magic', Include => '" + (assoc-ref inputs "libmagic") + "/include" "'"))) + + ;; Install kdf5 library (needed by sra-tools) + (substitute* "build/Makefile.install" + (("LIBRARIES_TO_INSTALL =") + "LIBRARIES_TO_INSTALL = kdf5.$(VERSION_LIBX) kdf5.$(VERSION_SHLX)")) + + ;; The 'configure' script doesn't recognize things like + ;; '--enable-fast-install'. + (zero? (system* + "./configure" + (string-append "--build-prefix=" (getcwd) "/build") + (string-append "--prefix=" (assoc-ref outputs "out")) + (string-append "--debug") + (string-append "--with-xml2-prefix=" + (assoc-ref inputs "libxml2")) + (string-append "--with-ngs-sdk-prefix=" + (assoc-ref inputs "ngs-sdk")) + (string-append "--with-ngs-java-prefix=" + (assoc-ref inputs "ngs-java")) + (string-append "--with-hdf5-prefix=" + (assoc-ref inputs "hdf5")))))) + (alist-cons-after + 'install 'install-interfaces + (lambda* (#:key system outputs #:allow-other-keys) + ;; Install interface libraries + (mkdir (string-append (assoc-ref outputs "out") "/ilib")) + (copy-recursively (string-append "build/ncbi-vdb/linux/gcc/" + (car (string-split system #\-)) + "/rel/ilib") + (string-append (assoc-ref outputs "out") + "/ilib")) + ;; Install interface headers + (copy-recursively "interfaces" + (string-append (assoc-ref outputs "out") + "/include"))) + %standard-phases)))) + (inputs + `(("libxml2" ,libxml2) + ("ngs-sdk" ,ngs-sdk) + ("ngs-java" ,ngs-java) + ("libmagic" ,file) + ("hdf5" ,hdf5))) + (native-inputs `(("perl" ,perl))) + (home-page "https://github.com/ncbi/ncbi-vdb") + (synopsis "Database engine for genetic information") + (description + "The NCBI-VDB library implements a highly compressed columnar data +warehousing engine that is most often used to store genetic information. +Databases are stored in a portable image within the file system, and can be +accessed/downloaded on demand across HTTP.") + (license license:public-domain))) + (define-public seqan (package (name "seqan") -- cgit v1.2.3 From 51c649992e82c9028624ada89d91fdd63bafa81c Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 14 Apr 2015 14:43:32 +0200 Subject: gnu: Add sra-tools. * gnu/packages/bioinformatics.scm (sra-tools): New variable. --- gnu/packages/bioinformatics.scm | 76 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index f2f4355d87..4fd9459350 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -31,6 +31,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages file) #:use-module (gnu packages java) + #:use-module (gnu packages linux) #:use-module (gnu packages maths) #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) @@ -1219,6 +1220,81 @@ Databases are stored in a portable image within the file system, and can be accessed/downloaded on demand across HTTP.") (license license:public-domain))) +(define-public sra-tools + (package + (name "sra-tools") + (version "2.4.5-5") + (source + (origin + (method url-fetch) + (uri + (string-append "https://github.com/ncbi/sra-tools/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "11nrnvz7a012f4iryf0wiwrid0h111grsfxbxa9j51h3f2xbvgns")))) + (build-system gnu-build-system) + (arguments + `(#:parallel-build? #f ; not supported + #:tests? #f ; no "check" target + #:phases + (alist-replace + 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; The build system expects a directory containing the sources and + ;; raw build output of ncbi-vdb, including files that are not + ;; installed. Since we are building against an installed version of + ;; ncbi-vdb, the following modifications are needed. + (substitute* "setup/konfigure.perl" + ;; Make the configure script look for the "ilib" directory of + ;; "ncbi-vdb" without first checking for the existence of a + ;; matching library in its "lib" directory. + (("^ my \\$f = File::Spec->catdir\\(\\$libdir, \\$lib\\);") + "my $f = File::Spec->catdir($ilibdir, $ilib);") + ;; Look for interface libraries in ncbi-vdb's "ilib" directory. + (("my \\$ilibdir = File::Spec->catdir\\(\\$builddir, 'ilib'\\);") + "my $ilibdir = File::Spec->catdir($dir, 'ilib');")) + + ;; The 'configure' script doesn't recognize things like + ;; '--enable-fast-install'. + (zero? (system* + "./configure" + (string-append "--build-prefix=" (getcwd) "/build") + (string-append "--prefix=" (assoc-ref outputs "out")) + (string-append "--debug") + (string-append "--with-fuse-prefix=" + (assoc-ref inputs "fuse")) + (string-append "--with-magic-prefix=" + (assoc-ref inputs "libmagic")) + ;; TODO: building with libxml2 fails with linker errors + ;; (string-append "--with-xml2-prefix=" + ;; (assoc-ref inputs "libxml2")) + (string-append "--with-ncbi-vdb-sources=" + (assoc-ref inputs "ncbi-vdb")) + (string-append "--with-ncbi-vdb-build=" + (assoc-ref inputs "ncbi-vdb")) + (string-append "--with-ngs-sdk-prefix=" + (assoc-ref inputs "ngs-sdk")) + (string-append "--with-hdf5-prefix=" + (assoc-ref inputs "hdf5"))))) + %standard-phases))) + (native-inputs `(("perl" ,perl))) + (inputs + `(("ngs-sdk" ,ngs-sdk) + ("ncbi-vdb" ,ncbi-vdb) + ("libmagic" ,file) + ("fuse" ,fuse) + ("hdf5" ,hdf5) + ("zlib" ,zlib))) + (home-page "http://www.ncbi.nlm.nih.gov/Traces/sra/sra.cgi?view=software") + (synopsis "Tools and libraries for reading and writing sequencing data") + (description + "The SRA Toolkit from NCBI is a collection of tools and libraries for +reading of sequencing files from the Sequence Read Archive (SRA) database and +writing files into the .sra format.") + (license license:public-domain))) + (define-public seqan (package (name "seqan") -- cgit v1.2.3 From c568191a9306cb58a718860ca5b8768e91627ab0 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 20 Apr 2015 10:20:17 +0200 Subject: profiles: Create a CA certificate bundle only when it would be non-empty. * guix/profiles.scm (ca-certificate-bundle): Create $output/etc/ssl/certs if and only if CA-FILES is non-empty. --- guix/profiles.scm | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/guix/profiles.scm b/guix/profiles.scm index 620feff97e..4bb309305b 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -466,7 +466,8 @@ MANIFEST. Single-file bundles are required by programs such as Git and Lynx." (rnrs io ports) (srfi srfi-1) (srfi srfi-26) - (ice-9 ftw)) + (ice-9 ftw) + (ice-9 match)) (define (pem-file? file) (string-suffix? ".pem" file)) @@ -492,13 +493,21 @@ MANIFEST. Single-file bundles are required by programs such as Git and Lynx." (setenv "LOCPATH" (string-append #+glibc-utf8-locales "/lib/locale")) (setlocale LC_ALL "en_US.UTF-8") - (let ((ca-files (append-map ca-files - '#$(manifest-inputs manifest))) - (result (string-append #$output "/etc/ssl/certs"))) - (mkdir-p result) - (concatenate-files ca-files - (string-append result - "/ca-certificates.crt"))))) + (match (append-map ca-files '#$(manifest-inputs manifest)) + (() + ;; Since there are no CA files, just create an empty directory. Do + ;; not create the etc/ssl/certs sub-directory, since that would + ;; wrongfully lead to a message about 'SSL_CERT_DIR' needing to be + ;; defined. + (mkdir #$output) + #t) + ((ca-files ...) + (let ((result (string-append #$output "/etc/ssl/certs"))) + (mkdir-p result) + (concatenate-files ca-files + (string-append result + "/ca-certificates.crt")) + #t))))) (gexp->derivation "ca-certificate-bundle" build #:modules '((guix build utils)) -- cgit v1.2.3 From f73286345e8e9cb059f54a9d68fe19e57de75cdc Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 30 Mar 2015 22:59:24 +0200 Subject: gexp: Add printers for and . * guix/gexp.scm (write-gexp-input, write-gexp-output): New procedures. (, ): Use them as printers. --- guix/gexp.scm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/guix/gexp.scm b/guix/gexp.scm index de8b7bbb46..a2da72e76c 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -179,6 +179,15 @@ This is the declarative counterpart of the 'interned-file' monadic procedure." (output gexp-input-output) ;string (native? gexp-input-native?)) ;Boolean +(define (write-gexp-input input port) + (match input + (($ thing output #f) + (format port "#" thing output)) + (($ thing output #t) + (format port "#" thing output)))) + +(set-record-type-printer! write-gexp-input) + (define* (gexp-input thing ;convenience procedure #:optional (output "out") #:key native?) @@ -193,6 +202,13 @@ whether this should be considered a \"native\" input or not." gexp-output? (name gexp-output-name)) +(define (write-gexp-output output port) + (match output + (($ name) + (format port "#" name)))) + +(set-record-type-printer! write-gexp-output) + (define raw-derivation (store-lift derivation)) -- cgit v1.2.3 From 38cf2ba084881a4c8fca0ee2888b5fd5724e9104 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 20 Apr 2015 15:50:59 +0200 Subject: gnu: Remove all #:select from (gnu packages ...) modules. This works around Guile bug . Reported by Andreas Enge . * gnu/packages/engineering.scm: Don't #:select from (gnu packages ...). * gnu/packages/gcc.scm: Likewise. * gnu/packages/package-management.scm: Likewise. * gnu/packages/photo.scm: Likewise. * gnu/packages/pulseaudio.scm: Likewise. * gnu/packages/moe.scm: Likewise, and #:select from (guix licenses) instead. --- gnu/packages/engineering.scm | 2 +- gnu/packages/gcc.scm | 2 +- gnu/packages/moe.scm | 4 ++-- gnu/packages/package-management.scm | 2 +- gnu/packages/photo.scm | 2 +- gnu/packages/pulseaudio.scm | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index 88b462c232..b0e37f701b 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -35,7 +35,7 @@ #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) - #:use-module ((gnu packages linux) #:select (eudev)) ; FIXME: for pcb + #:use-module (gnu packages linux) ;FIXME: for pcb #:use-module (gnu packages maths) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 2a3749fb5c..cd6fc3b2fd 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -28,7 +28,7 @@ #:use-module (gnu packages multiprecision) #:use-module (gnu packages texinfo) #:use-module (gnu packages elf) - #:use-module ((gnu packages perl) #:select (perl)) + #:use-module (gnu packages perl) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) diff --git a/gnu/packages/moe.scm b/gnu/packages/moe.scm index bd7c2a6d49..6708d72913 100644 --- a/gnu/packages/moe.scm +++ b/gnu/packages/moe.scm @@ -17,9 +17,9 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages moe) - #:use-module (guix licenses) + #:use-module ((guix licenses) #:select (gpl3+)) #:use-module (gnu packages ncurses) - #:use-module ((gnu packages compression) #:select (lzip)) + #:use-module (gnu packages compression) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu)) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index b056bd09e3..131cbcd9a7 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -26,7 +26,7 @@ #:use-module ((guix licenses) #:select (gpl2+ gpl3+ lgpl2.1+)) #:use-module (gnu packages) #:use-module (gnu packages guile) - #:use-module ((gnu packages compression) #:select (bzip2 gzip)) + #:use-module (gnu packages compression) #:use-module (gnu packages gnupg) #:use-module (gnu packages databases) #:use-module (gnu packages graphviz) diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index 164f6e27ea..bf3c76c51e 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -28,7 +28,7 @@ #:use-module (gnu packages readline) #:use-module (gnu packages popt) #:use-module (gnu packages perl) - #:use-module ((gnu packages base) #:select (tzdata))) + #:use-module (gnu packages base)) (define-public libexif (package diff --git a/gnu/packages/pulseaudio.scm b/gnu/packages/pulseaudio.scm index edf01e59fa..c7c5611eb5 100644 --- a/gnu/packages/pulseaudio.scm +++ b/gnu/packages/pulseaudio.scm @@ -24,7 +24,7 @@ #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages algebra) - #:use-module ((gnu packages autotools) #:select (libltdl)) + #:use-module (gnu packages autotools) #:use-module (gnu packages avahi) #:use-module (gnu packages check) #:use-module (gnu packages gdbm) -- cgit v1.2.3 From b86fee7848f964da4d5e695dc8027d95d40a1c77 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 20 Apr 2015 22:16:13 +0200 Subject: file-systems: Use a second 'mount' call for read-only bind mounts. * gnu/build/file-systems.scm (MS_REMOUNT): New constant. (mount-file-system): Add 'flags' local variable. When FLAGS has MS_BIND & MS_RDONLY, call 'mount' with MS_REMOUNT. * gnu/services/base.scm (file-system-service) : Likewise. --- gnu/build/file-systems.scm | 17 +++++++++++++---- gnu/services/base.scm | 17 +++++++++++++---- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm index 38e4851515..dc99d60d3d 100644 --- a/gnu/build/file-systems.scm +++ b/gnu/build/file-systems.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Ludovic Courtès +;;; Copyright © 2014, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -55,6 +55,7 @@ (define MS_NOSUID 2) (define MS_NODEV 4) (define MS_NOEXEC 8) +(define MS_REMOUNT 32) (define MS_BIND 4096) (define MS_MOVE 8192) @@ -280,13 +281,21 @@ run a file system check." (match spec ((source title mount-point type (flags ...) options check?) (let ((source (canonicalize-device-spec source title)) - (mount-point (string-append root "/" mount-point))) + (mount-point (string-append root "/" mount-point)) + (flags (mount-flags->bit-mask flags))) (when check? (check-file-system source type)) (mkdir-p mount-point) - (mount source mount-point type (mount-flags->bit-mask flags) + (mount source mount-point type flags (if options (string->pointer options) - %null-pointer)))))) + %null-pointer)) + + ;; For read-only bind mounts, an extra remount is needed, as per + ;; , which still applies to Linux 4.0. + (when (and (= MS_BIND (logand flags MS_BIND)) + (= MS_RDONLY (logand flags MS_RDONLY))) + (mount source mount-point type (logior MS_BIND MS_REMOUNT MS_RDONLY) + %null-pointer)))))) ;;; file-systems.scm ends here diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 956fa7efa0..d0a2e8c848 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -131,7 +131,9 @@ names such as device-mapping services." (requirement `(root-file-system ,@requirements)) (documentation "Check, mount, and unmount the given file system.") (start #~(lambda args - (let ((device (canonicalize-device-spec #$device '#$title))) + ;; FIXME: Use or factorize with 'mount-file-system'. + (let ((device (canonicalize-device-spec #$device '#$title)) + (flags #$(mount-flags->bit-mask flags))) #$(if create-mount-point? #~(mkdir-p #$target) #~#t) @@ -145,9 +147,16 @@ names such as device-mapping services." (getenv "PATH"))) (check-file-system device #$type)) #~#t) - (mount device #$target #$type - #$(mount-flags->bit-mask flags) - #$options)) + + (mount device #$target #$type flags #$options) + + ;; For read-only bind mounts, an extra remount is needed, + ;; as per , which still + ;; applies to Linux 4.0. + (when (and (= MS_BIND (logand flags MS_BIND)) + (= MS_RDONLY (logand flags MS_RDONLY))) + (mount device #$target #$type + (logior MS_BIND MS_REMOUNT MS_RDONLY)))) #t)) (stop #~(lambda args ;; Normally there are no processes left at this point, so -- cgit v1.2.3 From 3392ce5d606be84c07624e0626b99e410449639f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 20 Apr 2015 22:21:51 +0200 Subject: system: Make /gnu/store a read-only bind mount by default. * gnu/system/file-systems.scm (%immutable-store): New variable. (%base-file-systems): Add it. * doc/guix.texi (File Systems): Document it. --- doc/guix.texi | 15 +++++++++++++-- gnu/system/file-systems.scm | 18 ++++++++++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 09dcff59f4..4269d4fa5f 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4221,8 +4221,9 @@ variables. @defvr {Scheme Variable} %base-file-systems These are essential file systems that are required on normal systems, -such as @var{%devtmpfs-file-system} (see below.) Operating system -declarations should always contain at least these. +such as @var{%devtmpfs-file-system} and @var{%immutable-store} (see +below.) Operating system declarations should always contain at least +these. @end defvr @defvr {Scheme Variable} %devtmpfs-file-system @@ -4244,6 +4245,16 @@ memory sharing across processes (@pxref{Memory-mapped I/O, @code{shm_open},, libc, The GNU C Library Reference Manual}). @end defvr +@defvr {Scheme Variable} %immutable-store +This file system performs a read-only ``bind mount'' of +@file{/gnu/store}, making it read-only for all the users including +@code{root}. This prevents against accidental modification by software +running as @code{root} or by system administrators. + +The daemon itself is still able to write to the store: it remounts it +read-write in its own ``name space.'' +@end defvr + @defvr {Scheme Variable} %binary-format-file-system The @code{binfmt_misc} file system, which allows handling of arbitrary executable file types to be delegated to user space. This requires the diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index 4760821840..db861baed2 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,6 +19,7 @@ (define-module (gnu system file-systems) #:use-module (guix gexp) #:use-module (guix records) + #:use-module (guix store) #:export ( file-system file-system? @@ -37,6 +38,7 @@ %shared-memory-file-system %pseudo-terminal-file-system %devtmpfs-file-system + %immutable-store %base-file-systems @@ -139,12 +141,24 @@ file system." (options "size=50%") ;TODO: make size configurable (create-mount-point? #t))) +(define %immutable-store + ;; Read-only store to avoid users or daemons accidentally modifying it. + ;; 'guix-daemon' has provisions to remount it read-write in its own name + ;; space. + (file-system + (device (%store-prefix)) + (mount-point (%store-prefix)) + (type "none") + (check? #f) + (flags '(read-only bind-mount)))) + (define %base-file-systems ;; List of basic file systems to be mounted. Note that /proc and /sys are ;; currently mounted by the initrd. (list %devtmpfs-file-system %pseudo-terminal-file-system - %shared-memory-file-system)) + %shared-memory-file-system + %immutable-store)) -- cgit v1.2.3 From 44fd6ef137f4aa7b9eb9c999e57b450432c4e915 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 20 Apr 2015 22:37:20 +0200 Subject: ui: Add 'symlink' replacement with better error reporting. * guix/ui.scm (symlink): New procedure. --- guix/ui.scm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/guix/ui.scm b/guix/ui.scm index f80ce37146..e717ab713e 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -42,6 +42,7 @@ #:use-module (ice-9 match) #:use-module (ice-9 format) #:use-module (ice-9 regex) + #:replace (symlink) #:export (_ N_ P_ @@ -205,6 +206,21 @@ Report bugs to: ~a.") %guix-bug-report-address) General help using GNU software: ")) (newline)) +(define symlink + (let ((real-symlink (@ (guile) symlink))) + (lambda (target link) + "This is a 'symlink' replacement that provides proper error reporting." + (catch 'system-error + (lambda () + (real-symlink target link)) + (lambda (key proc fmt args errno) + ;; Augment the FMT and ARGS with information about LINK (this + ;; information is missing as of Guile 2.0.11, making the exception + ;; uninformative.) + (apply throw key proc "~A: ~S" + (append args (list link)) + errno)))))) + (define (string->number* str) "Like `string->number', but error out with an error message on failure." (or (string->number str) -- cgit v1.2.3 From dbf4ed7c91adf3ebbc45f00a9f24a5f1647e570e Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 16 Apr 2015 11:19:45 +0200 Subject: gnu: Add subread. * gnu/packages/bioinformatics.scm (subread): New variable. --- gnu/packages/bioinformatics.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 4fd9459350..7fc6af3c4e 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -1386,6 +1386,45 @@ sequences.") ;; STAR is licensed under GPLv3 or later; htslib is MIT-licensed. (license license:gpl3+))) +(define-public subread + (package + (name "subread") + (version "1.4.6-p2") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/subread/subread-" + version "-source.tar.gz")) + (sha256 + (base32 + "06sv9mpcsdj6p68y15d6gi70lca3lxmzk0dn61hg0kfsa7rxmsr3")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ;no "check" target + #:make-flags '("-f" "Makefile.Linux") + #:phases + (alist-cons-after + 'unpack 'enter-dir + (lambda _ (chdir "src") #t) + (alist-replace + 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))) + (mkdir-p bin) + (copy-recursively "../bin" bin))) + ;; no "configure" script + (alist-delete 'configure %standard-phases))))) + (inputs `(("zlib" ,zlib))) + (home-page "http://bioinf.wehi.edu.au/subread-package/") + (synopsis "Tool kit for processing next-gen sequencing data") + (description + "The subread package contains the following tools: subread aligner, a +general-purpose read aligner; subjunc aligner: detecting exon-exon junctions +and mapping RNA-seq reads; featureCounts: counting mapped reads for genomic +features; exactSNP: a SNP caller that discovers SNPs by testing signals +against local background noises.") + (license license:gpl3+))) + (define-public shogun (package (name "shogun") -- cgit v1.2.3 From 9794180d5e0c100a9d6094f8b91c7711b026c253 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 16 Apr 2015 15:16:57 +0200 Subject: gnu: Add bamtools. * gnu/packages/bioinformatics.scm (bamtools): New variable. --- gnu/packages/bioinformatics.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 7fc6af3c4e..950f9b472f 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -46,6 +46,29 @@ #:use-module (gnu packages xml) #:use-module (gnu packages zip)) +(define-public bamtools + (package + (name "bamtools") + (version "2.3.0") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/pezmaster31/bamtools/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1brry29bw2xr2l9pqn240rkqwayg85b8qq78zk2zs6nlspk4d018")))) + (build-system cmake-build-system) + (arguments `(#:tests? #f)) ;no "check" target + (inputs `(("zlib" ,zlib))) + (home-page "https://github.com/pezmaster31/bamtools") + (synopsis "C++ API and command-line toolkit for working with BAM data") + (description + "BamTools provides both a C++ API and a command-line toolkit for handling +BAM files.") + (license license:expat))) + (define-public bedops (package (name "bedops") -- cgit v1.2.3 From e4e5a4d88fd03a088e602452c3952ab5f2201919 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 16 Apr 2015 15:18:10 +0200 Subject: gnu: Add eXpress. * gnu/packages/bioinformatics.scm (express): New variable. --- gnu/packages/bioinformatics.scm | 47 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 950f9b472f..ccfda627f3 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -28,6 +28,7 @@ #:use-module (guix build-system trivial) #:use-module (gnu packages) #:use-module (gnu packages base) + #:use-module (gnu packages boost) #:use-module (gnu packages compression) #:use-module (gnu packages file) #:use-module (gnu packages java) @@ -37,6 +38,7 @@ #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages popt) + #:use-module (gnu packages protobuf) #:use-module (gnu packages python) #:use-module (gnu packages statistics) #:use-module (gnu packages swig) @@ -530,6 +532,51 @@ file formats including SAM/BAM, Wiggle/BigWig, BED, GFF/GTF, VCF.") other types of unwanted sequence from high-throughput sequencing reads.") (license license:expat))) +(define-public express + (package + (name "express") + (version "1.5.1") + (source (origin + (method url-fetch) + (uri + (string-append + "http://bio.math.berkeley.edu/eXpress/downloads/express-" + version "/express-" version "-src.tgz")) + (sha256 + (base32 + "03rczxd0gjp2l1jxcmjfmf5j94j77zqyxa6x063zsc585nj40n0c")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ;no "check" target + #:phases + (alist-cons-after + 'unpack 'use-shared-boost-libs-and-set-bamtools-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "CMakeLists.txt" + (("set\\(Boost_USE_STATIC_LIBS ON\\)") + "set(Boost_USE_STATIC_LIBS OFF)") + (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/bamtools/include") + (string-append (assoc-ref inputs "bamtools") "/include/bamtools"))) + (substitute* "src/CMakeLists.txt" + (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/\\.\\./bamtools/lib") + (string-append (assoc-ref inputs "bamtools") "/lib/bamtools"))) + #t) + %standard-phases))) + (inputs + `(("boost" ,boost) + ("bamtools" ,bamtools) + ("protobuf" ,protobuf) + ("zlib" ,zlib))) + (home-page "http://bio.math.berkeley.edu/eXpress") + (synopsis "Streaming quantification for high-throughput genomic sequencing") + (description + "eXpress is a streaming tool for quantifying the abundances of a set of +target sequences from sampled subsequences. Example applications include +transcript-level RNA-Seq quantification, allele-specific/haplotype expression +analysis (from RNA-Seq), transcription factor binding quantification in +ChIP-Seq, and analysis of metagenomic data.") + (license license:artistic2.0))) + (define-public fastx-toolkit (package (name "fastx-toolkit") -- cgit v1.2.3 From cbbb11c8a00c64cb24081025239f77208661b961 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 21 Apr 2015 21:07:11 +0200 Subject: gnu: Rename ld-wrapper2 to ld-wrapper. * gnu/packages/ld-wrapper2.in: Rename to... * gnu/packages/ld-wrapper.in: ... this. * gnu-system.am (MISC_DISTRO_FILES): Remove ld-wrapper2.in. * gnu/packages/commencement.scm (fixed-ld-wrapper): Remove. (gcc-toolchain): Restore pre-77db91ad inputs. --- gnu-system.am | 3 +- gnu/packages/commencement.scm | 15 +-- gnu/packages/ld-wrapper.in | 48 +++++----- gnu/packages/ld-wrapper2.in | 207 ------------------------------------------ 4 files changed, 25 insertions(+), 248 deletions(-) delete mode 100644 gnu/packages/ld-wrapper2.in diff --git a/gnu-system.am b/gnu-system.am index b11706cb99..06ec6e7142 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -578,8 +578,7 @@ dist_patch_DATA = \ gnu/packages/patches/zathura-plugindir-environment-variable.patch MISC_DISTRO_FILES = \ - gnu/packages/ld-wrapper.in \ - gnu/packages/ld-wrapper2.in + gnu/packages/ld-wrapper.in bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap bootstrap_x86_64_linuxdir = $(bootstrapdir)/x86_64-linux diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 22da2e0fb3..4342dc56d1 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -708,19 +708,6 @@ COREUTILS-FINAL vs. COREUTILS, etc." ;;; GCC toolchain. ;;; -(define (fixed-ld-wrapper) - ;; FIXME: In this cycle, a bug was introduced in ld-wrapper: it would - ;; incorrectly flag ~/.guix-profile/lib/libfoo.so as "impure", due to a bug - ;; in its symlink resolution code. To work around that while avoiding a - ;; full rebuild, use an ld-wrapper with the bug-fix for 'gcc-toolchain'. - (let ((orig (car (assoc-ref %final-inputs "ld-wrapper")))) - (package - (inherit orig) - (location (source-properties->location (current-source-location))) - (inputs `(("wrapper" ,(search-path %load-path - "gnu/packages/ld-wrapper2.in")) - ,@(package-inputs orig)))))) - (define (gcc-toolchain gcc) "Return a complete toolchain for GCC." (package @@ -759,7 +746,7 @@ and binaries, plus debugging symbols in the 'debug' output), and Binutils.") ;; install everything that we need, and (2) to make sure ld-wrapper comes ;; before Binutils' ld in the user's profile. (inputs `(("gcc" ,gcc) - ("ld-wrapper" ,(fixed-ld-wrapper)) + ("ld-wrapper" ,(car (assoc-ref %final-inputs "ld-wrapper"))) ("binutils" ,binutils-final) ("libc" ,glibc-final) ("libc-debug" ,glibc-final "debug"))))) diff --git a/gnu/packages/ld-wrapper.in b/gnu/packages/ld-wrapper.in index 094018de3d..f4ab17c59f 100644 --- a/gnu/packages/ld-wrapper.in +++ b/gnu/packages/ld-wrapper.in @@ -92,34 +92,32 @@ exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)) (let loop ((file file) (depth 0)) - (catch 'system-error - (lambda () - (if (>= depth %max-symlink-depth) - file - (loop (readlink file) (+ depth 1)))) - (lambda args - (if (= EINVAL (system-error-errno args)) - file - (apply throw args)))))) - -(define (dereference-symlinks file) - ;; Same as 'readlink*' but return FILE if the symlink target is invalid or - ;; FILE does not exist. - (catch 'system-error - (lambda () - ;; When used from a user environment, FILE may refer to - ;; ~/.guix-profile/lib/libfoo.so, which is itself a symlink to the - ;; store. Check whether this is the case. - (readlink* file)) - (lambda args - (if (= ENOENT (system-error-errno args)) - file - (apply throw args))))) + (define (absolute target) + (if (absolute-file-name? target) + target + (string-append (dirname file) "/" target))) + + (if (>= depth %max-symlink-depth) + file + (call-with-values + (lambda () + (catch 'system-error + (lambda () + (values #t (readlink file))) + (lambda args + (let ((errno (system-error-errno args))) + (if (or (= errno EINVAL) (= errno ENOENT)) + (values #f file) + (apply throw args)))))) + (lambda (success? target) + (if success? + (loop (absolute target) (+ depth 1)) + file)))))) (define (pure-file-name? file) ;; Return #t when FILE is the name of a file either within the store ;; (possibly via a symlink) or within the build directory. - (let ((file (dereference-symlinks file))) + (let ((file (readlink* file))) (or (not (string-prefix? "/" file)) (string-prefix? %store-directory file) (string-prefix? %temporary-directory file) @@ -128,7 +126,7 @@ exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)) (define (store-file-name? file) ;; Return #t when FILE is a store file, possibly indirectly. - (string-prefix? %store-directory (dereference-symlinks file))) + (string-prefix? %store-directory (readlink* file))) (define (shared-library? file) ;; Return #t when FILE denotes a shared library. diff --git a/gnu/packages/ld-wrapper2.in b/gnu/packages/ld-wrapper2.in deleted file mode 100644 index f4ab17c59f..0000000000 --- a/gnu/packages/ld-wrapper2.in +++ /dev/null @@ -1,207 +0,0 @@ -#!@BASH@ -# -*- mode: scheme; coding: utf-8; -*- - -# XXX: We have to go through Bash because there's no command-line switch to -# augment %load-compiled-path, and because of the silly 127-byte limit for -# the shebang line in Linux. -# Use `load-compiled' because `load' (and `-l') doesn't otherwise load our -# .go file (see ). - -main="(@ (gnu build-support ld-wrapper) ld-wrapper)" -exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)))" "$@" -!# -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see . - -(define-module (gnu build-support ld-wrapper) - #:use-module (srfi srfi-1) - #:use-module (ice-9 match) - #:export (ld-wrapper)) - -;;; Commentary: -;;; -;;; This is a wrapper for the linker. Its purpose is to inspect the -L and -;;; -l switches passed to the linker, add corresponding -rpath arguments, and -;;; invoke the actual linker with this new set of arguments. -;;; -;;; The alternatives to this hack would be: -;;; -;;; 1. Using $LD_RUN_PATH. However, that would tend to include more than -;;; needed in the RPATH; for instance, given a package with `libfoo' as -;;; an input, all its binaries would have libfoo in their RPATH, -;;; regardless of whether they actually NEED it. -;;; -;;; 2. Use a GCC "lib" spec string such as `%{L*:-rpath %*}', which adds a -;;; `-rpath LIBDIR' argument for each occurrence of `-L LIBDIR'. -;;; However, this doesn't work when $LIBRARY_PATH is used, because the -;;; additional `-L' switches are not matched by the above rule, because -;;; the rule only matches explicit user-provided switches. See -;;; for details. -;;; -;;; As a bonus, this wrapper checks for "impurities"--i.e., references to -;;; libraries outside the store. -;;; -;;; Code: - -(define %real-ld - ;; Name of the linker that we wrap. - "@LD@") - -(define %store-directory - ;; File name of the store. - (or (getenv "NIX_STORE") "/gnu/store")) - -(define %temporary-directory - ;; Temporary directory. - (or (getenv "TMPDIR") "/tmp")) - -(define %build-directory - ;; Top build directory when run from a builder. - (getenv "NIX_BUILD_TOP")) - -(define %allow-impurities? - ;; Whether to allow references to libraries outside the store. - (getenv "GUIX_LD_WRAPPER_ALLOW_IMPURITIES")) - -(define %debug? - ;; Whether to emit debugging output. - (getenv "GUIX_LD_WRAPPER_DEBUG")) - -(define %disable-rpath? - ;; Whether to disable automatic '-rpath' addition. - (getenv "GUIX_LD_WRAPPER_DISABLE_RPATH")) - -(define (readlink* file) - ;; Call 'readlink' until the result is not a symlink. - (define %max-symlink-depth 50) - - (let loop ((file file) - (depth 0)) - (define (absolute target) - (if (absolute-file-name? target) - target - (string-append (dirname file) "/" target))) - - (if (>= depth %max-symlink-depth) - file - (call-with-values - (lambda () - (catch 'system-error - (lambda () - (values #t (readlink file))) - (lambda args - (let ((errno (system-error-errno args))) - (if (or (= errno EINVAL) (= errno ENOENT)) - (values #f file) - (apply throw args)))))) - (lambda (success? target) - (if success? - (loop (absolute target) (+ depth 1)) - file)))))) - -(define (pure-file-name? file) - ;; Return #t when FILE is the name of a file either within the store - ;; (possibly via a symlink) or within the build directory. - (let ((file (readlink* file))) - (or (not (string-prefix? "/" file)) - (string-prefix? %store-directory file) - (string-prefix? %temporary-directory file) - (and %build-directory - (string-prefix? %build-directory file))))) - -(define (store-file-name? file) - ;; Return #t when FILE is a store file, possibly indirectly. - (string-prefix? %store-directory (readlink* file))) - -(define (shared-library? file) - ;; Return #t when FILE denotes a shared library. - (or (string-suffix? ".so" file) - (let ((index (string-contains file ".so."))) - ;; Since we cannot use regexps during bootstrap, roll our own. - (and index - (string-every (char-set-union (char-set #\.) char-set:digit) - (string-drop file (+ index 3))))))) - -(define (library-files-linked args) - ;; Return the file names of shared libraries explicitly linked against via - ;; `-l' or with an absolute file name in ARGS. - (define path+files - (fold (lambda (argument result) - (match result - ((library-path . library-files) - (cond ((string-prefix? "-L" argument) ;augment the search path - (cons (append library-path - (list (string-drop argument 2))) - library-files)) - ((string-prefix? "-l" argument) ;add library - (let* ((lib (string-append "lib" - (string-drop argument 2) - ".so")) - (full (search-path library-path lib))) - (if full - (cons library-path - (cons full library-files)) - result))) - ((and (string-prefix? %store-directory argument) - (shared-library? argument)) ;add library - (cons library-path - (cons argument library-files))) - (else - result))))) - (cons '() '()) - args)) - - (match path+files - ((path . files) - (reverse files)))) - -(define (rpath-arguments library-files) - ;; Return the `-rpath' argument list for each of LIBRARY-FILES, a list of - ;; absolute file names. - (fold-right (lambda (file args) - ;; Add '-rpath' if and only if FILE is in the store; we don't - ;; want to add '-rpath' for files under %BUILD-DIRECTORY or - ;; %TEMPORARY-DIRECTORY because that could leak to installed - ;; files. - (cond ((and (not %disable-rpath?) - (store-file-name? file)) - (cons* "-rpath" (dirname file) args)) - ((or %allow-impurities? - (pure-file-name? file)) - args) - (else - (begin - (format (current-error-port) - "ld-wrapper: error: attempt to use \ -impure library ~s~%" - file) - (exit 1))))) - '() - library-files)) - -(define (ld-wrapper . args) - ;; Invoke the real `ld' with ARGS, augmented with `-rpath' switches. - (let* ((libs (library-files-linked args)) - (args (append args (rpath-arguments libs)))) - (when %debug? - (format (current-error-port) - "ld-wrapper: invoking `~a' with ~s~%" - %real-ld args)) - (apply execl %real-ld (basename %real-ld) args))) - -;;; ld-wrapper.scm ends here -- cgit v1.2.3 From 4267c637d63ac7c48fe8206623ca976fc0dd742a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 21 Apr 2015 21:08:44 +0200 Subject: gnu: ld-wrapper: Add debugging info. * gnu/packages/ld-wrapper.in (ld-wrapper): Add "libraries linked" debugging statement. --- gnu/packages/ld-wrapper.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gnu/packages/ld-wrapper.in b/gnu/packages/ld-wrapper.in index f4ab17c59f..ed2a51ea67 100644 --- a/gnu/packages/ld-wrapper.in +++ b/gnu/packages/ld-wrapper.in @@ -199,6 +199,8 @@ impure library ~s~%" (let* ((libs (library-files-linked args)) (args (append args (rpath-arguments libs)))) (when %debug? + (format (current-error-port) + "ld-wrapper: libraries linked: ~s~%" libs) (format (current-error-port) "ld-wrapper: invoking `~a' with ~s~%" %real-ld args)) -- cgit v1.2.3 From 4a2b74bf4ce6780bb284bbcc63d3548233b09ee6 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 21 Apr 2015 21:14:28 +0200 Subject: gnu: ld-wrapper: Ignore the .so argument following '-dynamic-linker'. Reported at . * gnu/packages/ld-wrapper.in (library-files-linked): Rename 'path+files' to 'path+files+args'. Thread the reverse list of previous arguments. Add case for when the previous argument is "-dynamic-linker". --- gnu/packages/ld-wrapper.in | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/gnu/packages/ld-wrapper.in b/gnu/packages/ld-wrapper.in index ed2a51ea67..db662e7d76 100644 --- a/gnu/packages/ld-wrapper.in +++ b/gnu/packages/ld-wrapper.in @@ -140,34 +140,45 @@ exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)) (define (library-files-linked args) ;; Return the file names of shared libraries explicitly linked against via ;; `-l' or with an absolute file name in ARGS. - (define path+files + (define path+files+args (fold (lambda (argument result) (match result - ((library-path . library-files) + ((library-path library-files ("-dynamic-linker" . rest)) + ;; When passed '-dynamic-linker ld.so', ignore 'ld.so'. + ;; See . + (list library-path + library-files + (cons* argument "-dynamic-linker" rest))) + ((library-path library-files previous-args) (cond ((string-prefix? "-L" argument) ;augment the search path - (cons (append library-path + (list (append library-path (list (string-drop argument 2))) - library-files)) + library-files + (cons argument previous-args))) ((string-prefix? "-l" argument) ;add library (let* ((lib (string-append "lib" (string-drop argument 2) ".so")) (full (search-path library-path lib))) - (if full - (cons library-path - (cons full library-files)) - result))) + (list library-path + (if full + (cons full library-files) + library-files) + (cons argument previous-args)))) ((and (string-prefix? %store-directory argument) (shared-library? argument)) ;add library - (cons library-path - (cons argument library-files))) + (list library-path + (cons argument library-files) + (cons argument previous-args))) (else - result))))) - (cons '() '()) + (list library-path + library-files + (cons argument previous-args))))))) + (list '() '() '()) args)) - (match path+files - ((path . files) + (match path+files+args + ((path files arguments) (reverse files)))) (define (rpath-arguments library-files) -- cgit v1.2.3 From ef593a103da92410192581be7a757e5654fae327 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 21 Apr 2015 21:16:24 +0200 Subject: gnu: libltdl: Remove unneeded patch. * gnu/packages/autotools.scm (libltdl)[source]: Remove 'patches'. --- gnu/packages/autotools.scm | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm index bc2b20ed46..24ff90cc5c 100644 --- a/gnu/packages/autotools.scm +++ b/gnu/packages/autotools.scm @@ -303,12 +303,7 @@ complexity of working with shared libraries across platforms.") version ".tar.xz")) (sha256 (base32 - "0vxj52zm709125gwv9qqlw02silj8bnjnh4y07arrz60r31ai1vw")) - - ;; FIXME: We don't need this patch here, we just keep it to - ;; avoid a rebuild today. - (patches - (list (search-patch "libtool-skip-tests.patch"))))) + "0vxj52zm709125gwv9qqlw02silj8bnjnh4y07arrz60r31ai1vw")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--enable-ltdl-install") ;really install it -- cgit v1.2.3 From 8581c81307bb9a9e0d637aca19123c5e6aa02ac0 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sun, 19 Apr 2015 18:42:16 +0200 Subject: gnu: Add SWT. * gnu/packages/java.scm (swt): New variable. --- gnu/packages/java.scm | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 2a8cd99fe6..a77d1716bc 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -32,6 +32,7 @@ #:use-module (gnu packages fontutils) #:use-module (gnu packages gawk) #:use-module (gnu packages gcc) + #:use-module (gnu packages gl) #:use-module (gnu packages gnuzilla) ;nss #:use-module (gnu packages ghostscript) ;lcms #:use-module (gnu packages gnome) @@ -47,6 +48,88 @@ #:use-module (gnu packages zip) #:use-module (gnu packages texinfo)) +(define-public swt + (package + (name "swt") + (version "4.4.2") + (source (origin + (method url-fetch) + (uri (string-append + "http://ftp-stud.fht-esslingen.de/pub/Mirrors/" + "eclipse/eclipse/downloads/drops4/R-" version + "-201502041700/swt-" version "-gtk-linux-x86.zip")) + (sha256 + (base32 + "0lzyqr8k2zm5s8fmnrx5kxpslxfs0i73y26fwfms483x45izzwj8")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags '("-f" "make_linux.mak") + #:tests? #f ; no "check" target + #:phases + (alist-replace + 'unpack + (lambda _ + (and (mkdir "swt") + (zero? (system* "unzip" (assoc-ref %build-inputs "source") "-d" "swt")) + (chdir "swt") + (mkdir "src") + (zero? (system* "unzip" "src.zip" "-d" "src")) + (chdir "src"))) + (alist-replace + 'build + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((lib (string-append (assoc-ref outputs "out") "/lib"))) + (setenv "JAVA_HOME" (assoc-ref inputs "icedtea6")) + + ;; Build shared libraries. Users of SWT have to set the system + ;; property swt.library.path to the "lib" directory of this + ;; package output. + (mkdir-p lib) + (setenv "OUTPUT_DIR" lib) + (zero? (system* "bash" "build.sh")) + + ;; build jar + (mkdir "build") + (for-each (lambda (file) + (format #t "Compiling ~s\n" file) + (system* "javac" "-d" "build" file)) + (find-files "." "\\.java")) + (zero? (system* "jar" "cvf" "swt.jar" "-C" "build" ".")))) + (alist-cons-after + 'install 'install-java-files + (lambda* (#:key outputs #:allow-other-keys) + (let ((java (string-append (assoc-ref outputs "out") + "/share/java"))) + (mkdir-p java) + (copy-file "swt.jar" (string-append java "/swt.jar"))) #t) + (alist-delete 'configure %standard-phases)))))) + (inputs + `(("xulrunner" ,icecat) + ("gtk" ,gtk+-2) + ("libxtst" ,libxtst) + ("libxt" ,libxt) + ("mesa" ,mesa) + ("glu" ,glu))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("unzip" ,unzip) + ("icedtea6" ,icedtea6 "jdk"))) + (home-page "https://www.eclipse.org/swt/") + (synopsis "Widget toolkit for Java") + (description + "SWT is a widget toolkit for Java designed to provide efficient, portable +access to the user-interface facilities of the operating systems on which it +is implemented.") + ;; SWT code is licensed under EPL1.0 + ;; Gnome and Gtk+ bindings contain code licensed under LGPLv2.1 + ;; Cairo bindings contain code under MPL1.1 + ;; XULRunner 1.9 bindings contain code under MPL2.0 + (license (list + license:epl1.0 + license:mpl1.1 + license:mpl2.0 + license:lgpl2.1+)))) + (define-public ant (package (name "ant") -- cgit v1.2.3 From 6260d1a8692a948462e3820ad498f7325865517f Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sun, 19 Apr 2015 18:39:25 +0200 Subject: gnu: Add TuxGuitar. * gnu/packages/music.scm (tuxguitar): New variable. --- gnu/packages/music.scm | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 0c83b0bd82..5795ecbb0d 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -29,6 +29,7 @@ #:use-module (gnu packages flex) #:use-module (gnu packages fonts) #:use-module (gnu packages fontutils) + #:use-module (gnu packages gcc) #:use-module (gnu packages gettext) #:use-module (gnu packages ghostscript) #:use-module (gnu packages gnome) @@ -36,6 +37,7 @@ #:use-module (gnu packages guile) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) + #:use-module (gnu packages java) #:use-module (gnu packages linux) ; for alsa-utils #:use-module (gnu packages man) #:use-module (gnu packages mp3) @@ -221,3 +223,54 @@ features a statistics overview so you can monitor your progress across several sessions. Solfege is also designed to be extensible so you can easily write your own lessons.") (license license:gpl3+))) + +(define-public tuxguitar + (package + (name "tuxguitar") + (version "1.2") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/tuxguitar/TuxGuitar/TuxGuitar-" + version "/tuxguitar-src-" version ".tar.gz")) + (sha256 + (base32 + "1g1yf2gd06fzdhqb8kb8dmdcmr602s9y24f01kyl4940wimgr944")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags (list (string-append "LDFLAGS=-Wl,-rpath=" + (assoc-ref %outputs "out") "/lib") + (string-append "PREFIX=" + (assoc-ref %outputs "out")) + (string-append "SWT_PATH=" + (assoc-ref %build-inputs "swt") + "/share/java/swt.jar")) + #:tests? #f ;no "check" target + #:parallel-build? #f ;not supported + #:phases + (alist-cons-before + 'build 'enter-dir-set-path-and-pass-ldflags + (lambda* (#:key inputs #:allow-other-keys) + (chdir "TuxGuitar") + (substitute* "GNUmakefile" + (("PROPERTIES\\?=") + (string-append "PROPERTIES?= -Dswt.library.path=" + (assoc-ref inputs "swt") "/lib")) + (("\\$\\(GCJ\\) -o") "$(GCJ) $(LDFLAGS) -o")) + #t) + (alist-delete 'configure %standard-phases)))) + (inputs + `(("swt" ,swt))) + (native-inputs + `(("gcj" ,gcj-4.8) + ("pkg-config" ,pkg-config))) + (home-page "http://tuxguitar.com.ar") + (synopsis "Multitrack tablature editor and player") + (description + "TuxGuitar is a guitar tablature editor with player support through midi. +It can display scores and multitrack tabs. TuxGuitar provides various +additional features, including autoscrolling while playing, note duration +management, bend/slide/vibrato/hammer-on/pull-off effects, support for +tuplets, time signature management, tempo management, gp3/gp4/gp5 import and +export.") + (license license:lgpl2.1+))) -- cgit v1.2.3 From 6162b95d21a7b75fe3753c22c7755c5d12a8302f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 21 Apr 2015 22:53:09 +0200 Subject: gnu: glibc: Add dependency on Gettext, to install the message catalogs. This fixes a bug whereby the libc.mo files were not installed, and thus translations of libc's messages were not available. * gnu/packages/commencement.scm (gettext-boot0): New variable. (glibc-final)[native-inputs]: New field. * gnu/packages/base.scm (glibc)[native-inputs]: Add GNU-GETTEXT. --- gnu/packages/base.scm | 6 ++++-- gnu/packages/commencement.scm | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 361436157d..0c2a4a5725 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -568,9 +568,11 @@ store.") (inputs `(("static-bash" ,(static-package bash-light)))) - ;; To build the manual, we need Texinfo and Perl. + ;; To build the manual, we need Texinfo and Perl. Gettext is needed to + ;; install the message catalogs, with 'msgfmt'. (native-inputs `(("texinfo" ,texinfo) - ("perl" ,perl))) + ("perl" ,perl) + ("gettext" ,gnu-gettext))) (native-search-paths ;; Search path for packages that provide locale data. This is useful diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 4342dc56d1..9918c21fd1 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -31,6 +31,7 @@ #:use-module (gnu packages gawk) #:use-module (gnu packages bison) #:use-module (gnu packages guile) + #:use-module (gnu packages gettext) #:use-module (gnu packages multiprecision) #:use-module (gnu packages compression) #:use-module (gnu packages perl) @@ -418,6 +419,42 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" '("gcc" "libc"))) (current-source-location))))) +(define gettext-boot0 + ;; A minimal gettext used during bootstrap. + (let ((gettext-minimal (package + (inherit gnu-gettext) + (name "gettext-boot0") + (inputs '()) ;zero dependencies + (arguments + (substitute-keyword-arguments + `(#:configure-flags '("--disable-threads") + #:tests? #f + ,@(package-arguments gnu-gettext)) + ((#:phases phases) + `(modify-phases ,phases + ;; Build only the tools. + (add-after 'unpack 'chdir + (lambda _ + (chdir "gettext-tools"))) + + ;; Some test programs require pthreads, + ;; which we don't have. + (add-before 'configure 'no-test-programs + (lambda _ + (substitute* "tests/Makefile.in" + (("^PROGRAMS =.*$") + "PROGRAMS =\n")) + #t)) + + ;; Don't try to link against libexpat. + (delete 'link-expat) + (delete 'patch-tests)))))))) + (package-with-bootstrap-guile + (package-with-explicit-inputs gettext-minimal + %boot1-inputs + (current-source-location) + #:guile %bootstrap-guile)))) + (define-public glibc-final ;; The final glibc, which embeds the statically-linked Bash built above. (package (inherit glibc-final-with-bootstrap-bash) @@ -427,6 +464,10 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" "static-bash" (package-inputs glibc-final-with-bootstrap-bash)))) + ;; This time we need 'msgfmt' to install all the libc.mo files. + (native-inputs `(,@(package-native-inputs glibc-final-with-bootstrap-bash) + ("gettext" ,gettext-boot0))) + ;; The final libc only refers to itself, but the 'debug' output contains ;; references to GCC-BOOT0 and to the Linux headers. XXX: Would be great ;; if 'allowed-references' were per-output. -- cgit v1.2.3 From 8185519dba4f784381276d5a81e22213797dfd55 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Tue, 21 Apr 2015 22:57:29 +0200 Subject: gnu: ocrad: Update to 0.25. * gnu/packages/ocr.scm (ocrad): Update to 0.25. --- gnu/packages/ocr.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ocr.scm b/gnu/packages/ocr.scm index b94a7f51cb..0d5fbcdc29 100644 --- a/gnu/packages/ocr.scm +++ b/gnu/packages/ocr.scm @@ -29,14 +29,14 @@ (define-public ocrad (package (name "ocrad") - (version "0.24") + (version "0.25") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/ocrad/ocrad-" version ".tar.lz")) (sha256 (base32 - "0hhlx072d00bi9qia0nj5izsq4qkscpfz2mpbyfc72msl3hfvslv")))) + "1m2dblgvvjs48rsglfdwq0ib9zk8h9n34xsh67ibrg0g0ffbw477")))) (build-system gnu-build-system) (native-inputs `(("lzip" ,lzip))) (home-page "http://www.gnu.org/software/ocrad/") -- cgit v1.2.3 From 8462a03f2861a1b3ed33e99a6f5a886bb9093846 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Tue, 21 Apr 2015 22:59:50 +0200 Subject: gnu: libidn: Update to 1.30. * gnu/packages/libidn.scm (libidn): Update to 1.30. --- gnu/packages/libidn.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/libidn.scm b/gnu/packages/libidn.scm index 3e55618e53..49dafbeb6d 100644 --- a/gnu/packages/libidn.scm +++ b/gnu/packages/libidn.scm @@ -26,13 +26,13 @@ (define-public libidn (package (name "libidn") - (version "1.29") + (version "1.30") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/libidn/libidn-" version ".tar.gz")) (sha256 (base32 - "0z3w5arlvyiyvzg76msg3n2px3c1glqr6wnj7rq6zczrpdyp90pv")))) + "0lxh5r1z8gsk4jxx3rv8aasjv8p53j4y04kvfn2w30a0syagrf9r")))) (build-system gnu-build-system) ;; FIXME: No Java and C# libraries are currently built. (synopsis "Internationalized string processing library") -- cgit v1.2.3 From 54b76b60d961b9b3c70b50831e19199b92dd1526 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 21 Apr 2015 17:47:34 -0400 Subject: Revert "gnu: libidn: Update to 1.30." This reverts commit 8462a03f2861a1b3ed33e99a6f5a886bb9093846. --- gnu/packages/libidn.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/libidn.scm b/gnu/packages/libidn.scm index 49dafbeb6d..3e55618e53 100644 --- a/gnu/packages/libidn.scm +++ b/gnu/packages/libidn.scm @@ -26,13 +26,13 @@ (define-public libidn (package (name "libidn") - (version "1.30") + (version "1.29") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/libidn/libidn-" version ".tar.gz")) (sha256 (base32 - "0lxh5r1z8gsk4jxx3rv8aasjv8p53j4y04kvfn2w30a0syagrf9r")))) + "0z3w5arlvyiyvzg76msg3n2px3c1glqr6wnj7rq6zczrpdyp90pv")))) (build-system gnu-build-system) ;; FIXME: No Java and C# libraries are currently built. (synopsis "Internationalized string processing library") -- cgit v1.2.3 From 30536f2c8b1d866b6020597a163d7ca11e02af9d Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Tue, 21 Apr 2015 22:59:50 +0200 Subject: gnu: libidn: Update to 1.30. * gnu/packages/libidn.scm (libidn): Update to 1.30. --- gnu/packages/libidn.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/libidn.scm b/gnu/packages/libidn.scm index 3e55618e53..49dafbeb6d 100644 --- a/gnu/packages/libidn.scm +++ b/gnu/packages/libidn.scm @@ -26,13 +26,13 @@ (define-public libidn (package (name "libidn") - (version "1.29") + (version "1.30") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/libidn/libidn-" version ".tar.gz")) (sha256 (base32 - "0z3w5arlvyiyvzg76msg3n2px3c1glqr6wnj7rq6zczrpdyp90pv")))) + "0lxh5r1z8gsk4jxx3rv8aasjv8p53j4y04kvfn2w30a0syagrf9r")))) (build-system gnu-build-system) ;; FIXME: No Java and C# libraries are currently built. (synopsis "Internationalized string processing library") -- cgit v1.2.3 From d8d6d096be8c37076060a3bc063582c404de1205 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 21 Apr 2015 19:02:52 -0400 Subject: gnu: tzdata: Update to 2015c. * gnu/packages/base.scm (tzdata): Update to 2015c. --- gnu/packages/base.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 0c2a4a5725..8a92e87fdd 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -691,7 +691,7 @@ command.") (define-public tzdata (package (name "tzdata") - (version "2015b") + (version "2015c") (source (origin (method url-fetch) (uri (string-append @@ -699,7 +699,7 @@ command.") version ".tar.gz")) (sha256 (base32 - "0qmdr1yqqn94b5a54axwszfzimyxg27i6xsfmp0sswd3nfjw2sjm")))) + "0nin48g5dmkfgckp25bngxchn3sw3yyjss5sq7gs5xspbxgsq3w6")))) (build-system gnu-build-system) (arguments '(#:tests? #f @@ -746,7 +746,7 @@ command.") version ".tar.gz")) (sha256 (base32 - "0xjxlgzva13y8qi3vfbb3nq5pii8ax9wi4yc7vj9134rbciz2s76")))))) + "0bplibiy70dvlrhwqzkzxgmg81j6d2kklvjgi2f1g2zz1nkb3vkz")))))) (home-page "http://www.iana.org/time-zones") (synopsis "Database of current and historical time zones") (description "The Time Zone Database (often called tz or zoneinfo) -- cgit v1.2.3 From dd3a42e6244ff2c256430cfa5c7689c0cfd81511 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 21 Apr 2015 11:43:57 -0400 Subject: gnu: guix: Don't install in /etc/bash_completion.d within build environment. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes . Patch by Ludovic Courtès . * gnu/packages/package-management.scm (guix)[arguments]: Pass "--with-bash-completion-dir" option to configure. --- gnu/packages/package-management.scm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 131cbcd9a7..5340d42980 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -67,6 +67,9 @@ `(#:configure-flags (list "--localstatedir=/var" "--sysconfdir=/etc" + (string-append "--with-bash-completion-dir=" + (assoc-ref %outputs "out") + "/etc/bash_completion.d") (string-append "--with-libgcrypt-prefix=" (assoc-ref %build-inputs "libgcrypt"))) -- cgit v1.2.3 From f1a7fd7029f775d70528a9508f672f356a168be4 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 21 Apr 2015 19:11:00 -0400 Subject: gnu: libxfont: Update to 1.5.1. * gnu/packages/xorg.scm (libxfont): Update to 1.5.1. --- gnu/packages/xorg.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 998f0803fc..0f8708c77d 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -4271,7 +4271,7 @@ graphics cards.") (define-public libxfont (package (name "libxfont") - (version "1.5.0") + (version "1.5.1") (source (origin (method url-fetch) @@ -4281,7 +4281,7 @@ graphics cards.") ".tar.bz2")) (sha256 (base32 - "0py2c498lrq6wrj9al6nj57v2ypid9cz0zzhc0hjndgrmp254g1s")))) + "1630v3sfvwwlimb2ja10c84ql6v1mw9bdfhvan7pbybkgi99h25p")))) (build-system gnu-build-system) (propagated-inputs `(("fontsproto" ,fontsproto) -- cgit v1.2.3 From aad8877d914b8dceb0c561d1e8d2b503731aad9a Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 21 Apr 2015 04:11:22 -0400 Subject: gnu: guix: Update development snapshot. * gnu/packages/package-management.scm (guix-devel): Update to dd3a42e. --- gnu/packages/package-management.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 5340d42980..29b2d93695 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -148,7 +148,7 @@ the Nix package manager.") ;; ;; Note: use a short commit id; when using the long one, the limit on socket ;; file names is exceeded while running the tests. - (let ((commit "0b13161")) + (let ((commit "dd3a42e")) (package (inherit guix-0.8.1) (version (string-append "0.8.1." commit)) (source (origin @@ -158,7 +158,7 @@ the Nix package manager.") (commit commit))) (sha256 (base32 - "0h9yyfxs14di858hb9ypjvdjryv8nzll6f9vxkggcy40iyhp65sh")))) + "0pamdfrdg5i01ghbkbbacfph98s7dc34irjj10s7pkn1r4fswzv8")))) (arguments (substitute-keyword-arguments (package-arguments guix-0.8.1) ((#:phases phases) -- cgit v1.2.3 From feaae484998233fca1ec57ca50ea8225221b1815 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Mon, 20 Apr 2015 13:42:53 +0800 Subject: gnu: Add python-waf. * gnu/packages/python.scm (python-waf, python2-waf): New variables. --- gnu/packages/python.scm | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index d64f6331d9..050c0de402 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -3508,3 +3508,39 @@ It is written entirely in Python.") (define-public python2-singledispatch (package-with-python2 python-singledispatch)) + +(define-public python-waf + (package + (name "python-waf") + (version "1.8.8") + (source (origin + (method url-fetch) + (uri (string-append "https://waf.io/" + "waf-" version ".tar.bz2")) + (sha256 + (base32 + "0b5q307fgn6a5d8yjia2d1l4bk1q3ilvc0w8k4isfrrx2gbcw8wn")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'build + (lambda _ + (zero? (begin + (system* "python" "waf-light" "configure") + (system* "python" "waf-light" "build"))))) + (replace 'check + (lambda _ + (zero? (system* "python" "waf" "--version")))) + (replace 'install + (lambda _ + (copy-file "waf" %output)))))) + (home-page "https://waf.io/") + (synopsis "Python-based build system") + (description + "Waf is a Python-based framework for configuring, compiling and installing +applications.") + (license bsd-3))) + +(define-public python2-waf + (package-with-python2 python-waf)) -- cgit v1.2.3 From f210f057a7eb3ce20a969858a26b247fb2a52247 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Mon, 20 Apr 2015 13:45:43 +0800 Subject: gnu: python-pycairo: Fix build with with python-3.4.3. * gnu/packages/patches/pycairo-wscript.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/gtk.scm (python-pycairo)[source]: Use it. [build-system]: Use waf-build-system. [native-inputs]: Add python-waf. [arguments]<#:phases>: Use 'modify-phases'. Add 'patch-waf phase. * gnu/packages/gtk.scm (python2-pycairo): Adjust accordingly. --- gnu-system.am | 1 + gnu/packages/gtk.scm | 37 +++++++++++++++--------------- gnu/packages/patches/pycairo-wscript.patch | 31 +++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 19 deletions(-) create mode 100644 gnu/packages/patches/pycairo-wscript.patch diff --git a/gnu-system.am b/gnu-system.am index b11706cb99..723d25116b 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -514,6 +514,7 @@ dist_patch_DATA = \ gnu/packages/patches/procps-make-3.82.patch \ gnu/packages/patches/pulseaudio-fix-mult-test.patch \ gnu/packages/patches/pulseaudio-longer-test-timeout.patch \ + gnu/packages/patches/pycairo-wscript.patch \ gnu/packages/patches/pybugz-encode-error.patch \ gnu/packages/patches/pybugz-stty.patch \ gnu/packages/patches/pyqt-configure.patch \ diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index cd54cfc5b9..67838a3752 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -30,6 +30,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system python) #:use-module (guix build-system waf) + #:use-module (gnu packages) #:use-module (gnu packages check) #:use-module (gnu packages gettext) #:use-module (gnu packages compression) @@ -733,29 +734,23 @@ extensive documentation, including API reference and a tutorial.") version ".tar.bz2")) (sha256 (base32 - "1gjkf8x6hyx1skq3hhwcbvwifxvrf9qxis5vx8x5igmmgs70g94s")))) - (build-system python-build-system) + "1gjkf8x6hyx1skq3hhwcbvwifxvrf9qxis5vx8x5igmmgs70g94s")) + (patches (list (search-patch "pycairo-wscript.patch"))))) + (build-system waf-build-system) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config) + ("python-waf" ,python-waf))) (propagated-inputs ;pycairo.pc references cairo `(("cairo" ,cairo))) (arguments `(#:tests? #f - #:phases (alist-cons-before - 'build 'configure - (lambda* (#:key outputs #:allow-other-keys) - (zero? (system* "./waf" "configure" - (string-append "--prefix=" - (assoc-ref outputs "out"))))) - (alist-replace - 'build - (lambda _ - (zero? (system* "./waf" "build"))) - (alist-replace - 'install - (lambda _ - (zero? (system* "./waf" "install"))) - %standard-phases))))) + #:phases + (modify-phases %standard-phases + (add-before + 'configure 'patch-waf + (lambda* (#:key inputs #:allow-other-keys) + ;; The bundled `waf' doesn't work with python-3.4.x. + (copy-file (assoc-ref %build-inputs "python-waf") "./waf")))))) (home-page "http://cairographics.org/pycairo/") (synopsis "Python bindings for cairo") (description @@ -776,7 +771,11 @@ extensive documentation, including API reference and a tutorial.") "0cblk919wh6w0pgb45zf48xwxykfif16qk264yga7h9fdkq3j16k")))) (arguments `(#:python ,python-2 - ,@(package-arguments python-pycairo))) + ,@(substitute-keyword-arguments (package-arguments python-pycairo) + ((#:phases phases) + `(alist-delete 'patch-waf ,phases)) + ((#:native-inputs native-inputs) + `(alist-delete "python-waf" ,native-inputs))))) ;; Dual-licensed under LGPL 2.1 or Mozilla Public License 1.1 (license (list license:lgpl2.1 license:mpl1.1)))) diff --git a/gnu/packages/patches/pycairo-wscript.patch b/gnu/packages/patches/pycairo-wscript.patch new file mode 100644 index 0000000000..c49f0afcb3 --- /dev/null +++ b/gnu/packages/patches/pycairo-wscript.patch @@ -0,0 +1,31 @@ +Update the wscript to work with waf-1.8.8. Based on: +http://cgit.freedesktop.org/pycairo/commit/?id=c57cd129407c904f8c2f752a59d0183df7b01a5e + + +--- pycairo-1.10.0.orig/wscript 2011-04-18 15:42:29.000000000 +0800 ++++ pycairo-1.10.0/wscript 2015-04-20 13:01:45.383756898 +0800 +@@ -13,18 +13,18 @@ + + def options(ctx): + print(' %s/options()' %d) +- ctx.tool_options('gnu_dirs') +- ctx.tool_options('compiler_cc') +- ctx.tool_options('python') # options for disabling pyc or pyo compilation ++ ctx.load('gnu_dirs') ++ ctx.load('compiler_c') ++ ctx.load('python') # options for disabling pyc or pyo compilation + + + def configure(ctx): + print(' %s/configure()' %d) + + env = ctx.env +- ctx.check_tool('gnu_dirs') +- ctx.check_tool('compiler_cc') +- ctx.check_tool('python') ++ ctx.load('gnu_dirs') ++ ctx.load('compiler_c') ++ ctx.load('python') + ctx.check_python_version((3,1,0)) + ctx.check_python_headers() + ctx.check_cfg(package='cairo', atleast_version=cairo_version_required, -- cgit v1.2.3 From 3a5bce15d95d67810e5adebcb445247cc3f5fd1b Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 21 Apr 2015 11:43:57 -0400 Subject: gnu: guix: Don't install in /etc/bash_completion.d within build environment. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes . Patch by Ludovic Courtès . * gnu/packages/package-management.scm (guix)[arguments]: Pass "--with-bash-completion-dir" option to configure. --- gnu/packages/package-management.scm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 131cbcd9a7..5340d42980 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -67,6 +67,9 @@ `(#:configure-flags (list "--localstatedir=/var" "--sysconfdir=/etc" + (string-append "--with-bash-completion-dir=" + (assoc-ref %outputs "out") + "/etc/bash_completion.d") (string-append "--with-libgcrypt-prefix=" (assoc-ref %build-inputs "libgcrypt"))) -- cgit v1.2.3 From 360ebb1490cedd80589bb7b80db2123d7ca35eec Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 21 Apr 2015 04:11:22 -0400 Subject: gnu: guix: Update development snapshot. * gnu/packages/package-management.scm (guix-devel): Update to dd3a42e. --- gnu/packages/package-management.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 5340d42980..29b2d93695 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -148,7 +148,7 @@ the Nix package manager.") ;; ;; Note: use a short commit id; when using the long one, the limit on socket ;; file names is exceeded while running the tests. - (let ((commit "0b13161")) + (let ((commit "dd3a42e")) (package (inherit guix-0.8.1) (version (string-append "0.8.1." commit)) (source (origin @@ -158,7 +158,7 @@ the Nix package manager.") (commit commit))) (sha256 (base32 - "0h9yyfxs14di858hb9ypjvdjryv8nzll6f9vxkggcy40iyhp65sh")))) + "0pamdfrdg5i01ghbkbbacfph98s7dc34irjj10s7pkn1r4fswzv8")))) (arguments (substitute-keyword-arguments (package-arguments guix-0.8.1) ((#:phases phases) -- cgit v1.2.3 From 45ca81c20da134074718a8450f77b32e3f3491d0 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Mon, 20 Apr 2015 13:42:53 +0800 Subject: gnu: Add python-waf. * gnu/packages/python.scm (python-waf, python2-waf): New variables. --- gnu/packages/python.scm | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index d64f6331d9..050c0de402 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -3508,3 +3508,39 @@ It is written entirely in Python.") (define-public python2-singledispatch (package-with-python2 python-singledispatch)) + +(define-public python-waf + (package + (name "python-waf") + (version "1.8.8") + (source (origin + (method url-fetch) + (uri (string-append "https://waf.io/" + "waf-" version ".tar.bz2")) + (sha256 + (base32 + "0b5q307fgn6a5d8yjia2d1l4bk1q3ilvc0w8k4isfrrx2gbcw8wn")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'build + (lambda _ + (zero? (begin + (system* "python" "waf-light" "configure") + (system* "python" "waf-light" "build"))))) + (replace 'check + (lambda _ + (zero? (system* "python" "waf" "--version")))) + (replace 'install + (lambda _ + (copy-file "waf" %output)))))) + (home-page "https://waf.io/") + (synopsis "Python-based build system") + (description + "Waf is a Python-based framework for configuring, compiling and installing +applications.") + (license bsd-3))) + +(define-public python2-waf + (package-with-python2 python-waf)) -- cgit v1.2.3 From b837e658bdab9e68d17fc0b326ff4556ab623a6b Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Mon, 20 Apr 2015 13:45:43 +0800 Subject: gnu: python-pycairo: Fix build with with python-3.4.3. * gnu/packages/patches/pycairo-wscript.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/gtk.scm (python-pycairo)[source]: Use it. [build-system]: Use waf-build-system. [native-inputs]: Add python-waf. [arguments]<#:phases>: Use 'modify-phases'. Add 'patch-waf phase. * gnu/packages/gtk.scm (python2-pycairo): Adjust accordingly. --- gnu-system.am | 1 + gnu/packages/gtk.scm | 37 +++++++++++++++--------------- gnu/packages/patches/pycairo-wscript.patch | 31 +++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 19 deletions(-) create mode 100644 gnu/packages/patches/pycairo-wscript.patch diff --git a/gnu-system.am b/gnu-system.am index b11706cb99..723d25116b 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -514,6 +514,7 @@ dist_patch_DATA = \ gnu/packages/patches/procps-make-3.82.patch \ gnu/packages/patches/pulseaudio-fix-mult-test.patch \ gnu/packages/patches/pulseaudio-longer-test-timeout.patch \ + gnu/packages/patches/pycairo-wscript.patch \ gnu/packages/patches/pybugz-encode-error.patch \ gnu/packages/patches/pybugz-stty.patch \ gnu/packages/patches/pyqt-configure.patch \ diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index cd54cfc5b9..67838a3752 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -30,6 +30,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system python) #:use-module (guix build-system waf) + #:use-module (gnu packages) #:use-module (gnu packages check) #:use-module (gnu packages gettext) #:use-module (gnu packages compression) @@ -733,29 +734,23 @@ extensive documentation, including API reference and a tutorial.") version ".tar.bz2")) (sha256 (base32 - "1gjkf8x6hyx1skq3hhwcbvwifxvrf9qxis5vx8x5igmmgs70g94s")))) - (build-system python-build-system) + "1gjkf8x6hyx1skq3hhwcbvwifxvrf9qxis5vx8x5igmmgs70g94s")) + (patches (list (search-patch "pycairo-wscript.patch"))))) + (build-system waf-build-system) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config) + ("python-waf" ,python-waf))) (propagated-inputs ;pycairo.pc references cairo `(("cairo" ,cairo))) (arguments `(#:tests? #f - #:phases (alist-cons-before - 'build 'configure - (lambda* (#:key outputs #:allow-other-keys) - (zero? (system* "./waf" "configure" - (string-append "--prefix=" - (assoc-ref outputs "out"))))) - (alist-replace - 'build - (lambda _ - (zero? (system* "./waf" "build"))) - (alist-replace - 'install - (lambda _ - (zero? (system* "./waf" "install"))) - %standard-phases))))) + #:phases + (modify-phases %standard-phases + (add-before + 'configure 'patch-waf + (lambda* (#:key inputs #:allow-other-keys) + ;; The bundled `waf' doesn't work with python-3.4.x. + (copy-file (assoc-ref %build-inputs "python-waf") "./waf")))))) (home-page "http://cairographics.org/pycairo/") (synopsis "Python bindings for cairo") (description @@ -776,7 +771,11 @@ extensive documentation, including API reference and a tutorial.") "0cblk919wh6w0pgb45zf48xwxykfif16qk264yga7h9fdkq3j16k")))) (arguments `(#:python ,python-2 - ,@(package-arguments python-pycairo))) + ,@(substitute-keyword-arguments (package-arguments python-pycairo) + ((#:phases phases) + `(alist-delete 'patch-waf ,phases)) + ((#:native-inputs native-inputs) + `(alist-delete "python-waf" ,native-inputs))))) ;; Dual-licensed under LGPL 2.1 or Mozilla Public License 1.1 (license (list license:lgpl2.1 license:mpl1.1)))) diff --git a/gnu/packages/patches/pycairo-wscript.patch b/gnu/packages/patches/pycairo-wscript.patch new file mode 100644 index 0000000000..c49f0afcb3 --- /dev/null +++ b/gnu/packages/patches/pycairo-wscript.patch @@ -0,0 +1,31 @@ +Update the wscript to work with waf-1.8.8. Based on: +http://cgit.freedesktop.org/pycairo/commit/?id=c57cd129407c904f8c2f752a59d0183df7b01a5e + + +--- pycairo-1.10.0.orig/wscript 2011-04-18 15:42:29.000000000 +0800 ++++ pycairo-1.10.0/wscript 2015-04-20 13:01:45.383756898 +0800 +@@ -13,18 +13,18 @@ + + def options(ctx): + print(' %s/options()' %d) +- ctx.tool_options('gnu_dirs') +- ctx.tool_options('compiler_cc') +- ctx.tool_options('python') # options for disabling pyc or pyo compilation ++ ctx.load('gnu_dirs') ++ ctx.load('compiler_c') ++ ctx.load('python') # options for disabling pyc or pyo compilation + + + def configure(ctx): + print(' %s/configure()' %d) + + env = ctx.env +- ctx.check_tool('gnu_dirs') +- ctx.check_tool('compiler_cc') +- ctx.check_tool('python') ++ ctx.load('gnu_dirs') ++ ctx.load('compiler_c') ++ ctx.load('python') + ctx.check_python_version((3,1,0)) + ctx.check_python_headers() + ctx.check_cfg(package='cairo', atleast_version=cairo_version_required, -- cgit v1.2.3 From cc84b08c7821be4a2e2143f139957639bd59fc58 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Mon, 20 Apr 2015 17:57:52 +0800 Subject: gnu: gobject-introspection: Update to 1.44.0. * gnu/packages/glib.scm (gobject-introspection): Update to 1.44.0. [source]: Use mirror://gnome. [arguments]<#:phases>: Remove. * gnu/packages/patches/gobject-introspection-cc.patch: Rewrite to set os.environ['CC'] in 'giscanner/__init__.py'. --- gnu/packages/glib.scm | 15 ++++--------- .../patches/gobject-introspection-cc.patch | 25 ++++++++++------------ 2 files changed, 15 insertions(+), 25 deletions(-) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index 688c0b61d0..fe899095b4 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -207,14 +207,14 @@ dynamic loading, and an object system.") (define gobject-introspection (package (name "gobject-introspection") - (version "1.42.0") + (version "1.44.0") (source (origin (method url-fetch) - (uri (string-append "http://ftp.gnome.org/pub/GNOME/sources/" + (uri (string-append "mirror://gnome/sources/" "gobject-introspection/" (version-major+minor version) "/gobject-introspection-" version ".tar.xz")) (sha256 - (base32 "1xwm7wmr9r9wp6xljb3bckx3a4siybavaq39w46ly7gpskxfv8iv")) + (base32 "1b972qg2yb51sdavfvb6kc19akwc15c1bwnbg81vadxamql2q33g")) (patches (list (search-patch "gobject-introspection-cc.patch") (search-patch @@ -243,14 +243,7 @@ dynamic loading, and an object system.") (arguments `(;; The patch 'gobject-introspection-absolute-shlib-path.patch' causes ;; some tests to fail. - #:tests? #f - #:phases - (alist-cons-before - 'configure 'patch-paths - (lambda _ - (substitute* "giscanner/sourcescanner.py" - (("GUIX_GCC_PATH") (which "gcc")))) - %standard-phases))) + #:tests? #f)) (home-page "https://wiki.gnome.org/GObjectIntrospection") (synopsis "Generate interface introspection data for GObject libraries") (description diff --git a/gnu/packages/patches/gobject-introspection-cc.patch b/gnu/packages/patches/gobject-introspection-cc.patch index 38b919a746..d9cacf4ca7 100644 --- a/gnu/packages/patches/gobject-introspection-cc.patch +++ b/gnu/packages/patches/gobject-introspection-cc.patch @@ -1,14 +1,11 @@ ---- a/giscanner/sourcescanner.py 2013-12-15 23:03:54.002937000 +0100 -+++ b/giscanner/sourcescanner.py 2013-12-15 23:04:50.322937000 +0100 -@@ -277,6 +277,11 @@ - defines = ['__GI_SCANNER__'] - undefs = [] - cpp_args = os.environ.get('CC', 'cc').split() # support CC="ccache gcc" -+ if (cpp_args == ['cc'] and -+ not any(map(lambda x: os.access(os.path.join(x, 'cc'), os.X_OK), -+ os.environ.get('PATH').split(':')))): -+ cpp_args = ['GUIX_GCC_PATH'] -+ - if 'cl' in cpp_args: - # The Microsoft compiler/preprocessor (cl) does not accept - # source input from stdin (the '-' flag), so we need +Use gcc as the default C compiler if CC is not set. + + +--- gobject-introspection-1.44.0.orig/giscanner/__init__.py 2014-08-04 22:37:07.000000000 +0800 ++++ gobject-introspection-1.44.0/giscanner/__init__.py 2015-04-20 17:30:26.507697234 +0800 +@@ -22,3 +22,5 @@ + builddir = os.environ.get('UNINSTALLED_INTROSPECTION_BUILDDIR') + if builddir is not None: + __path__.append(os.path.join(builddir, 'giscanner')) ++if not 'CC' in os.environ: ++ os.environ['CC'] = 'gcc' -- cgit v1.2.3 From 3c87c02edc4de69127e2ab2a54d56612a576075d Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Mon, 20 Apr 2015 18:04:38 +0800 Subject: gnu: itstool: Update to 2.0.2. * gnu/packages/glib.scm (itstool): Update to 2.0.2. --- gnu/packages/glib.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index fe899095b4..13c1314e3e 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -306,14 +306,14 @@ The intltool collection can be used to do these things: (define itstool (package (name "itstool") - (version "1.2.0") + (version "2.0.2") (source (origin (method url-fetch) (uri (string-append "http://files.itstool.org/itstool/itstool-" version ".tar.bz2")) (sha256 (base32 - "1akq75aflihm3y7js8biy7b5mw2g11vl8yq90gydnwlwp0zxdzj6")))) + "0fh34wi52i0qikgvlmrcpf1vx6gc1xqdad4539l4d9hikfsrz45z")))) (build-system gnu-build-system) (propagated-inputs `(("libxml2" ,libxml2) -- cgit v1.2.3 From cb77ade637c27d06ea79be75e8c5be452863db10 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Mon, 20 Apr 2015 18:05:22 +0800 Subject: gnu: dbus-glib: Update to 0.104. * gnu/packages/glib.scm (dbus-glib): Update to 0.104. --- gnu/packages/glib.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index 13c1314e3e..c0fb00bb66 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -343,7 +343,7 @@ translated.") (define dbus-glib (package (name "dbus-glib") - (version "0.102") + (version "0.104") (source (origin (method url-fetch) (uri @@ -351,7 +351,7 @@ translated.") version ".tar.gz")) (sha256 (base32 - "177j5p2vrvpmzk2xrrj6akn73kvpbvnmsjvlmca9l55qbdcfsr39")))) + "1xi1v1msz75qs0s4lkyf1psrksdppa3hwkg0mznc6gpw5flg3hdz")))) (build-system gnu-build-system) (inputs `(("dbus" ,dbus) -- cgit v1.2.3 From e7a720e681c684bb2c434736d81ea39d2ddc3b40 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Mon, 20 Apr 2015 18:06:26 +0800 Subject: gnu: libsigc++: Update to 2.4.1. * gnu/packages/glib.scm (libsigc++): Update to 2.4.1. --- gnu/packages/glib.scm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index c0fb00bb66..f1de8870d4 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -370,14 +370,15 @@ by GDBus included in Glib.") (define libsigc++ (package (name "libsigc++") - (version "2.3.1") + (version "2.4.1") (source (origin (method url-fetch) - (uri (string-append "mirror://gnome/sources/libsigc++/2.3/libsigc++-" - version ".tar.xz")) + (uri (string-append "mirror://gnome/sources/libsigc++/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) (sha256 (base32 - "14q3sq6d43f6wfcmwhw4v1aal4ba0h5x9v6wkxy2dnqznd95il37")))) + "1v0rvkzglzmf67y9nkcppwjwi68j1cy5yhldvcq7xrv8594l612l")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) ("m4" ,m4))) -- cgit v1.2.3 From 759dd7d5b937ffcebdad21db952cee013ab8d016 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Mon, 20 Apr 2015 18:07:09 +0800 Subject: gnu: glibmm: Update to 2.44.0. * gnu/packages/glib.scm (glibmm): Update to 2.44.0. --- gnu/packages/glib.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index f1de8870d4..18a5a513cc 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -397,7 +397,7 @@ has an ease of use unmatched by other C++ callback libraries.") (define glibmm (package (name "glibmm") - (version "2.42.0") + (version "2.44.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/glibmm/" @@ -405,7 +405,7 @@ has an ease of use unmatched by other C++ callback libraries.") "/glibmm-" version ".tar.xz")) (sha256 (base32 - "15rk3az8jh3rdwlc3lxjljbnh60drj3ka9574zd39lkqfgcq6l4q")))) + "1a1fczy7hcpn24fglyn4i79f4yjc8s50is70q03mb294bm1c02hv")))) (build-system gnu-build-system) (arguments `(#:phases (alist-cons-before -- cgit v1.2.3 From 6b6795595e09902e004b72c067703df764b54289 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Mon, 20 Apr 2015 18:08:52 +0800 Subject: gnu: python-pygobject: Update to 3.16.1. * gnu/packages/glib.scm (python-pygobject): Update to 3.16.1. --- gnu/packages/glib.scm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index 18a5a513cc..f888d5bea4 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -479,8 +479,7 @@ useful for C++.") (define-public python-pygobject (package (name "python-pygobject") - (version "3.12.2") ;last version that works with - ;gobject-introspection 1.38 + (version "3.16.1") (source (origin (method url-fetch) @@ -489,8 +488,7 @@ useful for C++.") "/pygobject-" version ".tar.xz")) (sha256 (base32 - "08m5yad1hjdax4g39w6lgjk4124mcwpa8fc5iyvb8nygk8s3syky")))) - ;; 3.14.0: 0m1d75iwxa6k1xbkn6c6yq5r10pxnf7i5c2a5yvwsnab7ylzz7kp + "1hqyma73w0lnjcgx68kawhnq84aq92xlkdqphrlc2ppia38dm5kx")))) (build-system gnu-build-system) (native-inputs `(("which" ,which) -- cgit v1.2.3 From 702513b51acfec33567477383778a3907a448481 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Mon, 20 Apr 2015 18:09:40 +0800 Subject: gnu: poppler: Update to 0.32.0. * gnu/packages/pdf.scm (poppler): Update to 0.32.0. --- gnu/packages/pdf.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index 21fb39562b..bca577eb35 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -50,13 +50,13 @@ (define-public poppler (package (name "poppler") - (version "0.28.1") + (version "0.32.0") (source (origin (method url-fetch) (uri (string-append "http://poppler.freedesktop.org/poppler-" version ".tar.xz")) (sha256 (base32 - "01pxjdbhvpxf00ncf8d9wxc8gkcqcxz59lwrpa151ah988inxkrc")))) + "162vfbvbz0frvqyk00ldsbl49h4bj8i8wn0ngfl30xg1lldy6qs9")))) (build-system gnu-build-system) ;; FIXME: more dependencies could be added ;; cairo output: no (requires cairo >= 1.10.0) -- cgit v1.2.3 From b19d6805a95404750ac90f19d78e29c885daacff Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 22 Apr 2015 10:23:59 +0800 Subject: Remove all the 'CC=gcc' hacks for 'g-ir-scanner'. * gnu/packages/glib.scm (telepathy-glib)[arguments]: Remove. * gnu/packages/gtk.scm (at-spi2-core, gtk+-2): Remove #:make-flags. * gnu/packages/gnome.scm (libpeas, librsvg, vala, vte, json-glib, libxklavier, libsoup, libsecret, colord, geocode-glib, libgweather): Remove #:make-flags or the '(setenv "CC" "gcc")' phase. --- gnu/packages/glib.scm | 8 -------- gnu/packages/gnome.scm | 50 ++++---------------------------------------------- gnu/packages/gtk.scm | 6 ++---- 3 files changed, 6 insertions(+), 58 deletions(-) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index f888d5bea4..1d43895f5c 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -541,14 +541,6 @@ useful for C++.") (base32 "1symyzbjmxvksn2ifdkk50lafjm2llf2sbmky062gq2pz3cg23cy")))) (build-system gnu-build-system) - (arguments - '(#:phases (alist-cons-before - 'build 'set-cc - (lambda _ - ;; Set $CC so that g-ir-scanner works. - (setenv "CC" "gcc") - #t) - %standard-phases))) (native-inputs `(("glib" ,glib "bin") ; uses glib-mkenums ("pkg-config" ,pkg-config) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 33ce2e8717..057fc33f09 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -499,13 +499,6 @@ some form of information without getting in the user's way.") ("glib:bin" ,glib "bin") ("gobject-introspection" ,gobject-introspection) ("intltool" ,intltool))) - (arguments - `(#:phases - (alist-cons-before - 'build 'pre-build - (lambda* _ - (setenv "CC" "gcc")) - %standard-phases))) (home-page "https://wiki.gnome.org/Libpeas") (synopsis "GObject plugin system") (description @@ -675,11 +668,7 @@ dealing with different structured file formats.") (string-join (find-files (assoc-ref inputs "gdk-pixbuf") "libpixbufloader-.*\\.so") " ") "> " loaders-directory ".cache"))))) - (alist-cons-before - 'build 'pre-build - (lambda* _ - (setenv "CC" "gcc")) - %standard-phases))))) + %standard-phases)))) (native-inputs `(("pkg-config" ,pkg-config) ("glib" ,glib "bin") ; glib-mkenums, etc. @@ -1395,7 +1384,6 @@ engineering.") (base32 "0swyym2papln0f62ah05dpvq3vv6fssap26jq2zqp9dkkaqsn1w4")))) (build-system gnu-build-system) - (arguments '(#:make-flags '("CC=gcc"))) (native-inputs `(("pkg-config" ,pkg-config) ("flex" ,flex) @@ -1437,13 +1425,6 @@ libraries written in C.") (propagated-inputs `(("gtk+" ,gtk+) ;required by vte-2.91.pc ("gnutls" ,gnutls))) ;ditto - (arguments - `(#:phases - (alist-cons-before - 'build 'pre-build - (lambda* _ - (setenv "CC" "gcc")) - %standard-phases))) (home-page "http://www.gnome.org/") (synopsis "Virtual Terminal Emulator") (description @@ -1542,14 +1523,6 @@ configuration storage systems.") (base32 "02k66lpc4cmgygj66n8zcy59bggy7yzm3v4hni9xqplgva9d2yw8")))) (build-system gnu-build-system) - (arguments - '(#:phases (alist-cons-before - 'build 'set-cc - (lambda _ - ;; Set $CC so that g-ir-scanner works. - (setenv "CC" "gcc") - #t) - %standard-phases))) (native-inputs `(("glib" ,glib "bin") ;for glib-mkenums and glib-genmarshal ("gobject-introspection" ,gobject-introspection) @@ -1581,13 +1554,7 @@ JSON, such as arrays and objects.") '(#:configure-flags (list (string-append "--with-xkb-base=" (assoc-ref %build-inputs "xkeyboard-config") - "/share/X11/xkb")) - #:phases - (alist-cons-before - 'build 'set-cc - (lambda _ - (setenv "CC" "gcc")) ; for g-ir-scanner. - %standard-phases))) + "/share/X11/xkb")))) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc. ("gobject-introspection" ,gobject-introspection) @@ -1698,8 +1665,7 @@ library.") (build-system gnu-build-system) (outputs '("out" "doc")) (arguments - `(#:make-flags '("CC=gcc") ; for g-ir-scanner - #:configure-flags + `(#:configure-flags (list (string-append "--with-html-dir=" (assoc-ref %outputs "doc") "/share/gtk-doc/html") @@ -1762,7 +1728,6 @@ and the GLib main loop, to integrate well with GNOME applications.") (outputs '("out" "doc")) (arguments `(#:tests? #f ; FIXME: Testing hangs. - #:make-flags '("CC=gcc") ; for g-ir-scanner. #:configure-flags (list (string-append "--with-html-dir=" (assoc-ref %outputs "doc") @@ -1926,12 +1891,7 @@ keyboard shortcuts.") (("/bin/true") (which "true"))) (substitute* "src/Makefile.in" (("if test -w \\$\\(DESTDIR\\)\\$\\(prefix\\)/;") - "if test -w $(DESTDIR)$(localstatedir);")))) - (add-before 'build 'set-cc - (lambda _ - ;; Set $CC so that g-ir-scanner works. - (setenv "CC" "gcc") - #t))))) + "if test -w $(DESTDIR)$(localstatedir);"))))))) (native-inputs `(("pkg-config" ,pkg-config) ("gobject-introspection" ,gobject-introspection) @@ -2015,7 +1975,6 @@ permission from user. ") `(;; The tests want to write to $HOME/.cache/geocode-glib, which doesn't ;; work for the builder. Punt. #:tests? #f - #:make-flags '("CC=gcc") ; for g-ir-scanner )) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-mkenums @@ -2103,7 +2062,6 @@ service via the system message bus.") `(;; The tests want to write to $HOME/.cache/geocode-glib, which doesn't ;; work for the builder. Punt. #:tests? #f - #:make-flags '("CC=gcc") ; for g-ir-scanner #:configure-flags `(;; No introspection for now, as it wants to install to ;; gobject-introspection's own directory and I don't know how to easily diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 67838a3752..c9b3313280 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -353,8 +353,7 @@ in the GNOME project.") (build-system gnu-build-system) (outputs '("out" "doc")) (arguments - '(#:make-flags '("CC=gcc") ; for g-ir-scanner - #:configure-flags + '(#:configure-flags (list (string-append "--with-html-dir=" (assoc-ref %outputs "doc") "/share/gtk-doc/html")) @@ -450,8 +449,7 @@ is part of the GNOME accessibility project.") ("pkg-config" ,pkg-config) ("python-wrapper" ,python-wrapper))) (arguments - `(#:make-flags '("CC=gcc") - #:configure-flags + `(#:configure-flags (list "--with-xinput=yes" (string-append "--with-html-dir=" (assoc-ref %outputs "doc") -- cgit v1.2.3 From 1ea90625e4d4bfcd27cd0f3bfcaf67c229355841 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 22 Apr 2015 14:29:46 +0800 Subject: gnu: vala: Fix tests by setting 'CC'. This fixes a regression introduced in b19d680. * gnu/packages/gnome.scm (vala)[arguments]: New field. --- gnu/packages/gnome.scm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 057fc33f09..871cde8491 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1374,7 +1374,7 @@ engineering.") (define-public vala (package (name "vala") - (version "0.26.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -1382,8 +1382,15 @@ engineering.") name "-" version ".tar.xz")) (sha256 (base32 - "0swyym2papln0f62ah05dpvq3vv6fssap26jq2zqp9dkkaqsn1w4")))) + "0zwpzhkhfk3piya14m7p2hl2vaabahprphppfm46ci91z39kp7hd")))) (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before 'check 'set-cc + (lambda _ + (setenv "CC" "gcc") + #t))))) (native-inputs `(("pkg-config" ,pkg-config) ("flex" ,flex) -- cgit v1.2.3 From e4c9d9bb66cab9b57c064bfb461f6d6c6cf7b31a Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 22 Apr 2015 14:33:05 +0800 Subject: gnu: cups-filters: Update to 1.0.68. * gnu/packages/cups.scm (cups-filters): Update to 1.0.68. --- gnu/packages/cups.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm index a74e4097eb..3acf9dfd46 100644 --- a/gnu/packages/cups.scm +++ b/gnu/packages/cups.scm @@ -36,7 +36,7 @@ (define-public cups-filters (package (name "cups-filters") - (version "1.0.61") + (version "1.0.68") (source (origin (method url-fetch) (uri @@ -44,7 +44,7 @@ "cups-filters-" version ".tar.xz")) (sha256 (base32 - "1bq48nnrarlbf6qc93bz1n5wlh6j420gppbck3r45sinwhz5wa7m")) + "0dx4assqzqdi0q4j7z5s7xzzvzxnd5c1njd9139a1h353qrcr5fi")) (modules '((guix build utils))) (snippet ;; install backends, banners and filters to cups-filters output -- cgit v1.2.3 From 46b9a4ffab1f70462ee1e00297277cca0e441f8f Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 22 Apr 2015 14:52:08 +0800 Subject: gnu: gtk+: Update to 3.16.2. * gnu/packages/gtk.scm (gtk+): Update to 3.16.2. --- gnu/packages/gtk.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index c9b3313280..5c56dc4db3 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -474,7 +474,7 @@ application suites.") (define-public gtk+ (package (inherit gtk+-2) (name "gtk+") - (version "3.16.0") + (version "3.16.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -482,7 +482,7 @@ application suites.") name "-" version ".tar.xz")) (sha256 (base32 - "1si6ihl1wlvag8qq3166skr9fnm9i33dimbfry1j628qzqc76qff")))) + "1yhwg2l72l3khfkprydcjlpxjrg11ccqfc80sjl56llz3jk66fd0")))) (propagated-inputs `(("at-spi2-atk" ,at-spi2-atk) ("atk" ,atk) -- cgit v1.2.3 From a8054b4e5d5664b233ef9e15a799b77758be2f98 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 22 Apr 2015 14:53:05 +0800 Subject: gnu: pangomm: Update to 2.36.0. * gnu/packages/gtk.scm (pangomm): Update to 2.36.0. --- gnu/packages/gtk.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 5c56dc4db3..8dfc597b04 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -624,7 +624,7 @@ library.") (define-public pangomm (package (name "pangomm") - (version "2.34.0") + (version "2.36.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -632,7 +632,7 @@ library.") name "-" version ".tar.xz")) (sha256 (base32 - "0hcyvv7c5zmivprdam6cp111i6hn2y5jsxzk00m6j9pncbzvp0hf")))) + "1w11d05nkxglzg67rfa81vqghm75xhy6j396xmmp5mq8qx96knd8")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (propagated-inputs -- cgit v1.2.3 From 09a5c4c36340a4d949ba96283a70940ffa64b4f1 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 22 Apr 2015 14:54:10 +0800 Subject: gnu: gtkmm: Update to 3.16.0. * gnu/packages/gtk.scm (gtkmm): Update to 3.16.0. --- gnu/packages/gtk.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 8dfc597b04..e52d8fc1ac 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -673,7 +673,7 @@ toolkit.") (define-public gtkmm (package (name "gtkmm") - (version "3.14.0") + (version "3.16.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -681,7 +681,7 @@ toolkit.") name "-" version ".tar.xz")) (sha256 (base32 - "12z4g2in82nk92nfjs2hmrdcwbav8v3laz1813x2dhkf5jk2ixfr")))) + "036xn22jkaf3akpid7w23b8vkqa3xxqz93mwacmyar5vw7slm3cv")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (propagated-inputs -- cgit v1.2.3 From f8f63893be97be8afc55668faa6601a24bb41e2d Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 22 Apr 2015 14:59:45 +0800 Subject: gnu: gtkmm-2: Update to 2.24.4. * gnu/packages/gtk.scm (gtkmm-2): Update to 2.24.4. --- gnu/packages/gtk.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index e52d8fc1ac..0f7ba863e8 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -705,7 +705,7 @@ extensive documentation, including API reference and a tutorial.") (define-public gtkmm-2 (package (inherit gtkmm) (name "gtkmm") - (version "2.24.2") + (version "2.24.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -713,7 +713,7 @@ extensive documentation, including API reference and a tutorial.") name "-" version ".tar.xz")) (sha256 (base32 - "0gcm91sc1a05c56kzh74l370ggj0zz8nmmjvjaaxgmhdq8lpl369")))) + "1vpmjqv0aqb1ds0xi6nigxnhlr0c74090xzi15b92amlzkrjyfj4")))) (propagated-inputs `(("pangomm" ,pangomm) ("cairomm" ,cairomm) -- cgit v1.2.3 From 446c7e4de339f8b6ad950afa58f000220d80a5f4 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 21 Apr 2015 22:42:40 -0400 Subject: gnu: julia: Fix make-flags on non-Intel platforms. * gnu/packages/julia.scm (julia)[arguments]: Add default case in 'match' form. --- gnu/packages/julia.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm index e5990441f5..c9428c4f12 100644 --- a/gnu/packages/julia.scm +++ b/gnu/packages/julia.scm @@ -118,7 +118,10 @@ ,(match (or (%current-target-system) (%current-system)) ("x86_64-linux" "MARCH=x86-64") - ("i686-linux" "MARCH=pentium4")) + ("i686-linux" "MARCH=pentium4") + ;; Prevent errors when querying this package on unsupported + ;; platforms, e.g. when running "guix package --search=" + (_ "MARCH=UNSUPPORTED")) "CONFIG_SHELL=bash" ;needed to build bundled libraries "USE_SYSTEM_LIBUV=0" ;Julia expects a modified libuv -- cgit v1.2.3 From f0d6d83552c08fb35f6aaf8b46876be55e73a37c Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 21 Apr 2015 22:47:59 -0400 Subject: gnu: mplayer: Fix configure flags on armhf. * gnu/packages/video.scm (mplayer)[arguments]: Add default case in 'match' form in configure flags. Enable support for arm processor features that are assumed by our armhf port. --- gnu/packages/video.scm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 822d9021cb..8868713ba1 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -570,13 +570,13 @@ treaming protocols.") '("--enable-runtime-cpudetection" "--target=i686-linux")) ("mips64el-linux" - '("--target=mips3-linux"))) - "--disable-armv5te" - "--disable-armv6" - "--disable-armv6t2" - "--disable-armvfp" + '("--target=mips3-linux")) + (_ (list (string-append + "--target=" + (or (%current-target-system) + (nix-system->gnu-triplet + (%current-system))))))) "--disable-neon" - "--disable-thumb" "--disable-iwmmxt")))) %standard-phases))) (home-page "http://www.mplayerhq.hu/design7/news.html") -- cgit v1.2.3 From 4788deea0b029dedc8657a5175e89bc8eab3f27b Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 21 Apr 2015 23:12:04 -0400 Subject: gnu: nginx: Fix configure flags on unsupported platforms. * gnu/packages/web.scm (nginx)[arguments]: Add default case in 'match' form within 'configure' phase. --- gnu/packages/web.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 0c22562aa6..519a91e160 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -132,7 +132,12 @@ and its related documentation.") (%current-system)) ("x86_64-linux" "x86_64") ("i686-linux" "i686") - ("mips64el-linux" "mips64")))) + ("mips64el-linux" "mips64") + ;; Prevent errors when querying + ;; this package on unsupported + ;; platforms, e.g. when running + ;; "guix package --search=" + (_ "UNSUPPORTED")))) (string-append "--crossbuild=" system ":" release ":" machine))))) (setenv "CC" "gcc") -- cgit v1.2.3 From 76eb726617327fa42faf7d16a34d459a7a5d37de Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 21 Apr 2015 23:25:12 -0400 Subject: gnu: ccl: Add default 'match' cases for unsupported platforms. * gnu/packages/lisp.scm (ccl)[arguments]: Add default 'match' cases for unsupported platforms. --- gnu/packages/lisp.scm | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 8f12efb9eb..feaa08af38 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -343,9 +343,13 @@ statistical profiler, a code coverage tool, and many other extensions.") (chdir (string-append "lisp-kernel/" ,(match (or (%current-target-system) (%current-system)) - ("i686-linux" "linuxx8632") + ("i686-linux" "linuxx8632") ("x86_64-linux" "linuxx8664") - ("armhf-linux" "linuxarm")))) + ("armhf-linux" "linuxarm") + ;; Prevent errors when querying this package + ;; on unsupported platforms, e.g. when running + ;; "guix package --search=" + (_ "UNSUPPORTED")))) (substitute* '("Makefile") (("/bin/rm") "rm")) (setenv "CC" "gcc") @@ -366,9 +370,13 @@ statistical profiler, a code coverage tool, and many other extensions.") (bash (assoc-ref inputs "bash")) (kernel ,(match (or (%current-target-system) (%current-system)) - ("i686-linux" "lx86cl") + ("i686-linux" "lx86cl") ("x86_64-linux" "lx86cl64") - ("armhf-linux" "armcl"))) + ("armhf-linux" "armcl") + ;; Prevent errors when querying this package + ;; on unsupported platforms, e.g. when running + ;; "guix package --search=" + (_ "UNSUPPORTED"))) (heap (string-append kernel ".image"))) (mkdir-p libdir) (mkdir-p bindir) -- cgit v1.2.3 From cc8ddcb09771dff47c669a4e585f91c28d08359f Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Sun, 19 Apr 2015 09:59:23 -0500 Subject: gnu: perl: Fix Module::Pluggable for symlink forests. * gnu/packages/patches/perl-module-pluggable-search.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/perl.scm (perl)[source]: Add patch. --- gnu-system.am | 1 + .../patches/perl-module-pluggable-search.patch | 25 ++++++++++++++++++++++ gnu/packages/perl.scm | 4 +++- 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/perl-module-pluggable-search.patch diff --git a/gnu-system.am b/gnu-system.am index 06ec6e7142..8936b0be1f 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -503,6 +503,7 @@ dist_patch_DATA = \ gnu/packages/patches/patchutils-xfail-gendiff-tests.patch \ gnu/packages/patches/pavucontrol-sigsegv.patch \ gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch \ + gnu/packages/patches/perl-module-pluggable-search.patch \ gnu/packages/patches/perl-net-amazon-s3-moose-warning.patch \ gnu/packages/patches/perl-no-sys-dirs.patch \ gnu/packages/patches/perl-tk-x11-discover.patch \ diff --git a/gnu/packages/patches/perl-module-pluggable-search.patch b/gnu/packages/patches/perl-module-pluggable-search.patch new file mode 100644 index 0000000000..bb2a57f7e5 --- /dev/null +++ b/gnu/packages/patches/perl-module-pluggable-search.patch @@ -0,0 +1,25 @@ +Fix core Perl module Module::Pluggable such that it can find plugins that live +in symlinked directories. + +Patch borrowed/adapted from Nixpkgs. + +--- perl-5.16.1/cpan/Module-Pluggable/lib/Module/Pluggable/Object.pm 2015-04-08 23:28:48.120164135 -0500 ++++ perl-5.16.1/cpan/Module-Pluggable/lib/Module/Pluggable/Object.pm 2015-04-08 23:30:27.032166704 -0500 +@@ -164,7 +164,7 @@ + my $sp = catdir($dir, (split /::/, $searchpath)); + + # if it doesn't exist or it's not a dir then skip it +- next unless ( -e $sp && -d _ ); # Use the cached stat the second time ++ next unless ( -e $sp ); + + my @files = $self->find_files($sp); + +@@ -279,7 +279,7 @@ + (my $path = $File::Find::name) =~ s#^\\./##; + push @files, $path; + } +- }, $search_path ); ++ }, "$search_path/." ); + } + #chdir $cwd; + return @files; diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index e55eb8791d..80c476b2b1 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -44,7 +44,9 @@ (sha256 (base32 "15qxzba3a50c9nik5ydgyfp62x7h9vxxn12yd1jgl93hb1wj96km")) - (patches (list (search-patch "perl-no-sys-dirs.patch"))))) + (patches (map search-patch + '("perl-no-sys-dirs.patch" + "perl-module-pluggable-search.patch"))))) (build-system gnu-build-system) (arguments '(#:tests? #f -- cgit v1.2.3 From 5cfc17cb7f813cacba0fc583d5b7d13cfa51063e Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 22 Apr 2015 16:54:13 -0400 Subject: tests: Select appropriate bootstrap guile version for current system. * tests/packages.scm ("package-source-derivation, snippet"): Select appropriate guile-2.0.x.tar.xz tarball based on the value of (%current-system). --- tests/packages.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/packages.scm b/tests/packages.scm index 91910324fe..4e52813659 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -210,7 +210,11 @@ (unless (network-reachable?) (test-skip 1)) (test-equal "package-source-derivation, snippet" "OK" - (let* ((file (search-bootstrap-binary "guile-2.0.9.tar.xz" + (let* ((file (search-bootstrap-binary (match (%current-system) + ("armhf-linux" + "guile-2.0.11.tar.xz") + (_ + "guile-2.0.9.tar.xz")) (%current-system))) (sha256 (call-with-input-file file port-sha256)) (fetch (lambda* (url hash-algo hash -- cgit v1.2.3 From 95203be9eff7d22a6edc6a8318c24b43407593bb Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 22 Apr 2015 16:46:07 -0400 Subject: hydra: Add %hydra-supported-systems variable and use it. * build-aux/hydra/gnu-system.scm (%hydra-supported-systems): New variable. (hydra-jobs): Use %hydra-supported-systems instead of %supported-systems. --- build-aux/hydra/gnu-system.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm index b1432f6660..9a47b4f423 100644 --- a/build-aux/hydra/gnu-system.scm +++ b/build-aux/hydra/gnu-system.scm @@ -210,6 +210,10 @@ valid." #f))))) +(define %hydra-supported-systems + ;; This is the list of system types for which build slaves are available. + '("x86_64-linux" "i686-linux" "mips64el-linux")) + ;;; ;;; Hydra entry point. ;;; @@ -269,4 +273,4 @@ valid." (cross-jobs system))) (else (error "unknown subset" subset)))) - %supported-systems)) + %hydra-supported-systems)) -- cgit v1.2.3 From fc34deea241bb08fae3521ba93bc48747dac380e Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 22 Apr 2015 16:49:11 -0400 Subject: packages: Add armhf-linux to %supported-systems. * guix/packages.scm (%supported-systems): Add "armhf-linux". --- guix/packages.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guix/packages.scm b/guix/packages.scm index fde46d5d6a..0e4cce17e1 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -208,7 +208,7 @@ corresponds to the arguments expected by `set-path-environment-variable'." (define %supported-systems ;; This is the list of system types that are supported. By default, we ;; expect all packages to build successfully here. - '("x86_64-linux" "i686-linux" "mips64el-linux")) + '("x86_64-linux" "i686-linux" "armhf-linux" "mips64el-linux")) ;; A package. (define-record-type* -- cgit v1.2.3 From 669b8639a229eee2493bc425d124340d6424d86d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 22 Apr 2015 00:31:22 +0200 Subject: gnu: commencement: Remove unneeded configure flag for bootstrap gettext. * gnu/packages/commencement.scm (gettext-boot0): Remove unneeded --disable-threads. --- gnu/packages/commencement.scm | 54 +++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 9918c21fd1..351ef3e2c4 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -421,34 +421,32 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" (define gettext-boot0 ;; A minimal gettext used during bootstrap. - (let ((gettext-minimal (package - (inherit gnu-gettext) - (name "gettext-boot0") - (inputs '()) ;zero dependencies - (arguments - (substitute-keyword-arguments - `(#:configure-flags '("--disable-threads") - #:tests? #f - ,@(package-arguments gnu-gettext)) - ((#:phases phases) - `(modify-phases ,phases - ;; Build only the tools. - (add-after 'unpack 'chdir - (lambda _ - (chdir "gettext-tools"))) - - ;; Some test programs require pthreads, - ;; which we don't have. - (add-before 'configure 'no-test-programs - (lambda _ - (substitute* "tests/Makefile.in" - (("^PROGRAMS =.*$") - "PROGRAMS =\n")) - #t)) - - ;; Don't try to link against libexpat. - (delete 'link-expat) - (delete 'patch-tests)))))))) + (let ((gettext-minimal + (package (inherit gnu-gettext) + (name "gettext-boot0") + (inputs '()) ;zero dependencies + (arguments + (substitute-keyword-arguments + `(#:tests? #f + ,@(package-arguments gnu-gettext)) + ((#:phases phases) + `(modify-phases ,phases + ;; Build only the tools. + (add-after 'unpack 'chdir + (lambda _ + (chdir "gettext-tools"))) + + ;; Some test programs require pthreads, which we don't have. + (add-before 'configure 'no-test-programs + (lambda _ + (substitute* "tests/Makefile.in" + (("^PROGRAMS =.*$") + "PROGRAMS =\n")) + #t)) + + ;; Don't try to link against libexpat. + (delete 'link-expat) + (delete 'patch-tests)))))))) (package-with-bootstrap-guile (package-with-explicit-inputs gettext-minimal %boot1-inputs -- cgit v1.2.3 From 21e583def33ecf9e9bae3a18df875cd3380e14ec Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 23 Apr 2015 00:03:34 +0200 Subject: gnu: gcc: Add a RUNPATH to libstdc++.so so that it finds libgcc_s.so. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes . Reported by 宋文武 . * gnu/packages/gcc.scm (gcc-4.7)[arguments]: Add 'substitute*' form for "libstdc++-v3/src/Makefile.in". --- gnu/packages/gcc.scm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index cd6fc3b2fd..442ea9874e 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -252,6 +252,13 @@ where the OS part is overloaded to denote a specific ABI---into GCC (("static char const sed_cmd_z\\[\\] =.*;") "static char const sed_cmd_z[] = \"sed\";")) + ;; Add a RUNPATH to libstdc++.so so that it finds libgcc_s. + ;; See + ;; and . + (substitute* "libstdc++-v3/src/Makefile.in" + (("^OPT_LDFLAGS = ") + "OPT_LDFLAGS = -Wl,-rpath=$(libdir) ")) + ;; Move libstdc++*-gdb.py to the "lib" output to avoid a ;; circularity between "out" and "lib". (Note: ;; --with-python-dir is useless because it imposes $(prefix) as -- cgit v1.2.3 From d485ebba428cc4125b6b9fd282507eda3f860cfe Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 23 Apr 2015 00:01:59 +0200 Subject: gnu: gcc: Do not always disable RUNPATH validation. * gnu/packages/gcc.scm (gcc-4.7)[arguments]: Remove explicit #:validate-runpath? #f. * gnu/packages/commencement.scm (gcc-boot0)[arguments]: Remove case for #:validate-runpath?. (gcc-final)[arguments]: Add literal #:validate-runpath? #f. * gnu/packages/cross-base.scm (cross-gcc-arguments): Remove case for #:validate-runpath?. --- gnu/packages/commencement.scm | 12 +++++------- gnu/packages/cross-base.scm | 2 -- gnu/packages/gcc.scm | 4 ---- 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 351ef3e2c4..65524091a9 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -158,8 +158,6 @@ (srfi srfi-1) (srfi srfi-26)) ,@(substitute-keyword-arguments (package-arguments gcc-4.8) - ((#:validate-runpath? _) - #t) ((#:configure-flags flags) `(append (list ,(string-append "--target=" (boot-triplet)) @@ -540,6 +538,11 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" #:allowed-references ("out" "lib" ,glibc-final) + ;; Things like libasan.so and libstdc++.so NEED ld.so for some + ;; reason, but it is not in their RUNPATH. This is a false + ;; positive, so turn it off. + #:validate-runpath? #f + ;; Build again GMP & co. within GCC's build process, because it's hard ;; to do outside (because GCC-BOOT0 is a cross-compiler, and thus ;; doesn't honor $LIBRARY_PATH, which breaks `gnu-build-system'.) @@ -564,11 +567,6 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" "/lib") flag)) ,flags))) - ((#:validate-runpath? _) - ;; Things like libasan.so and libstdc++.so NEED ld.so and/or - ;; libgcc_s.so but RUNPATH is empty. This is a false positive, so - ;; turn it off. - #f) ((#:phases phases) `(alist-delete 'symlink-libgcc_eh ,phases))))) diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm index 01cfdf73e8..9a459400e8 100644 --- a/gnu/packages/cross-base.scm +++ b/gnu/packages/cross-base.scm @@ -175,8 +175,6 @@ may be either a libc package or #f.)" #t))) ,phases) phases))) - ((#:validate-runpath? _) - #t) ((#:strip-binaries? _) ;; Disable stripping as this can break binaries, with object files of ;; libgcc.a showing up as having an unknown architecture. See diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 442ea9874e..ca85073ea4 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -190,10 +190,6 @@ where the OS part is overloaded to denote a specific ABI---into GCC #:tests? #f - ;; libstdc++.so NEEDs libgcc_s.so but somehow it doesn't get - ;; $(libdir) in its RUNPATH, so turn it off. - #:validate-runpath? #f - #:phases (alist-cons-before 'configure 'pre-configure -- cgit v1.2.3 From 0dec8f8c1356ca2305c9e4b913ad133ebc854adc Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 22 Apr 2015 17:29:22 -0400 Subject: gnu: guix: Update development snapshot. * gnu/packages/package-management.scm (guix-devel): Update to fc34dee. --- gnu/packages/package-management.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 29b2d93695..75efd0c448 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -148,7 +148,7 @@ the Nix package manager.") ;; ;; Note: use a short commit id; when using the long one, the limit on socket ;; file names is exceeded while running the tests. - (let ((commit "dd3a42e")) + (let ((commit "fc34dee")) (package (inherit guix-0.8.1) (version (string-append "0.8.1." commit)) (source (origin @@ -158,7 +158,7 @@ the Nix package manager.") (commit commit))) (sha256 (base32 - "0pamdfrdg5i01ghbkbbacfph98s7dc34irjj10s7pkn1r4fswzv8")))) + "0nx60wwiar0s4bgwrm3nrskc54jig3vw7yzwxkwilc43cnlgpkja")))) (arguments (substitute-keyword-arguments (package-arguments guix-0.8.1) ((#:phases phases) -- cgit v1.2.3 From e3cadebaf0a8560f6b74264541a1397bec2cf8d8 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Thu, 23 Apr 2015 07:35:56 +0800 Subject: gnu: Add xf86-input-libinput. * gnu/packages/xorg.scm (xf86-input-libinput): New variable. --- gnu/packages/xorg.scm | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 998f0803fc..401c6dba04 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -45,7 +45,8 @@ #:use-module (gnu packages python) #:use-module (gnu packages xml) #:use-module (gnu packages ncurses) - #:use-module (gnu packages xdisorg)) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages freedesktop)) @@ -2220,6 +2221,35 @@ devices, thus making direct access unnecessary.") (description "X.org provides an implementation of the X Window System") (license license:x11))) +(define-public xf86-input-libinput + (package + (name "xf86-input-libinput") + (version "0.8.0") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://xorg/individual/driver/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "0fm4vrkw7azipbnwvc2l18g65z77pllsznaajd8q3zpg9ycb0li1")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags + (list (string-append "--with-sdkdir=" + %output "/include/xorg")))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libinput" ,libinput) + ("xorg-server" ,xorg-server))) + (home-page "http://www.x.org/wiki/") + (synopsis "Xorg input driver") + (description + "This is an Xorg input driver based on libinput. It therefore supports +all input devices that libinput can handle, including most mice, keyboards, +tablets and touchscreens.") + (license license:x11))) (define-public xf86-input-joystick (package -- cgit v1.2.3 From 53fd3cf0517fae2ee1c787d10e0746f8d4c0a77b Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Thu, 23 Apr 2015 07:37:44 +0800 Subject: gnu: libinput: Update to 0.14.1. * gnu/packages/freedesktop.scm (libinput): Update to 0.14.1. --- gnu/packages/freedesktop.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index f65a5bbf9d..386f4c5972 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -53,14 +53,14 @@ freedesktop.org project.") (define-public libinput (package (name "libinput") - (version "0.13.0") + (version "0.14.1") (source (origin (method url-fetch) (uri (string-append "http://freedesktop.org/software/libinput/" name "-" version ".tar.xz")) (sha256 (base32 - "06n6ih2bfr957rprsgjxhi6f7m96wmf4kgac8y0ispsjvrzszv3c")))) + "0r0v5jqbnwgndq6ns3ss3kv1438ny302m7bg1najcl1dpqp21v9b")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) -- cgit v1.2.3 From 2f8339c8abf5c4b1ed9e33cab889d80af45aec35 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Thu, 23 Apr 2015 07:38:26 +0800 Subject: gnu: xfce4-settings: Add more inputs. * gnu/packages/xfce.scm (xfce4-settings)[inputs]: Add libxklavier, upower and xf86-input-libinput. --- gnu/packages/xfce.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index b39b903e9b..37f09579fe 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -397,8 +397,11 @@ allows you to shutdown the computer from Xfce.") ("libnotify" ,libnotify) ("libxcursor", libxcursor) ("libxi" ,libxi) + ("libxklavier" ,libxklavier) ("libxrandr" ,libxrandr) - ("libxfce4ui" ,libxfce4ui))) + ("libxfce4ui" ,libxfce4ui) + ("upower" ,upower) + ("xf86-input-libinput" ,xf86-input-libinput))) (home-page "http://www.xfce.org/") (synopsis "Xfce settings manager") (description -- cgit v1.2.3 From a635ed5ccb78c8010e0368d1e82ad1f7ca1af5be Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 22 Apr 2015 21:48:20 -0400 Subject: gnu: Add missing (gnu packages gettext) module import. This is a followup to 6162b95d21a7b75fe3753c22c7755c5d12a8302f. * gnu/packages/base.scm: Import (gnu packages gettext). --- gnu/packages/base.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 8a92e87fdd..c6206fdce2 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -34,6 +34,7 @@ #:use-module (gnu packages linux) #:use-module (gnu packages texinfo) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages gettext) #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix download) -- cgit v1.2.3 From 60e2d5fe822160b333acbb8597501cb3b487692d Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 23 Apr 2015 01:05:36 -0400 Subject: gnu: Add gcc-5.1.0 and gcc-toolchain-5.1.0. * gnu/packages/gcc.scm (gcc-5.1): New variable. * gnu/packages/commencement.scm (gcc-toolchain-5.1): New variable. --- gnu/packages/commencement.scm | 5 ++++- gnu/packages/gcc.scm | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 22da2e0fb3..4a9fc5b205 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2014 Andreas Enge ;;; Copyright © 2012 Nikita Karetnikov -;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2014, 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -770,4 +770,7 @@ and binaries, plus debugging symbols in the 'debug' output), and Binutils.") (define-public gcc-toolchain-4.9 (gcc-toolchain gcc-4.9)) +(define-public gcc-toolchain-5.1 + (gcc-toolchain gcc-5.1)) + ;;; commencement.scm ends here diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index cd6fc3b2fd..e712e43b1f 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -324,6 +324,18 @@ Go. It also includes runtime support libraries for these languages.") "1pbjp4blk2ycaa6r3jmw4ky5f1s9ji3klbqgv8zs2sl5jn1cj810")) (patches (list (search-patch "gcc-arm-link-spec-fix.patch"))))))) +(define-public gcc-5.1 + (package (inherit gcc-4.7) + (version "5.1.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gcc/gcc-" + version "/gcc-" version ".tar.bz2")) + (sha256 + (base32 + "1bd5vj4px3s8nlakbgrh38ynxq4s654m6nxz7lrj03mvkkwgvnmp")) + (patches (list (search-patch "gcc-arm-link-spec-fix.patch"))))))) + (define* (custom-gcc gcc name languages #:key (separate-lib-output? #t)) "Return a custom version of GCC that supports LANGUAGES." (package (inherit gcc) -- cgit v1.2.3 From ee886454bb27dd75fbcde36bf16641b85cd3bd40 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 23 Apr 2015 06:04:36 -0400 Subject: gnu: notmuch: Update to 0.19; add man pages and bash completion. * gnu/packages/mail.scm (notmuch)[source]: Update to 0.19. [arguments]: In 'configure' phase, set CC environment variable. Arrange to use rst2man.py instead of rst2man. [native-inputs]: Add python-2, python2-docutils, and bash-completion. --- gnu/packages/mail.scm | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 9a61cf4580..170fbe4921 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -28,6 +28,7 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages backup) + #:use-module (gnu packages bash) #:use-module (gnu packages curl) #:use-module (gnu packages cyrus-sasl) #:use-module (gnu packages databases) @@ -361,27 +362,37 @@ attachments, create new maildirs, and so on.") (define-public notmuch (package (name "notmuch") - (version "0.18.1") + (version "0.19") (source (origin (method url-fetch) (uri (string-append "http://notmuchmail.org/releases/notmuch-" version ".tar.gz")) (sha256 (base32 - "1pdp9l7yv71d3fjb30qyccva8h03hvg88q4a00yi50v2j70kvmgj")))) + "1szf6c44g209pcjq5nvfhlp3nzcm3lrcwv4spsxmwy13hiaccvrr")))) (build-system gnu-build-system) (arguments '(#:tests? #f ;; FIXME: Test suite hangs and times out. #:phases (alist-replace 'configure (lambda* (#:key outputs #:allow-other-keys) + (setenv "CC" "gcc") (setenv "CONFIG_SHELL" (which "sh")) + + ;; XXX Should python-docutils make a symlink + ;; for "rst2man" and other similar programs? + (substitute* '("configure" "doc/prerst2man.py") + ((" rst2man ") " rst2man.py ")) + (let ((out (assoc-ref outputs "out"))) (zero? (system* "./configure" (string-append "--prefix=" out))))) %standard-phases))) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config) + ("python" ,python-2) + ("python2-docutils" ,python2-docutils) + ("bash-completion" ,bash-completion))) (inputs `(("emacs" ,emacs) ("glib" ,glib) -- cgit v1.2.3 From 9020890b216fea6f6a40da5500b88d16178deef4 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 23 Apr 2015 06:27:47 -0400 Subject: gnu: postgresql: Update to 9.3.6. * gnu/packages/databases.scm (postgresql): Update to 9.3.6. Use .bz2 tarball. --- gnu/packages/databases.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 9df4a14d26..aa0aa0d49f 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -228,14 +228,14 @@ as a drop-in replacement of MySQL.") (define-public postgresql (package (name "postgresql") - (version "9.3.5") + (version "9.3.6") (source (origin (method url-fetch) (uri (string-append "http://ftp.postgresql.org/pub/source/v" - version "/postgresql-" version ".tar.gz")) + version "/postgresql-" version ".tar.bz2")) (sha256 (base32 - "08kga00izykgvnx7hn995wc4zjqslspapaa8z63045p1ya14mr4g")))) + "056ass7nnfyv7blv02anv795kgpz77gipdpxggd835cdwrhwns13")))) (build-system gnu-build-system) (inputs `(("readline" ,readline) -- cgit v1.2.3 From ff2b1c17b824a2399cfdc11a9839ef3d5bb1a6ed Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 22 Apr 2015 11:58:44 +0200 Subject: gnu: r: Set library rpath. * gnu/packages/statistics.scm (r)[arguments]: Add the rpath for lib directory of output to LDFLAGS. --- gnu/packages/statistics.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 5fae6d7a3c..42c16cdb30 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -53,7 +53,11 @@ "0ypsm11c7n49pgh2ricyhhpfhas3famscdazzdp2zq70rapm1ldw")))) (build-system gnu-build-system) (arguments - `(#:phases + `(#:make-flags + (list (string-append "LDFLAGS=-Wl,-rpath=" + (assoc-ref %outputs "out") + "/lib/R/lib")) + #:phases (alist-cons-before 'check 'set-timezone ;; Some tests require the timezone to be set. -- cgit v1.2.3 From 3c43bcc68d4ad9caddbb64506b5c8f10fdb9c8f3 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 22 Apr 2015 12:26:45 +0200 Subject: gnu: r: Update to 3.2.0. * gnu/packages/statistics.scm (r): Update to 3.2.0. --- gnu/packages/statistics.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 42c16cdb30..722e0dfa49 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -42,7 +42,7 @@ (define-public r (package (name "r") - (version "3.1.2") + (version "3.2.0") (source (origin (method url-fetch) (uri (string-append "mirror://cran/src/base/R-" @@ -50,7 +50,7 @@ version ".tar.gz")) (sha256 (base32 - "0ypsm11c7n49pgh2ricyhhpfhas3famscdazzdp2zq70rapm1ldw")))) + "0dagyqgvi8i3nw158qi2zpwm04s4ffzvnmk5niaksvxs30zrbbpm")))) (build-system gnu-build-system) (arguments `(#:make-flags -- cgit v1.2.3 From cd91504df27aa0f311735c61f3b7b7ee3fee861a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 23 Apr 2015 11:23:14 +0200 Subject: gremlin: Add support for the expansion of $ORIGIN in RUNPATH. * guix/build/gremlin.scm (expand-variable, expand-origin): New procedures. (validate-needed-in-runpath): Map 'expand-origin' to the RUNPATH field of DYNINFO. * tests/gremlin.scm ("expand-origin"): New test. --- guix/build/gremlin.scm | 36 +++++++++++++++++++++++++++++++----- tests/gremlin.scm | 12 ++++++++++++ 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/guix/build/gremlin.scm b/guix/build/gremlin.scm index 30b06034dd..fed529b193 100644 --- a/guix/build/gremlin.scm +++ b/guix/build/gremlin.scm @@ -39,6 +39,7 @@ elf-dynamic-info-needed elf-dynamic-info-rpath elf-dynamic-info-runpath + expand-origin validate-needed-in-runpath)) @@ -236,6 +237,30 @@ value of DT_NEEDED entries is a string.)" (string-prefix? libc-lib lib)) %libc-libraries)) +(define (expand-variable str variable value) + "Replace occurrences of '$VARIABLE' or '${VARIABLE}' in STR with VALUE." + (define variables + (list (string-append "$" variable) + (string-append "${" variable "}"))) + + (let loop ((thing variables) + (str str)) + (match thing + (() + str) + ((head tail ...) + (let ((index (string-contains str head)) + (len (string-length head))) + (loop (if index variables tail) + (if index + (string-replace str value + index (+ index len)) + str))))))) + +(define (expand-origin str directory) + "Replace occurrences of '$ORIGIN' in STR with DIRECTORY." + (expand-variable str "ORIGIN" directory)) + (define* (validate-needed-in-runpath file #:key (always-found? libc-library?)) "Return #t if all the libraries listed as FILE's 'DT_NEEDED' entries are @@ -254,17 +279,18 @@ exceeds total size~%" (let* ((elf (call-with-input-file file (compose parse-elf get-bytevector-all))) + (expand (cute expand-origin <> (dirname file))) (dyninfo (elf-dynamic-info elf))) (when dyninfo - (let* ((runpath (filter store-file-name? - (elf-dynamic-info-runpath dyninfo))) - (bogus (remove store-file-name? - (elf-dynamic-info-runpath dyninfo))) + ;; XXX: In theory we should also expand $PLATFORM and $LIB, but these + ;; appear to be really unused. + (let* ((expanded (map expand (elf-dynamic-info-runpath dyninfo))) + (runpath (filter store-file-name? expanded)) + (bogus (remove store-file-name? expanded)) (needed (remove always-found? (elf-dynamic-info-needed dyninfo))) (not-found (remove (cut search-path runpath <>) needed))) - ;; XXX: $ORIGIN is not supported. (unless (null? bogus) (format (current-error-port) "~a: warning: RUNPATH contains bogus entries: ~s~%" diff --git a/tests/gremlin.scm b/tests/gremlin.scm index 225a72ff9f..dc9f78c21a 100644 --- a/tests/gremlin.scm +++ b/tests/gremlin.scm @@ -21,6 +21,7 @@ #:use-module (guix build utils) #:use-module (guix build gremlin) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) #:use-module (srfi srfi-64) #:use-module (rnrs io ports) #:use-module (ice-9 match)) @@ -51,6 +52,17 @@ (string-take lib (string-contains lib ".so"))) (elf-dynamic-info-needed dyninfo)))))) +(test-equal "expand-origin" + '("OOO/../lib" + "OOO" + "../OOO/bar/OOO/baz" + "ORIGIN/foo") + (map (cut expand-origin <> "OOO") + '("$ORIGIN/../lib" + "${ORIGIN}" + "../${ORIGIN}/bar/$ORIGIN/baz" + "ORIGIN/foo"))) + (test-end "gremlin") -- cgit v1.2.3 From cb85eb5e6569378d444b45cf209324e38f6ec0f4 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 23 Apr 2015 11:59:35 +0200 Subject: build-system/gnu: Gracefully handle dangling symlinks. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes . Reported by Tomáš Čech . * guix/build/gnu-build-system.scm (patch-source-shebangs): Remove files that don't pass 'file-exists?'. (patch-generated-file-shebangs): Likewise. --- guix/build/gnu-build-system.scm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index c60f8ba162..00422458ab 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -164,7 +164,10 @@ files such as `.in' templates. Most scripts honor $SHELL and $CONFIG_SHELL, but some don't, such as `mkinstalldirs' or Automake's `missing' script." (for-each patch-shebang - (remove file-is-directory? (find-files "." ".*")))) + (remove (lambda (file) + (or (not (file-exists? file)) ;dangling symlink + (file-is-directory? file))) + (find-files ".")))) (define (patch-generated-file-shebangs . rest) "Patch shebangs in generated files, including `SHELL' variables in @@ -173,9 +176,10 @@ makefiles." ;; `configure'. (for-each patch-shebang (filter (lambda (file) - (and (executable-file? file) + (and (file-exists? file) + (executable-file? file) (not (file-is-directory? file)))) - (find-files "." ".*"))) + (find-files "."))) ;; Patch `SHELL' in generated makefiles. (for-each patch-makefile-SHELL (find-files "." "^(GNU)?[mM]akefile$"))) -- cgit v1.2.3 From 0bd4377566f80e6736492ea6ecfe3fdb14310717 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 23 Apr 2015 18:50:37 +0200 Subject: build-system/gnu: #:validate-runpath? now defaults to #t. * guix/build/gnu-build-system.scm (validate-runpath): Change default value of VALIDATE-RUNPATH? to #t. --- guix/build/gnu-build-system.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index 00422458ab..5062479360 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -418,7 +418,7 @@ effects, such as displaying warnings or error messages." (loop tail (and (pred head) result)))))) (define* (validate-runpath #:key - validate-runpath? + (validate-runpath? #t) (elf-directories '("lib" "lib64" "libexec" "bin" "sbin")) outputs #:allow-other-keys) -- cgit v1.2.3 From d074e2f99130782e8eb7fa44c79c01db6c86f77d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 23 Apr 2015 18:51:50 +0200 Subject: build-system/{cmake,glib-or-gtk}: Add #:validate-runpath? parameter. * guix/build-system/cmake.scm (cmake-build): Add #:validate-runpath? parameter and pass it to BUILDER. * guix/build-system/glib-or-gtk.scm (glib-or-gtk-build): Likewise. --- guix/build-system/cmake.scm | 2 ++ guix/build-system/glib-or-gtk.scm | 2 ++ 2 files changed, 4 insertions(+) diff --git a/guix/build-system/cmake.scm b/guix/build-system/cmake.scm index 2e6784251e..1bc1879be5 100644 --- a/guix/build-system/cmake.scm +++ b/guix/build-system/cmake.scm @@ -84,6 +84,7 @@ (tests? #t) (test-target "test") (parallel-build? #t) (parallel-tests? #f) + (validate-runpath? #t) (patch-shebangs? #t) (strip-binaries? #t) (strip-flags ''("--strip-debug")) @@ -121,6 +122,7 @@ provides a 'CMakeLists.txt' file as its build system." #:test-target ,test-target #:parallel-build? ,parallel-build? #:parallel-tests? ,parallel-tests? + #:validate-runpath? ,validate-runpath? #:patch-shebangs? ,patch-shebangs? #:strip-binaries? ,strip-binaries? #:strip-flags ,strip-flags diff --git a/guix/build-system/glib-or-gtk.scm b/guix/build-system/glib-or-gtk.scm index 85d01961a5..954c716893 100644 --- a/guix/build-system/glib-or-gtk.scm +++ b/guix/build-system/glib-or-gtk.scm @@ -127,6 +127,7 @@ (test-target "check") (parallel-build? #t) (parallel-tests? #t) + (validate-runpath? #t) (patch-shebangs? #t) (strip-binaries? #t) (strip-flags ''("--strip-debug")) @@ -175,6 +176,7 @@ #:test-target ,test-target #:parallel-build? ,parallel-build? #:parallel-tests? ,parallel-tests? + #:validate-runpath? ,validate-runpath? #:patch-shebangs? ,patch-shebangs? #:strip-binaries? ,strip-binaries? #:strip-flags ,strip-flags -- cgit v1.2.3 From 23d00fb0ed96a6d913c47cf36e249523bcba88d1 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 23 Apr 2015 20:31:05 -0400 Subject: gnu: wpa-supplicant: Add fix for CVE-2015-1863. * gnu/packages/patches/wpa-supplicant-CVE-2015-1863.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/admin.scm (wpa-supplicant): Add patch. --- gnu-system.am | 1 + gnu/packages/admin.scm | 4 ++- .../patches/wpa-supplicant-CVE-2015-1863.patch | 42 ++++++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/wpa-supplicant-CVE-2015-1863.patch diff --git a/gnu-system.am b/gnu-system.am index 723d25116b..13d06fb920 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -555,6 +555,7 @@ dist_patch_DATA = \ gnu/packages/patches/weex-vacopy.patch \ gnu/packages/patches/wicd-urwid-1.3.patch \ gnu/packages/patches/wmctrl-64-fix.patch \ + gnu/packages/patches/wpa-supplicant-CVE-2015-1863.patch \ gnu/packages/patches/xf86-video-ark-remove-mibstore.patch \ gnu/packages/patches/xf86-video-ast-remove-mibstore.patch \ gnu/packages/patches/xf86-video-geode-glibc-2.20.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 3a0361299e..ffaf6b4fc7 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -702,7 +702,9 @@ commands and their arguments.") ".tar.gz")) (sha256 (base32 - "0skvkl6c10ls4s48b2wmf47h9j1y40nlzxnzn8hyaw2j0prmpapa")))) + "0skvkl6c10ls4s48b2wmf47h9j1y40nlzxnzn8hyaw2j0prmpapa")) + (patches + (list (search-patch "wpa-supplicant-CVE-2015-1863.patch"))))) (build-system gnu-build-system) (arguments '(#:phases (alist-replace diff --git a/gnu/packages/patches/wpa-supplicant-CVE-2015-1863.patch b/gnu/packages/patches/wpa-supplicant-CVE-2015-1863.patch new file mode 100644 index 0000000000..de1964ca76 --- /dev/null +++ b/gnu/packages/patches/wpa-supplicant-CVE-2015-1863.patch @@ -0,0 +1,42 @@ +From 9ed4eee345f85e3025c33c6e20aa25696e341ccd Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Tue, 7 Apr 2015 11:32:11 +0300 +Subject: [PATCH] P2P: Validate SSID element length before copying it + (CVE-2015-1863) + +This fixes a possible memcpy overflow for P2P dev->oper_ssid in +p2p_add_device(). The length provided by the peer device (0..255 bytes) +was used without proper bounds checking and that could have resulted in +arbitrary data of up to 223 bytes being written beyond the end of the +dev->oper_ssid[] array (of which about 150 bytes would be beyond the +heap allocation) when processing a corrupted management frame for P2P +peer discovery purposes. + +This could result in corrupted state in heap, unexpected program +behavior due to corrupted P2P peer device information, denial of service +due to process crash, exposure of memory contents during GO Negotiation, +and potentially arbitrary code execution. + +Thanks to Google security team for reporting this issue and smart +hardware research group of Alibaba security team for discovering it. + +Signed-off-by: Jouni Malinen +--- + src/p2p/p2p.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c +index f584fae..a45fe73 100644 +--- a/src/p2p/p2p.c ++++ b/src/p2p/p2p.c +@@ -778,6 +778,7 @@ int p2p_add_device(struct p2p_data *p2p, const u8 *addr, int freq, + if (os_memcmp(addr, p2p_dev_addr, ETH_ALEN) != 0) + os_memcpy(dev->interface_addr, addr, ETH_ALEN); + if (msg.ssid && ++ msg.ssid[1] <= sizeof(dev->oper_ssid) && + (msg.ssid[1] != P2P_WILDCARD_SSID_LEN || + os_memcmp(msg.ssid + 2, P2P_WILDCARD_SSID, P2P_WILDCARD_SSID_LEN) + != 0)) { +-- +1.9.1 + -- cgit v1.2.3 From f93b916c3d20ab1b3439f67dde137f36918619f3 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 24 Apr 2015 08:08:02 -0400 Subject: gnu: nginx: Update to 1.8.0. * gnu/packages/web.scm (nginx): Update to 1.8.0. --- gnu/packages/web.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 519a91e160..fb3ff2d149 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -94,14 +94,14 @@ and its related documentation.") (define-public nginx (package (name "nginx") - (version "1.6.2") + (version "1.8.0") (source (origin (method url-fetch) (uri (string-append "http://nginx.org/download/nginx-" version ".tar.gz")) (sha256 (base32 - "060s77qxhkn02fjkcndsr0xppj2bppjzkj0gn84svrykb4lqqq5m")))) + "1mgkkmmwkhmpn68sdvbd73ssv6lpqhh864fsyvc1ij4hk4is3k13")))) (build-system gnu-build-system) (inputs `(("pcre" ,pcre) ("openssl" ,openssl) -- cgit v1.2.3 From 378b01dc09f50afa32dcb5c77cb6be56bfc419a3 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Thu, 16 Apr 2015 03:23:52 -0400 Subject: gnu: Add gitolite. * gnu/packages/version-control.scm (gitolite): New variable. * gnu/packages/patches/gitolite-openssh-6.8-compat.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + .../patches/gitolite-openssh-6.8-compat.patch | 25 +++++++++ gnu/packages/version-control.scm | 60 ++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 gnu/packages/patches/gitolite-openssh-6.8-compat.patch diff --git a/gnu-system.am b/gnu-system.am index 13d06fb920..ae6b4e2bab 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -422,6 +422,7 @@ dist_patch_DATA = \ gnu/packages/patches/gcc-cross-environment-variables.patch \ gnu/packages/patches/geoclue-config.patch \ gnu/packages/patches/ghostscript-runpath.patch \ + gnu/packages/patches/gitolite-openssh-6.8-compat.patch \ gnu/packages/patches/glib-tests-desktop.patch \ gnu/packages/patches/glib-tests-homedir.patch \ gnu/packages/patches/glib-tests-prlimit.patch \ diff --git a/gnu/packages/patches/gitolite-openssh-6.8-compat.patch b/gnu/packages/patches/gitolite-openssh-6.8-compat.patch new file mode 100644 index 0000000000..d7fc2e6b12 --- /dev/null +++ b/gnu/packages/patches/gitolite-openssh-6.8-compat.patch @@ -0,0 +1,25 @@ +From ed807a40c6683960e357bc995b3acf721ec088b4 Mon Sep 17 00:00:00 2001 +From: Sitaram Chamarty +Date: Thu, 19 Mar 2015 05:17:59 +0530 +Subject: [PATCH] openssh 6.8 compat + +--- + src/triggers/post-compile/ssh-authkeys | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/triggers/post-compile/ssh-authkeys b/src/triggers/post-compile/ssh-authkeys +index 84dda73..d5f5d8b 100755 +--- a/src/triggers/post-compile/ssh-authkeys ++++ b/src/triggers/post-compile/ssh-authkeys +@@ -115,7 +115,7 @@ sub fp_file { + my $f = shift; + my $fp = `ssh-keygen -l -f '$f'`; + chomp($fp); +- _die "fingerprinting failed for '$f'" unless $fp =~ /([0-9a-f][0-9a-f](:[0-9a-f][0-9a-f])+)/; ++ _die "fingerprinting failed for '$f'" unless $fp =~ /([0-9a-f][0-9a-f](:[0-9a-f][0-9a-f])+)/ or $fp =~ m(SHA256:([A-ZA-z0-9+/]+)); + $fp = $1; + return $fp; + } +-- +2.2.1 + diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 2094ec0554..3cbd12f635 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -48,6 +48,7 @@ #:use-module (gnu packages nano) #:use-module (gnu packages ncurses) #:use-module (gnu packages openssl) + #:use-module (gnu packages ssh) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) @@ -401,6 +402,65 @@ linear. It will test every change between two points in the DAG. It will also walk each side of a merge and test those changes individually.") (license (x11-style "file://LICENSE"))))) +(define-public gitolite + (package + (name "gitolite") + (version "3.6.2") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/sitaramc/gitolite/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + ;; Commit ed807a4 upstream + (patches + (list (search-patch "gitolite-openssh-6.8-compat.patch"))) + (sha256 + (base32 + "1gsgzi9ayb4rablki3mqr11b0h8db4xg43df660marfpacmkfb01")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no tests + #:phases (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (add-before 'install 'patch-scripts + (lambda* (#:key inputs #:allow-other-keys) + (let ((perl (string-append (assoc-ref inputs "perl") + "/bin/perl"))) + ;; This seems to take care of every shell script that + ;; invokes Perl. + (substitute* (find-files "." ".*") + ((" perl -") + (string-append " " perl " -")))))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((output (assoc-ref outputs "out")) + (sharedir (string-append output "/share/gitolite")) + (bindir (string-append output "/bin"))) + (mkdir-p sharedir) + (mkdir-p bindir) + (system* "./install" "-to" sharedir) + ;; Create symlinks for executable scripts in /bin. + (for-each (lambda (script) + (symlink (string-append sharedir "/" script) + (string-append bindir "/" script))) + '("gitolite" "gitolite-shell")) + #t)))))) + (inputs + `(("perl" ,perl))) + ;; git and openssh are propagated because trying to patch the source via + ;; regexp matching is too brittle and prone to false positives. + (propagated-inputs + `(("git" ,git) + ("openssh" ,openssh))) + (home-page "http://gitolite.com") + (synopsis "Git access control layer") + (description + "Gitolite is an access control layer on top of Git, providing fine access +control to Git repositories.") + (license gpl2))) + (define-public mercurial (package (name "mercurial") -- cgit v1.2.3 From f763eaaaf94e048941885c8aa5aaf8d386d542a6 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sun, 26 Apr 2015 14:38:23 +0200 Subject: gnu: Add mdds. * gnu/packages/boost.scm (mdds): New variable. --- gnu/packages/boost.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm index 10c88f3f2a..2bdd8f19f0 100644 --- a/gnu/packages/boost.scm +++ b/gnu/packages/boost.scm @@ -102,3 +102,25 @@ across a broad spectrum of applications.") (license (license:x11-style "http://www.boost.org/LICENSE_1_0.txt" "Some components have other similar licences.")))) + +(define-public mdds + (package + (name "mdds") + (version "0.12.0") + (source (origin + (method url-fetch) + (uri (string-append + "http://kohei.us/files/mdds/src/mdds_" version ".tar.bz2")) + (sha256 + (base32 + "10ar7r0gkdl2r7916jlkl5c38cynrh7x9s90a5i8d242r8ixw8ia")))) + (build-system gnu-build-system) + (propagated-inputs + `(("boost" ,boost))) ; inclusion of header files + (home-page "https://code.google.com/p/multidimalgorithm/") + (synopsis "Multi-dimensional C++ data structures and indexing algorithms") + (description "Mdds (multi-dimensional data structure) provides a +collection of multi-dimensional data structures and indexing algorithms +for C++. It includes flat segment trees, segment trees, rectangle sets, +point quad trees, multi-type vectors and multi-type matrices.") + (license license:expat))) -- cgit v1.2.3 From e4f43b56c387d682913e2324f7965d18e486b5b7 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sat, 25 Apr 2015 21:35:48 +0200 Subject: gnu: Add fluidsynth. * gnu/packages/audio.scm (fluidsynth): New variable. --- gnu/packages/audio.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 8fb3da7fa1..96102db316 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -314,6 +314,45 @@ language and software synthesizer.") ALSA PCM devices.") (license license:gpl2+))) +(define-public fluidsynth + (package + (name "fluidsynth") + (version "1.1.6") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/fluidsynth/fluidsynth-" + version "/fluidsynth-" version ".tar.gz")) + (sha256 + (base32 + "070pwb7brdcn1mfvplkd56vjc7lbz4iznzkqvfsakvgbv68k71ah")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (alist-cons-after + 'unpack + 'remove-broken-symlinks + (lambda _ (delete-file-recursively "m4") #t) + %standard-phases))) + (inputs + `(("libsndfile" ,libsndfile) + ("alsa-lib" ,alsa-lib) + ("jack" ,jack-1) + ("ladspa" ,ladspa) + ("lash" ,lash) + ("readline" ,readline) + ("glib" ,glib))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://www.fluidsynth.org/") + (synopsis "SoundFont synthesizer") + (description + "FluidSynth is a real-time software synthesizer based on the SoundFont 2 +specifications. FluidSynth reads and handles MIDI events from the MIDI input +device. It is the software analogue of a MIDI synthesizer. FluidSynth can +also play midifiles using a Soundfont.") + (license license:gpl2+))) + (define-public faad2 (package (name "faad2") -- cgit v1.2.3 From f62a8417baf2a887bdbee951479889c8062c1f3d Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sun, 26 Apr 2015 10:44:14 +0200 Subject: gnu: Add calf plugins. * gnu/packages/audio.scm (calf): New variable. --- gnu/packages/audio.scm | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 96102db316..06f8bbdbea 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -236,6 +236,48 @@ bass section with five drawbars. A standalone JACK application and LV2 plugins are provided.") (license license:gpl2))) +(define-public calf + (package + (name "calf") + (version "0.0.60") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/calf/calf/" + version "/calf-" version ".tar.gz")) + (sha256 + (base32 + "019fwg00jv217a5r767z7szh7vdrarybac0pr2sk26xp81kibrx9")))) + (build-system gnu-build-system) + (inputs + `(("fluidsynth" ,fluidsynth) + ("expat" ,expat) + ("glib" ,glib) + ("gtk" ,gtk+-2) + ("cairo" ,cairo) + ("lash" ,lash) + ("jack" ,jack-1) + ("lv2" ,lv2) + ("ladspa" ,ladspa) + ("fftw" ,fftw))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (native-search-paths + (list (search-path-specification + (variable "LV2_PATH") + (files '("lib/lv2"))))) + (home-page "http://calf.sourceforge.net/") + (synopsis "Audio plug-in pack for LV2 and JACK environments") + (description + "Calf Studio Gear is an audio plug-in pack for LV2 and JACK environments. +The suite contains lots of effects (delay, modulation, signal processing, +filters, equalizers, dynamics, distortion and mastering effects), +instruments (SF2 player, organ simulator and a monophonic synthesizer) and +tools (analyzer, mono/stereo tools, crossovers).") + ;; calfjackhost is released under GPLv2+ + ;; The plugins are released under LGPLv2.1+ + (license (list license:lgpl2.1+ license:gpl2+)))) + (define-public csound (package (name "csound") -- cgit v1.2.3 From c514385197fb928f24a86b8f37610ac1938ad306 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sun, 26 Apr 2015 17:24:51 +0200 Subject: gnu: gpgme: Update to 1.5.4. * gnu/packages/gnupg.scm (gpgme): Update to 1.5.4. --- gnu/packages/gnupg.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 7a16b4161a..3b29d1abfa 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -286,7 +286,7 @@ libskba (working with X.509 certificates and CMS data).") (define-public gpgme (package (name "gpgme") - (version "1.5.3") + (version "1.5.4") (source (origin (method url-fetch) @@ -294,7 +294,7 @@ libskba (working with X.509 certificates and CMS data).") ".tar.bz2")) (sha256 (base32 - "1jgwmra6cf0i5x2prj92w77vl7hmj276qmmll3lwysbyn32l1c0d")))) + "0v7azxazsfakvhrxzj5ysvcxma0892c89d27c17fkj8mi3nc0f5v")))) (build-system gnu-build-system) (propagated-inputs ;; Needs to be propagated because gpgme.h includes gpg-error.h. @@ -434,7 +434,7 @@ PGP keysigning parties.") including tools for signing keys, keyring analysis, and party preparation. * caff: CA - Fire and Forget signs and mails a key - + * pgp-clean: removes all non-self signatures from key * pgp-fixkey: removes broken packets from keys -- cgit v1.2.3 From 7bde30e18de3e8cd7e4156ea5bb0d9439b6c12d7 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sun, 26 Apr 2015 17:44:47 +0200 Subject: gnu: evas-generic-loaders: Update to 1.13.2. * gnu/packages/enlightenment.scm (evas-generic-loaders): Update to 1.13.2. Use https for the URL to avoid a redirection. --- gnu/packages/enlightenment.scm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index 4a59e67ed8..c64230097d 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -156,15 +156,16 @@ full capabilities of EFL.") (define-public evas-generic-loaders (package (name "evas-generic-loaders") - (version "1.13.0") + (version "1.13.2") (source (origin (method url-fetch) (uri (string-append - "http://download.enlightenment.org/rel/libs/evas_generic_loaders/evas_generic_loaders-" - version ".tar.gz")) + "https://download.enlightenment.org/rel/libs/" + "evas_generic_loaders/evas_generic_loaders-" + version ".tar.xz")) (sha256 - (base32 "16yzjk58bxsd0rlnpzrr8as9fxjjiq01swzhpadsgkmq33abgg63")))) + (base32 "1z5vjabs3psvqs3251mpyl1wgbdv1grn30yf682vamdqc5ckfa69")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) -- cgit v1.2.3 From 6bc24063155d897c6c80a192e48bd9f61cb9014e Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Tue, 21 Apr 2015 22:40:15 -0500 Subject: gnu: Add guile-minikanren. * gnu/packages/guile.scm (guile-minikanren): New variable. --- AUTHORS | 1 + gnu/packages/guile.scm | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) diff --git a/AUTHORS b/AUTHORS index fa1835b707..e2dafe0b34 100644 --- a/AUTHORS +++ b/AUTHORS @@ -35,5 +35,6 @@ alphabetical order): David Thompson Paul van der Walt Mark H. Weaver + Christopher A. Webber Andy Wingo Ricardo Wurmus diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index c605533fd2..751002f54c 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2014, 2015 Mark H Weaver +;;; Copyright © 2015 Christopher Allan Webber ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,7 +37,9 @@ #:use-module (gnu packages base) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system gnu) + #:use-module (guix build-system trivial) #:use-module (guix utils) #:use-module (ice-9 match)) @@ -358,4 +361,79 @@ http:://json.org specification. These are the main features: - Allows JSON pretty printing.") (license lgpl3+))) +(define-public guile-minikanren + (package + (name "guile-minikanren") + (version "20150424.e844d85") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ijp/minikanren.git") + (commit "e844d85512f8c055d3f96143ee506007389a25e3"))) + (sha256 + (base32 + "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6")))) + (build-system trivial-build-system) + (arguments + `(#:modules + ((guix build utils) + (ice-9 match)) + #:builder + (begin + (use-modules (guix build utils) + (ice-9 match)) + (let* ((out (assoc-ref %outputs "out")) + (module-dir (string-append out "/share/guile/site/2.0")) + (source (assoc-ref %build-inputs "source")) + (doc (string-append out "/share/doc")) + (scm-files '("minikanren.scm" + "minikanren/mkextraforms.scm" + "minikanren/mkprelude.scm" + "minikanren/mk.scm")) + (guild (string-append (assoc-ref %build-inputs "guile") + "/bin/guild"))) + ;; Make installation directories. + (mkdir-p (string-append module-dir "/minikanren")) + (mkdir-p doc) + + ;; Compile .scm files and install. + (chdir source) + (setenv "GUILE_AUTO_COMPILE" "0") + (for-each (lambda (file) + (let* ((dest-file (string-append module-dir "/" + file ".scm")) + (go-file (match (string-split file #\.) + ((base _) + (string-append module-dir "/" + base ".go"))))) + ;; Install source module. + (copy-file file dest-file) + ;; Install compiled module. + (unless (zero? (system* guild "compile" + "-L" source + "-o" go-file + file)) + (error (format #f "Failed to compile ~s to ~s!" + file go-file))))) + scm-files) + + ;; Also copy over the README. + (copy-file "README.org" (string-append doc "/README.org")) + #t)))) + (inputs + `(("guile" ,guile-2.0))) + (home-page "https://github.com/ijp/minikanren") + (synopsis "miniKanren declarative logic system, packaged for Guile") + (description + "MiniKanren is a relational programming extension to the Scheme +programming Language, written as a smaller version of Kanren suitable for +pedagogical purposes. It is featured in the book, The Reasoned Schemer, +written by Dan Friedman, William Byrd, and Oleg Kiselyov. + +This is Ian Price's r6rs packaged version of miniKranen, which deviates +slightly from miniKanren mainline. + +See http://minikanren.org/ for more on miniKanren generally.") + (license expat))) + ;;; guile.scm ends here -- cgit v1.2.3 From 769436b8622d1120bb39ca466521b82d4b477f0a Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Mon, 27 Apr 2015 15:00:15 +0800 Subject: gnu: ffmpeg: Update to 2.6.2. * gnu/packages/video.scm (ffmpeg): Update to 2.6.2. --- gnu/packages/video.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 8868713ba1..057350aa44 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -275,14 +275,14 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") (define-public ffmpeg (package (name "ffmpeg") - (version "2.6") + (version "2.6.2") (source (origin (method url-fetch) (uri (string-append "http://www.ffmpeg.org/releases/ffmpeg-" version ".tar.bz2")) (sha256 (base32 - "14a7zp8pa1rvw6nr9l2rf57xr004n5kwkhn5lglybjnn1p68xhr3")))) + "1fi93zy98wmls7x3jpr2yvckk2ia6a1yyygwrfaxq95pd6h3m7l8")))) (build-system gnu-build-system) (inputs `(("fontconfig" ,fontconfig) -- cgit v1.2.3 From 27350ef8bfa6ba44be8984ecb473481e2d5118d1 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Mon, 27 Apr 2015 15:02:45 +0800 Subject: gnu: ffmpeg: Don't use patchelf. * gnu/packages/video.scm (ffmpeg)[inputs]: Remove patchelf. [arguments]: Remove #:modules, #:imported-modules and 'add-lib-to-runpath phase. Pass '--extra-ldflags=-Wl,-rpath=$libdir' to `configure'. --- gnu/packages/video.scm | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 057350aa44..da07eff8fc 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -299,7 +299,6 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") ("libvorbis" ,libvorbis) ("libvpx" ,libvpx) ("openal" ,openal) - ("patchelf" ,patchelf) ("pulseaudio" ,pulseaudio) ("soxr" ,soxr) ("speex" ,speex) @@ -316,12 +315,6 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") ("yasm" ,yasm))) (arguments `(#:test-target "fate" - #:modules ((guix build gnu-build-system) - (guix build utils) - (guix build rpath) - (srfi srfi-26)) - #:imported-modules (,@%gnu-build-system-modules - (guix build rpath)) #:phases (modify-phases %standard-phases (replace @@ -376,6 +369,9 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") (zero? (system* "./configure" (string-append "--prefix=" out) + ;; Add $libdir to the RUNPATH of all the binaries. + (string-append "--extra-ldflags=-Wl,-rpath=" + %output "/lib") "--enable-avresample" "--enable-gpl" ; enable optional gpl licensed parts "--enable-shared" @@ -417,17 +413,7 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") (path (string-join (map dirname dso) ":"))) (format #t "setting LD_LIBRARY_PATH to ~s~%" path) (setenv "LD_LIBRARY_PATH" path) - #t))) - (add-after - 'strip 'add-lib-to-runpath - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (lib (string-append out "/lib"))) - ;; Add LIB to the RUNPATH of all the executables and libraries. - (with-directory-excursion out - (for-each (cut augment-rpath <> lib) - (append (find-files "bin" ".*") - (find-files "lib" "\\.so\\..*\\.")))))))))) + #t)))))) (home-page "http://www.ffmpeg.org/") (synopsis "Audio and video framework") (description "FFmpeg is a complete, cross-platform solution to record, -- cgit v1.2.3 From 7482b3403b47f190229331277d023771ee3afaed Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Mon, 27 Apr 2015 16:58:00 +0800 Subject: gnu: mpv: Update to 0.9.0. * gnu/packages/video.scm (mpv): Update to 0.9.0. --- gnu/packages/video.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index da07eff8fc..2e2460d792 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -696,7 +696,7 @@ several areas.") (define-public mpv (package (name "mpv") - (version "0.8.3") + (version "0.9.0") (source (origin (method url-fetch) (uri (string-append @@ -704,14 +704,14 @@ several areas.") ".tar.gz")) (sha256 (base32 - "1kw9hr957cxqgm2i94bgqc6sskm6bwhm0akzckilhs460b43h409")) + "08nx0g6ji2d90f5w62g327szhkb7id7jzwgf3x069rc5id1x3bx7")) (file-name (string-append name "-" version ".tar.gz")))) (build-system waf-build-system) (native-inputs `(("perl" ,perl) ("pkg-config" ,pkg-config) ("python-docutils" ,python-docutils))) - ;; Missing features: libguess, LIRC, Wayland, VDPAU, V4L2 + ;; Missing features: libguess, Wayland, VDPAU, V4L2 (inputs `(("alsa-lib" ,alsa-lib) ("enca" ,enca) -- cgit v1.2.3 From 5809ffccc51adce533530a1b1a0d619532e6d741 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 26 Apr 2015 16:38:43 -0400 Subject: gnu: Add sfml. * gnu/packages/game-development.scm (sfml): New variable. --- gnu/packages/game-development.scm | 44 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 0e6a1d5b89..219176722a 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -25,7 +25,15 @@ #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages qt) - #:use-module (gnu packages compression)) + #:use-module (gnu packages compression) + #:use-module (gnu packages zip) + #:use-module (gnu packages gl) + #:use-module (gnu packages linux) + #:use-module (gnu packages xorg) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages image) + #:use-module (gnu packages audio) + #:use-module (gnu packages pulseaudio)) (define-public bullet (package @@ -85,3 +93,37 @@ clone.") ;; As noted in 'COPYING', part of it is under GPLv2+, while the rest is ;; under BSD-2. (license license:gpl2+))) + +(define-public sfml + (package + (name "sfml") + (version "2.2") + (source (origin + (method url-fetch) + (uri (string-append "http://mirror0.sfml-dev.org/files/SFML-" + version "-sources.zip")) + (sha256 + (base32 + "1xhkvgyfbhqsjdmfbxvk729kdrzh7kdyagxa3bvpzi6z43mh1frd")))) + (build-system cmake-build-system) + (arguments + '(#:tests? #f)) ; no tests + (native-inputs + `(("unzip" ,unzip))) + (inputs + `(("mesa" ,mesa) + ("glew" ,glew) + ("libx11" ,libx11) + ("libxrandr" ,libxrandr) + ("eudev" ,eudev) + ("freetype" ,freetype) + ("libjpeg" ,libjpeg) + ("libsndfile" ,libsndfile) + ("openal" ,openal))) + (home-page "http://www.sfml-dev.org") + (synopsis "Simple and Fast Multimedia Library") + (description + "SFML provides a simple interface to the various computer components, +to ease the development of games and multimedia applications. It is composed +of five modules: system, window, graphics, audio and network.") + (license license:zlib))) -- cgit v1.2.3 From 02ed8be3acb20eac54086c78829f858184a9fc8c Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 27 Apr 2015 11:21:08 +0200 Subject: gnu: tbb: Set rpath in LDFLAGS. * gnu/packages/tbb.scm (tbb)[arguments]: Set rpath to "/lib" output directory in LDFLAGS. --- gnu/packages/tbb.scm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gnu/packages/tbb.scm b/gnu/packages/tbb.scm index 3c41141dc6..0e9db720aa 100644 --- a/gnu/packages/tbb.scm +++ b/gnu/packages/tbb.scm @@ -46,6 +46,8 @@ (build-system gnu-build-system) (arguments `(#:test-target "test" + #:make-flags (list (string-append "LDFLAGS=-Wl,-rpath=" + (assoc-ref %outputs "out") "/lib")) #:phases (alist-replace 'configure (lambda* (#:key outputs #:allow-other-keys) -- cgit v1.2.3 From 4ca009c03674529fbeb85aa559f867364845fe0b Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 27 Apr 2015 11:48:00 +0200 Subject: gnu: flexbar: Enable tests. * gnu/packages/bioinformatics.scm (flexbar): Enable tests. --- gnu/packages/bioinformatics.scm | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index ccfda627f3..bcb7eba48f 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -623,15 +623,20 @@ results. The FASTX-Toolkit tools perform some of these preprocessing tasks.") "13jaykc3y1x8y5nn9j8ljnb79s5y51kyxz46hdmvvjj6qhyympmf")))) (build-system cmake-build-system) (arguments - `(;; There is no test target, although there is a directory containing - ;; test data and scripts (launched by flexbar_validate.sh). - #:tests? #f - #:configure-flags (list + `(#:configure-flags (list (string-append "-DFLEXBAR_BINARY_DIR=" (assoc-ref %outputs "out") "/bin/")) #:phases - (alist-delete 'install %standard-phases))) + (alist-replace + 'check + (lambda* (#:key outputs #:allow-other-keys) + (setenv "PATH" (string-append + (assoc-ref outputs "out") "/bin:" + (getenv "PATH"))) + (chdir "../flexbar_v2.5_src/test") + (zero? (system* "bash" "flexbar_validate.sh"))) + (alist-delete 'install %standard-phases)))) (inputs `(("tbb" ,tbb) ("zlib" ,zlib))) -- cgit v1.2.3 From 47c8ba5a519077e71adbf4ce23121d2784c50ab9 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 20 Apr 2015 12:55:20 +0200 Subject: gnu: icedtea6: Split test fixing phases. * gnu/packages/java.scm (icedtea6)[arguments]: Split phase 'fix-tests into three phases 'fix-test-framework, 'fix-hotspot-tests, and 'fix-jdk-tests. --- gnu/packages/java.scm | 211 ++++++++++++++++++++++++++------------------------ 1 file changed, 108 insertions(+), 103 deletions(-) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index a77d1716bc..9c9fb66b1f 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -397,7 +397,7 @@ build process and its dependencies, whereas Make uses Makefile format.") (setenv "PATH" (string-append antpath "/bin:" (getenv "PATH"))))) (alist-cons-before - 'check 'fix-tests + 'check 'fix-test-framework (lambda _ ;; Fix PATH in test environment (substitute* "src/jtreg/com/sun/javatest/regtest/Main.java" @@ -405,109 +405,114 @@ build process and its dependencies, whereas Make uses Makefile format.") (string-append "PATH=" (getenv "PATH")))) (substitute* "src/jtreg/com/sun/javatest/util/SysEnv.java" (("/usr/bin/env") (which "env"))) - - ;; Hotspot tests - (with-directory-excursion "openjdk/hotspot/test/" - (substitute* "jprt.config" - (("PATH=\"\\$\\{path4sdk\\}\"") - (string-append "PATH=" (getenv "PATH"))) - (("make=/usr/bin/make") - (string-append "make=" (which "make")))) - (substitute* '("runtime/6626217/Test6626217.sh" - "runtime/7110720/Test7110720.sh") - (("/bin/rm") (which "rm")) - (("/bin/cp") (which "cp")) - (("/bin/mv") (which "mv")))) - - ;; JDK tests - (with-directory-excursion "openjdk/jdk/test/" - (substitute* "com/sun/jdi/JdbReadTwiceTest.sh" - (("/bin/pwd") (which "pwd"))) - (substitute* "com/sun/jdi/ShellScaffold.sh" - (("/bin/kill") (which "kill"))) - (substitute* "start-Xvfb.sh" - ;(("/usr/bin/X11/Xvfb") (which "Xvfb")) - (("/usr/bin/nohup") (which "nohup"))) - (substitute* "javax/security/auth/Subject/doAs/Test.sh" - (("/bin/rm") (which "rm"))) - (substitute* "tools/launcher/MultipleJRE.sh" - (("echo \"#!/bin/sh\"") - (string-append "echo \"#!" (which "rm") "\"")) - (("/usr/bin/zip") (which "zip"))) - (substitute* "com/sun/jdi/OnThrowTest.java" - (("#!/bin/sh") (string-append "#!" (which "sh")))) - (substitute* "java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java" - (("/usr/bin/uptime") (which "uptime"))) - (substitute* "java/lang/ProcessBuilder/Basic.java" - (("/usr/bin/env") (which "env")) - (("/bin/false") (which "false")) - (("/bin/true") (which "true")) - (("/bin/cp") (which "cp")) - (("/bin/sh") (which "sh"))) - (substitute* "java/lang/ProcessBuilder/FeelingLucky.java" - (("/bin/sh") (which "sh"))) - (substitute* "java/lang/ProcessBuilder/Zombies.java" - (("/usr/bin/perl") (which "perl")) - (("/bin/ps") (which "ps")) - (("/bin/true") (which "true"))) - (substitute* "java/lang/Runtime/exec/ConcurrentRead.java" - (("/usr/bin/tee") (which "tee"))) - (substitute* "java/lang/Runtime/exec/ExecWithDir.java" - (("/bin/true") (which "true"))) - (substitute* "java/lang/Runtime/exec/ExecWithInput.java" - (("/bin/cat") (which "cat"))) - (substitute* "java/lang/Runtime/exec/ExitValue.java" - (("/bin/sh") (which "sh")) - (("/bin/true") (which "true")) - (("/bin/kill") (which "kill"))) - (substitute* "java/lang/Runtime/exec/LotsOfDestroys.java" - (("/usr/bin/echo") (which "echo"))) - (substitute* "java/lang/Runtime/exec/LotsOfOutput.java" - (("/usr/bin/cat") (which "cat"))) - (substitute* "java/lang/Runtime/exec/SleepyCat.java" - (("/bin/cat") (which "cat")) - (("/bin/sleep") (which "sleep")) - (("/bin/sh") (which "sh"))) - (substitute* "java/lang/Runtime/exec/StreamsSurviveDestroy.java" - (("/bin/cat") (which "cat"))) - (substitute* "java/rmi/activation/CommandEnvironment/SetChildEnv.java" - (("/bin/chmod") (which "chmod"))) - (substitute* "java/util/zip/ZipFile/Assortment.java" - (("/bin/sh") (which "sh"))))) - (alist-replace - 'check + #t) + (alist-cons-before + 'check 'fix-hotspot-tests (lambda _ - ;; The "make check-*" targets always return zero, so we need to - ;; check for errors in the associated log files to determine - ;; whether any tests have failed. - (use-modules (ice-9 rdelim)) - (let* ((error-pattern (make-regexp "^(Error|FAILED):.*")) - (checker (lambda (port) - (let loop () - (let ((line (read-line port))) - (cond - ((eof-object? line) #t) - ((regexp-exec error-pattern line) #f) - (else (loop))))))) - (run-test (lambda (test) - (system* "make" test) - (call-with-input-file - (string-append "test/" test ".log") - checker)))) - (or #t ; skip tests - (and (run-test "check-hotspot") - (run-test "check-langtools") - (run-test "check-jdk"))))) - (alist-replace - 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((doc (string-append (assoc-ref outputs "doc") "/share/doc/" ,name)) - (jre (assoc-ref outputs "out")) - (jdk (assoc-ref outputs "jdk"))) - (copy-recursively "openjdk.build/docs" doc) - (copy-recursively "openjdk.build/j2re-image" jre) - (copy-recursively "openjdk.build/j2sdk-image" jdk))) - %standard-phases))))))))) + (with-directory-excursion "openjdk/hotspot/test/" + (substitute* "jprt.config" + (("PATH=\"\\$\\{path4sdk\\}\"") + (string-append "PATH=" (getenv "PATH"))) + (("make=/usr/bin/make") + (string-append "make=" (which "make")))) + (substitute* '("runtime/6626217/Test6626217.sh" + "runtime/7110720/Test7110720.sh") + (("/bin/rm") (which "rm")) + (("/bin/cp") (which "cp")) + (("/bin/mv") (which "mv")))) + #t) + (alist-cons-before + 'check 'fix-jdk-tests + (lambda _ + (with-directory-excursion "openjdk/jdk/test/" + (substitute* "com/sun/jdi/JdbReadTwiceTest.sh" + (("/bin/pwd") (which "pwd"))) + (substitute* "com/sun/jdi/ShellScaffold.sh" + (("/bin/kill") (which "kill"))) + (substitute* "start-Xvfb.sh" + ;;(("/usr/bin/X11/Xvfb") (which "Xvfb")) + (("/usr/bin/nohup") (which "nohup"))) + (substitute* "javax/security/auth/Subject/doAs/Test.sh" + (("/bin/rm") (which "rm"))) + (substitute* "tools/launcher/MultipleJRE.sh" + (("echo \"#!/bin/sh\"") + (string-append "echo \"#!" (which "rm") "\"")) + (("/usr/bin/zip") (which "zip"))) + (substitute* "com/sun/jdi/OnThrowTest.java" + (("#!/bin/sh") (string-append "#!" (which "sh")))) + (substitute* "java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java" + (("/usr/bin/uptime") (which "uptime"))) + (substitute* "java/lang/ProcessBuilder/Basic.java" + (("/usr/bin/env") (which "env")) + (("/bin/false") (which "false")) + (("/bin/true") (which "true")) + (("/bin/cp") (which "cp")) + (("/bin/sh") (which "sh"))) + (substitute* "java/lang/ProcessBuilder/FeelingLucky.java" + (("/bin/sh") (which "sh"))) + (substitute* "java/lang/ProcessBuilder/Zombies.java" + (("/usr/bin/perl") (which "perl")) + (("/bin/ps") (which "ps")) + (("/bin/true") (which "true"))) + (substitute* "java/lang/Runtime/exec/ConcurrentRead.java" + (("/usr/bin/tee") (which "tee"))) + (substitute* "java/lang/Runtime/exec/ExecWithDir.java" + (("/bin/true") (which "true"))) + (substitute* "java/lang/Runtime/exec/ExecWithInput.java" + (("/bin/cat") (which "cat"))) + (substitute* "java/lang/Runtime/exec/ExitValue.java" + (("/bin/sh") (which "sh")) + (("/bin/true") (which "true")) + (("/bin/kill") (which "kill"))) + (substitute* "java/lang/Runtime/exec/LotsOfDestroys.java" + (("/usr/bin/echo") (which "echo"))) + (substitute* "java/lang/Runtime/exec/LotsOfOutput.java" + (("/usr/bin/cat") (which "cat"))) + (substitute* "java/lang/Runtime/exec/SleepyCat.java" + (("/bin/cat") (which "cat")) + (("/bin/sleep") (which "sleep")) + (("/bin/sh") (which "sh"))) + (substitute* "java/lang/Runtime/exec/StreamsSurviveDestroy.java" + (("/bin/cat") (which "cat"))) + (substitute* "java/rmi/activation/CommandEnvironment/SetChildEnv.java" + (("/bin/chmod") (which "chmod"))) + (substitute* "java/util/zip/ZipFile/Assortment.java" + (("/bin/sh") (which "sh")))) + #t) + (alist-replace + 'check + (lambda _ + ;; The "make check-*" targets always return zero, so we need to + ;; check for errors in the associated log files to determine + ;; whether any tests have failed. + (use-modules (ice-9 rdelim)) + (let* ((error-pattern (make-regexp "^(Error|FAILED):.*")) + (checker (lambda (port) + (let loop () + (let ((line (read-line port))) + (cond + ((eof-object? line) #t) + ((regexp-exec error-pattern line) #f) + (else (loop))))))) + (run-test (lambda (test) + (system* "make" test) + (call-with-input-file + (string-append "test/" test ".log") + checker)))) + (or #t ; skip tests + (and (run-test "check-hotspot") + (run-test "check-langtools") + (run-test "check-jdk"))))) + (alist-replace + 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((doc (string-append (assoc-ref outputs "doc") "/share/doc/" ,name)) + (jre (assoc-ref outputs "out")) + (jdk (assoc-ref outputs "jdk"))) + (copy-recursively "openjdk.build/docs" doc) + (copy-recursively "openjdk.build/j2re-image" jre) + (copy-recursively "openjdk.build/j2sdk-image" jdk))) + %standard-phases))))))))))) (native-inputs `(("ant-bootstrap" ,(origin -- cgit v1.2.3 From 85a02905e418caa8e891b86a5e079d656c6244c2 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Mon, 27 Apr 2015 20:56:00 +0300 Subject: gnu: imlib2: Update to 1.4.7. * gnu/packages/image.scm (imlib2): Update to 1.4.7. --- gnu/packages/image.scm | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index ece0e8c54a..c24ec99375 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2015 Andreas Enge ;;; Copyright © 2014, 2015 Mark H Weaver -;;; Copyright © 2014 Alex Kost +;;; Copyright © 2014, 2015 Alex Kost ;;; Copyright © 2014 Ricardo Wurmus ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer ;;; Copyright © 2014 John Darrington @@ -384,25 +384,16 @@ compose, and analyze GIF images.") (define-public imlib2 (package (name "imlib2") - (version "1.4.6") + (version "1.4.7") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/enlightenment/imlib2-" - version ".tar.gz")) + version ".tar.bz2")) (sha256 (base32 - "0kjggg4gfn6chi8v1xddd5qwk1fbnl7rvd93qiclv5v11s615k0p")))) + "00a7jbwj10x3jcvxa5rplnkvhv35gv9rb400zy636zdd4g737mrm")))) (build-system gnu-build-system) - (arguments - '(;; Will be fixed in the next release: - ;; . - #:phases (alist-cons-before - 'configure 'patch-config - (lambda _ - (substitute* "imlib2-config.in" - (("@my_libs@") ""))) - %standard-phases))) (native-inputs `(("pkgconfig" ,pkg-config))) (inputs -- cgit v1.2.3 From 67fa7a27fb5dfe2cdc01551c20f08c695d4dbe46 Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Sun, 26 Apr 2015 23:40:40 -0500 Subject: gnu: Add extremetuxracer. * gnu/packages/games.scm (extremetuxracer): New variable. --- gnu/packages/games.scm | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 192d0db397..d86e151a85 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -9,6 +9,7 @@ ;;; Copyright © 2014 Mark H Weaver ;;; Copyright © 2015 Andreas Enge ;;; Copyright © 2015 David Hashe +;;; Copyright © 2015 Christopher Allan Webber ;;; ;;; This file is part of GNU Guix. ;;; @@ -42,6 +43,7 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages libcanberra) + #:use-module (gnu packages libunwind) #:use-module (gnu packages image) #:use-module (gnu packages ncurses) #:use-module (gnu packages python) @@ -65,6 +67,7 @@ #:use-module (gnu packages lua) #:use-module (gnu packages video) #:use-module (gnu packages xml) + #:use-module (gnu packages tcl) #:use-module (guix build-system trivial) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) @@ -822,3 +825,57 @@ interfaces or even in Emacs. It supports the standard game storage format Modem Protocol).") (home-page "http://www.gnu.org/software/gnugo/") (license license:gpl3+))) + +(define-public extremetuxracer + (package + (name "extremetuxracer") + (version "0.6.0") + (source (origin + (method url-fetch) + (uri (string-append + "http://downloads.sourceforge.net/project/extremetuxracer/releases/" + version "/etr-" version ".tar.xz")) + (sha256 + (base32 + "0fl9pwkywqnsmgr6plfj9zb05xrdnl5xb2hcmbjk7ap9l4cjfca4")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("freetype" ,freetype) + ("mesa" ,mesa) + ("glu" ,glu) + ("libice" ,libice) + ("libpng" ,libpng) + ("sdl" ,sdl) + ("sdl-mixer" ,sdl-mixer) + ("sdl-image" ,sdl-image) + ("libsm" ,libsm) + ("libunwind" ,libunwind) + ("libx11" ,libx11) + ("libxext" ,libxext) + ("libxi" ,libxi) + ("libxmu" ,libxmu) + ("libxt" ,libxt) + ("tcl" ,tcl) + ("zlib" ,zlib))) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'configure 'patch-makefile + (lambda _ + (substitute* "Makefile" + (("CXXFLAGS =") "CXXFLAGS = ${CFLAGS}"))))))) + (synopsis "High speed arctic racing game based on Tux Racer") + ;; Snarfed straight from Debian + (description "Extreme Tux Racer, or etracer as it is called for short, is +a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the +game is to slide down a snow- and ice-covered mountain as quickly as possible, +avoiding the trees and rocks that will slow you down. + +Collect herrings and other goodies while sliding down the hill, but avoid fish +bones. + +This game is based on the GPL version of the famous game TuxRacer.") + (home-page "http://sourceforge.net/projects/extremetuxracer/") + (license license:gpl2+))) -- cgit v1.2.3 From 7b4570b4fb842932dbc64d8cd2608b37c9cb359d Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Mon, 27 Apr 2015 22:09:15 +0200 Subject: gnu: Add ixion. * gnu/packages/libreoffice.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. Co-authored-by: John Darrington --- gnu-system.am | 1 + gnu/packages/libreoffice.scm | 52 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 gnu/packages/libreoffice.scm diff --git a/gnu-system.am b/gnu-system.am index ae6b4e2bab..617e8bb217 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -175,6 +175,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/libftdi.scm \ gnu/packages/libidn.scm \ gnu/packages/libphidget.scm \ + gnu/packages/libreoffice.scm \ gnu/packages/libsigsegv.scm \ gnu/packages/libunistring.scm \ gnu/packages/libusb.scm \ diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm new file mode 100644 index 0000000000..97b464d0bc --- /dev/null +++ b/gnu/packages/libreoffice.scm @@ -0,0 +1,52 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Andreas Enge +;;; Copyright © 2014 John Darrington +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages libreoffice) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module ((guix licenses) #:select (mpl2.0)) + #:use-module (guix build-system gnu) + #:use-module (gnu packages boost) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python)) + +(define-public ixion + (package + (name "ixion") + (version "0.9.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://kohei.us/files/ixion/src/libixion-" + version ".tar.xz")) + (sha256 (base32 + "18g3nk29ljiqbyi0ml49j2x3f3xrqckdm9i66sw5fxnj7hb5rqvp")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("mdds" ,mdds) + ("python" ,python-2))) ; looks for python.pc, not python3.pc + (home-page "https://gitlab.com/ixion/ixion") + (synopsis "General purpose formula parser and interpreter") + (description "Ixion is a library for calculating the results of formula +expressions stored in multiple named targets, or \"cells\". The cells can +be referenced from each other, and the library takes care of resolving +their dependencies automatically upon calculation.") + (license mpl2.0))) -- cgit v1.2.3 From 477a752e897c41a08f141d2af724ba817338e914 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 28 Apr 2015 15:29:17 +0800 Subject: gnu: cmake: Update to 3.2.2. * gnu/packages/cmake.scm (cmake): Update to 3.2.2. * gnu/packages/patches/cmake-fix-tests.patch: Skip test for BundleUtilities. --- gnu/packages/cmake.scm | 9 ++++--- gnu/packages/patches/cmake-fix-tests.patch | 40 ++++++++++++++++-------------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm index 1fb9241596..0dbb81bfb8 100644 --- a/gnu/packages/cmake.scm +++ b/gnu/packages/cmake.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2014 Mark H Weaver ;;; Copyright © 2014 Eric Bavier ;;; Copyright © 2014 Ian Denhardt +;;; Copyright © 2015 Sou Bunnbu ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,7 +36,7 @@ (define-public cmake (package (name "cmake") - (version "3.1.3") + (version "3.2.2") (source (origin (method url-fetch) (uri (string-append @@ -43,7 +44,7 @@ (version-major+minor version) "/cmake-" version ".tar.gz")) (sha256 - (base32 "1l662p9lscbzx9s85y86cynb9fn1rb2alqg4584wqq9gibxd7x25")) + (base32 "0y3w83al0vh9ll7fnqm3nx7l8hsl85k8iv9abxb791q36rp4xsdd")) (patches (list (search-patch "cmake-fix-tests.patch"))))) (build-system gnu-build-system) (arguments @@ -66,7 +67,8 @@ "Utilities/cmbzip2/Makefile-libbz2_so" "Utilities/Release/release_cmake.cmake" "Utilities/cmlibarchive/libarchive/archive_write_set_format_shar.c" - "Tests/CMakeLists.txt") + "Tests/CMakeLists.txt" + "Tests/RunCMake/File_Generate/RunCMakeTest.cmake") (("/bin/sh") (which "sh")))) (alist-cons-before 'configure 'set-paths @@ -83,6 +85,7 @@ "./configure" (string-append "--prefix=" out) "--system-libs" + "--no-system-jsoncpp" ; not packaged yet ;; By default, the man pages and other docs land ;; in PREFIX/man and PREFIX/doc, but we want them ;; in share/{man,doc}. Note that unlike diff --git a/gnu/packages/patches/cmake-fix-tests.patch b/gnu/packages/patches/cmake-fix-tests.patch index 5327f3749a..f59e2cd625 100644 --- a/gnu/packages/patches/cmake-fix-tests.patch +++ b/gnu/packages/patches/cmake-fix-tests.patch @@ -1,6 +1,23 @@ ---- a/Tests/CMakeLists.txt 2013-03-20 22:57:13.000000000 +0100 -+++ b/Tests/CMakeLists.txt 2013-03-20 22:58:02.000000000 +0100 -@@ -1706,16 +1706,17 @@ +--- cmake-3.2.2.orig/Tests/CMakeLists.txt 2015-04-14 01:09:00.000000000 +0800 ++++ cmake-3.2.2/Tests/CMakeLists.txt 2015-04-28 15:02:34.913039742 +0800 +@@ -342,10 +342,12 @@ + endif() + + # run test for BundleUtilities on supported platforms/compilers +- if(MSVC OR +- MINGW OR +- CMAKE_SYSTEM_NAME MATCHES "Linux" OR +- CMAKE_SYSTEM_NAME MATCHES "Darwin") ++# if(MSVC OR ++# MINGW OR ++# CMAKE_SYSTEM_NAME MATCHES "Linux" OR ++# CMAKE_SYSTEM_NAME MATCHES "Darwin") ++# This test fails on Guix: skip it. ++ if(FALSE) + if(NOT "${CMAKE_GENERATOR}" STREQUAL "Watcom WMake") + + add_test(BundleUtilities ${CMAKE_CTEST_COMMAND} +@@ -2257,16 +2259,17 @@ PASS_REGULAR_EXPRESSION "Could not find executable" FAIL_REGULAR_EXPRESSION "SegFault") @@ -27,19 +44,4 @@ +# PASS_REGULAR_EXPRESSION "Upload\\.xml") configure_file( - "${CMake_SOURCE_DIR}/Tests/CTestTestConfigFileInBuildDir/test1.cmake.in" ---- a/Utilities/cmcurl/CMakeLists.txt 2013-03-20 22:57:13.000000000 +0100 -+++ b/Utilities/cmcurl/CMakeLists.txt 2013-03-20 23:08:41.000000000 +0100 -@@ -729,8 +729,9 @@ - ADD_EXECUTABLE(LIBCURL Testing/curltest.c) - TARGET_LINK_LIBRARIES(LIBCURL cmcurl ${CMAKE_DL_LIBS}) - --IF(CMAKE_CURL_TEST_URL) -- ADD_TEST(curl LIBCURL ${CMAKE_CURL_TEST_URL}) --ENDIF(CMAKE_CURL_TEST_URL) -+# This test requires network connectivity: skip it. -+#IF(CMAKE_CURL_TEST_URL) -+# ADD_TEST(curl LIBCURL ${CMAKE_CURL_TEST_URL}) -+#ENDIF(CMAKE_CURL_TEST_URL) - - INSTALL(FILES COPYING DESTINATION ${CMake_DOC_DEST}/cmcurl) + "${CMake_SOURCE_DIR}/Tests/CTestCoverageCollectGCOV/test.cmake.in" -- cgit v1.2.3 From e32316e62f54bbda07e88f22d97fc28b84eb70b8 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 28 Apr 2015 17:16:18 +0800 Subject: gnu: cmake: Disable parallel tests. * gnu/packages/cmake.scm (cmake)[arguments]: Add #:parallel-tests?. Set 'CTEST_OUTPUT_ON_FAILURE' to 'TRUE' in 'set-paths phase. --- gnu/packages/cmake.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm index 0dbb81bfb8..6f8b9f67e3 100644 --- a/gnu/packages/cmake.scm +++ b/gnu/packages/cmake.scm @@ -49,6 +49,7 @@ (build-system gnu-build-system) (arguments `(#:test-target "test" + #:parallel-tests? #f ; 3 test from RunCMake fails #:phases (alist-cons-before 'configure 'patch-bin-sh (lambda _ @@ -76,7 +77,9 @@ ;; Help cmake's bootstrap process to find system libraries (begin (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH")) - (setenv "CMAKE_INCLUDE_PATH" (getenv "CPATH")))) + (setenv "CMAKE_INCLUDE_PATH" (getenv "CPATH")) + ;; Get verbose output from failed tests + (setenv "CTEST_OUTPUT_ON_FAILURE" "TRUE"))) (alist-replace 'configure (lambda* (#:key outputs #:allow-other-keys) -- cgit v1.2.3 From f67890477afa764b22f4a4d790662f7441e73bcf Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 24 Mar 2015 12:09:29 +0100 Subject: gnu: Add icedtea7. * gnu/packages/java.scm (icedtea7): New variable. --- gnu/packages/java.scm | 175 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 174 insertions(+), 1 deletion(-) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 9c9fb66b1f..26fc3eccf5 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -20,6 +20,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages attr) @@ -46,7 +47,8 @@ #:use-module (gnu packages xml) #:use-module (gnu packages xorg) #:use-module (gnu packages zip) - #:use-module (gnu packages texinfo)) + #:use-module (gnu packages texinfo) + #:use-module ((srfi srfi-1) #:select (fold alist-delete))) (define-public swt (package @@ -572,3 +574,174 @@ build process and its dependencies, whereas Make uses Makefile format.") ;; IcedTea is released under the GPL2 + Classpath exception, which is the ;; same license as both GNU Classpath and OpenJDK. (license license:gpl2+))) + +(define-public icedtea7 + (let* ((version "2.5.5") + (drop (lambda (name hash) + (origin + (method url-fetch) + (uri (string-append + "http://icedtea.classpath.org/download/drops/" + "/icedtea7/" version "/" name ".tar.bz2")) + (sha256 (base32 hash)))))) + (package (inherit icedtea6) + (name "icedtea7") + (version version) + (source (origin + (method url-fetch) + (uri (string-append + "http://icedtea.wildebeest.org/download/source/icedtea-" + version ".tar.xz")) + (sha256 + (base32 + "1irxk2ndwsfk4c1zbzb5h3rpwv2bc9bhfjvz6p4dws5476vsxrq9")) + (modules '((guix build utils))) + (snippet + '(substitute* "Makefile.in" + ;; do not leak information about the build host + (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"") + "DISTRIBUTION_ID=\"\\\"guix\\\"\""))))) + (arguments + `(;; There are many test failures. Some are known to + ;; fail upstream, others relate to not having an X + ;; server running at test time, yet others are a + ;; complete mystery to me. + + ;; hotspot: passed: 241; failed: 45; error: 2 + ;; langtools: passed: 1,934; failed: 26 + ;; jdk: unknown + #:tests? #f + ;; Apparently, the C locale is needed for some of the tests. + #:locale "C" + ,@(substitute-keyword-arguments (package-arguments icedtea6) + ((#:configure-flags flags) + `(let ((jdk (assoc-ref %build-inputs "icedtea6")) + (ant (assoc-ref %build-inputs "ant"))) + `("--disable-bootstrap" + "--without-rhino" + "--enable-nss" + "--enable-system-lcms" + "--disable-downloading" + ,(string-append "--with-ant-home=" ant) + ,(string-append "--with-jdk-home=" jdk)))) + ((#:phases phases) + `(modify-phases ,phases + (replace + 'unpack + (lambda* (#:key source inputs #:allow-other-keys) + (let ((target (string-append "icedtea-" ,version)) + (unpack (lambda (drop dir) + (mkdir dir) + (zero? (system* "tar" "xvjf" + (assoc-ref inputs drop) + "-C" dir + "--strip-components=1"))))) + (and (zero? (system* "tar" "xvf" source)) + (chdir target) + (unpack "openjdk-drop" "openjdk") + (unpack "corba-drop" "openjdk/corba") + (unpack "jdk-drop" "openjdk/jdk") + (unpack "hotspot-drop" "openjdk/hotspot") + + ;; The build framework checks the tarballs, so we + ;; need to keep them around even though we have + ;; already unpacked some of them for patching. + (begin + (copy-file (assoc-ref inputs "openjdk-drop") + "openjdk.tar.bz2") + (copy-file (assoc-ref inputs "corba-drop") + "corba.tar.bz2") + (copy-file (assoc-ref inputs "hotspot-drop") + "hotspot.tar.bz2") + (copy-file (assoc-ref inputs "jaxp-drop") + "jaxp.tar.bz2") + (copy-file (assoc-ref inputs "jaxws-drop") + "jaxws.tar.bz2") + (copy-file (assoc-ref inputs "jdk-drop") + "jdk.tar.bz2") + (copy-file (assoc-ref inputs "langtools-drop") + "langtools.tar.bz2") + #t))))) + (replace + 'set-additional-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "openjdk/jdk/make/common/shared/Sanity.gmk" + (("ALSA_INCLUDE=/usr/include/alsa/version.h") + (string-append "ALSA_INCLUDE=" + (assoc-ref inputs "alsa-lib") + "/include/alsa/version.h"))) + (setenv "CC" "gcc") + (setenv "CPATH" + (string-append (assoc-ref inputs "libxrender") + "/include/X11/extensions" ":" + (assoc-ref inputs "libxtst") + "/include/X11/extensions" ":" + (assoc-ref inputs "libxinerama") + "/include/X11/extensions" ":" + (or (getenv "CPATH") ""))) + (setenv "ALT_OBJCOPY" (which "objcopy")) + (setenv "ALT_CUPS_HEADERS_PATH" + (string-append (assoc-ref inputs "cups") + "/include")) + (setenv "ALT_FREETYPE_HEADERS_PATH" + (string-append (assoc-ref inputs "freetype") + "/include")) + (setenv "ALT_FREETYPE_LIB_PATH" + (string-append (assoc-ref inputs "freetype") + "/lib")))) + (add-after + 'unpack 'fix-x11-extension-include-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "openjdk/jdk/make/sun/awt/mawt.gmk" + (((string-append "\\$\\(firstword \\$\\(wildcard " + "\\$\\(OPENWIN_HOME\\)" + "/include/X11/extensions\\).*$")) + (string-append (assoc-ref inputs "libxrender") + "/include/X11/extensions" + " -I" (assoc-ref inputs "libxtst") + "/include/X11/extensions" + " -I" (assoc-ref inputs "libxinerama") + "/include/X11/extensions")) + (("\\$\\(wildcard /usr/include/X11/extensions\\)\\)") "")) + #t)) + (replace + 'fix-test-framework + (lambda _ + ;; Fix PATH in test environment + (substitute* "test/jtreg/com/sun/javatest/regtest/Main.java" + (("PATH=/bin:/usr/bin") + (string-append "PATH=" (getenv "PATH")))) + (substitute* "test/jtreg/com/sun/javatest/util/SysEnv.java" + (("/usr/bin/env") (which "env"))) + (substitute* "openjdk/hotspot/test/test_env.sh" + (("/bin/rm") (which "rm")) + (("/bin/cp") (which "cp")) + (("/bin/mv") (which "mv"))) + #t)) + (delete 'patch-patches)))))) + (native-inputs + `(("ant" ,ant) + ("icedtea6" ,icedtea6 "jdk") + ("openjdk-drop" + ,(drop "openjdk" + "03gxqn17cxwl1nspnwigacaqd28p02d45f396j5f4kkbzfnbl0ak")) + ("corba-drop" + ,(drop "corba" + "0ldcckknn2f92jv1144cnn0z3wmvxln28wc00rc6xxblnjcnamzh")) + ("jaxp-drop" + ,(drop "jaxp" + "0mnjdziffcnyqlyvf8dw1hrl4kiiwmh8ia0ym417wgvnjpaihci9")) + ("jaxws-drop" + ,(drop "jaxws" + "1gkmypnhygx2mxhca3ngy620k993wi2cc1wysc0np06y1rkx1mkn")) + ("jdk-drop" + ,(drop "jdk" + "10x43mqjfn43jlckic0nyf7apyyjyr910cdmmvy41kvw8ljhvg61")) + ("langtools-drop" + ,(drop "langtools" + "0q5nqc14r6vmhxgikw3wgdcc0r9symp830v13isnv8qdjgm6kcki")) + ("hotspot-drop" + ,(drop "hotspot" + "1yqxfd2jwbm5y41wscyfx8h0fr3h8ny2g2mda5iwd8sikxsaj96p")) + ,@(fold alist-delete (package-native-inputs icedtea6) + '("openjdk6-src" "ant-bootstrap" "gcj"))))))) -- cgit v1.2.3 From ed377cc6cfb2cf3eb45c68a7939874fbad6eac59 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 28 Apr 2015 10:17:49 +0200 Subject: gnu: Add python2-backport-ssl-match-hostname. * gnu/packages/python.scm (python2-backport-ssl-match-hostname): New variable. --- gnu/packages/python.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 050c0de402..91ed9ce0df 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -301,6 +301,33 @@ etc. ") (define-public python2-babel (package-with-python2 python-babel)) +(define-public python2-backport-ssl-match-hostname + (package + (name "python2-backport-ssl-match-hostname") + (version "3.4.0.2") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/b/" + "backports.ssl_match_hostname/backports.ssl_match_hostname-" + version ".tar.gz")) + (sha256 + (base32 + "1bnn47ipvhy49n0m50v27lp4xj6sqdkdw676ypd7pawsn1zhwh87")))) + (build-system python-build-system) + (arguments `(#:python ,python-2)) + (inputs + `(("python2-setuptools" ,python2-setuptools))) + (home-page "https://pypi.python.org/pypi/backports.ssl_match_hostname") + (synopsis "Backport of ssl.match_hostname() function from Python 3.4") + (description + "This backport brings the ssl.match_hostname() function to users of +earlier versions of Python. The function checks the hostname in the +certificate returned by the server to which a connection has been established, +and verifies that it matches the intended target hostname.") + (license psfl))) + (define-public python-h5py (package (name "python-h5py") -- cgit v1.2.3 From 310d218f64f2521a3285311ade7c30a3066450f4 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 28 Apr 2015 10:18:22 +0200 Subject: gnu: Add python-tornado. * gnu/packages/python.scm (python-tornado, python2-tornado): New variables. --- gnu/packages/python.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 91ed9ce0df..29b47f357c 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -3536,6 +3536,41 @@ It is written entirely in Python.") (define-public python2-singledispatch (package-with-python2 python-singledispatch)) +(define-public python-tornado + (package + (name "python-tornado") + (version "4.1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/t/tornado/" + "tornado-" version ".tar.gz")) + (sha256 + (base32 "0a12f00h277zbifibnj46wf14801f573irvf6hwkgja5vspd7awr")))) + (build-system python-build-system) + (inputs + `(("python-certifi" ,python-certifi))) + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (home-page "https://pypi.python.org/pypi/tornado/4.1") + (synopsis "Python web framework and asynchronous networking library") + (description + "Tornado is a Python web framework and asynchronous networking library, +originally developed at FriendFeed. By using non-blocking network I/O, +Tornado can scale to tens of thousands of open connections, making it ideal +for long polling, WebSockets, and other applications that require a long-lived +connection to each user.") + (license asl2.0))) + +(define-public python2-tornado + (let ((tornado (package-with-python2 python-tornado))) + (package (inherit tornado) + (inputs + `(("python2-backport-ssl-match-hostname" + ,python2-backport-ssl-match-hostname) + ,@(package-inputs tornado)))))) + (define-public python-waf (package (name "python-waf") -- cgit v1.2.3 From a176dd7e248a5c18f26bc8fff0a3172eb44d9338 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 29 Apr 2015 11:03:48 +0800 Subject: gnu: Add libmodplug. * gnu/packages/audio.scm (libmodplug): New variable. --- gnu/packages/audio.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 06f8bbdbea..5fc70c2561 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -1136,6 +1136,28 @@ compression modes. This package contains command-line programs and library to encode and decode wavpack files.") (license license:bsd-3))) +(define-public libmodplug + (package + (name "libmodplug") + (version "0.8.8.5") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/project/modplug-xmms/" + name "/" version "/" name "-" version ".tar.gz")) + (sha256 + (base32 + "1bfsladg7h6vnii47dd66f5vh1ir7qv12mfb8n36qiwrxq92sikp")))) + (build-system gnu-build-system) + (home-page "http://modplug-xmms.sourceforge.net/") + (synopsis "Mod file playing library") + (description + "Libmodplug renders mod music files as raw audio data, for playing or +conversion. mod, .s3m, .it, .xm, and a number of lesser-known formats are +supported. Optional features include high-quality resampling, bass expansion, +surround and reverb.") + (license license:public-domain))) + (define-public soundtouch (package (name "soundtouch") -- cgit v1.2.3 From b97b5cda3bc5df9c28eea233b78fe28cb0bec6df Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 29 Apr 2015 14:48:26 +0800 Subject: gnu: Add libxmp. * gnu/packages/audio.scm (libxmp): New variable. --- gnu/packages/audio.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 5fc70c2561..156d9f3fc1 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -1158,6 +1158,26 @@ supported. Optional features include high-quality resampling, bass expansion, surround and reverb.") (license license:public-domain))) +(define-public libxmp + (package + (name "libxmp") + (version "4.3.8") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/xmp/libxmp/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "0h06091hlpgc6ds4pjmfq8sx4snw7av3nhny180q4pwfyasjb6ny")))) + (build-system gnu-build-system) + (home-page "http://xmp.sourceforge.net/") + (synopsis "Module player library") + (description + "Libxmp is a library that renders module files to PCM data. It supports +over 90 mainstream and obscure module formats including Protracker (MOD), +Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT).") + (license license:lgpl2.1+))) + (define-public soundtouch (package (name "soundtouch") -- cgit v1.2.3 From 3ec4bba4c9b4098877dbaa2708b8f758afd05f2f Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 29 Apr 2015 14:48:55 +0800 Subject: gnu: Add xmp. * gnu/packages/audio.scm (xmp): New variable. --- gnu/packages/audio.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 156d9f3fc1..572155b386 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -1178,6 +1178,31 @@ over 90 mainstream and obscure module formats including Protracker (MOD), Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT).") (license license:lgpl2.1+))) +(define-public xmp + (package + (name "xmp") + (version "4.0.10") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/xmp/xmp/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "0gjylvvmq7ha0nhcjg56qfp0xxpsrcsj7y5r914svd5x1ppmzm5n")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libxmp" ,libxmp) + ("pulseaudio" ,pulseaudio))) + (home-page "http://xmp.sourceforge.net/") + (synopsis "Extended module player") + (description + "Xmp is a portable module player that plays over 90 mainstream and +obscure module formats, including Protracker MOD, Fasttracker II XM, Scream +Tracker 3 S3M and Impulse Tracker IT files.") + (license license:gpl2+))) + (define-public soundtouch (package (name "soundtouch") -- cgit v1.2.3 From 27c4f0cc03448b53053fa33035bdfc5b17178a92 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 29 Apr 2015 16:19:52 +0800 Subject: gnu: Remove gstreamer-0.10 and gst-plugins-base-0.10. * gnu/packages/gstreamer.scm (gstreamer-0.10, gst-plugins-base-0.10): Remove variables. * gnu/packages/patches/gstreamer-0.10-bison3.patch, gnu/packages/patches/gstreamer-0.10-silly-test.patch: Remove files. * gnu-system.am (dist_patch_DATA): Remove them. --- gnu-system.am | 2 - gnu/packages/gstreamer.scm | 46 ---------------------- gnu/packages/patches/gstreamer-0.10-bison3.patch | 32 --------------- .../patches/gstreamer-0.10-silly-test.patch | 14 ------- 4 files changed, 94 deletions(-) delete mode 100644 gnu/packages/patches/gstreamer-0.10-bison3.patch delete mode 100644 gnu/packages/patches/gstreamer-0.10-silly-test.patch diff --git a/gnu-system.am b/gnu-system.am index 617e8bb217..60901a6bc2 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -440,8 +440,6 @@ dist_patch_DATA = \ gnu/packages/patches/grep-CVE-2015-1345.patch \ gnu/packages/patches/grub-gets-undeclared.patch \ gnu/packages/patches/grub-freetype.patch \ - gnu/packages/patches/gstreamer-0.10-bison3.patch \ - gnu/packages/patches/gstreamer-0.10-silly-test.patch \ gnu/packages/patches/guile-1.8-cpp-4.5.patch \ gnu/packages/patches/guile-arm-fixes.patch \ gnu/packages/patches/guile-default-utf8.patch \ diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index b882208d76..03aecdfa53 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -124,32 +124,6 @@ simple plugin with a clean, generic interface. This package provides the core library and elements.") (license lgpl2.0+))) -(define-public gstreamer-0.10 - (package (inherit gstreamer) - (version "0.10.36") - (source - (origin - (method url-fetch) - (uri (string-append "http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-" - version ".tar.xz")) - (sha256 - (base32 - "1nkid1n2l3rrlmq5qrf5yy06grrkwjh3yxl5g0w58w0pih8allci")) - (patches - (list (search-patch "gstreamer-0.10-bison3.patch") - (search-patch "gstreamer-0.10-silly-test.patch"))))) - (propagated-inputs - `(("libxml2" ,libxml2))) - (inputs `(("glib" ,glib))) - (native-inputs - `(("bison" ,bison) - ("flex" ,flex) - ("perl" ,perl) - ("pkg-config" ,pkg-config) - ("glib" ,glib "bin") - ("python" ,python-2))))) - - (define-public gst-plugins-base (package (name "gst-plugins-base") @@ -288,23 +262,3 @@ developers consider to have good quality code and correct functionality.") "This GStreamer plugin supports a large number of audio and video compression formats through the use of the libav library.") (license gpl2+))) - -(define-public gst-plugins-base-0.10 - (package (inherit gst-plugins-base) - (version "0.10.36") - (source - (origin - (method url-fetch) - (uri (string-append - "http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-" - version ".tar.xz")) - (sha256 - (base32 - "0jp6hjlra98cnkal4n6bdmr577q8mcyp3c08s3a02c4hjhw5rr0z")))) - (inputs - `(("glib" ,glib) - ("gstreamer" ,gstreamer-0.10))) - (native-inputs - `(("pkg-config" ,pkg-config) - ("glib" ,glib "bin") - ("python" ,python-2))))) diff --git a/gnu/packages/patches/gstreamer-0.10-bison3.patch b/gnu/packages/patches/gstreamer-0.10-bison3.patch deleted file mode 100644 index f6eb90cb02..0000000000 --- a/gnu/packages/patches/gstreamer-0.10-bison3.patch +++ /dev/null @@ -1,32 +0,0 @@ -See https://bugzilla.gnome.org/show_bug.cgi?id=706462 - -Subject: [PATCH] Make grammar.y work with Bison 3 - -YYLEX_PARAM is no longer supported in Bison 3. ---- - gst/parse/grammar.y | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/gst/parse/grammar.y b/gst/parse/grammar.y -index 8a9019c..f533389 100644 ---- a/gst/parse/grammar.y -+++ b/gst/parse/grammar.y -@@ -26,7 +26,6 @@ - */ - - #define YYERROR_VERBOSE 1 --#define YYLEX_PARAM scanner - - #define YYENABLE_NLS 0 - -@@ -659,6 +658,7 @@ static int yyerror (void *scanner, graph_t *graph, const char *s); - %right '.' - %left '!' '=' - -+%lex-param { void *scanner } - %parse-param { void *scanner } - %parse-param { graph_t *graph } - %pure-parser --- -1.8.3.4 - diff --git a/gnu/packages/patches/gstreamer-0.10-silly-test.patch b/gnu/packages/patches/gstreamer-0.10-silly-test.patch deleted file mode 100644 index 678dd7b122..0000000000 --- a/gnu/packages/patches/gstreamer-0.10-silly-test.patch +++ /dev/null @@ -1,14 +0,0 @@ -See http://lists.freedesktop.org/archives/gstreamer-bugs/2013-January/098461.html - -diff -ru gstreamer-0.10.36.orig/tests/check/Makefile.in gstreamer-0.10.36/tests/check/Makefile.in ---- gstreamer-0.10.36.orig/tests/check/Makefile.in 2012-02-20 23:48:29.000000000 +0100 -+++ gstreamer-0.10.36/tests/check/Makefile.in 2013-10-30 21:55:48.000000000 +0100 -@@ -42,7 +42,7 @@ - gst/gstbus$(EXEEXT) gst/gstcaps$(EXEEXT) $(am__EXEEXT_2) \ - gst/gstdatetime$(EXEEXT) gst/gstinfo$(EXEEXT) \ - gst/gstiterator$(EXEEXT) gst/gstmessage$(EXEEXT) \ -- gst/gstminiobject$(EXEEXT) gst/gstobject$(EXEEXT) \ -+ gst/gstminiobject$(EXEEXT) \ - gst/gstpad$(EXEEXT) gst/gstparamspecs$(EXEEXT) \ - gst/gstpoll$(EXEEXT) gst/gstsegment$(EXEEXT) \ - gst/gstsystemclock$(EXEEXT) gst/gstclock$(EXEEXT) \ -- cgit v1.2.3 From b416c647e934c1a086a3cb534d31968e7ea53808 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Thu, 30 Apr 2015 00:03:10 +0800 Subject: gnu: jack2: Add $libdir to the RUNPATH of all the binaries. * gnu/packages/audio.scm (jack2)[arguments]: Add #:phases. --- gnu/packages/audio.scm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 06f8bbdbea..593d47d7a1 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -520,7 +520,18 @@ synchronous execution of all clients, and low latency operation.") (arguments `(#:tests? #f ; no check target #:configure-flags '("--dbus" - "--alsa"))) + "--alsa") + #:phases + (modify-phases %standard-phases + (add-before + 'configure 'set-linkflags + (lambda _ + ;; Add $libdir to the RUNPATH of all the binaries. + (substitute* "wscript" + ((".*CFLAGS.*-Wall.*" m) + (string-append m + " conf.env.append_unique('LINKFLAGS'," + "'-Wl,-rpath=" %output "/lib')\n")))))))) (inputs `(("alsa-lib" ,alsa-lib) ("dbus" ,dbus) -- cgit v1.2.3 From d9c41939bdc616c6a5110414ad8905d01e7e7b8f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 29 Apr 2015 22:27:46 +0200 Subject: install: Make /var/lock. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reported by 宋文武 . * gnu/build/install.scm (directives): Add /var/lock. --- gnu/build/install.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/build/install.scm b/gnu/build/install.scm index f019fcb417..76536daf49 100644 --- a/gnu/build/install.scm +++ b/gnu/build/install.scm @@ -121,6 +121,7 @@ STORE." (directory "/bin") (directory "/tmp" 0 0 #o1777) ; sticky bit (directory "/var/tmp" 0 0 #o1777) + (directory "/var/lock" 0 0 #o1777) (directory "/root" 0 0) ; an exception (directory "/home" 0 0))) -- cgit v1.2.3 From 372cf03981fea2e8f95be88c8a986f996c812d14 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Tue, 28 Apr 2015 17:48:24 +0200 Subject: gnu: libva: Patch a dlopen call, set drivers path. * gnu/packages/video.scm (libva): Patch the reference to libva-x11.so (passed to dlopen()) to use an absolute path. Add --with-drivers-path= to #:configure-flags with a value pointing to mesa's $prefix/lib/dri. --- gnu/packages/video.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 2e2460d792..c890d45d19 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -264,6 +264,27 @@ SMPTE 314M.") ("libxext" ,libxext) ("libxfixes" ,libxfixes) ("mesa" ,mesa))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before + 'build 'fix-dlopen-paths + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "va/drm/va_drm_auth_x11.c" + (("\"libva-x11\\.so\\.%d\"") + (string-append "\"" out "/lib/libva-x11.so.%d\""))))))) + ;; Most drivers are in mesa's $prefix/lib/dri, so use that. (Can be + ;; overridden at run-time via LIBVA_DRIVERS_PATH.) + #:configure-flags + (list (string-append "--with-drivers-path=" + (assoc-ref %build-inputs "mesa") "/lib/dri")) + ;; However, we can't write to mesa's store directory, so override the + ;; following make variable to install the dummy driver to libva's + ;; $prefix/lib/dri directory. + #:make-flags + (list (string-append "dummy_drv_video_ladir=" + (assoc-ref %outputs "out") "/lib/dri")))) (home-page "http://www.freedesktop.org/wiki/Software/vaapi/") (synopsis "Video acceleration library") (description "The main motivation for VA-API (Video Acceleration API) is -- cgit v1.2.3 From 7e35b9dd3ddb6ec4b9bed3c01a99fe1638e96c66 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 30 Apr 2015 13:31:59 +0200 Subject: gnu: gcc: Add $libdir to the RUNPATH of libvtv.so. * gnu/packages/gcc.scm (gcc-4.9): Inherit from GCC-4.8. [source]: Add 'gcc-libvtv-runpath.patch'. (gcc-5.1): Inherit from GCC-4.9. [source]: Use patches from GCC-4.9. * gnu/packages/patches/gcc-libvtv-runpath.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + gnu/packages/gcc.scm | 48 ++++++++++++++------------- gnu/packages/patches/gcc-libvtv-runpath.patch | 15 +++++++++ 3 files changed, 41 insertions(+), 23 deletions(-) create mode 100644 gnu/packages/patches/gcc-libvtv-runpath.patch diff --git a/gnu-system.am b/gnu-system.am index 820e1e1e79..b2f5bbe833 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -420,6 +420,7 @@ dist_patch_DATA = \ gnu/packages/patches/gawk-shell.patch \ gnu/packages/patches/gcc-arm-link-spec-fix.patch \ gnu/packages/patches/gcc-cross-environment-variables.patch \ + gnu/packages/patches/gcc-libvtv-runpath.patch \ gnu/packages/patches/geoclue-config.patch \ gnu/packages/patches/ghostscript-runpath.patch \ gnu/packages/patches/gitolite-openssh-6.8-compat.patch \ diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index dbce52e2f2..8804f3b12a 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -307,37 +307,39 @@ Go. It also includes runtime support libraries for these languages.") (package (inherit gcc-4.7) (version "4.8.4") (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/gcc/gcc-" - version "/gcc-" version ".tar.bz2")) - (sha256 - (base32 - "15c6gwm6dzsaagamxkak5smdkf1rdfbqqjs9jdbrp3lbg4ism02a")) - (patches (list (search-patch "gcc-arm-link-spec-fix.patch"))))))) + (method url-fetch) + (uri (string-append "mirror://gnu/gcc/gcc-" + version "/gcc-" version ".tar.bz2")) + (sha256 + (base32 + "15c6gwm6dzsaagamxkak5smdkf1rdfbqqjs9jdbrp3lbg4ism02a")) + (patches (list (search-patch "gcc-arm-link-spec-fix.patch"))))))) (define-public gcc-4.9 - (package (inherit gcc-4.7) + (package (inherit gcc-4.8) (version "4.9.2") (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/gcc/gcc-" - version "/gcc-" version ".tar.bz2")) - (sha256 - (base32 - "1pbjp4blk2ycaa6r3jmw4ky5f1s9ji3klbqgv8zs2sl5jn1cj810")) - (patches (list (search-patch "gcc-arm-link-spec-fix.patch"))))))) + (method url-fetch) + (uri (string-append "mirror://gnu/gcc/gcc-" + version "/gcc-" version ".tar.bz2")) + (sha256 + (base32 + "1pbjp4blk2ycaa6r3jmw4ky5f1s9ji3klbqgv8zs2sl5jn1cj810")) + (patches (map search-patch + '("gcc-arm-link-spec-fix.patch" + "gcc-libvtv-runpath.patch"))))))) (define-public gcc-5.1 - (package (inherit gcc-4.7) + (package (inherit gcc-4.9) (version "5.1.0") (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/gcc/gcc-" - version "/gcc-" version ".tar.bz2")) - (sha256 - (base32 - "1bd5vj4px3s8nlakbgrh38ynxq4s654m6nxz7lrj03mvkkwgvnmp")) - (patches (list (search-patch "gcc-arm-link-spec-fix.patch"))))))) + (method url-fetch) + (uri (string-append "mirror://gnu/gcc/gcc-" + version "/gcc-" version ".tar.bz2")) + (sha256 + (base32 + "1bd5vj4px3s8nlakbgrh38ynxq4s654m6nxz7lrj03mvkkwgvnmp")) + (patches (origin-patches (package-source gcc-4.9))))))) (define* (custom-gcc gcc name languages #:key (separate-lib-output? #t)) "Return a custom version of GCC that supports LANGUAGES." diff --git a/gnu/packages/patches/gcc-libvtv-runpath.patch b/gnu/packages/patches/gcc-libvtv-runpath.patch new file mode 100644 index 0000000000..df74363c83 --- /dev/null +++ b/gnu/packages/patches/gcc-libvtv-runpath.patch @@ -0,0 +1,15 @@ +GCC 4.9 and later have libvtv and, just like libstdc++ (see +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32354), it doesn't +have $libdir in its RUNPATH, but it NEEDs libgcc_s. This patch +fixes that. + +--- gcc-4.9.2/libvtv/Makefile.in 2014-10-30 09:28:58.000000000 +0100 ++++ gcc-4.9.2/libvtv/Makefile.in 2015-04-30 09:51:04.161129705 +0200 +@@ -15,6 +15,7 @@ + + @SET_MAKE@ + ++AM_LDFLAGS = -Wl,-rpath=$(libdir) + + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ -- cgit v1.2.3 From 9e7594027d1b876248f75c01d1c06abc3b64ac57 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 30 Apr 2015 13:43:55 +0200 Subject: gnu: gcc: Add link to upstream bug report. * gnu/packages/gcc.scm (gcc-4.8): Add link to bug report in comment. --- gnu/packages/gcc.scm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 8804f3b12a..c368b7df97 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -313,6 +313,10 @@ Go. It also includes runtime support libraries for these languages.") (sha256 (base32 "15c6gwm6dzsaagamxkak5smdkf1rdfbqqjs9jdbrp3lbg4ism02a")) + + ;; ARM 'link' spec issue reported at + ;; and + ;; . (patches (list (search-patch "gcc-arm-link-spec-fix.patch"))))))) (define-public gcc-4.9 -- cgit v1.2.3 From a0a0b7162e497bf064eb06c07efd5da4cf95dbe2 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Thu, 30 Apr 2015 14:29:05 +0200 Subject: gnu: wxwidgets: Set rpath in LDFLAGS. Fixes . * gnu/packages/wxwidgets.scm (wxwidgets): Add a make flag to set rpath to $out/lib via LDFLAGS. --- gnu/packages/wxwidgets.scm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm index 1f80130198..ee270ff105 100644 --- a/gnu/packages/wxwidgets.scm +++ b/gnu/packages/wxwidgets.scm @@ -62,6 +62,9 @@ (arguments '(#:configure-flags '("--with-regex=sys" "--with-libmspack" "--with-sdl") + #:make-flags + (list (string-append "LDFLAGS=-Wl,-rpath=" + (assoc-ref %outputs "out") "/lib")) ;; No 'check' target. #:tests? #f)) (home-page "https://www.wxwidgets.org/") -- cgit v1.2.3 From 90ea9863c8daa4cc91e8a972501e19058c70b81a Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Thu, 30 Apr 2015 16:30:41 +0200 Subject: gnu: serd: Set rpath via LDFLAGS. Fixes . * gnu/packages/rdf.scm (serd): Add a pre-configure phase setting $LDFLAGS to set the rpath to $out/lib. --- gnu/packages/rdf.scm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm index 96a52fd93a..a4acfd0834 100644 --- a/gnu/packages/rdf.scm +++ b/gnu/packages/rdf.scm @@ -243,7 +243,16 @@ and triple stores.") (base32 "1gxbzqsm212wmn8qkdd3lbl6wbv7fwmaf9qh2nxa4yxjbr7mylb4")))) (build-system waf-build-system) - (arguments `(#:tests? #f)) ; no check target + (arguments + `(#:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + (add-before + 'configure 'set-ldflags + (lambda* (#:key outputs #:allow-other-keys) + (setenv "LDFLAGS" + (string-append "-Wl,-rpath=" + (assoc-ref outputs "out") "/lib"))))))) (home-page "http://drobilla.net/software/serd/") (synopsis "Library for RDF syntax supporting Turtle and NTriples") (description -- cgit v1.2.3 From 7e81a761e7c4843c016818bbf1637af9047e2028 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Thu, 30 Apr 2015 16:32:30 +0200 Subject: gnu: sord: Set rpath via LDFLAGS. Fixes . * gnu/packages/rdf.scm (sord): Add a pre-configure phase setting $LDFLAGS to set the rpath to $out/lib. --- gnu/packages/rdf.scm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm index a4acfd0834..f26b021e50 100644 --- a/gnu/packages/rdf.scm +++ b/gnu/packages/rdf.scm @@ -277,7 +277,16 @@ ideal (e.g. in LV2 implementations or embedded applications).") (base32 "0rq7vafdv4vsxi6xk9zf5shr59w3kppdhqbj78185rz5gp9kh1dx")))) (build-system waf-build-system) - (arguments `(#:tests? #f)) ; no check target + (arguments + `(#:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + (add-before + 'configure 'set-ldflags + (lambda* (#:key outputs #:allow-other-keys) + (setenv "LDFLAGS" + (string-append "-Wl,-rpath=" + (assoc-ref outputs "out") "/lib"))))))) (inputs `(("serd" ,serd))) (native-inputs -- cgit v1.2.3 From d80ee44237ac14f26d785c279b73610ea9d5f2d0 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Thu, 30 Apr 2015 16:33:06 +0200 Subject: gnu: lilv: Set rpath via LDFLAGS. Fixes . * gnu/packages/audio.scm (lilv): Add a pre-configure phase setting $LDFLAGS to set the rpath to $out/lib. --- gnu/packages/audio.scm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 593d47d7a1..c5c1a77b2f 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -713,7 +713,16 @@ implementation of the Open Sound Control (OSC) protocol.") (base32 "0aj2plkx56iar8vzjbq2l7hi7sp0ml99m0h44rgwai2x4vqkk2j2")))) (build-system waf-build-system) - (arguments `(#:tests? #f)) ; no check target + (arguments + `(#:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + (add-before + 'configure 'set-ldflags + (lambda* (#:key outputs #:allow-other-keys) + (setenv "LDFLAGS" + (string-append "-Wl,-rpath=" + (assoc-ref outputs "out") "/lib"))))))) ;; required by lilv-0.pc (propagated-inputs `(("serd" ,serd) -- cgit v1.2.3 From cfaf863f15fca75b6c2cc81ae61d8c54ecd7cf28 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Thu, 30 Apr 2015 21:23:29 +0200 Subject: gnu: Add orcus. * gnu/packages/libreoffice.scm (orcus): New variable. --- gnu/packages/libreoffice.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 97b464d0bc..cbe1c75eeb 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -23,6 +23,7 @@ #:use-module ((guix licenses) #:select (mpl2.0)) #:use-module (guix build-system gnu) #:use-module (gnu packages boost) + #:use-module (gnu packages compression) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python)) @@ -50,3 +51,31 @@ expressions stored in multiple named targets, or \"cells\". The cells can be referenced from each other, and the library takes care of resolving their dependencies automatically upon calculation.") (license mpl2.0))) + +(define-public orcus + (package + (name "orcus") + (version "0.7.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://kohei.us/files/" name "/src/lib" + name "-" version ".tar.xz")) + (sha256 (base32 + "0hva4qalg3dk6n1118ncr5fy8cqnj2f7fwldw7aa04124rj6p104")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("ixion" ,ixion) + ("mdds" ,mdds) + ("zlib" ,zlib))) + (home-page "https://gitlab.com/orcus/orcus") + (synopsis "File import filter library for spreadsheet documents") + (description "Orcus is a library that provides a collection of standalone +file processing filters. It is currently focused on providing filters for +spreadsheet documents. The library includes import filters for +Microsoft Excel 2007 XML, Microsoft Excel 2003 XML, Open Document Spreadsheet, +Plain Text, Gnumeric XML, Generic XML. It also includes low-level parsers for +CSV, CSS and XML.") + (license mpl2.0))) -- cgit v1.2.3 From d17551d9438c6fe5c9bc3674e39345f15dc0c0ac Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 30 Apr 2015 22:13:04 +0200 Subject: download: Simplify 'open-connection-for-uri' to support HTTP proxies. Partly fixes . Reported by Joshua Randall . * guix/build/download.scm (open-connection-for-uri): Rewrite to be a small wrapper around 'open-socket-for-uri'. This procedure was initially introduced in d14ecda to work around the lack of NSS modules during bootstrap but that has become unnecessary since 0621349, which introduced a bootstrap Guile that uses static NSS modules (from commit d3b5972.) On Guile >= 2.0.10, this allows the 'http_proxy' environment variable to be used. --- guix/build/download.scm | 65 +++++++++++++++++++------------------------------ 1 file changed, 25 insertions(+), 40 deletions(-) diff --git a/guix/build/download.scm b/guix/build/download.scm index a3105ad41d..2e0b019d38 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -196,46 +196,31 @@ host name without trailing dot." record))) (define (open-connection-for-uri uri) - "Return an open input/output port for a connection to URI. - -This is the same as Guile's `open-socket-for-uri', except that we always -use a numeric port argument, to avoid the need to go through libc's NSS, -which is not available during bootstrap." - (define addresses - (let ((port (or (uri-port uri) - (case (uri-scheme uri) - ((http) 80) ; /etc/services, not for me! - ((https) 443) - (else - (error "unsupported URI scheme" uri)))))) - (delete-duplicates (getaddrinfo (uri-host uri) - (number->string port) - AI_NUMERICSERV) - (lambda (ai1 ai2) - (equal? (addrinfo:addr ai1) - (addrinfo:addr ai2)))))) - - (let loop ((addresses addresses)) - (let* ((ai (car addresses)) - (s (with-fluids ((%default-port-encoding #f)) - ;; Restrict ourselves to TCP. - (socket (addrinfo:fam ai) SOCK_STREAM IPPROTO_IP)))) - (catch 'system-error - (lambda () - (connect s (addrinfo:addr ai)) - - ;; Buffer input and output on this port. - (setvbuf s _IOFBF %http-receive-buffer-size) - - (if (eq? 'https (uri-scheme uri)) - (tls-wrap s (uri-host uri)) - s)) - (lambda args - ;; Connection failed, so try one of the other addresses. - (close s) - (if (null? (cdr addresses)) - (apply throw args) - (loop (cdr addresses)))))))) + "Like 'open-socket-for-uri', but also handle HTTPS connections." + (define https? + (eq? 'https (uri-scheme uri))) + + (let-syntax ((with-https-proxy + (syntax-rules () + ((_ exp) + ;; For HTTPS URIs, honor 'https_proxy', not 'http_proxy'. + ;; FIXME: Proxying is not supported for https. + (let ((thunk (lambda () exp))) + (if (and https? + (module-variable + (resolve-interface '(web client)) + 'current-http-proxy)) + (parameterize ((current-http-proxy #f)) + (when (getenv "https_proxy") + (format (current-error-port) + "warning: 'https_proxy' is ignored~%")) + (thunk)) + (thunk))))))) + (with-https-proxy + (let ((s (open-socket-for-uri uri))) + (if https? + (tls-wrap s (uri-host uri)) + s))))) ;; XXX: This is an awful hack to make sure the (set-port-encoding! p ;; "ISO-8859-1") call in `read-response' passes, even during bootstrap -- cgit v1.2.3 From c04681554da812f4ce1bed87c601cd62c663d151 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 30 Apr 2015 23:51:44 +0200 Subject: derivations: Add #:leaked-env-vars parameter. Suggested by Joshua Randall in . * guix/derivations.scm (derivation): Add #:leaked-env-vars parameter. [user+system-env-vars]: Honor it. * guix/gexp.scm (gexp->derivation): Add #:leaked-env-vars and pass it to 'raw-derivation'. * doc/guix.texi (Derivations, G-Expressions): Adjust accordingly. --- doc/guix.texi | 10 +++++++++- guix/derivations.scm | 12 +++++++++++- guix/gexp.scm | 2 ++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 4269d4fa5f..dd6af80965 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2187,7 +2187,7 @@ a derivation is the @code{derivation} procedure: @var{args} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @ [#:recursive? #f] [#:inputs '()] [#:env-vars '()] @ [#:system (%current-system)] [#:references-graphs #f] @ - [#:allowed-references #f] [#:local-build? #f] + [#:allowed-references #f] [#:leaked-env-vars #f] [#:local-build? #f] Build a derivation with the given arguments, and return the resulting @code{} object. @@ -2206,6 +2206,13 @@ a simple text format. When @var{allowed-references} is true, it must be a list of store items or outputs that the derivation's output may refer to. +When @var{leaked-env-vars} is true, it must be a list of strings +denoting environment variables that are allowed to ``leak'' from the +daemon's environment to the build environment. This is only applicable +to fixed-output derivations---i.e., when @var{hash} is true. The main +use is to allow variables such as @code{http_proxy} to be passed to +derivations that download files. + When @var{local-build?} is true, declare that the derivation is not a good candidate for offloading and should rather be built locally (@pxref{Daemon Offload Setup}). This is the case for small derivations @@ -2728,6 +2735,7 @@ information about monads.) [#:recursive? #f] [#:env-vars '()] [#:modules '()] @ [#:module-path @var{%load-path}] @ [#:references-graphs #f] [#:allowed-references #f] @ + [#:leaked-env-vars #f] @ [#:local-build? #f] [#:guile-for-build #f] Return a derivation @var{name} that runs @var{exp} (a gexp) with @var{guile-for-build} (a derivation) on @var{system}. When @var{target} diff --git a/guix/derivations.scm b/guix/derivations.scm index 7737e39b2d..1056caa70a 100644 --- a/guix/derivations.scm +++ b/guix/derivations.scm @@ -692,7 +692,7 @@ HASH-ALGO, of the derivation NAME. RECURSIVE? has the same meaning as for (inputs '()) (outputs '("out")) hash hash-algo recursive? references-graphs allowed-references - local-build?) + leaked-env-vars local-build?) "Build a derivation with the given arguments, and return the resulting object. When HASH and HASH-ALGO are given, a fixed-output derivation is created---i.e., one whose result is known in @@ -707,6 +707,12 @@ the build environment in the corresponding file, in a simple text format. When ALLOWED-REFERENCES is true, it must be a list of store items or outputs that the derivation's output may refer to. +When LEAKED-ENV-VARS is true, it must be a list of strings denoting +environment variables that are allowed to \"leak\" from the daemon's +environment to the build environment. This is only applicable to fixed-output +derivations--i.e., when HASH is true. The main use is to allow variables such +as \"http_proxy\" to be passed to derivations that download files. + When LOCAL-BUILD? is true, declare that the derivation is not a good candidate for offloading and should rather be built locally. This is the case for small derivations where the costs of data transfers would outweigh the benefits." @@ -751,6 +757,10 @@ derivations where the costs of data transfers would outweigh the benefits." `(("allowedReferences" . ,(string-join allowed-references))) '()) + ,@(if leaked-env-vars + `(("impureEnvVars" + . ,(string-join leaked-env-vars))) + '()) ,@env-vars))) (match references-graphs (((file . path) ...) diff --git a/guix/gexp.scm b/guix/gexp.scm index a2da72e76c..b08a361232 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -282,6 +282,7 @@ names and file names suitable for the #:allowed-references argument to (graft? (%graft?)) references-graphs allowed-references + leaked-env-vars local-build?) "Return a derivation NAME that runs EXP (a gexp) with GUILE-FOR-BUILD (a derivation) on SYSTEM. When TARGET is true, it is used as the @@ -400,6 +401,7 @@ The other arguments are as for 'derivation'." #:hash hash #:hash-algo hash-algo #:recursive? recursive? #:references-graphs (and=> graphs graphs-file-names) #:allowed-references allowed + #:leaked-env-vars leaked-env-vars #:local-build? local-build?)))) (define* (gexp-inputs exp #:key native?) -- cgit v1.2.3 From 0d8831370f5cd1bb8bf24e5f511c915592cc482c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 30 Apr 2015 23:54:06 +0200 Subject: download: Honor the 'http_proxy' and 'https_proxy' env. vars. Fixes . Reported by Joshua Randall . * guix/download.scm (url-fetch): Pass #:leaked-env-vars to 'gexp->derivation'. --- guix/download.scm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/guix/download.scm b/guix/download.scm index 3e4024fe1f..6b0349402a 100644 --- a/guix/download.scm +++ b/guix/download.scm @@ -271,6 +271,9 @@ in the store." (guix build utils) (guix ftp-client)) + ;; Honor the user's proxy settings. + #:leaked-env-vars '("http_proxy" "https_proxy") + ;; In general, offloading downloads is not a good idea. ;;#:local-build? #t ;; FIXME: The above would also disable use of -- cgit v1.2.3 From 0aaca4354c68a21b01ce5fcd7fb7f820e58fc3cb Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 1 May 2015 00:02:11 +0200 Subject: Thank Joshua. --- THANKS | 1 + 1 file changed, 1 insertion(+) diff --git a/THANKS b/THANKS index ff9714ebec..36c2a3ae1b 100644 --- a/THANKS +++ b/THANKS @@ -31,6 +31,7 @@ infrastructure help: Adam Pribyl Pjotr Prins rekado + Joshua Randall Bruno Félix Rezende Ribeiro Cyrill Schenkel Benno Schulenberg -- cgit v1.2.3 From 9e63a388d91f73e2b82f8c4688f131680fe5f165 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Thu, 30 Apr 2015 23:25:54 +0200 Subject: gnu: qt: Add patch for i686 build problem. See . * gnu/packages/patches/qt5-conflicting-typedefs.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/qt.scm (qt): Add the patch. --- gnu-system.am | 1 + .../patches/qt5-conflicting-typedefs.patch | 70 ++++++++++++++++++++++ gnu/packages/qt.scm | 3 +- 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/qt5-conflicting-typedefs.patch diff --git a/gnu-system.am b/gnu-system.am index b2f5bbe833..2692394519 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -529,6 +529,7 @@ dist_patch_DATA = \ gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ gnu/packages/patches/qt4-ldflags.patch \ gnu/packages/patches/qt4-tests.patch \ + gnu/packages/patches/qt5-conflicting-typedefs.patch \ gnu/packages/patches/qt5-runpath.patch \ gnu/packages/patches/ratpoison-shell.patch \ gnu/packages/patches/readline-link-ncurses.patch \ diff --git a/gnu/packages/patches/qt5-conflicting-typedefs.patch b/gnu/packages/patches/qt5-conflicting-typedefs.patch new file mode 100644 index 0000000000..751452c2db --- /dev/null +++ b/gnu/packages/patches/qt5-conflicting-typedefs.patch @@ -0,0 +1,70 @@ +See . + +diff --git a/qtwebengine/src/core/chromium_gpu_helper.cpp b/qtwebengine/src/core/chromium_gpu_helper.cpp +index c7c97e6..ef574ec 100644 +--- a/qtwebengine/src/core/chromium_gpu_helper.cpp ++++ b/qtwebengine/src/core/chromium_gpu_helper.cpp +@@ -40,13 +40,15 @@ + + #include "chromium_gpu_helper.h" + +-#include "content/common/gpu/gpu_channel_manager.h" +-#include "content/common/gpu/sync_point_manager.h" +-#include "content/gpu/gpu_child_thread.h" ++// Including gpu/command_buffer headers before content/gpu headers makes sure that ++// guards are defined to prevent duplicate definition errors with forward declared ++// GL typedefs cascading through content header includes. + #include "gpu/command_buffer/service/mailbox_manager.h" + #include "gpu/command_buffer/service/texture_manager.h" + +-#include // We need this for the Q_OS_QNX define. ++#include "content/common/gpu/gpu_channel_manager.h" ++#include "content/common/gpu/sync_point_manager.h" ++#include "content/gpu/gpu_child_thread.h" + + #ifdef Q_OS_QNX + #include "content/common/gpu/stream_texture_qnx.h" +diff --git a/qtwebengine/src/core/gl_surface_qt.cpp b/qtwebengine/src/core/gl_surface_qt.cpp +index 4fe2f21..5a27aa9 100644 +--- a/qtwebengine/src/core/gl_surface_qt.cpp ++++ b/qtwebengine/src/core/gl_surface_qt.cpp +@@ -49,8 +49,6 @@ + #include "base/logging.h" + #include "base/memory/scoped_ptr.h" + #include "content/common/gpu/image_transport_surface.h" +-#include "content/common/gpu/gpu_channel_manager.h" +-#include "content/common/gpu/gpu_command_buffer_stub.h" + #include "ui/gl/egl_util.h" + #include "ui/gl/gl_context.h" + #include "ui/gl/gl_implementation.h" +@@ -544,7 +542,9 @@ GLSurface::CreateViewGLSurface(gfx::AcceleratedWidget window) + } // namespace gfx + + namespace content { +-scoped_refptr ImageTransportSurface::CreateNativeSurface(GpuChannelManager* manager, GpuCommandBufferStub* stub, const gfx::GLSurfaceHandle& handle) ++class GpuCommandBufferStub; ++class GpuChannelManager; ++scoped_refptr ImageTransportSurface::CreateNativeSurface(GpuChannelManager*, GpuCommandBufferStub*, const gfx::GLSurfaceHandle&) + { + QT_NOT_USED + return scoped_refptr(); +diff --git a/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/gles2_cmd_format.h b/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/gles2_cmd_format.h +index 04a3dc3..506cf00 100644 +--- a/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/gles2_cmd_format.h ++++ b/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/gles2_cmd_format.h +@@ -20,6 +20,7 @@ + #include "gpu/command_buffer/common/cmd_buffer_common.h" + #include "gpu/command_buffer/common/gles2_cmd_ids.h" + ++#ifndef GL_VERSION_1_5 + // GL types are forward declared to avoid including the GL headers. The problem + // is determining which GL headers to include from code that is common to the + // client and service sides (GLES2 or one of several GL implementations). +@@ -47,6 +48,7 @@ typedef signed long long int GLsizeiptr; + typedef khronos_intptr_t GLintptr; + typedef khronos_ssize_t GLsizeiptr; + #endif ++#endif + + namespace gpu { + namespace gles2 { diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 8de1ffe398..3bc3145e8d 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -104,7 +104,8 @@ X11 (yet).") (sha256 (base32 "0q6qzakq8xihw91xv310qi3vyylq7x2bzdkjgy8sqxii2lgbjzhv")) - (patches (list (search-patch "qt5-runpath.patch"))) + (patches (list (search-patch "qt5-conflicting-typedefs.patch") + (search-patch "qt5-runpath.patch"))) (snippet '(begin ;; Remove broken symlinks. -- cgit v1.2.3 From 310709ae58d945b05705f329bca747f07967cd73 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 1 May 2015 12:50:27 +0200 Subject: substitute: Fix file descriptor leak in 'http-multiple-get'. In practice we would not leak much since we reconnect after ~100 requests (with nginx running on hydra.gnu.org.) * guix/scripts/substitute.scm (http-multiple-get): Call 'close-port' before 'connect'. --- guix/scripts/substitute.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index adf94a7ac3..b9983c5b9c 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -467,6 +467,7 @@ to read the response body. Return the list of results." ;; case we have to try again. Check whether that is the case. (match (assq 'connection (response-headers resp)) (('connection 'close) + (close-port p) (connect requests result)) ;try again (_ (loop tail ;keep going -- cgit v1.2.3 From bc7d089a9cb5ce843730f863cc03195168a956b9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 1 May 2015 13:10:18 +0200 Subject: serialization: Adjust the permissive UTF-8 decoder to Guile 2.0.12ish. * guix/serialization.scm (read-maybe-utf8-string): Use 'set-port-encoding!' and 'set-port-conversion-strategy!' instead of setting '%default-port-encoding' and '%default-port-conversion-strategy'. This accounts for Guile commit d574d96, which changes bytevector input ports to use ISO-8859-1. --- guix/serialization.scm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/guix/serialization.scm b/guix/serialization.scm index a99f53ee0b..51d7ef76c6 100644 --- a/guix/serialization.scm +++ b/guix/serialization.scm @@ -140,10 +140,9 @@ substitute invalid byte sequences with question marks. This is a ;; not very efficient. Eventually Guile may provide a lightweight ;; permissive UTF-8 decoder. (let* ((bv (read-byte-string p)) - (port (with-fluids ((%default-port-encoding "UTF-8") - (%default-port-conversion-strategy - 'substitute)) - (open-bytevector-input-port bv)))) + (port (open-bytevector-input-port bv))) + (set-port-encoding! port "UTF-8") + (set-port-conversion-strategy! port 'substitute) (get-string-all port))) (define (write-string-list l p) -- cgit v1.2.3 From ea7f3349ba59cb56087d3ca3ab4c101f372d0eac Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 1 May 2015 16:01:49 +0200 Subject: gnu: ganv: Set the RUNPATH of binaries to $libdir. * gnu/packages/gtk.scm (ganv)[arguments]: Add 'set-ldflags' phase. --- gnu/packages/gtk.scm | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 0f7ba863e8..8a5a3099bf 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -230,13 +230,21 @@ functions which were removed.") (source (origin (method url-fetch) (uri (string-append "http://download.drobilla.net/ganv-" - version - ".tar.bz2")) + version ".tar.bz2")) (sha256 (base32 "0g7s5mp14qgbfjdql0k1s8464r21g47ssn5dws6jazsnw6njhl0l")))) (build-system waf-build-system) - (arguments `(#:tests? #f)) ; no check target + (arguments + `(#:phases (alist-cons-before + 'configure 'set-ldflags + (lambda* (#:key outputs #:allow-other-keys) + ;; Allow 'bin/ganv_bench' to find libganv-1.so. + (setenv "LDFLAGS" + (string-append "-Wl,-rpath=" + (assoc-ref outputs "out") "/lib"))) + %standard-phases) + #:tests? #f)) ; no check target (inputs `(("gtk" ,gtk+-2) ("gtkmm" ,gtkmm-2))) -- cgit v1.2.3 From abcbda48c20da3d621e8170f8de30a575f080b51 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 1 May 2015 16:05:40 +0200 Subject: packages: Add '%hydra-supported-systems'. * build-aux/hydra/gnu-system.scm (%hydra-supported-systems): Remove. * guix/packages.scm (%hydra-supported-systems): New variable. --- build-aux/hydra/gnu-system.scm | 4 ---- guix/packages.scm | 6 ++++++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm index 9a47b4f423..c612ff1f12 100644 --- a/build-aux/hydra/gnu-system.scm +++ b/build-aux/hydra/gnu-system.scm @@ -210,10 +210,6 @@ valid." #f))))) -(define %hydra-supported-systems - ;; This is the list of system types for which build slaves are available. - '("x86_64-linux" "i686-linux" "mips64el-linux")) - ;;; ;;; Hydra entry point. ;;; diff --git a/guix/packages.scm b/guix/packages.scm index 0e4cce17e1..a979f31a32 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -95,6 +95,7 @@ package-grafts %supported-systems + %hydra-supported-systems supported-package? &package-error @@ -210,6 +211,11 @@ corresponds to the arguments expected by `set-path-environment-variable'." ;; expect all packages to build successfully here. '("x86_64-linux" "i686-linux" "armhf-linux" "mips64el-linux")) +(define %hydra-supported-systems + ;; This is the list of system types for which build slaves are available. + (delete "armhf-linux" %supported-systems)) + + ;; A package. (define-record-type* package make-package -- cgit v1.2.3 From 75c5475f31963a171e89d83b372a4858c8741498 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 1 May 2015 16:10:08 +0200 Subject: list-packages: Add status link only for systems supported on Hydra. * build-aux/list-packages.scm (package->sxml)[status]: Intersect (package-transitive-supported-systems package) with %HYDRA-SUPPORTED-SYSTEMS. --- build-aux/list-packages.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/build-aux/list-packages.scm b/build-aux/list-packages.scm index f3e4ac2846..c4f445291b 100755 --- a/build-aux/list-packages.scm +++ b/build-aux/list-packages.scm @@ -167,7 +167,11 @@ decreasing, is 1." ,system)) `(div "status: " - ,(list-join (map url (package-transitive-supported-systems package)) + ,(list-join (map url + (lset-intersection + string=? + %hydra-supported-systems + (package-transitive-supported-systems package))) " "))) (define (package-logo name) -- cgit v1.2.3 From e206f57e95a66d0eed51a7823ad3d14b748083e9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 1 May 2015 17:34:03 +0200 Subject: gnu: mariadb: Remove now unneeded workaround. This has been redundant since 21e583d. * gnu/packages/databases.scm (mariadb)[arguments]: Remove LDFLAGS definition. --- gnu/packages/databases.scm | 2 -- 1 file changed, 2 deletions(-) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index aa0aa0d49f..5daf7ecba1 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -191,8 +191,6 @@ Language.") 'configure 'pre-configure (lambda _ (setenv "CONFIG_SHELL" (which "sh")) - ;; XXX: libstdc++.so lacks RUNPATH for libgcc_s.so. - (setenv "LDFLAGS" "-lgcc_s") #t)) (add-after 'install 'post-install -- cgit v1.2.3 From 78bed82d193d73488f18d76165aa3f809122311f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 1 May 2015 17:38:09 +0200 Subject: check-available-binaries: Use %HYDRA-SUPPORTED-SYSTEMS. * build-aux/check-available-binaries.scm: Use %HYDRA-SUPPORTED-SYSTEMS instead of %SUPPORTED-SYSTEMS. --- build-aux/check-available-binaries.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-aux/check-available-binaries.scm b/build-aux/check-available-binaries.scm index bc6207eb2a..04f88b7d0c 100644 --- a/build-aux/check-available-binaries.scm +++ b/build-aux/check-available-binaries.scm @@ -33,7 +33,7 @@ (let* ((native (append-map (lambda (system) (map (cut package-derivation store <> system) (list %bootstrap-tarballs emacs))) - %supported-systems)) + %hydra-supported-systems)) (cross (map (cut package-cross-derivation store %bootstrap-tarballs <>) '("mips64el-linux-gnuabi64"))) -- cgit v1.2.3 From cb151c68bfdb207d6029402c4a1c004ebd630d68 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 1 May 2015 17:38:44 +0200 Subject: gnu: polkit-qt: Add $libdir to RUNPATH. * gnu/packages/polkit.scm (polkit-qt)[arguments]: Add #:configure-flags. --- gnu/packages/polkit.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm index 572d52404b..be7302ed49 100644 --- a/gnu/packages/polkit.scm +++ b/gnu/packages/polkit.scm @@ -86,7 +86,12 @@ for unprivileged applications.") (native-inputs `(("pkg-config", pkg-config))) (arguments - `(#:tests? #f)) ; there is a test subdirectory, but no test target + `(#:configure-flags (list (string-append "-DCMAKE_INSTALL_RPATH=" + (assoc-ref %outputs "out") + "/lib:" + (assoc-ref %outputs "out") + "/lib64")) + #:tests? #f)) ; there is a test subdirectory, but no test target (home-page "http://api.kde.org/kdesupport-api/polkit-qt-1-apidocs/") (synopsis "Qt frontend to the polkit library") (description "Polkit-qt is a library that lets developers use the -- cgit v1.2.3 From 868ef9aec79fac92efbe885120331310592fef98 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 1 May 2015 17:39:39 +0200 Subject: bash completion: Complete long options with no short variant. * etc/completion/bash/guix (_guix_complete_option): Change grep regexp to match options that don't have a short option name. --- etc/completion/bash/guix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/completion/bash/guix b/etc/completion/bash/guix index 2a3fa1201e..e4d9a497b3 100644 --- a/etc/completion/bash/guix +++ b/etc/completion/bash/guix @@ -35,7 +35,7 @@ _guix_complete_installed_package () _guix_complete_option () { local options="$(${COMP_WORDS[0]} ${COMP_WORDS[1]} --help \ - | grep '^ -' \ + | grep '^ \+-' \ | sed -e's/^.*--\([a-zA-Z0-9_-]\+\)\(=\?\).*/--\1\2/g' )" compopt -o nospace COMPREPLY=($(compgen -W "$options" -- "${COMP_WORDS[$word_count - 1]}")) -- cgit v1.2.3 From 5eca94594d5f0d834d4ca918b894400e3a7f6aa1 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sat, 25 Apr 2015 22:52:29 +0300 Subject: services: Add console-keymap service. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/services/base.scm (console-keymap-service): New procedure. * doc/guix.texi (Base Services): Document it. Co-authored-by: 宋文武 --- doc/guix.texi | 5 +++++ gnu/services/base.scm | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/doc/guix.texi b/doc/guix.texi index dd6af80965..c68e2915d1 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4745,6 +4745,11 @@ passed to @command{guix-daemon}. Run @var{udev}, which populates the @file{/dev} directory dynamically. @end deffn +@deffn {Monadic Procedure} console-keymap-service @var{file} +Return a service to load console keymap from @var{file} using +@command{loadkeys} command. +@end deffn + @node Networking Services @subsubsection Networking Services diff --git a/gnu/services/base.scm b/gnu/services/base.scm index d0a2e8c848..697b9395c2 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès +;;; Copyright © 2015 Alex Kost ;;; ;;; This file is part of GNU Guix. ;;; @@ -46,6 +47,7 @@ swap-service user-processes-service host-name-service + console-keymap-service console-font-service udev-service mingetty-service @@ -313,6 +315,19 @@ stopped before 'kill' is called." (else (zero? (cdr (waitpid pid)))))))) +(define (console-keymap-service file) + "Return a service to load console keymap from @var{file}." + (with-monad %store-monad + (return + (service + (documentation + (string-append "Load console keymap (loadkeys).")) + (provision '(console-keymap)) + (start #~(lambda _ + (zero? (system* (string-append #$kbd "/bin/loadkeys") + #$file)))) + (respawn? #f))))) + (define* (console-font-service tty #:optional (font "LatGrkCyr-8x16")) "Return a service that sets up Unicode support in @var{tty} and loads @var{font} for that tty (fonts are per virtual console in Linux.)" -- cgit v1.2.3 From ad797b75b8545b2eb40dcbc0d4823e59ed8f646b Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Fri, 1 May 2015 22:43:08 +0200 Subject: gnu: ebook: Drop circular inclusion of the module into itself. * gnu/packages/ebook.scm: Do not import (gnu packages ebook). --- gnu/packages/ebook.scm | 1 - 1 file changed, 1 deletion(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 101c5bad37..0d41121f3b 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -25,7 +25,6 @@ #:use-module (guix build-system python) #:use-module (gnu packages) #:use-module (gnu packages databases) - #:use-module (gnu packages ebook) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) #:use-module (gnu packages glib) -- cgit v1.2.3 From 2d2abb04f82f03f5d9e4f4fdce04c956805f0493 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 1 May 2015 11:18:56 -0400 Subject: gnu: linux-libre: Update to 4.0.1. * gnu/packages/linux.scm (linux-libre): Update to 4.0.1. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 2232e8611e..4658df72fa 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -198,7 +198,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." #f))) (define-public linux-libre - (let* ((version "4.0") + (let* ((version "4.0.1") (build-phase '(lambda* (#:key system inputs #:allow-other-keys #:rest args) ;; Apply the neat patch. @@ -271,7 +271,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." (uri (linux-libre-urls version)) (sha256 (base32 - "12nkzn1n4si2zcp10b645qri83m2y7iwp29vs2rjmy612azdab8f")) + "1d5r26fh7dpdckvxfyn69r72h02yvri92rcmi2r658k56snsxs2k")) (patches (list (search-patch "linux-libre-libreboot-fix.patch"))))) (build-system gnu-build-system) -- cgit v1.2.3 From 7e31978b72120a26c769ecddba83405b223e045d Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Tue, 28 Apr 2015 15:08:47 +0200 Subject: gnu: mesa: Add libva input. There is a circular dependency between Mesa and libVA, so we use a libva-no-mesa package that builds libVA without GLX and EGL support, and use that for building Mesa. * gnu/packages/gl.scm (libva-for-mesa): New variable. (mesa): Add as input. --- gnu/packages/gl.scm | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index e640f83756..ea38f1edfc 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -21,11 +21,13 @@ (define-module (gnu packages gl) #:use-module (ice-9 match) + #:use-module (guix build utils) #:use-module ((guix licenses) #:prefix l:) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix packages) + #:use-module (guix utils) #:use-module (gnu packages autotools) #:use-module (gnu packages bison) #:use-module (gnu packages flex) @@ -37,6 +39,7 @@ #:use-module (gnu packages xml) #:use-module (gnu packages fontutils) #:use-module (gnu packages guile) + #:use-module (gnu packages video) #:use-module (gnu packages xdisorg)) (define-public glu @@ -159,6 +162,23 @@ Polygon meshes, and Extruded polygon meshes") also known as DXTn or DXTC) for Mesa.") (license l:expat))) +;;; Mesa needs LibVA headers to build its Gallium-based VA API implementation; +;;; LibVA itself depends on Mesa. We use the following to solve the circular +;;; dependency. +(define libva-without-mesa + ;; Delay to work around circular import problem. + (delay + (package + (inherit libva) + (name "libva-without-mesa") + (inputs (alist-delete "mesa" (package-inputs libva))) + (arguments + (strip-keyword-arguments + '(#:make-flags) + (substitute-keyword-arguments (package-arguments libva) + ((#:configure-flags flags) + '(list "--disable-glx" "--disable-egl")))))))) + (define-public mesa (package (name "mesa") @@ -187,8 +207,8 @@ also known as DXTn or DXTC) for Mesa.") ("dri3proto" ,dri3proto) ("presentproto" ,presentproto) ("expat" ,expat) + ("libva" ,(force libva-without-mesa)) ("libxml2" ,libxml2) - ;; TODO: Add 'libva' ;; TODO: Add 'libxml2-python' for OpenGL ES 1.1 and 2.0 support ("makedepend" ,makedepend) ("s2tc" ,s2tc))) -- cgit v1.2.3 From 0272ee499dbd985b2368c55530b16827b7926232 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Sat, 25 Apr 2015 12:02:33 +0200 Subject: gnu: mesa: Update to 10.5.4. * gnu/packages/gl.scm (mesa): Update version to 10.5.4. Add libxvmc to inputs. Remove python, gettext, flex, and bison from native-inputs. Remove hack that was necessary to prevent rebuilding parts of the build system. --- gnu/packages/gl.scm | 93 +++++++++++++++++++++++------------------------------ 1 file changed, 41 insertions(+), 52 deletions(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index ea38f1edfc..afda76d792 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -182,15 +182,15 @@ also known as DXTn or DXTC) for Mesa.") (define-public mesa (package (name "mesa") - (version "10.4.0") + (version "10.5.4") (source (origin (method url-fetch) (uri (string-append "ftp://ftp.freedesktop.org/pub/mesa/" - version "/MesaLib-" version ".tar.bz2")) + version "/mesa-" version ".tar.xz")) (sha256 (base32 - "069j4ck51hc70gryhw3z0rkyhhl0bnhbks4xg1wqqw56l7rxz9wq")))) + "00v89jna7m6r2w1yrnx09isc97r2bd1hkn4jib445n1078zp47mm")))) (build-system gnu-build-system) (propagated-inputs `(("glproto" ,glproto) @@ -201,6 +201,7 @@ also known as DXTn or DXTC) for Mesa.") ("libxfixes" ,libxfixes) ("libxshmfence" ,libxshmfence) ("libxxf86vm" ,libxxf86vm))) + ;; TODO: Add vdpau. (inputs `(("udev" ,eudev) ("dri2proto" ,dri2proto) @@ -210,14 +211,11 @@ also known as DXTn or DXTC) for Mesa.") ("libva" ,(force libva-without-mesa)) ("libxml2" ,libxml2) ;; TODO: Add 'libxml2-python' for OpenGL ES 1.1 and 2.0 support + ("libxvmc" ,libxvmc) ("makedepend" ,makedepend) ("s2tc" ,s2tc))) (native-inputs - `(("pkg-config" ,pkg-config) - ("gettext" ,gnu-gettext) - ("flex" ,flex) - ("bison" ,bison) - ("python" ,python-2))) ; incompatible with Python 3 (print syntax) + `(("pkg-config" ,pkg-config))) (arguments `(#:configure-flags '(;; drop r300 from default gallium drivers, as it requires llvm @@ -239,51 +237,42 @@ also known as DXTn or DXTC) for Mesa.") (_ '("--with-dri-drivers=nouveau,r200,radeon,swrast")))) #:phases (alist-cons-after - 'unpack 'add-missing-m4-files + 'unpack 'patch-create_test_cases (lambda _ - ;; When these files are missing, make tries to rebuild - ;; several parts of the build system. - (zero? (system* "touch" "--date=@0" - "m4/libtool.m4" "m4/ltoptions.m4" - "m4/ltsugar.m4" "m4/ltversion.m4" - "m4/lt~obsolete.m4"))) - (alist-cons-after - 'unpack 'patch-create_test_cases - (lambda _ - (substitute* "src/glsl/tests/lower_jumps/create_test_cases.py" - (("/usr/bin/env bash") (which "bash")))) - (alist-cons-before - 'build 'fix-dlopen-libnames - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((s2tc (assoc-ref inputs "s2tc")) - (udev (assoc-ref inputs "udev")) - (out (assoc-ref outputs "out"))) - ;; Remain agnostic to .so.X.Y.Z versions while doing - ;; the substitutions so we're future-safe. - (substitute* - '("src/gallium/auxiliary/util/u_format_s3tc.c" - "src/mesa/main/texcompress_s3tc.c") - (("\"libtxc_dxtn\\.so") - (string-append "\"" s2tc "/lib/libtxc_dxtn.so"))) - (substitute* "src/gallium/targets/egl-static/egl_st.c" - (("\"libglapi\"") - (string-append "\"" out "/lib/libglapi\""))) - (substitute* "src/loader/loader.c" - (("dlopen\\(\"libudev\\.so") - (string-append "dlopen(\"" udev "/lib/libudev.so"))) - (substitute* "src/glx/dri_common.c" - (("dlopen\\(\"libGL\\.so") - (string-append "dlopen(\"" out "/lib/libGL.so"))) - (substitute* "src/egl/drivers/dri2/egl_dri2.c" - (("\"libglapi\\.so") - (string-append "\"" out "/lib/libglapi.so"))) - (substitute* "src/gbm/main/backend.c" - ;; No need to patch the gbm_gallium_drm.so reference; - ;; it's never installed since Mesa removed its - ;; egl_gallium support. - (("\"gbm_dri\\.so") - (string-append "\"" out "/lib/dri/gbm_dri.so"))))) - %standard-phases))))) + (substitute* "src/glsl/tests/lower_jumps/create_test_cases.py" + (("/usr/bin/env bash") (which "bash")))) + (alist-cons-before + 'build 'fix-dlopen-libnames + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((s2tc (assoc-ref inputs "s2tc")) + (udev (assoc-ref inputs "udev")) + (out (assoc-ref outputs "out"))) + ;; Remain agnostic to .so.X.Y.Z versions while doing + ;; the substitutions so we're future-safe. + (substitute* + '("src/gallium/auxiliary/util/u_format_s3tc.c" + "src/mesa/main/texcompress_s3tc.c") + (("\"libtxc_dxtn\\.so") + (string-append "\"" s2tc "/lib/libtxc_dxtn.so"))) + (substitute* "src/gallium/targets/egl-static/egl_st.c" + (("\"libglapi\"") + (string-append "\"" out "/lib/libglapi\""))) + (substitute* "src/loader/loader.c" + (("dlopen\\(\"libudev\\.so") + (string-append "dlopen(\"" udev "/lib/libudev.so"))) + (substitute* "src/glx/dri_common.c" + (("dlopen\\(\"libGL\\.so") + (string-append "dlopen(\"" out "/lib/libGL.so"))) + (substitute* "src/egl/drivers/dri2/egl_dri2.c" + (("\"libglapi\\.so") + (string-append "\"" out "/lib/libglapi.so"))) + (substitute* "src/gbm/main/backend.c" + ;; No need to patch the gbm_gallium_drm.so reference; + ;; it's never installed since Mesa removed its + ;; egl_gallium support. + (("\"gbm_dri\\.so") + (string-append "\"" out "/lib/dri/gbm_dri.so"))))) + %standard-phases)))) (home-page "http://mesa3d.org/") (synopsis "OpenGL implementation") (description "Mesa is a free implementation of the OpenGL specification - -- cgit v1.2.3 From 5f6887e839c10f0c905969d07baca4e03f453e82 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 30 Apr 2015 17:11:39 +0200 Subject: gnu: gcj: Remove broken symlink and conflicting files. * gnu/packages/gcc.scm (gcj)[arguments]: Add a build phase to remove a broken symlink and generic stump binaries. --- gnu/packages/gcc.scm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index c368b7df97..957917bf0b 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -444,7 +444,18 @@ Go. It also includes runtime support libraries for these languages.") (string-append jvm "/lib/tools.jar"))) (chmod target #o755) #t)) - ,phases)))))) + (alist-cons-after + 'install 'remove-broken-or-conflicting-files + (lambda _ + (let ((out (assoc-ref %outputs "out"))) + (for-each + delete-file + (append (find-files (string-append out "/lib/jvm/jre/lib") + "libjawt.so") + (find-files (string-append out "/bin") + ".*(c\\+\\+|cpp|g\\+\\+|gcc.*)")))) + #t) + ,phases))))))) (define ecj-bootstrap-4.8 (origin -- cgit v1.2.3 From 16142b3c14b4d913fd941a96fff12d598cb4a1d6 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 1 May 2015 22:05:10 +0200 Subject: build-system/gnu: Adjust to removal of a "bin" output for Libtool. * guix/build-system/gnu.scm (dist-package): Change libtool:bin input to just libtool. --- guix/build-system/gnu.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm index 3ccdef1328..a383c8c75f 100644 --- a/guix/build-system/gnu.scm +++ b/guix/build-system/gnu.scm @@ -206,7 +206,7 @@ runs `make distcheck' and whose result is one or more source tarballs." (module-ref (resolve-interface module) var)))) `(("autoconf" ,(ref '(gnu packages autotools) 'autoconf)) ("automake" ,(ref '(gnu packages autotools) 'automake)) - ("libtool" ,(ref '(gnu packages autotools) 'libtool) "bin") + ("libtool" ,(ref '(gnu packages autotools) 'libtool)) ("gettext" ,(ref '(gnu packages gettext) 'gnu-gettext)) ("texinfo" ,(ref '(gnu packages texinfo) 'texinfo)))))))) -- cgit v1.2.3 From 2d51666bd0eee238b70e97f61ad6ce4b958d7362 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 1 May 2015 22:06:50 +0200 Subject: build-system/gnu: 'dist-package' preserves the package's native inputs. * guix/build-system/gnu.scm (dist-package)[native-inputs]: Preserve P's native-inputs. --- guix/build-system/gnu.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm index a383c8c75f..2520224931 100644 --- a/guix/build-system/gnu.scm +++ b/guix/build-system/gnu.scm @@ -204,7 +204,8 @@ runs `make distcheck' and whose result is one or more source tarballs." ;; Add autotools & co. as inputs. (let ((ref (lambda (module var) (module-ref (resolve-interface module) var)))) - `(("autoconf" ,(ref '(gnu packages autotools) 'autoconf)) + `(,@(package-native-inputs p) + ("autoconf" ,(ref '(gnu packages autotools) 'autoconf)) ("automake" ,(ref '(gnu packages autotools) 'automake)) ("libtool" ,(ref '(gnu packages autotools) 'libtool)) ("gettext" ,(ref '(gnu packages gettext) 'gnu-gettext)) -- cgit v1.2.3 From a413bc8bd3c2c7d00d8d021a2224a59d26765dad Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 1 May 2015 22:09:00 +0200 Subject: hydra: Update Guix job set. * build-aux/hydra/guix.scm (tarball-package): Remove 'nix-checkout' parameter. Remove 'arguments', 'native-inputs', and 'location' fields. Adjust caller accordingly. (hydra-jobs): Remove 'nix-checkout'. --- build-aux/hydra/guix.scm | 33 +++++++-------------------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/build-aux/hydra/guix.scm b/build-aux/hydra/guix.scm index 3996a0b422..1035f81b4a 100644 --- a/build-aux/hydra/guix.scm +++ b/build-aux/hydra/guix.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -68,25 +68,10 @@ (home-page . ,(package-home-page package)) (maintainers . ("bug-guix@gnu.org")))) -(define (tarball-package checkout nix-checkout) +(define (tarball-package checkout) "Return a package that does `make distcheck' from CHECKOUT, a directory containing a Git checkout of Guix." - (let ((dist (dist-package guix checkout))) - (package (inherit dist) - (location (source-properties->location (current-source-location))) - (arguments (substitute-keyword-arguments (package-arguments dist) - ((#:phases p) - `(alist-cons-before - 'autoreconf 'set-nix-submodule - (lambda _ - ;; Tell Git to use the Nix checkout that Hydra gave us. - (zero? - (system* "git" "config" "submodule.nix-upstream.url" - ,nix-checkout))) - ,p)))) - (native-inputs `(("git" ,git) - ("graphviz" ,graphviz) - ,@(package-native-inputs dist)))))) + (dist-package guix checkout)) (define (hydra-jobs store arguments) "Return Hydra jobs." @@ -104,13 +89,9 @@ containing a Git checkout of Guix." (define guix-checkout (assq-ref arguments 'guix)) - (define nix-checkout - (assq-ref arguments 'nix)) - - (format (current-error-port) "using checkout ~s (Nix: ~s)~%" - guix-checkout nix-checkout) - (let ((guix (assq-ref guix-checkout 'file-name)) - (nix (assq-ref nix-checkout 'file-name))) + (let ((guix (assq-ref guix-checkout 'file-name))) + (format (current-error-port) "using checkout ~s (~s)~%" + guix-checkout guix) `((tarball . ,(cute package->alist store - (tarball-package guix nix) + (tarball-package guix) (%current-system)))))) -- cgit v1.2.3 From dedb17ad010ee9ef67f3f4f3997dd17f226c8090 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 2 May 2015 23:55:24 +0200 Subject: profiles: Store search paths in manifests. Discussed in . * guix/packages.scm (sexp->search-path-specification): New variable. * guix/profiles.scm ()[search-paths]: New field. (package->manifest-entry): Initialize it. (manifest->gexp): Match it. Wrap #$deps in (propagated-inputs ...). Emit (search-paths ...). Increment version. (find-package): New procedure. (sexp->manifest)[infer-search-paths]: New procedure. Use it to initialize the 'search-paths' field for versions 0 and 1. Add case for version 2. * guix/scripts/package.scm (search-path-environment-variables)[manifest-entry->package]: Remove. Use 'manifest-entry-search-paths' instead of 'manifest-entry->package' plus 'package-native-search-paths'. * tests/profiles.scm ("profile-manifest, search-paths"): New test. --- guix/packages.scm | 15 ++++++++++ guix/profiles.scm | 76 ++++++++++++++++++++++++++++++++++++++++++------ guix/scripts/package.scm | 22 ++------------ tests/profiles.scm | 22 ++++++++++++++ 4 files changed, 106 insertions(+), 29 deletions(-) diff --git a/guix/packages.scm b/guix/packages.scm index a979f31a32..b7a1979a7d 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -56,6 +56,7 @@ search-path-specification search-path-specification? search-path-specification->sexp + sexp->search-path-specification package package? @@ -202,10 +203,24 @@ representation." (define (search-path-specification->sexp spec) "Return an sexp representing SPEC, a . The sexp corresponds to the arguments expected by `set-path-environment-variable'." + ;; Note that this sexp format is used both by build systems and in + ;; (guix profiles), so think twice before you change it. (match spec (($ variable files separator type pattern) `(,variable ,files ,separator ,type ,pattern)))) +(define (sexp->search-path-specification sexp) + "Convert SEXP, which is as returned by 'search-path-specification->sexp', to +a object." + (match sexp + ((variable files separator type pattern) + (search-path-specification + (variable variable) + (files files) + (separator separator) + (file-type type) + (file-pattern pattern))))) + (define %supported-systems ;; This is the list of system types that are supported. By default, we ;; expect all packages to build successfully here. diff --git a/guix/profiles.scm b/guix/profiles.scm index 4bb309305b..2e515d5490 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -59,6 +59,7 @@ manifest-entry-output manifest-entry-item manifest-entry-dependencies + manifest-entry-search-paths manifest-pattern manifest-pattern? @@ -133,6 +134,8 @@ (default "out")) (item manifest-entry-item) ; package | store path (dependencies manifest-entry-dependencies ; (store path | package)* + (default '())) + (search-paths manifest-entry-search-paths ; search-path-specification* (default '()))) (define-record-type* manifest-pattern @@ -165,25 +168,60 @@ omitted or #f, use the first output of PACKAGE." (version (package-version package)) (output (or output (car (package-outputs package)))) (item package) - (dependencies (delete-duplicates deps))))) + (dependencies (delete-duplicates deps)) + (search-paths (package-native-search-paths package))))) (define (manifest->gexp manifest) "Return a representation of MANIFEST as a gexp." (define (entry->gexp entry) (match entry - (($ name version output (? string? path) (deps ...)) - #~(#$name #$version #$output #$path #$deps)) - (($ name version output (? package? package) (deps ...)) + (($ name version output (? string? path) + (deps ...) (search-paths ...)) + #~(#$name #$version #$output #$path + (propagated-inputs #$deps) + (search-paths #$(map search-path-specification->sexp + search-paths)))) + (($ name version output (? package? package) + (deps ...) (search-paths ...)) #~(#$name #$version #$output - (ungexp package (or output "out")) #$deps)))) + (ungexp package (or output "out")) + (propagated-inputs #$deps) + (search-paths #$(map search-path-specification->sexp + search-paths)))))) (match manifest (($ (entries ...)) - #~(manifest (version 1) + #~(manifest (version 2) (packages #$(map entry->gexp entries)))))) +(define (find-package name version) + "Return a package from the distro matching NAME and possibly VERSION. This +procedure is here for backward-compatibility and will eventually vanish." + (define find-best-packages-by-name ;break abstractions + (module-ref (resolve-interface '(gnu packages)) + 'find-best-packages-by-name)) + + ;; Use 'find-best-packages-by-name' and not 'find-packages-by-name'; the + ;; former traverses the module tree only once and then allows for efficient + ;; access via a vhash. + (match (find-best-packages-by-name name version) + ((p _ ...) p) + (_ + (match (find-best-packages-by-name name #f) + ((p _ ...) p) + (_ #f))))) + (define (sexp->manifest sexp) "Parse SEXP as a manifest." + (define (infer-search-paths name version) + ;; Infer the search path specifications for NAME-VERSION by looking up a + ;; same-named package in the distro. Useful for the old manifest formats + ;; that did not store search path info. + (let ((package (find-package name version))) + (if package + (package-native-search-paths package) + '()))) + (match sexp (('manifest ('version 0) ('packages ((name version output path) ...))) @@ -193,7 +231,8 @@ omitted or #f, use the first output of PACKAGE." (name name) (version version) (output output) - (item path))) + (item path) + (search-paths (infer-search-paths name version)))) name version output path))) ;; Version 1 adds a list of propagated inputs to the @@ -215,11 +254,30 @@ omitted or #f, use the first output of PACKAGE." (version version) (output output) (item path) - (dependencies deps)))) + (dependencies deps) + (search-paths (infer-search-paths name version))))) name version output path deps))) + ;; Version 2 adds search paths and is slightly more verbose. + (('manifest ('version 2 minor-version ...) + ('packages ((name version output path + ('propagated-inputs deps) + ('search-paths search-paths) + extra-stuff ...) + ...))) + (manifest + (map (lambda (name version output path deps search-paths) + (manifest-entry + (name name) + (version version) + (output output) + (item path) + (dependencies deps) + (search-paths (map sexp->search-path-specification + search-paths)))) + name version output path deps search-paths))) (_ - (error "unsupported manifest format" manifest)))) + (error "unsupported manifest format" sexp)))) (define (read-manifest port) "Return the packages listed in MANIFEST." diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 1e724b4e19..fca70f566d 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -384,22 +384,6 @@ current settings and report only settings not already effective." %user-profile-directory profile))) - ;; The search path info is not stored in the manifest. Thus, we infer the - ;; search paths from same-named packages found in the distro. - - (define manifest-entry->package - (match-lambda - (($ name version) - ;; Use 'find-best-packages-by-name' and not 'find-packages-by-name'; - ;; the former traverses the module tree only once and then allows for - ;; efficient access via a vhash. - (match (find-best-packages-by-name name version) - ((p _ ...) p) - (_ - (match (find-best-packages-by-name name #f) - ((p _ ...) p) - (_ #f))))))) - (define search-path-definition (match-lambda (($ variable files separator @@ -426,10 +410,8 @@ current settings and report only settings not already effective." variable (string-join path separator))))))) - (let* ((packages (filter-map manifest-entry->package entries)) - (search-paths (delete-duplicates - (append-map package-native-search-paths - packages)))) + (let ((search-paths (delete-duplicates + (append-map manifest-entry-search-paths entries)))) (filter-map search-path-definition search-paths)))) (define (display-search-paths entries profile) diff --git a/tests/profiles.scm b/tests/profiles.scm index 54fbaea864..890f09a751 100644 --- a/tests/profiles.scm +++ b/tests/profiles.scm @@ -26,6 +26,7 @@ #:use-module (guix derivations) #:use-module (gnu packages bootstrap) #:use-module ((gnu packages base) #:prefix packages:) + #:use-module ((gnu packages guile) #:prefix packages:) #:use-module (ice-9 match) #:use-module (ice-9 regex) #:use-module (srfi srfi-11) @@ -198,6 +199,27 @@ #:hooks '()))) (return (derivation-inputs drv)))) +(test-assertm "profile-manifest, search-paths" + (mlet* %store-monad + ((guile -> (package + (inherit %bootstrap-guile) + (native-search-paths + (package-native-search-paths packages:guile-2.0)))) + (entry -> (package->manifest-entry guile)) + (drv (profile-derivation (manifest (list entry)) + #:hooks '())) + (profile -> (derivation->output-path drv))) + (mbegin %store-monad + (built-derivations (list drv)) + + ;; Read the manifest back and make sure search paths are preserved. + (let ((manifest (profile-manifest profile))) + (match (manifest-entries manifest) + ((result) + (return (equal? (manifest-entry-search-paths result) + (manifest-entry-search-paths entry) + (package-native-search-paths + packages:guile-2.0))))))))) (test-end "profiles") -- cgit v1.2.3 From f4bdfe7381e91c4a7eb71ef31ca889e36574b889 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 3 May 2015 00:08:37 +0200 Subject: install: Add bash-completion to the packages. * gnu/system/install.scm (installation-os)[packages]: Add BASH-COMPLETION. --- gnu/system/install.scm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 2fd35e8c48..d55f0a0978 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -24,6 +24,7 @@ #:use-module ((guix store) #:select (%store-prefix)) #:use-module (guix profiles) #:use-module (gnu packages admin) + #:use-module (gnu packages bash) #:use-module (gnu packages linux) #:use-module (gnu packages cryptsetup) #:use-module (gnu packages package-management) @@ -316,6 +317,7 @@ Use Alt-F2 for documentation. ;; 2.0.0a, that pulls Guile 1.8, which takes unreasonable ;; space; furthermore util-linux's fdisk is already ;; available here, so we keep that. + bash-completion %base-packages)))) ;; Return it here so 'guix system' can consume it directly. -- cgit v1.2.3 From f77bcbc374bb94272c57508dc04fb8599b56a9d8 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 24 Apr 2015 07:57:51 -0500 Subject: guix: packages: Add package-direct-sources and package-transitive-sources. * guix/tests.scm (dummy-origin): New syntax. * guix/packages.scm (package-direct-sources) (package-transitive-sources): New procedures. * tests/packages.scm ("package-direct-sources, no source") ("package-direct-sources, #f source") ("package-direct-sources, not input source", "package-direct-sources") ("package-transitive-sources"): Test them. --- guix/packages.scm | 24 ++++++++++++++++++++++++ guix/tests.scm | 10 +++++++++- tests/packages.scm | 30 ++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 1 deletion(-) diff --git a/guix/packages.scm b/guix/packages.scm index b7a1979a7d..d7fced8384 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -83,6 +83,8 @@ package-location package-field-location + package-direct-sources + package-transitive-sources package-direct-inputs package-transitive-inputs package-transitive-target-inputs @@ -540,6 +542,28 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET." ((input rest ...) (loop rest (cons input result)))))) +(define (package-direct-sources package) + "Return all source origins associated with PACKAGE; including origins in +PACKAGE's inputs." + `(,@(or (and=> (package-source package) list) '()) + ,@(filter-map (match-lambda + ((_ (? origin? orig) _ ...) + orig) + (_ #f)) + (package-direct-inputs package)))) + +(define (package-transitive-sources package) + "Return PACKAGE's direct sources, and their direct sources, recursively." + (delete-duplicates + (concatenate (filter-map (match-lambda + ((_ (? origin? orig) _ ...) + (list orig)) + ((_ (? package? p) _ ...) + (package-direct-sources p)) + (_ #f)) + (bag-transitive-inputs + (package->bag package)))))) + (define (package-direct-inputs package) "Return all the direct inputs of PACKAGE---i.e, its direct inputs along with their propagated inputs." diff --git a/guix/tests.scm b/guix/tests.scm index 080ee9cc74..87e6cc2830 100644 --- a/guix/tests.scm +++ b/guix/tests.scm @@ -37,7 +37,8 @@ %substitute-directory with-derivation-narinfo with-derivation-substitute - dummy-package)) + dummy-package + dummy-origin)) ;;; Commentary: ;;; @@ -219,6 +220,13 @@ initialized with default values, and with EXTRA-FIELDS set as specified." (synopsis #f) (description #f) (home-page #f) (license #f))) +(define-syntax-rule (dummy-origin extra-fields ...) + "Return a \"dummy\" origin, with all its compulsory fields initialized with +default values, and with EXTRA-FIELDS set as specified." + (origin extra-fields ... + (method #f) (uri "http://www.example.com") + (sha256 (base32 (make-string 52 #\x))))) + ;; Local Variables: ;; eval: (put 'call-with-derivation-narinfo 'scheme-indent-function 1) ;; eval: (put 'call-with-derivation-substitute 'scheme-indent-function 2) diff --git a/tests/packages.scm b/tests/packages.scm index 4e52813659..511ad78b6c 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -155,6 +155,36 @@ (package-transitive-supported-systems d) (package-transitive-supported-systems e)))) +(let* ((o (dummy-origin)) + (u (dummy-origin)) + (i (dummy-origin)) + (a (dummy-package "a")) + (b (dummy-package "b" + (inputs `(("a" ,a) ("i" ,i))))) + (c (package (inherit b) (source o))) + (d (dummy-package "d" + (build-system trivial-build-system) + (source u) (inputs `(("c" ,c)))))) + (test-assert "package-direct-sources, no source" + (null? (package-direct-sources a))) + (test-equal "package-direct-sources, #f source" + (list i) + (package-direct-sources b)) + (test-equal "package-direct-sources, not input source" + (list u) + (package-direct-sources d)) + (test-assert "package-direct-sources" + (let ((s (package-direct-sources c))) + (and (= (length (pk 's-sources s)) 2) + (member o s) + (member i s)))) + (test-assert "package-transitive-sources" + (let ((s (package-transitive-sources d))) + (and (= (length (pk 'd-sources s)) 3) + (member o s) + (member i s) + (member u s))))) + (test-equal "package-transitive-supported-systems, implicit inputs" %supported-systems -- cgit v1.2.3 From 2cdfe13deaf3d959e1ecb3a207cdbc28985e0e79 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 28 Jan 2015 13:33:28 -0600 Subject: guix: build: Add transitive source building. * guix/scripts/build.scm (%options, options->derivations): Add --sources option. * doc/guix.texi (Invoking guix build): Document --sources option. * tests/guix-build.sh: Add tests. --- doc/guix.texi | 43 ++++++++++++++++++++++++++ guix/scripts/build.scm | 55 ++++++++++++++++++++++----------- tests/guix-build.sh | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 163 insertions(+), 17 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index c68e2915d1..3328cbac91 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2932,6 +2932,49 @@ The returned source tarball is the result of applying any patches and code snippets specified in the package's @code{origin} (@pxref{Defining Packages}). +@item --sources +Fetch and return the source of @var{package-or-derivation} and all their +dependencies, recursively. This is a handy way to obtain a local copy +of all the source code needed to build @var{packages}, allowing you to +eventually build them even without network access. It is an extension +of the @code{--source} option and can accept one of the following +optional argument values: + +@table @code +@item package +This value causes the @code{--sources} option to behave in the same way +as the @code{--source} option. + +@item all +Build all packages' source derivations, including any source that might +be listed as @code{inputs}. This is the default value. + +@example +$ guix build --sources tzdata +The following derivations will be built: + /gnu/store/@dots{}-tzdata2015b.tar.gz.drv + /gnu/store/@dots{}-tzcode2015b.tar.gz.drv +@end example + +@item transitive +Build all packages' source derivations, as well as all source +derivations for packages' transitive inputs. This can be used e.g. to +prefetch package source for later offline building. + +@example +$ guix build --sources=transitive tzdata +The following derivations will be built: + /gnu/store/@dots{}-tzcode2015b.tar.gz.drv + /gnu/store/@dots{}-findutils-4.4.2.tar.xz.drv + /gnu/store/@dots{}-grep-2.21.tar.xz.drv + /gnu/store/@dots{}-coreutils-8.23.tar.xz.drv + /gnu/store/@dots{}-make-4.1.tar.xz.drv + /gnu/store/@dots{}-bash-4.3.tar.xz.drv +@dots{} +@end example + +@end table + @item --system=@var{system} @itemx -s @var{system} Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index 370c2a37ff..9366ab6ccc 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -228,6 +228,9 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n")) (display (_ " -S, --source build the packages' source derivations")) (display (_ " + --sources[=TYPE] build source derivations; TYPE may optionally be one + of \"package\", \"all\" (default), or \"transitive\"")) + (display (_ " -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"")) (display (_ " --target=TRIPLET cross-build for TRIPLET--e.g., \"armel-linux-gnu\"")) @@ -262,10 +265,22 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n")) (option '(#\V "version") #f #f (lambda args (show-version-and-exit "guix build"))) - (option '(#\S "source") #f #f (lambda (opt name arg result) - (alist-cons 'source? #t result))) + (alist-cons 'source #t result))) + (option '("sources") #f #t + (lambda (opt name arg result) + (match arg + ("package" + (alist-cons 'source #t result)) + ((or "all" #f) + (alist-cons 'source package-direct-sources result)) + ("transitive" + (alist-cons 'source package-transitive-sources result)) + (else + (leave (_ "invalid argument: '~a' option argument: ~a, ~ +must be one of 'package', 'all', or 'transitive'~%") + name arg))))) (option '(#\s "system") #t #f (lambda (opt name arg result) (alist-cons 'system arg @@ -308,28 +323,34 @@ build." (triplet (cut package-cross-derivation <> <> triplet <>)))) - (define src? (assoc-ref opts 'source?)) + (define src (assoc-ref opts 'source)) (define sys (assoc-ref opts 'system)) (define graft? (assoc-ref opts 'graft?)) (parameterize ((%graft? graft?)) (let ((opts (options/with-source store (options/resolve-packages store opts)))) - (filter-map (match-lambda - (('argument . (? package? p)) - (if src? + (concatenate + (filter-map (match-lambda + (('argument . (? package? p)) + (match src + (#f + (list (package->derivation store p sys))) + (#t (let ((s (package-source p))) - (package-source-derivation store s)) - (package->derivation store p sys))) - (('argument . (? derivation? drv)) - drv) - (('argument . (? derivation-path? drv)) - (call-with-input-file drv read-derivation)) - (('argument . (? store-path?)) - ;; Nothing to do; maybe for --log-file. - #f) - (_ #f)) - opts)))) + (list (package-source-derivation store s)))) + (proc + (map (cut package-source-derivation store <>) + (proc p))))) + (('argument . (? derivation? drv)) + (list drv)) + (('argument . (? derivation-path? drv)) + (list (call-with-input-file drv read-derivation))) + (('argument . (? store-path?)) + ;; Nothing to do; maybe for --log-file. + #f) + (_ #f)) + opts))))) (define (options/resolve-packages store opts) "Return OPTS with package specification strings replaced by actual diff --git a/tests/guix-build.sh b/tests/guix-build.sh index 836c45e776..a72ce0911d 100644 --- a/tests/guix-build.sh +++ b/tests/guix-build.sh @@ -36,6 +36,88 @@ guix build -e '(@@ (gnu packages bootstrap) %bootstrap-guile)' | \ guix build hello -d | \ grep -e '-hello-[0-9\.]\+\.drv$' +# Check --sources option with its arguments +module_dir="t-guix-build-$$" +mkdir "$module_dir" +trap "rm -rf $module_dir" EXIT + +cat > "$module_dir/foo.scm"< Date: Sun, 3 May 2015 12:53:38 +0200 Subject: gnu: cppunit: Explicitly link with libdl. * gnu/packages/check.scm (cppunit)[arguments]: Add #:make-flags. --- gnu/packages/check.scm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 3e686cc743..5349ede0fa 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2012 Nikita Karetnikov ;;; Copyright © 2015 Paul van der Walt ;;; Copyright © 2015 Eric Bavier +;;; Copyright © 2015 Andreas Enge ;;; ;;; This file is part of GNU Guix. ;;; @@ -89,12 +90,18 @@ with a flexible variety of user interfaces.") (version "1.12.1") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/cppunit/" name "/" + (uri (string-append "mirror://sourceforge/cppunit/" name "/" name "-" version ".tar.gz")) (sha256 (base32 "0jm49v5rmc5qw34vqs56gy8xja1dhci73bmh23cig4kcir6a0a5c")))) + ;; Explicitly link with libdl. This is expected to be done by packages + ;; relying on cppunit for their tests. However, not all of them do. + ;; If we added the linker flag to such packages, we would pollute all + ;; binaries, not only those used for testing. + (arguments + `(#:make-flags '("LDFLAGS=-ldl"))) (build-system gnu-build-system) (home-page "http://sourceforge.net/projects/cppunit/") (synopsis "Unit testing framework for C++") -- cgit v1.2.3 From 10ca4a1d4bed5105826e0637a656f0dbb52387e7 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sun, 3 May 2015 13:05:58 +0200 Subject: gnu: Add librevenge. * gnu/packages/libreoffice.scm (librevenge): New variable. Co-authored-by: John Darrington --- gnu/packages/libreoffice.scm | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index cbe1c75eeb..8daa0e99a1 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -20,10 +20,12 @@ (define-module (gnu packages libreoffice) #:use-module (guix packages) #:use-module (guix download) - #:use-module ((guix licenses) #:select (mpl2.0)) + #:use-module ((guix licenses) #:select (lgpl2.1+ mpl2.0)) #:use-module (guix build-system gnu) #:use-module (gnu packages boost) + #:use-module (gnu packages check) #:use-module (gnu packages compression) + #:use-module (gnu packages doxygen) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python)) @@ -79,3 +81,32 @@ Microsoft Excel 2007 XML, Microsoft Excel 2003 XML, Open Document Spreadsheet, Plain Text, Gnumeric XML, Generic XML. It also includes low-level parsers for CSV, CSS and XML.") (license mpl2.0))) + +(define-public librevenge + (package + (name "librevenge") + (version "0.0.2") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/libwpd/" name "/" name "-" + version ".tar.xz")) + (sha256 (base32 + "03ygxyb0vfjv8raif5q62sl33b54wkr5rzgadb8slijm6k281wpn")))) + (build-system gnu-build-system) + (native-inputs + `(("boost" ,boost) + ("cppunit" ,cppunit) + ("doxygen" ,doxygen) + ("pkg-config" ,pkg-config))) + (inputs + `(("zlib" ,zlib))) + (arguments + ;; avoid triggering configure errors by simple inclusion of boost headers + `(#:configure-flags '("--disable-werror"))) + (home-page "http://sourceforge.net/p/libwpd/wiki/librevenge/") + (synopsis "Document importer for office suites") + (description "Librevenge is a base library for writing document import +filters. It has interfaces for text documents, vector graphics, +spreadsheets and presentations.") + (license '(mpl2.0 lgpl2.1+)))) ; dually licensed -- cgit v1.2.3 From fc15db2f7dbac8f606bea54b58138f2ae84c1e73 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sun, 3 May 2015 14:28:09 +0200 Subject: gnu: Add libwpd. * gnu/packages/libreoffice.scm (libwpd): New variable. --- gnu/packages/libreoffice.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 8daa0e99a1..4de5fcaadd 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -110,3 +110,28 @@ CSV, CSS and XML.") filters. It has interfaces for text documents, vector graphics, spreadsheets and presentations.") (license '(mpl2.0 lgpl2.1+)))) ; dually licensed + +(define-public libwpd + (package + (name "libwpd") + (version "0.10.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/libwpd/" name "/" name "-" + version ".tar.xz")) + (sha256 (base32 + "0b6krzr6kxzm89g6bapn805kdayq70hn16n5b5wfs2lwrf0ag2wx")))) + (build-system gnu-build-system) + (native-inputs + `(("doxygen" ,doxygen) + ("pkg-config" ,pkg-config))) + (inputs + `(("librevenge" ,librevenge) + ("zlib" ,zlib))) + (home-page "http://libwpd.sourceforge.net/") + (synopsis "Library for importing WordPerfect documents") + (description "Libwpd is a C++ library designed to help process +WordPerfect documents. It is most commonly used to import such documents +into other word processors.") + (license '(mpl2.0 lgpl2.1+)))) ; dually licensed -- cgit v1.2.3 From 5ac8a1d4bbb889de5c5ce721beffa80f61745bf6 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 3 May 2015 16:00:12 +0200 Subject: gnu: dejagnu: Update to 1.5.3. * gnu/packages/dejagnu.scm (dejagnu): Update to 1.5.3. --- gnu/packages/dejagnu.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/dejagnu.scm b/gnu/packages/dejagnu.scm index 203bd6ea2c..60fd2124f0 100644 --- a/gnu/packages/dejagnu.scm +++ b/gnu/packages/dejagnu.scm @@ -26,7 +26,7 @@ (define-public dejagnu (package (name "dejagnu") - (version "1.5.2") + (version "1.5.3") (source (origin (method url-fetch) @@ -34,7 +34,7 @@ version ".tar.gz")) (sha256 (base32 - "18ikblg4x4y5fkw8sg0c2zmqgxdqqycswmws17sxx8m4sz6g7dch")))) + "069z3qrdv35cm2sbnfr5yjzplrqj9f61cchxis7j9mm19hv8x6q9")))) (build-system gnu-build-system) (inputs `(("expect" ,expect))) (arguments -- cgit v1.2.3 From dda9c45ec6a89a22de7aa448705af5688d0922dc Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 3 May 2015 16:00:33 +0200 Subject: gnu: help2man: Update to 1.46.6. * gnu/packages/man.scm (help2man): Update to 1.46.6. --- gnu/packages/man.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm index a92c6dd132..fb43db9de9 100644 --- a/gnu/packages/man.scm +++ b/gnu/packages/man.scm @@ -153,7 +153,7 @@ Linux kernel and C library interfaces employed by user-space programs.") (define-public help2man (package (name "help2man") - (version "1.46.5") + (version "1.46.6") (source (origin (method url-fetch) @@ -161,7 +161,7 @@ Linux kernel and C library interfaces employed by user-space programs.") version ".tar.xz")) (sha256 (base32 - "1gqfqgxq3qgwnldjz3i5mxvzyx2w3j042r3fw1wygic3f6327nha")))) + "1brccgnjf09f2zg70s6gv6gn68mi59kp3zf50wvxp79n72ngapv1")))) (build-system gnu-build-system) (arguments `(;; There's no `check' target. #:tests? #f)) -- cgit v1.2.3 From 9b0912b4baea4c840e2959f5ce89ba2e2aa1e333 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 3 May 2015 16:00:54 +0200 Subject: gnu: parallel: Update to 20150422. * gnu/packages/parallel.scm (parallel): Update to 20150422. --- gnu/packages/parallel.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm index 70595b1bac..05d641fc36 100644 --- a/gnu/packages/parallel.scm +++ b/gnu/packages/parallel.scm @@ -28,7 +28,7 @@ (define-public parallel (package (name "parallel") - (version "20150322") + (version "20150422") (source (origin (method url-fetch) @@ -36,7 +36,7 @@ version ".tar.bz2")) (sha256 (base32 - "1zsj1bd4zbwb4n9i0jgzs7vd5wkyg3xvj6s1q6s5fyn0pff7j01c")))) + "1x6lvbw6msjkibadihzr2s0mbbcx2h2wxd723q5bgz6mcnsml346")))) (build-system gnu-build-system) (inputs `(("perl" ,perl))) (home-page "http://www.gnu.org/software/parallel/") -- cgit v1.2.3 From 10d98240924be3e57a197ba76d3ba85e28e07044 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 3 May 2015 10:59:02 -0400 Subject: gnu: wpa-supplicant: Update to 2.4. * gnu/packages/admin.scm (wpa-supplicant): Update to 2.4. --- gnu/packages/admin.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index ffaf6b4fc7..d51f2ba0dc 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -693,7 +693,7 @@ commands and their arguments.") (define-public wpa-supplicant-light (package (name "wpa-supplicant-light") - (version "2.3") + (version "2.4") (source (origin (method url-fetch) (uri (string-append @@ -702,7 +702,7 @@ commands and their arguments.") ".tar.gz")) (sha256 (base32 - "0skvkl6c10ls4s48b2wmf47h9j1y40nlzxnzn8hyaw2j0prmpapa")) + "08li21q1wjn5chrv289w666il9ah1w419y3dkq2rl4wnq0rci385")) (patches (list (search-patch "wpa-supplicant-CVE-2015-1863.patch"))))) (build-system gnu-build-system) -- cgit v1.2.3 From 2036a6484e3db351c2ef7ae1b6396d2dfabfe52d Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 28 Apr 2015 00:44:51 -0400 Subject: gnu: acpica: Update to 20150410. * gnu/packages/admin.scm (acpica): Update to 20150410. --- gnu/packages/admin.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index d51f2ba0dc..319bfad7e4 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -872,7 +872,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).") (define-public acpica (package (name "acpica") - (version "20140724") + (version "20150410") (source (origin (method url-fetch) (uri (string-append @@ -880,7 +880,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).") version ".tar.gz")) (sha256 (base32 - "01vdgrh7dsxrrvg5yd8sxm63cw8210pnsi5qg9g15ac53gn243ac")))) + "0q1fjwkyw9x6gsva6fd0zbn7ly4fx0ha4853f416np9kf2irillw")))) (build-system gnu-build-system) (native-inputs `(("flex" ,flex) ("bison" ,bison))) -- cgit v1.2.3 From 7d2b784b66ab3ce6077ffe911f09c1ac370ffff8 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 23 Apr 2015 04:58:58 -0400 Subject: gnu: Add dovecot. * gnu/packages/mail.scm (dovecot): New variable. --- gnu/packages/mail.scm | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 170fbe4921..f9eb5a7453 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -66,7 +66,8 @@ #:use-module (gnu packages xml) #:use-module (gnu packages xorg) #:use-module ((guix licenses) - #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ lgpl3+ non-copyleft)) + #:select (gpl2 gpl2+ gpl3+ lgpl2.1 lgpl2.1+ lgpl3+ non-copyleft + (expat . license:expat))) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) @@ -639,6 +640,49 @@ deal of flexibility in the way mail can be routed, and there are extensive facilities for checking incoming mail.") (license gpl2+))) +(define-public dovecot + (package + (name "dovecot") + (version "2.2.16") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.dovecot.org/releases/" + (version-major+minor version) "/" + name "-" version ".tar.gz")) + (sha256 (base32 + "1w6gg4h9mxg3i8faqpmgj19imzyy001b0v8ihch8ma3zl63i5kjn")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("openssl" ,openssl) + ("zlib" ,zlib) + ("bzip2" ,bzip2) + ("sqlite" ,sqlite))) + (arguments + `(#:configure-flags '("--sysconfdir=/etc" + "--localstatedir=/var") + #:phases (modify-phases %standard-phases + (add-before + 'configure 'pre-configure + (lambda _ + ;; Simple hack to avoid installing in /etc + (substitute* '("doc/Makefile.in" + "doc/example-config/Makefile.in") + (("pkgsysconfdir = .*") + "pkgsysconfdir = /tmp/etc")) + #t))))) + (home-page "http://www.dovecot.org") + (synopsis "Secure POP3/IMAP server") + (description + "Dovecot is a mail server whose major goals are security and reliability. +It supports mbox/Maildir and its own dbox/mdbox formats.") + ;; Most source files are covered by either lgpl2.1 or expat. The SHA code + ;; is covered by a variant of BSD-3, and UnicodeData.txt is covered by the + ;; Unicode, Inc. License Agreement for Data Files and Software. + (license (list lgpl2.1 license:expat (non-copyleft "file://COPYING"))))) + (define-public isync (package (name "isync") -- cgit v1.2.3 From a4d5224d74a18bb02d10bfc91d05589b16d8bda5 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 3 May 2015 13:10:00 -0400 Subject: gnu: gnupg: Update to 2.1.3. * gnu/packages/gnupg.scm (gnupg): Update to 2.1.3. --- gnu/packages/gnupg.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 3b29d1abfa..a9f1f12a19 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -190,14 +190,14 @@ compatible to GNU Pth.") (define-public gnupg (package (name "gnupg") - (version "2.1.2") + (version "2.1.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/gnupg/gnupg-" version ".tar.bz2")) (sha256 (base32 - "14k7c5spai3yppz6izf1ggbnffskl54ln87v1wgy9pwism1mlks0")))) + "1vf8fmwcq81abzw2mypz5j7m4xy0vl4z6lri5lxfbd2bsyq7ygi1")))) (build-system gnu-build-system) (inputs `(("bzip2" ,bzip2) -- cgit v1.2.3 From d5e9f3809dc7d521874cfad0a242ab664f6c19bc Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 3 May 2015 13:21:09 -0400 Subject: gnu: subversion: Update to 1.8.13. * gnu/packages/version-control.scm (subversion): Update to 1.8.13. --- gnu/packages/version-control.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 3cbd12f635..fbe2c74a17 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2013 Cyril Roelandt ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2013, 2014 Andreas Enge -;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2014 Eric Bavier ;;; ;;; This file is part of GNU Guix. @@ -551,14 +551,14 @@ property manipulation.") (define-public subversion (package (name "subversion") - (version "1.7.18") + (version "1.8.13") (source (origin (method url-fetch) (uri (string-append "http://archive.apache.org/dist/subversion/" "subversion-" version ".tar.bz2")) (sha256 (base32 - "06nrqnn3qq1hhskkcdbm0ilk2xv6ay2gyf2c7qvxp6xncb782wzn")))) + "0ybmc0yq83jhblp42wdqvn2cryra3sypx8mkxn5b8lq7hilcr68h")))) (build-system gnu-build-system) (arguments '(#:phases (alist-cons-after -- cgit v1.2.3 From 8a413bcaf5dd845c6c5146a4f05e08529ab3e34f Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 29 Apr 2015 16:26:34 +0200 Subject: gnu: rename (gnu packages socat) to (gnu packages networking). * gnu/packages/socat.scm: Rename this ... * gnu/packages/networking.scm: ... to this. * gnu-system.am (GNU_SYSTEM_MODULES): Change socat.scm to networking.scm. --- gnu-system.am | 2 +- gnu/packages/networking.scm | 55 +++++++++++++++++++++++++++++++++++++++++++++ gnu/packages/socat.scm | 55 --------------------------------------------- 3 files changed, 56 insertions(+), 56 deletions(-) create mode 100644 gnu/packages/networking.scm delete mode 100644 gnu/packages/socat.scm diff --git a/gnu-system.am b/gnu-system.am index 26228fccfa..95eefdcbf5 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -217,6 +217,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/ncurses.scm \ gnu/packages/netpbm.scm \ gnu/packages/nettle.scm \ + gnu/packages/networking.scm \ gnu/packages/ninja.scm \ gnu/packages/node.scm \ gnu/packages/noweb.scm \ @@ -273,7 +274,6 @@ GNU_SYSTEM_MODULES = \ gnu/packages/slang.scm \ gnu/packages/slim.scm \ gnu/packages/smalltalk.scm \ - gnu/packages/socat.scm \ gnu/packages/ssh.scm \ gnu/packages/stalonetray.scm \ gnu/packages/statistics.scm \ diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm new file mode 100644 index 0000000000..5429535e5f --- /dev/null +++ b/gnu/packages/networking.scm @@ -0,0 +1,55 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages networking) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages openssl)) + +;; XXX: Group with other networking tools like tcpdump in a module? +(define-public socat + (package + (name "socat") + (version "1.7.2.4") + (source (origin + (method url-fetch) + (uri (string-append + "http://www.dest-unreach.org/socat/download/socat-" + version ".tar.bz2")) + (sha256 + (base32 + "028yjka2zr6j1i8pmfmvzqki8ajczdl1hnry1x31xbbg3j83jxsb")))) + (build-system gnu-build-system) + (arguments '(#:tests? #f)) ;no 'check' phase + (inputs `(("openssl" ,openssl))) + (home-page "http://www.dest-unreach.org/socat/") + (synopsis + "Open bidirectional communication channels from the command line") + (description + "socat is a relay for bidirectional data transfer between two independent +data channels---files, pipes, devices, sockets, etc. It can create +\"listening\" sockets, named pipes, and pseudo terminals. + +socat can be used, for instance, as TCP port forwarder, as a shell interface +to UNIX sockets, IPv6 relay, for redirecting TCP oriented programs to a serial +line, to logically connect serial lines on different computers, or to +establish a relatively secure environment (su and chroot) for running client +or server shell scripts with network connections. ") + (license license:gpl2))) diff --git a/gnu/packages/socat.scm b/gnu/packages/socat.scm deleted file mode 100644 index 7c0bc3d964..0000000000 --- a/gnu/packages/socat.scm +++ /dev/null @@ -1,55 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Ludovic Courtès -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see . - -(define-module (gnu packages socat) - #:use-module ((guix licenses) #:prefix license:) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix build-system gnu) - #:use-module (gnu packages openssl)) - -;; XXX: Group with other networking tools like tcpdump in a module? -(define-public socat - (package - (name "socat") - (version "1.7.2.4") - (source (origin - (method url-fetch) - (uri (string-append - "http://www.dest-unreach.org/socat/download/socat-" - version ".tar.bz2")) - (sha256 - (base32 - "028yjka2zr6j1i8pmfmvzqki8ajczdl1hnry1x31xbbg3j83jxsb")))) - (build-system gnu-build-system) - (arguments '(#:tests? #f)) ;no 'check' phase - (inputs `(("openssl" ,openssl))) - (home-page "http://www.dest-unreach.org/socat/") - (synopsis - "Open bidirectional communication channels from the command line") - (description - "socat is a relay for bidirectional data transfer between two independent -data channels---files, pipes, devices, sockets, etc. It can create -\"listening\" sockets, named pipes, and pseudo terminals. - -socat can be used, for instance, as TCP port forwarder, as a shell interface -to UNIX sockets, IPv6 relay, for redirecting TCP oriented programs to a serial -line, to logically connect serial lines on different computers, or to -establish a relatively secure environment (su and chroot) for running client -or server shell scripts with network connections. ") - (license license:gpl2))) -- cgit v1.2.3 From 603090d8fe1f9fb19674790d182ec03fc2bb8796 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 29 Apr 2015 16:52:46 +0200 Subject: gnu: Add zeromq. * gnu/packages/networking.scm (zeromq): New variable. --- gnu/packages/networking.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 5429535e5f..b9125af509 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Ludovic Courtès +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -53,3 +54,26 @@ line, to logically connect serial lines on different computers, or to establish a relatively secure environment (su and chroot) for running client or server shell scripts with network connections. ") (license license:gpl2))) + +(define-public zeromq + (package + (name "zeromq") + (version "4.0.5") + (source (origin + (method url-fetch) + (uri (string-append "http://download.zeromq.org/zeromq-" + version ".tar.gz")) + (sha256 + (base32 + "0arl8fy8d03xd5h0mgda1s5bajwg8iyh1kk4hd1420rpcxgkrj9v")))) + (build-system gnu-build-system) + (home-page "http://zeromq.org") + (synopsis "Library for message-based applications") + (description + "The 0MQ lightweight messaging kernel is a library which extends the +standard socket interfaces with features traditionally provided by specialized +messaging middle-ware products. 0MQ sockets provide an abstraction of +asynchronous message queues, multiple messaging patterns, message +filtering (subscriptions), seamless access to multiple transport protocols and +more.") + (license license:lgpl3+))) -- cgit v1.2.3 From b4e5d8e7da57529294cbfd470309775a26090ce1 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sun, 3 May 2015 22:43:48 +0200 Subject: gnu: Add libe-book. * gnu/packages/libreoffice.scm (libe-book): New variable. Co-authored-by: John Darrington --- gnu/packages/libreoffice.scm | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 4de5fcaadd..32d1792ce2 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -26,8 +26,11 @@ #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages doxygen) + #:use-module (gnu packages gperf) + #:use-module (gnu packages icu4c) #:use-module (gnu packages pkg-config) - #:use-module (gnu packages python)) + #:use-module (gnu packages python) + #:use-module (gnu packages xml)) (define-public ixion (package @@ -135,3 +138,38 @@ spreadsheets and presentations.") WordPerfect documents. It is most commonly used to import such documents into other word processors.") (license '(mpl2.0 lgpl2.1+)))) ; dually licensed + + +(define-public libe-book + (package + (name "libe-book") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/libebook/libe-book-" + version "/libe-book-" version ".tar.xz")) + (sha256 + (base32 + "1v48pd32r2pfysr3a3igc4ivcf6vvb26jq4pdkcnq75p70alp2bz")))) + (build-system gnu-build-system) + (native-inputs + `(("cppunit" ,cppunit) + ("gperf" ,gperf) + ("pkg-config" ,pkg-config))) + (inputs `(("boost" ,boost) + ("icu4c" ,icu4c) + ("librevenge" ,librevenge) + ("libxml2" ,libxml2))) + (arguments + ;; avoid triggering configure errors by simple inclusion of boost headers + `(#:configure-flags '("--disable-werror"))) + (home-page "http://libebook.sourceforge.net") + (synopsis "Library for import of reflowable e-book formats") + (description "Libe-book is a library and a set of tools for reading and +converting various reflowable e-book formats. Currently supported are: +Broad Band eBook, eReader .pdb, FictionBook v. 2 (including zipped files), +PalmDoc Ebook, Plucker .pdb, QiOO (mobile format, for java-enabled +cellphones), TCR (simple compressed text format), TealDoc, zTXT, +ZVR (simple compressed text format).") + (license mpl2.0))) -- cgit v1.2.3 From 8e9aa37f6967f7b8dac46b54bc39c1e0464a350c Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Fri, 1 May 2015 08:54:33 -0500 Subject: doc: Replace reference to profile.sh with sh-symlink MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * doc/guix.texi (The Store Monad): Replace reference to "profile.sh", which is not defined until the next node, with "sh-symlink", which is defined immediately above Signed-off-by: Ludovic Courtès --- doc/guix.texi | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 3328cbac91..d7868bade8 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2354,12 +2354,12 @@ parameter is now implicit, and the monadic value returned by @code{derivation->output-path}---is @dfn{bound} using @code{mlet} instead of plain @code{let}. -Calling the monadic @code{profile.sh} has no effect. To get the desired +Calling the monadic @code{sh-symlink} has no effect. To get the desired effect, one must use @code{run-with-store}: @example -(run-with-store (open-connection) (profile.sh)) -@result{} /gnu/store/...-profile.sh +(run-with-store (open-connection) (sh-symlink)) +@result{} /gnu/store/...-sh-symlink @end example Note that the @code{(guix monad-repl)} module extends Guile's REPL with -- cgit v1.2.3 From 1e7464a9d2cb84c845ab821c90f908136a1d8959 Mon Sep 17 00:00:00 2001 From: David Hashe Date: Sun, 3 May 2015 01:07:40 -0500 Subject: gnu: Add totem-pl-parser. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/gnome.scm (totem-pl-parser): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/gnome.scm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 871cde8491..96a21efd59 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2014, 2015 Federico Beffa ;;; Copyright © 2015 Sou Bunnbu ;;; Copyright © 2015 Andy Wingo +;;; Copyright © 2015 David Hashe ;;; ;;; This file is part of GNU Guix. ;;; @@ -65,6 +66,9 @@ #:use-module (gnu packages web) #:use-module (gnu packages xorg) #:use-module (gnu packages xdisorg) + #:use-module (gnu packages mail) + #:use-module (gnu packages backup) + #:use-module (gnu packages nettle) #:use-module (gnu packages ncurses)) (define-public brasero @@ -2153,3 +2157,37 @@ parameters of a GNOME session and the applications that run under it. It handles settings such keyboard layout, shortcuts, and accessibility, clipboard settings, themes, mouse settings, and startup of other daemons.") (license license:gpl2+))) + +(define-public totem-pl-parser + (package + (name "totem-pl-parser") + (version "3.10.5") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/totem-pl-parser/3.10/" + "totem-pl-parser-" version ".tar.xz")) + (sha256 + (base32 + "0dw1kiwmjwdjrighri0j9nagsnj44dllm0mamnfh4y5nc47mhim7")))) + (build-system gnu-build-system) + (arguments + ;; FIXME: Tests require gvfs. + `(#:tests? #f)) + (native-inputs + `(("intltool" ,intltool) + ("glib" ,glib "bin") + ("pkg-config" ,pkg-config))) + (inputs + `(("glib" ,glib) + ("gmime" ,gmime) + ("libarchive" ,libarchive) + ("libgcrypt" ,libgcrypt) + ("nettle" ,nettle) + ("libsoup" ,libsoup) + ("libxml2" ,libxml2))) + (home-page "https://projects.gnome.org/totem") + (synopsis "Library to parse and save media playlists for GNOME") + (description "Totem-pl-parser is a GObjects-based library to parse and save +playlists in a variety of formats.") + (license license:lgpl2.0+))) + -- cgit v1.2.3 From 3badccaa7368fd2acc640b48c1dd3c1c2ae32500 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 3 May 2015 22:33:27 +0200 Subject: guix package: Move profile cleaning out of 'search-path-environment-variables'. * guix/scripts/package.scm (user-friendly-profile): New procedure. (search-path-environment-variables): Remove 'profile' local variable. (display-search-paths): Explicitly call 'user-friendly-profile' for the argument to 'search-path-environment-variables'. (guix-package)[process-query]: Likewise. --- guix/scripts/package.scm | 80 +++++++++++++++++++++++++----------------------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index fca70f566d..d9bad7ba87 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -89,6 +89,15 @@ return PROFILE unchanged. The goal is to treat '-p ~/.guix-profile' as if %current-profile profile)) +(define (user-friendly-profile profile) + "Return either ~/.guix-profile if that's what PROFILE refers to, directly or +indirectly, or PROFILE." + (if (and %user-profile-directory + (false-if-exception + (string=? (readlink %user-profile-directory) profile))) + %user-profile-directory + profile)) + (define (link-to-empty-profile store generation) "Link GENERATION, a string, to the empty profile." (let* ((drv (run-with-store store @@ -375,49 +384,41 @@ an output path different than CURRENT-PATH." "Return environment variable definitions that may be needed for the use of ENTRIES, a list of manifest entries, in PROFILE. Use GETENV to determine the current settings and report only settings not already effective." - - ;; Prefer ~/.guix-profile to the real profile directory name. - (let ((profile (if (and %user-profile-directory - (false-if-exception - (string=? (readlink %user-profile-directory) - profile))) - %user-profile-directory - profile))) - - (define search-path-definition - (match-lambda - (($ variable files separator - type pattern) - (let* ((values (or (and=> (getenv variable) - (cut string-tokenize* <> separator)) - '())) - ;; Add a trailing slash to force symlinks to be treated as - ;; directories when 'find-files' traverses them. - (files (if pattern - (map (cut string-append <> "/") files) - files)) - - ;; XXX: Silence 'find-files' when it stumbles upon non-existent - ;; directories (see - ;; .) - (path (with-null-error-port - (search-path-as-list files (list profile) - #:type type - #:pattern pattern)))) - (if (every (cut member <> values) path) - #f - (format #f "export ~a=\"~a\"" - variable - (string-join path separator))))))) - - (let ((search-paths (delete-duplicates - (append-map manifest-entry-search-paths entries)))) - (filter-map search-path-definition search-paths)))) + (define search-path-definition + (match-lambda + (($ variable files separator + type pattern) + (let* ((values (or (and=> (getenv variable) + (cut string-tokenize* <> separator)) + '())) + ;; Add a trailing slash to force symlinks to be treated as + ;; directories when 'find-files' traverses them. + (files (if pattern + (map (cut string-append <> "/") files) + files)) + + ;; XXX: Silence 'find-files' when it stumbles upon non-existent + ;; directories (see + ;; .) + (path (with-null-error-port + (search-path-as-list files (list profile) + #:type type + #:pattern pattern)))) + (if (every (cut member <> values) path) + #f + (format #f "export ~a=\"~a\"" + variable + (string-join path separator))))))) + + (let ((search-paths (delete-duplicates + (append-map manifest-entry-search-paths entries)))) + (filter-map search-path-definition search-paths))) (define (display-search-paths entries profile) "Display the search path environment variables that may need to be set for ENTRIES, a list of manifest entries, in the context of PROFILE." - (let ((settings (search-path-environment-variables entries profile))) + (let* ((profile (user-friendly-profile profile)) + (settings (search-path-environment-variables entries profile))) (unless (null? settings) (format #t (_ "The following environment variable definitions may be needed:~%")) (format #t "~{ ~a~%~}" settings)))) @@ -999,6 +1000,7 @@ more information.~%")) (('search-paths) (let* ((manifest (profile-manifest profile)) (entries (manifest-entries manifest)) + (profile (user-friendly-profile profile)) (settings (search-path-environment-variables entries profile (const #f)))) (format #t "~{~a~%~}" settings) -- cgit v1.2.3 From 4e9f59205835e148d4329e7d77c81dccfacd4ea2 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 3 May 2015 23:01:35 +0200 Subject: guix package: Introduce 'evaluate-search-paths'. * guix/scripts/package.scm (evaluate-search-paths): New procedure, with most of the code formerly in 'search-path-environment-variables'. (search-path-environment-variables): Use it. --- guix/scripts/package.scm | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index d9bad7ba87..003f6958ef 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -379,10 +379,10 @@ an output path different than CURRENT-PATH." (with-error-to-port (%make-void-port "w") (lambda () exp))) -(define* (search-path-environment-variables entries profile - #:optional (getenv getenv)) - "Return environment variable definitions that may be needed for the use of -ENTRIES, a list of manifest entries, in PROFILE. Use GETENV to determine the +(define* (evaluate-search-paths search-paths directory + #:optional (getenv (const #f))) + "Evaluate SEARCH-PATHS, a list of search-path specifications, for DIRECTORY, +and return a list of variable/value pairs. Use GETENV to determine the current settings and report only settings not already effective." (define search-path-definition (match-lambda @@ -401,18 +401,26 @@ current settings and report only settings not already effective." ;; directories (see ;; .) (path (with-null-error-port - (search-path-as-list files (list profile) + (search-path-as-list files (list directory) #:type type #:pattern pattern)))) (if (every (cut member <> values) path) - #f - (format #f "export ~a=\"~a\"" - variable - (string-join path separator))))))) + #f ;VARIABLE is already set appropriately + (cons variable (string-join path separator))))))) + + (filter-map search-path-definition search-paths)) +(define* (search-path-environment-variables entries profile + #:optional (getenv getenv)) + "Return environment variable definitions that may be needed for the use of +ENTRIES, a list of manifest entries, in PROFILE. Use GETENV to determine the +current settings and report only settings not already effective." (let ((search-paths (delete-duplicates (append-map manifest-entry-search-paths entries)))) - (filter-map search-path-definition search-paths))) + (filter-map (match-lambda + ((variable . value) + (format #f "export ~a=\"~a\"" variable value))) + (evaluate-search-paths search-paths profile getenv)))) (define (display-search-paths entries profile) "Display the search path environment variables that may need to be set for -- cgit v1.2.3 From 167a05aabc229d48d62545ef218d8b0577e6e8f3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 4 May 2015 00:23:55 +0200 Subject: gnu: gcc-5.1: Add specific libvtv patch. * gnu/packages/patches/gcc-5.0-libvtv-runpath.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/gcc.scm (gcc-5.1)[source]: Use it. --- gnu-system.am | 1 + gnu/packages/gcc.scm | 4 +++- gnu/packages/patches/gcc-5.0-libvtv-runpath.patch | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/gcc-5.0-libvtv-runpath.patch diff --git a/gnu-system.am b/gnu-system.am index 95eefdcbf5..3223dc8afd 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -422,6 +422,7 @@ dist_patch_DATA = \ gnu/packages/patches/gcc-arm-link-spec-fix.patch \ gnu/packages/patches/gcc-cross-environment-variables.patch \ gnu/packages/patches/gcc-libvtv-runpath.patch \ + gnu/packages/patches/gcc-5.0-libvtv-runpath.patch \ gnu/packages/patches/geoclue-config.patch \ gnu/packages/patches/ghostscript-runpath.patch \ gnu/packages/patches/gitolite-openssh-6.8-compat.patch \ diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 957917bf0b..4512e54e8b 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -343,7 +343,9 @@ Go. It also includes runtime support libraries for these languages.") (sha256 (base32 "1bd5vj4px3s8nlakbgrh38ynxq4s654m6nxz7lrj03mvkkwgvnmp")) - (patches (origin-patches (package-source gcc-4.9))))))) + (patches (map search-patch + '("gcc-arm-link-spec-fix.patch" + "gcc-5.0-libvtv-runpath.patch"))))))) (define* (custom-gcc gcc name languages #:key (separate-lib-output? #t)) "Return a custom version of GCC that supports LANGUAGES." diff --git a/gnu/packages/patches/gcc-5.0-libvtv-runpath.patch b/gnu/packages/patches/gcc-5.0-libvtv-runpath.patch new file mode 100644 index 0000000000..9a9bc5ca53 --- /dev/null +++ b/gnu/packages/patches/gcc-5.0-libvtv-runpath.patch @@ -0,0 +1,15 @@ +GCC 4.9 and later have libvtv and, just like libstdc++ (see +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32354), it doesn't +have $libdir in its RUNPATH, but it NEEDs libgcc_s. This patch +fixes that. + +--- gcc-5.1.0/libvtv/Makefile.in 2014-10-30 09:28:58.000000000 +0100 ++++ gcc-5.1.0/libvtv/Makefile.in 2015-04-30 09:51:04.161129705 +0200 +@@ -15,6 +15,7 @@ + + @SET_MAKE@ + ++libvtv_la_LDFLAGS = -Wl,-rpath=$(libdir) + + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ -- cgit v1.2.3 From 0a75450c14c7e9639099ec470b037795bb6f8f50 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 23 Apr 2015 15:23:26 +0200 Subject: gnu: samtools: Remove patch-makefile-curses phase. * gnu/packages/bioinformatics.scm (samtools)[arguments]: Remove patch-makefile-curses phase, use make-flags instead. --- gnu/packages/bioinformatics.scm | 41 ++++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index bcb7eba48f..9db8fa4d39 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -1068,32 +1068,27 @@ distribution, coverage uniformity, strand specificity, etc.") ;; systems. #:tests? ,(string=? (or (%current-system) (%current-target-system)) "x86_64-linux") - #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out"))) + #:make-flags (list "LIBCURSES=-lncurses" + (string-append "prefix=" (assoc-ref %outputs "out"))) #:phases (alist-cons-after 'unpack - 'patch-makefile-curses - (lambda _ - (substitute* "Makefile" - (("-lcurses") "-lncurses"))) - (alist-cons-after - 'unpack - 'patch-tests - (lambda* (#:key inputs #:allow-other-keys) - (let ((bash (assoc-ref inputs "bash"))) - (substitute* "test/test.pl" - ;; The test script calls out to /bin/bash - (("/bin/bash") - (string-append bash "/bin/bash")) - ;; There are two failing tests upstream relating to the "stats" - ;; subcommand in test_usage_subcommand ("did not have Usage" - ;; and "usage did not mention samtools stats"), so we disable - ;; them. - (("(test_usage_subcommand\\(.*\\);)" cmd) - (string-append "unless ($subcommand eq 'stats') {" cmd "};"))))) - (alist-delete - 'configure - %standard-phases))))) + 'patch-tests + (lambda* (#:key inputs #:allow-other-keys) + (let ((bash (assoc-ref inputs "bash"))) + (substitute* "test/test.pl" + ;; The test script calls out to /bin/bash + (("/bin/bash") + (string-append bash "/bin/bash")) + ;; There are two failing tests upstream relating to the "stats" + ;; subcommand in test_usage_subcommand ("did not have Usage" + ;; and "usage did not mention samtools stats"), so we disable + ;; them. + (("(test_usage_subcommand\\(.*\\);)" cmd) + (string-append "unless ($subcommand eq 'stats') {" cmd "};"))))) + (alist-delete + 'configure + %standard-phases)))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("ncurses" ,ncurses) ("perl" ,perl) -- cgit v1.2.3 From 41dd7126570d9d8699d228aa9e6c6d092be816e0 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 23 Apr 2015 16:42:50 +0200 Subject: gnu: samtools: Install libbam.a library. * gnu/packages/bioinformatics.scm (samtools)[arguments]: Add phase "install-library" to install the libbam.a library. --- gnu/packages/bioinformatics.scm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 9db8fa4d39..6fc2bee469 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -1086,9 +1086,13 @@ distribution, coverage uniformity, strand specificity, etc.") ;; them. (("(test_usage_subcommand\\(.*\\);)" cmd) (string-append "unless ($subcommand eq 'stats') {" cmd "};"))))) - (alist-delete - 'configure - %standard-phases)))) + (alist-cons-after + 'install 'install-library + (lambda* (#:key outputs #:allow-other-keys) + (let ((lib (string-append (assoc-ref outputs "out") "/lib"))) + (mkdir-p lib) + (copy-file "libbam.a" (string-append lib "/libbam.a")))) + (alist-delete 'configure %standard-phases))))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("ncurses" ,ncurses) ("perl" ,perl) -- cgit v1.2.3 From 0b84a0aacade3adb7bf63a352a979d78751338b6 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 28 Apr 2015 11:28:16 +0200 Subject: gnu: Add samtools-0.1.19. * gnu/packages/bioinformatics.scm (samtools-0.1): New variable. --- gnu/packages/bioinformatics.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 6fc2bee469..8bc5b868ec 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -1107,6 +1107,34 @@ variant calling (in conjunction with bcftools), and a simple alignment viewer.") (license license:expat))) +(define-public samtools-0.1 + ;; This is the most recent version of the 0.1 line of samtools. The input + ;; and output formats differ greatly from that used and produced by samtools + ;; 1.x and is still used in many bioinformatics pipelines. + (package (inherit samtools) + (version "0.1.19") + (source + (origin + (method url-fetch) + (uri + (string-append "mirror://sourceforge/samtools/" + version "/samtools-" version ".tar.bz2")) + (sha256 + (base32 "1m33xsfwz0s8qi45lylagfllqg7fphf4dr0780rsvw75av9wk06h")))) + (arguments + (substitute-keyword-arguments (package-arguments samtools) + ((#:tests? tests) #f) ;no "check" target + ((#:phases phases) + `(modify-phases ,phases + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append + (assoc-ref outputs "out") "/bin"))) + (mkdir-p bin) + (copy-file "samtools" + (string-append bin "/samtools"))))) + (delete 'patch-tests))))))) + (define-public ngs-sdk (package (name "ngs-sdk") -- cgit v1.2.3 From a73956baf4d1f103fbb574c5f0880e10de1c027b Mon Sep 17 00:00:00 2001 From: Tomáš Čech Date: Wed, 11 Mar 2015 22:00:07 +0100 Subject: gnu: Add taskwarrior. * gnu/packages/task-management.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/task-management.scm | 61 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 gnu/packages/task-management.scm diff --git a/gnu-system.am b/gnu-system.am index 3223dc8afd..c422d19f25 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -280,6 +280,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/swig.scm \ gnu/packages/sxiv.scm \ gnu/packages/synergy.scm \ + gnu/packages/task-management.scm \ gnu/packages/tbb.scm \ gnu/packages/tcl.scm \ gnu/packages/tcsh.scm \ diff --git a/gnu/packages/task-management.scm b/gnu/packages/task-management.scm new file mode 100644 index 0000000000..e77aecb957 --- /dev/null +++ b/gnu/packages/task-management.scm @@ -0,0 +1,61 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Tomáš Čech +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages task-management) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (gnu packages gnutls) + #:use-module (gnu packages linux) + #:use-module (gnu packages lua) + #:use-module (guix download) + #:use-module (guix build-system cmake)) + +(define-public taskwarrior + (package + (name "taskwarrior") + (version "2.4.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://taskwarrior.org/download/task-" version ".tar.gz")) + (sha256 (base32 + "1lkbw2fhshynbl7hppar1viapyrs712s14xhd8p3l8gyhvxbh0mv")))) + (build-system cmake-build-system) + (inputs + `(("gnutls" ,gnutls) + ("lua" ,lua) + ("util-linux" ,util-linux))) + (arguments + `(#:tests? #f ; No tests implemented. + #:phases + (modify-phases %standard-phases + (add-before + 'patch-source-shebangs 'remove-broken-symlinks + (lambda _ + ;; These files are broken symlinks - delete them. + (delete-file "src/cal") + (delete-file "src/calendar") + (delete-file "src/tw")))))) + (home-page "http://taskwarrior.org") + (synopsis "Command line task manager") + (description + "Taskwarrior is a command-line task manager following the Getting Things +Done time management method. It supports network synchronization, filtering +and querying data, exposing task data in multiple formats to other tools.") + (license license:expat))) -- cgit v1.2.3 From 4702cec24637fc9cb5ed544817d56e9770b21ebf Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 4 May 2015 11:27:39 +0200 Subject: gnu: bamtools: Set rpath via LDFLAGS. * gnu/packages/bioinformatics.scm (bamtools): Add a pre-configure phase setting $LDFLAGS to set the rpath to $out/lib/bamtools. --- gnu/packages/bioinformatics.scm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 8bc5b868ec..7dc1bc48ce 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -62,7 +62,17 @@ (base32 "1brry29bw2xr2l9pqn240rkqwayg85b8qq78zk2zs6nlspk4d018")))) (build-system cmake-build-system) - (arguments `(#:tests? #f)) ;no "check" target + (arguments + `(#:tests? #f ;no "check" target + #:phases + (modify-phases %standard-phases + (add-before + 'configure 'set-ldflags + (lambda* (#:key outputs #:allow-other-keys) + (setenv "LDFLAGS" + (string-append + "-Wl,-rpath=" + (assoc-ref outputs "out") "/lib/bamtools"))))))) (inputs `(("zlib" ,zlib))) (home-page "https://github.com/pezmaster31/bamtools") (synopsis "C++ API and command-line toolkit for working with BAM data") -- cgit v1.2.3 From 39f8ed14374e79d1734d8651a31f492a52c44b5d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 4 May 2015 14:31:00 +0200 Subject: doc: Clarify installation from the binary tarball. * doc/guix.texi (Binary Installation): Specifically refer to group/account creation, and add an item for substitutes. Mention verifiability. --- doc/guix.texi | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index d7868bade8..eb240b1d6b 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -280,8 +280,8 @@ Do @emph{not} unpack the tarball on a working Guix system since that would overwrite its own essential files. @item -Set up the daemon as explained below (@pxref{Setting Up the Daemon}), and -run it: +Create the group and user accounts for build users as explained below +(@pxref{Build Environment Setup}), and run the daemon: @example # /root/.guix-profile/bin/guix-daemon --build-users-group=guix-builder @@ -296,6 +296,14 @@ for instance with: # cd /usr/local/bin # ln -s /root/.guix-profile/bin/guix @end example + +@item +To use substitutes from @code{hydra.gnu.org} (@pxref{Substitutes}), +authorize them: + +@example +# guix archive --authorize < /root/.guix-profile/share/guix/hydra.gnu.org.pub +@end example @end enumerate And that's it! @@ -305,8 +313,8 @@ profile, or it would become subject to garbage collection---in which case you would find yourself badly handicapped by the lack of the @command{guix} command. -The tarball in question can be (re)produced simply by running the -following command in the Guix source tree: +The tarball in question can be (re)produced and verified simply by +running the following command in the Guix source tree: @example make guix-binary.@var{system}.tar.xz -- cgit v1.2.3 From eabebb8143193fadf5338aaebeafde33266b30af Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 4 May 2015 14:31:17 +0200 Subject: doc: Suggest 'groupadd --system'. * doc/guix.texi (Build Environment Setup): Use 'groupadd --system'. --- doc/guix.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index eb240b1d6b..dea1415616 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -454,7 +454,7 @@ Bash syntax and the @code{shadow} commands): @c See http://lists.gnu.org/archive/html/bug-guix/2013-01/msg00239.html @c for why `-G' is needed. @example -# groupadd guix-builder +# groupadd --system guix-builder # for i in `seq 1 10`; do useradd -g guix-builder -G guix-builder \ -- cgit v1.2.3 From c6f30b81851fde4be31aae7b9d36356c8f72963a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 4 May 2015 15:05:13 +0200 Subject: doc: Fix dangling references in the 'sh-symlink' monad example. Reported by Christopher A. Webber . * doc/guix.texi (The Store Monad): Reintroduce 'mlet' in 'sh-symlink' example. Move the simplified version below. Explain that the 'store' parameter is threaded. --- doc/guix.texi | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index dea1415616..d9db408e57 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2346,21 +2346,34 @@ Consider this ``normal'' procedure: `(symlink ,sh %output)))) @end example -Using @code{(guix monads)}, it may be rewritten as a monadic function: +Using @code{(guix monads)} and @code{(guix gexp)}, it may be rewritten +as a monadic function: -@c FIXME: Find a better example, one that uses 'mlet'. @example (define (sh-symlink) ;; Same, but return a monadic value. - (gexp->derivation "sh" - #~(symlink (string-append #$bash "/bin/bash") #$output))) + (mlet %store-monad ((drv (package->derivation bash))) + (gexp->derivation "sh" + #~(symlink (string-append #$drv "/bin/bash") + #$output)))) @end example -There are two things to note in the second version: the @code{store} -parameter is now implicit, and the monadic value returned by -@code{package-file}---a wrapper around @code{package-derivation} and -@code{derivation->output-path}---is @dfn{bound} using @code{mlet} -instead of plain @code{let}. +There several things to note in the second version: the @code{store} +parameter is now implicit and is ``threaded'' in the calls to the +@code{package->derivation} and @code{gexp->derivation} monadic +procedures, and the monadic value returned by @code{package->derivation} +is @dfn{bound} using @code{mlet} instead of plain @code{let}. + +As it turns out, the call to @code{package->derivation} can even be +omitted since it will take place implicitly, as we will see later +(@pxref{G-Expressions}): + +@example +(define (sh-symlink) + (gexp->derivation "sh" + #~(symlink (string-append #$bash "/bin/bash") + #$output))) +@end example Calling the monadic @code{sh-symlink} has no effect. To get the desired effect, one must use @code{run-with-store}: -- cgit v1.2.3 From 90fc547fa026e197be45eff8a346a8fd19abe64e Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 29 Apr 2015 15:03:24 +0200 Subject: gnu: Add python-sympy. * gnu/packages/python.scm (python-sympy, python2-sympy): New variables. --- gnu/packages/python.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 29b47f357c..98be765853 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -3446,6 +3446,32 @@ providing a clean and modern domain specific specification language (DSL) in Python style, together with a fast and comfortable execution environment.") (license license:expat))) +(define-public python-sympy + (package + (name "python-sympy") + (version "0.7.6") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/sympy/sympy/releases/download/sympy-" + version "/sympy-" version ".tar.gz")) + (sha256 + (base32 "19yp0gy4i7p4g6l3b8vaqkj9qj7yqb5kqy0qgbdagpzgkdz958yz")))) + (build-system python-build-system) + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (home-page "http://www.sympy.org/") + (synopsis "Python library for symbolic mathematics") + (description + "SymPy is a Python library for symbolic mathematics. It aims to become a +full-featured computer algebra system (CAS) while keeping the code as simple +as possible in order to be comprehensible and easily extensible.") + (license bsd-3))) + +(define-public python2-sympy + (package-with-python2 python-sympy)) + (define-public python-testlib (package (name "python-testlib") -- cgit v1.2.3 From 80e2072a7506beaa3bf82a8c4e22e888b1b1111f Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 3 May 2015 10:54:30 -0400 Subject: gnu: curl: Update to 7.42.1. * gnu/packages/patches/curl-support-capath-on-gnutls-conf.patch, gnu/packages/patches/curl-support-capath-on-gnutls.patch: Remove files. * gnu-system.am (dist_patch_DATA): Remove them. * gnu/packages/curl.scm (curl): Update to 7.42.1. Remove patches. --- gnu-system.am | 2 - gnu/packages/curl.scm | 7 +- .../curl-support-capath-on-gnutls-conf.patch | 16 ---- .../patches/curl-support-capath-on-gnutls.patch | 102 --------------------- 4 files changed, 2 insertions(+), 125 deletions(-) delete mode 100644 gnu/packages/patches/curl-support-capath-on-gnutls-conf.patch delete mode 100644 gnu/packages/patches/curl-support-capath-on-gnutls.patch diff --git a/gnu-system.am b/gnu-system.am index c422d19f25..f6c9947923 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -404,8 +404,6 @@ dist_patch_DATA = \ gnu/packages/patches/cssc-missing-include.patch \ gnu/packages/patches/clucene-contribs-lib.patch \ gnu/packages/patches/cursynth-wave-rand.patch \ - gnu/packages/patches/curl-support-capath-on-gnutls.patch \ - gnu/packages/patches/curl-support-capath-on-gnutls-conf.patch \ gnu/packages/patches/dbus-localstatedir.patch \ gnu/packages/patches/diffutils-gets-undeclared.patch \ gnu/packages/patches/dfu-programmer-fix-libusb.patch \ diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm index 526514b815..ab22645971 100644 --- a/gnu/packages/curl.scm +++ b/gnu/packages/curl.scm @@ -38,17 +38,14 @@ (define-public curl (package (name "curl") - (version "7.41.0") + (version "7.42.1") (source (origin (method url-fetch) (uri (string-append "http://curl.haxx.se/download/curl-" version ".tar.lzma")) (sha256 (base32 - "08n7vrhdfzziy3a7n93r7qjhzk8p26q464hxg8w9irdk3v60pi62")) - (patches - (list (search-patch "curl-support-capath-on-gnutls.patch") - (search-patch "curl-support-capath-on-gnutls-conf.patch"))))) + "0ircrhi4i9iviq0d9044rq288sdrww19d0ci6vmb4fh8nmm1jv1x")))) (build-system gnu-build-system) (inputs `(("gnutls" ,gnutls) ("gss" ,gss) diff --git a/gnu/packages/patches/curl-support-capath-on-gnutls-conf.patch b/gnu/packages/patches/curl-support-capath-on-gnutls-conf.patch deleted file mode 100644 index d2391d461d..0000000000 --- a/gnu/packages/patches/curl-support-capath-on-gnutls-conf.patch +++ /dev/null @@ -1,16 +0,0 @@ -This patch updates 'configure' as autoreconf would have done after -applying curl-support-capath-on-gnutls.patch. - ---- a/configure 2015-03-22 01:11:23.178743705 +0100 -+++ b/configure 2015-02-25 00:05:37.000000000 +0100 -@@ -23952,8 +24432,8 @@ - ca="$want_ca" - capath="no" - elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then -- if test "x$OPENSSL_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then -- as_fn_error $? "--with-ca-path only works with openSSL or PolarSSL" "$LINENO" 5 -+ if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then -+ as_fn_error $? "--with-ca-path only works with OpenSSL, GnuTLS or PolarSSL" "$LINENO" 5 - fi - capath="$want_capath" - ca="no" diff --git a/gnu/packages/patches/curl-support-capath-on-gnutls.patch b/gnu/packages/patches/curl-support-capath-on-gnutls.patch deleted file mode 100644 index d05dd021e8..0000000000 --- a/gnu/packages/patches/curl-support-capath-on-gnutls.patch +++ /dev/null @@ -1,102 +0,0 @@ -This patch adds support for CURLOPT_CAPATH to the GnuTLS backend. - -From 5a1614cecdd57cab8b4ae3e9bc19dfff5ba77e80 Mon Sep 17 00:00:00 2001 -From: Alessandro Ghedini -Date: Sun, 8 Mar 2015 20:11:06 +0100 -Subject: [PATCH] gtls: add support for CURLOPT_CAPATH - ---- - acinclude.m4 | 4 ++-- - docs/libcurl/opts/CURLOPT_CAPATH.3 | 5 ++--- - lib/vtls/gtls.c | 22 ++++++++++++++++++++++ - lib/vtls/gtls.h | 3 +++ - 4 files changed, 29 insertions(+), 5 deletions(-) - -diff --git a/acinclude.m4 b/acinclude.m4 -index 6ed7ffb..ca01869 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -2615,8 +2615,8 @@ AC_HELP_STRING([--without-ca-path], [Don't use a default CA path]), - capath="no" - elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then - dnl --with-ca-path given -- if test "x$OPENSSL_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then -- AC_MSG_ERROR([--with-ca-path only works with openSSL or PolarSSL]) -+ if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then -+ AC_MSG_ERROR([--with-ca-path only works with OpenSSL, GnuTLS or PolarSSL]) - fi - capath="$want_capath" - ca="no" -diff --git a/docs/libcurl/opts/CURLOPT_CAPATH.3 b/docs/libcurl/opts/CURLOPT_CAPATH.3 -index 642953d..6695f9f 100644 ---- a/docs/libcurl/opts/CURLOPT_CAPATH.3 -+++ b/docs/libcurl/opts/CURLOPT_CAPATH.3 -@@ -43,9 +43,8 @@ All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. - .SH EXAMPLE - TODO - .SH AVAILABILITY --This option is OpenSSL-specific and does nothing if libcurl is built to use --GnuTLS. NSS-powered libcurl provides the option only for backward --compatibility. -+This option is supported by the OpenSSL, GnuTLS and PolarSSL backends. The NSS -+backend provides the option only for backward compatibility. - .SH RETURN VALUE - Returns CURLE_OK if TLS enabled, and CURLE_UNKNOWN_OPTION if not, or - CURLE_OUT_OF_MEMORY if there was insufficient heap space. -diff --git a/lib/vtls/gtls.c b/lib/vtls/gtls.c -index 05aef19..c792540 100644 ---- a/lib/vtls/gtls.c -+++ b/lib/vtls/gtls.c -@@ -97,6 +97,10 @@ static bool gtls_inited = FALSE; - # if (GNUTLS_VERSION_NUMBER >= 0x03020d) - # define HAS_OCSP - # endif -+ -+# if (GNUTLS_VERSION_NUMBER >= 0x030306) -+# define HAS_CAPATH -+# endif - #endif - - #ifdef HAS_OCSP -@@ -462,6 +466,24 @@ gtls_connect_step1(struct connectdata *conn, - rc, data->set.ssl.CAfile); - } - -+#ifdef HAS_CAPATH -+ if(data->set.ssl.CApath) { -+ /* set the trusted CA cert directory */ -+ rc = gnutls_certificate_set_x509_trust_dir(conn->ssl[sockindex].cred, -+ data->set.ssl.CApath, -+ GNUTLS_X509_FMT_PEM); -+ if(rc < 0) { -+ infof(data, "error reading ca cert file %s (%s)\n", -+ data->set.ssl.CAfile, gnutls_strerror(rc)); -+ if(data->set.ssl.verifypeer) -+ return CURLE_SSL_CACERT_BADFILE; -+ } -+ else -+ infof(data, "found %d certificates in %s\n", -+ rc, data->set.ssl.CApath); -+ } -+#endif -+ - if(data->set.ssl.CRLfile) { - /* set the CRL list file */ - rc = gnutls_certificate_set_x509_crl_file(conn->ssl[sockindex].cred, -diff --git a/lib/vtls/gtls.h b/lib/vtls/gtls.h -index c3867e5..af1cb5b 100644 ---- a/lib/vtls/gtls.h -+++ b/lib/vtls/gtls.h -@@ -54,6 +54,9 @@ bool Curl_gtls_cert_status_request(void); - /* Set the API backend definition to GnuTLS */ - #define CURL_SSL_BACKEND CURLSSLBACKEND_GNUTLS - -+/* this backend supports the CAPATH option */ -+#define have_curlssl_ca_path 1 -+ - /* API setup for GnuTLS */ - #define curlssl_init Curl_gtls_init - #define curlssl_cleanup Curl_gtls_cleanup --- -2.2.1 - -- cgit v1.2.3 From 2087023dd48059f273bb7eae9815fb255aa7d0a9 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 4 May 2015 14:16:28 -0500 Subject: guix: build: Fix indentation for --sources in help output. * guix/scripts/build.scm (show-help)[--sources]: Make indentation consistent with other long options. --- guix/scripts/build.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index 9366ab6ccc..da71adba68 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -228,7 +228,7 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n")) (display (_ " -S, --source build the packages' source derivations")) (display (_ " - --sources[=TYPE] build source derivations; TYPE may optionally be one + --sources[=TYPE] build source derivations; TYPE may optionally be one of \"package\", \"all\" (default), or \"transitive\"")) (display (_ " -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"")) -- cgit v1.2.3 From 2534fc04781aa1bbeb5b3a36cbf9bfa169616a2d Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Mon, 4 May 2015 22:27:32 +0200 Subject: gnu: Add libwpg. * gnu/packages/libreoffice.scm (libwpg): New variable. --- gnu/packages/libreoffice.scm | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 32d1792ce2..a832710255 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -28,6 +28,7 @@ #:use-module (gnu packages doxygen) #:use-module (gnu packages gperf) #:use-module (gnu packages icu4c) + #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages xml)) @@ -139,7 +140,6 @@ WordPerfect documents. It is most commonly used to import such documents into other word processors.") (license '(mpl2.0 lgpl2.1+)))) ; dually licensed - (define-public libe-book (package (name "libe-book") @@ -173,3 +173,29 @@ PalmDoc Ebook, Plucker .pdb, QiOO (mobile format, for java-enabled cellphones), TCR (simple compressed text format), TealDoc, zTXT, ZVR (simple compressed text format).") (license mpl2.0))) + +(define-public libwpg + (package + (name "libwpg") + (version "0.3.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/libwpg/" name "/" name "-" + version ".tar.xz")) + (sha256 (base32 + "097jx8a638fwwfrzf6v29r1yhc34rq9526py7wf0ck2z4fcr2w3g")))) + (build-system gnu-build-system) + (native-inputs + `(("doxygen" ,doxygen) + ("pkg-config" ,pkg-config))) + (inputs + `(("librevenge" ,librevenge) + ("libwpd" ,libwpd) + ("perl" ,perl) + ("zlib" ,zlib))) + (home-page "http://libwpg.sourceforge.net/") + (synopsis "Library and tools for the WordPerfect Graphics format") + (description "The libwpg project provides a library and tools for +working with graphics in the WPG (WordPerfect Graphics) format.") + (license '(mpl2.0 lgpl2.1+)))) ; dually licensed -- cgit v1.2.3 From 5e6039a48b136d34d21b34237617d77580566e51 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 4 May 2015 15:38:30 +0200 Subject: substitute: Increase TTL from 24h to 36h. * guix/scripts/substitute.scm (%narinfo-ttl): Increase to 36h. --- guix/scripts/substitute.scm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index b9983c5b9c..ae97f74d26 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -84,8 +84,10 @@ disabled!~%")) (define %narinfo-ttl ;; Number of seconds during which cached narinfo lookups are considered - ;; valid. - (* 24 3600)) + ;; valid. This is a reasonable default value (corresponds to the TTL for + ;; nginx's .nar cache on hydra.gnu.org) but we'd rather want publishers to + ;; state what their TTL is in /nix-cache-info. (XXX) + (* 36 3600)) (define %narinfo-negative-ttl ;; Likewise, but for negative lookups---i.e., cached lookup failures. -- cgit v1.2.3 From 934d37069436b3f8e65478f0a5329ef0d72fdb15 Mon Sep 17 00:00:00 2001 From: Mathieu Lirzin Date: Thu, 30 Apr 2015 22:26:57 +0200 Subject: gnu: Add markdown. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/textutils.scm (markdown): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/textutils.scm | 50 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm index 08b1b64c57..325386d234 100644 --- a/gnu/packages/textutils.scm +++ b/gnu/packages/textutils.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer +;;; Copyright © 2015 Mathieu Lirzin ;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. @@ -23,8 +24,11 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system gnu) + #:use-module (guix build-system trivial) #:use-module (gnu packages autotools) - #:use-module (gnu packages python)) + #:use-module (gnu packages perl) + #:use-module (gnu packages python) + #:use-module (gnu packages zip)) (define-public recode (package @@ -155,3 +159,47 @@ encoding, supporting Unicode version 7.0.") "libgtextutils is a text utilities library used by the fastx toolkit from the Hannon Lab.") (license license:agpl3+))) + +(define-public markdown + (package + (name "markdown") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://daringfireball.net/projects/downloads/" + (string-capitalize name) "_" version ".zip")) + (sha256 + (base32 "0dq1pj91pvlwkv0jwcgdfpv6gvnxzrk3s8mnh7imamcclnvfj835")))) + (build-system trivial-build-system) + (arguments + '(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((source (assoc-ref %build-inputs "source")) + (out (assoc-ref %outputs "out")) + (perlbd (string-append (assoc-ref %build-inputs "perl") "/bin")) + (unzip (string-append (assoc-ref %build-inputs "unzip") + "/bin/unzip"))) + (mkdir-p out) + (with-directory-excursion out + (system* unzip source) + (mkdir "bin") + (mkdir-p "share/doc") + (rename-file "Markdown_1.0.1/Markdown.pl" "bin/markdown") + (rename-file "Markdown_1.0.1/Markdown Readme.text" + "share/doc/README") + (patch-shebang "bin/markdown" (list perlbd)) + (delete-file-recursively "Markdown_1.0.1")))))) + (native-inputs `(("unzip" ,unzip))) + (inputs `(("perl" ,perl))) + (home-page "http://daringfireball.net/projects/markdown") + (synopsis "Text-to-HTML conversion tool") + (description + "Markdown is a text-to-HTML conversion tool for web writers. It allows +you to write using an easy-to-read, easy-to-write plain text format, then +convert it to structurally valid XHTML (or HTML).") + (license (license:non-copyleft "file://License.text" + "See License.text in the distribution.")))) -- cgit v1.2.3 From e89431bf016830a919ec2430889f6c2679aab408 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 4 May 2015 22:11:37 +0200 Subject: Move search path specifications to (guix search-paths). * guix/packages.scm (, search-path-specification->sexp, sexp->search-path-specification): Move to... * guix/search-paths.scm: ... here. New file. * Makefile.am (MODULES): Add it. * guix/build-system/cmake.scm, guix/build-system/glib-or-gtk.scm, guix/build-system/gnu.scm, guix/build-system/haskell.scm, guix/build-system/perl.scm, guix/build-system/python.scm, guix/build-system/ruby.scm, guix/build-system/waf.scm, guix/profiles.scm, guix/scripts/package.scm: Use it. --- Makefile.am | 1 + guix/build-system/cmake.scm | 1 + guix/build-system/glib-or-gtk.scm | 1 + guix/build-system/gnu.scm | 1 + guix/build-system/haskell.scm | 1 + guix/build-system/perl.scm | 1 + guix/build-system/python.scm | 1 + guix/build-system/ruby.scm | 1 + guix/build-system/waf.scm | 1 + guix/packages.scm | 44 ++-------------------- guix/profiles.scm | 3 +- guix/scripts/package.scm | 1 + guix/search-paths.scm | 77 +++++++++++++++++++++++++++++++++++++++ 13 files changed, 92 insertions(+), 42 deletions(-) create mode 100644 guix/search-paths.scm diff --git a/Makefile.am b/Makefile.am index aa412bda2b..ae694eb0e7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -87,6 +87,7 @@ MODULES = \ guix/build/gremlin.scm \ guix/build/emacs-utils.scm \ guix/build/graft.scm \ + guix/search-paths.scm \ guix/packages.scm \ guix/import/utils.scm \ guix/import/gnu.scm \ diff --git a/guix/build-system/cmake.scm b/guix/build-system/cmake.scm index 1bc1879be5..25ac262d5d 100644 --- a/guix/build-system/cmake.scm +++ b/guix/build-system/cmake.scm @@ -21,6 +21,7 @@ #:use-module (guix store) #:use-module (guix utils) #:use-module (guix derivations) + #:use-module (guix search-paths) #:use-module (guix build-system) #:use-module (guix build-system gnu) #:use-module (guix packages) diff --git a/guix/build-system/glib-or-gtk.scm b/guix/build-system/glib-or-gtk.scm index 954c716893..a1f0a9b8a4 100644 --- a/guix/build-system/glib-or-gtk.scm +++ b/guix/build-system/glib-or-gtk.scm @@ -22,6 +22,7 @@ #:use-module (guix store) #:use-module (guix utils) #:use-module (guix derivations) + #:use-module (guix search-paths) #:use-module (guix build-system) #:use-module (guix build-system gnu) #:use-module (guix packages) diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm index 2520224931..da664e5422 100644 --- a/guix/build-system/gnu.scm +++ b/guix/build-system/gnu.scm @@ -20,6 +20,7 @@ #:use-module (guix store) #:use-module (guix utils) #:use-module (guix derivations) + #:use-module (guix search-paths) #:use-module (guix build-system) #:use-module (guix packages) #:use-module (srfi srfi-1) diff --git a/guix/build-system/haskell.scm b/guix/build-system/haskell.scm index 0fbf0b8e75..1cb734631c 100644 --- a/guix/build-system/haskell.scm +++ b/guix/build-system/haskell.scm @@ -21,6 +21,7 @@ #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix derivations) + #:use-module (guix search-paths) #:use-module (guix build-system) #:use-module (guix build-system gnu) #:use-module (ice-9 match) diff --git a/guix/build-system/perl.scm b/guix/build-system/perl.scm index 7833153676..06af1dd20e 100644 --- a/guix/build-system/perl.scm +++ b/guix/build-system/perl.scm @@ -20,6 +20,7 @@ #:use-module (guix store) #:use-module (guix utils) #:use-module (guix derivations) + #:use-module (guix search-paths) #:use-module (guix build-system) #:use-module (guix build-system gnu) #:use-module (guix packages) diff --git a/guix/build-system/python.scm b/guix/build-system/python.scm index d498cf618b..e9fffcc62f 100644 --- a/guix/build-system/python.scm +++ b/guix/build-system/python.scm @@ -23,6 +23,7 @@ #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix derivations) + #:use-module (guix search-paths) #:use-module (guix build-system) #:use-module (guix build-system gnu) #:use-module (ice-9 match) diff --git a/guix/build-system/ruby.scm b/guix/build-system/ruby.scm index 83bc93d901..e4fda30cf3 100644 --- a/guix/build-system/ruby.scm +++ b/guix/build-system/ruby.scm @@ -22,6 +22,7 @@ #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix derivations) + #:use-module (guix search-paths) #:use-module (guix build-system) #:use-module (guix build-system gnu) #:use-module (ice-9 match) diff --git a/guix/build-system/waf.scm b/guix/build-system/waf.scm index c67f649fa7..044d2a0829 100644 --- a/guix/build-system/waf.scm +++ b/guix/build-system/waf.scm @@ -21,6 +21,7 @@ #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix derivations) + #:use-module (guix search-paths) #:use-module (guix build-system) #:use-module (guix build-system gnu) #:use-module ((guix build-system python) diff --git a/guix/packages.scm b/guix/packages.scm index d7fced8384..c955b35155 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -26,6 +26,7 @@ #:use-module (guix base32) #:use-module (guix derivations) #:use-module (guix build-system) + #:use-module (guix search-paths) #:use-module (guix gexp) #:use-module (ice-9 match) #:use-module (ice-9 vlist) @@ -36,7 +37,8 @@ #:use-module (srfi srfi-34) #:use-module (srfi srfi-35) #:re-export (%current-system - %current-target-system) + %current-target-system + search-path-specification) ;for convenience #:export (origin origin? origin-uri @@ -52,12 +54,6 @@ origin-imported-modules base32 - - search-path-specification - search-path-specification? - search-path-specification->sexp - sexp->search-path-specification - package package? package-name @@ -189,40 +185,6 @@ representation." ((_ str) #'(nix-base32-string->bytevector str))))) -;; The specification of a search path. -(define-record-type* - search-path-specification make-search-path-specification - search-path-specification? - (variable search-path-specification-variable) ;string - (files search-path-specification-files) ;list of strings - (separator search-path-specification-separator ;string - (default ":")) - (file-type search-path-specification-file-type ;symbol - (default 'directory)) - (file-pattern search-path-specification-file-pattern ;#f | string - (default #f))) - -(define (search-path-specification->sexp spec) - "Return an sexp representing SPEC, a . The sexp -corresponds to the arguments expected by `set-path-environment-variable'." - ;; Note that this sexp format is used both by build systems and in - ;; (guix profiles), so think twice before you change it. - (match spec - (($ variable files separator type pattern) - `(,variable ,files ,separator ,type ,pattern)))) - -(define (sexp->search-path-specification sexp) - "Convert SEXP, which is as returned by 'search-path-specification->sexp', to -a object." - (match sexp - ((variable files separator type pattern) - (search-path-specification - (variable variable) - (files files) - (separator separator) - (file-type type) - (file-pattern pattern))))) - (define %supported-systems ;; This is the list of system types that are supported. By default, we ;; expect all packages to build successfully here. diff --git a/guix/profiles.scm b/guix/profiles.scm index 2e515d5490..fd2afc05a3 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -22,8 +22,9 @@ (define-module (guix profiles) #:use-module (guix utils) #:use-module (guix records) - #:use-module (guix derivations) #:use-module (guix packages) + #:use-module (guix derivations) + #:use-module (guix search-paths) #:use-module (guix gexp) #:use-module (guix monads) #:use-module (guix store) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 003f6958ef..44cacdca8b 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -25,6 +25,7 @@ #:use-module (guix derivations) #:use-module (guix packages) #:use-module (guix profiles) + #:use-module (guix search-paths) #:use-module (guix monads) #:use-module (guix utils) #:use-module (guix config) diff --git a/guix/search-paths.scm b/guix/search-paths.scm new file mode 100644 index 0000000000..147bfcae8c --- /dev/null +++ b/guix/search-paths.scm @@ -0,0 +1,77 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (guix search-paths) + #:use-module (guix records) + #:use-module (ice-9 match) + #:export ( + search-path-specification + search-path-specification? + search-path-specification-variable + search-path-specification-files + search-path-specification-separator + search-path-specification-file-type + search-path-specification-file-pattern + + search-path-specification->sexp + sexp->search-path-specification)) + +;;; Commentary: +;;; +;;; This module defines "search path specifications", which allow packages to +;;; declare environment variables that they use to define search paths. For +;;; instance, GCC has the 'CPATH' variable, Guile has the 'GUILE_LOAD_PATH' +;;; variable, etc. +;;; +;;; Code: + +;; The specification of a search path. +(define-record-type* + search-path-specification make-search-path-specification + search-path-specification? + (variable search-path-specification-variable) ;string + (files search-path-specification-files) ;list of strings + (separator search-path-specification-separator ;string + (default ":")) + (file-type search-path-specification-file-type ;symbol + (default 'directory)) + (file-pattern search-path-specification-file-pattern ;#f | string + (default #f))) + +(define (search-path-specification->sexp spec) + "Return an sexp representing SPEC, a . The sexp +corresponds to the arguments expected by `set-path-environment-variable'." + ;; Note that this sexp format is used both by build systems and in + ;; (guix profiles), so think twice before you change it. + (match spec + (($ variable files separator type pattern) + `(,variable ,files ,separator ,type ,pattern)))) + +(define (sexp->search-path-specification sexp) + "Convert SEXP, which is as returned by 'search-path-specification->sexp', to +a object." + (match sexp + ((variable files separator type pattern) + (search-path-specification + (variable variable) + (files files) + (separator separator) + (file-type type) + (file-pattern pattern))))) + +;;; search-paths.scm ends here -- cgit v1.2.3 From 6568d2bd6e4e047dd95b00a7a6e7501a16491eb5 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 4 May 2015 21:44:52 +0200 Subject: search-paths: Add 'evaluate-search-paths', from (guix scripts package). * guix/scripts/package.scm (with-null-error-port, evaluate-search-paths): Move to... * guix/search-paths.scm: ... here. * guix/utils.scm (string-tokenize*): Move to... * guix/search-paths.scm: ... here. * tests/utils.scm ("string-tokenize*"): Adjust accordingly. --- guix/scripts/package.scm | 36 ------------------------ guix/search-paths.scm | 72 +++++++++++++++++++++++++++++++++++++++++++++++- guix/utils.scm | 28 ------------------- tests/utils.scm | 11 ++++---- 4 files changed, 77 insertions(+), 70 deletions(-) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 44cacdca8b..933f7d8ee5 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -375,42 +375,6 @@ an output path different than CURRENT-PATH." ;;; Search paths. ;;; -(define-syntax-rule (with-null-error-port exp) - "Evaluate EXP with the error port pointing to the bit bucket." - (with-error-to-port (%make-void-port "w") - (lambda () exp))) - -(define* (evaluate-search-paths search-paths directory - #:optional (getenv (const #f))) - "Evaluate SEARCH-PATHS, a list of search-path specifications, for DIRECTORY, -and return a list of variable/value pairs. Use GETENV to determine the -current settings and report only settings not already effective." - (define search-path-definition - (match-lambda - (($ variable files separator - type pattern) - (let* ((values (or (and=> (getenv variable) - (cut string-tokenize* <> separator)) - '())) - ;; Add a trailing slash to force symlinks to be treated as - ;; directories when 'find-files' traverses them. - (files (if pattern - (map (cut string-append <> "/") files) - files)) - - ;; XXX: Silence 'find-files' when it stumbles upon non-existent - ;; directories (see - ;; .) - (path (with-null-error-port - (search-path-as-list files (list directory) - #:type type - #:pattern pattern)))) - (if (every (cut member <> values) path) - #f ;VARIABLE is already set appropriately - (cons variable (string-join path separator))))))) - - (filter-map search-path-definition search-paths)) - (define* (search-path-environment-variables entries profile #:optional (getenv getenv)) "Return environment variable definitions that may be needed for the use of diff --git a/guix/search-paths.scm b/guix/search-paths.scm index 147bfcae8c..b17f5acd5d 100644 --- a/guix/search-paths.scm +++ b/guix/search-paths.scm @@ -18,6 +18,9 @@ (define-module (guix search-paths) #:use-module (guix records) + #:use-module (guix build utils) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) #:use-module (ice-9 match) #:export ( search-path-specification @@ -29,7 +32,8 @@ search-path-specification-file-pattern search-path-specification->sexp - sexp->search-path-specification)) + sexp->search-path-specification + evaluate-search-paths)) ;;; Commentary: ;;; @@ -74,4 +78,70 @@ a object." (file-type type) (file-pattern pattern))))) +(define-syntax-rule (with-null-error-port exp) + "Evaluate EXP with the error port pointing to the bit bucket." + (with-error-to-port (%make-void-port "w") + (lambda () exp))) + +;; XXX: This procedure used to be in (guix utils) but since we want to be able +;; to use (guix search-paths) on the build side, we want to avoid the +;; dependency on (guix utils), and so this procedure is back here for now. +(define (string-tokenize* string separator) + "Return the list of substrings of STRING separated by SEPARATOR. This is +like `string-tokenize', but SEPARATOR is a string." + (define (index string what) + (let loop ((string string) + (offset 0)) + (cond ((string-null? string) + #f) + ((string-prefix? what string) + offset) + (else + (loop (string-drop string 1) (+ 1 offset)))))) + + (define len + (string-length separator)) + + (let loop ((string string) + (result '())) + (cond ((index string separator) + => + (lambda (offset) + (loop (string-drop string (+ offset len)) + (cons (substring string 0 offset) + result)))) + (else + (reverse (cons string result)))))) + +(define* (evaluate-search-paths search-paths directory + #:optional (getenv (const #f))) + "Evaluate SEARCH-PATHS, a list of search-path specifications, for DIRECTORY, +and return a list of variable/value pairs. Use GETENV to determine the +current settings and report only settings not already effective." + (define search-path-definition + (match-lambda + (($ variable files separator + type pattern) + (let* ((values (or (and=> (getenv variable) + (cut string-tokenize* <> separator)) + '())) + ;; Add a trailing slash to force symlinks to be treated as + ;; directories when 'find-files' traverses them. + (files (if pattern + (map (cut string-append <> "/") files) + files)) + + ;; XXX: Silence 'find-files' when it stumbles upon non-existent + ;; directories (see + ;; .) + (path (with-null-error-port + (search-path-as-list files (list directory) + #:type type + #:pattern pattern)))) + (if (every (cut member <> values) path) + #f ;VARIABLE is already set appropriately + (cons variable (string-join path separator))))))) + + (filter-map search-path-definition search-paths)) + ;;; search-paths.scm ends here diff --git a/guix/utils.scm b/guix/utils.scm index 3d38ba1223..a2ade2bf97 100644 --- a/guix/utils.scm +++ b/guix/utils.scm @@ -72,7 +72,6 @@ version-major+minor guile-version>? package-name->name+version - string-tokenize* string-replace-substring arguments-from-environment-variable file-extension @@ -606,33 +605,6 @@ introduce the version part." (substring file 0 dot) file))) -(define (string-tokenize* string separator) - "Return the list of substrings of STRING separated by SEPARATOR. This is -like `string-tokenize', but SEPARATOR is a string." - (define (index string what) - (let loop ((string string) - (offset 0)) - (cond ((string-null? string) - #f) - ((string-prefix? what string) - offset) - (else - (loop (string-drop string 1) (+ 1 offset)))))) - - (define len - (string-length separator)) - - (let loop ((string string) - (result '())) - (cond ((index string separator) - => - (lambda (offset) - (loop (string-drop string (+ offset len)) - (cons (substring string 0 offset) - result)))) - (else - (reverse (cons string result)))))) - (define* (string-replace-substring str substr replacement #:optional (start 0) diff --git a/tests/utils.scm b/tests/utils.scm index a662c9a8d3..e03a07b2f5 100644 --- a/tests/utils.scm +++ b/tests/utils.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2014 Eric Bavier ;;; ;;; This file is part of GNU Guix. @@ -82,10 +82,11 @@ ("foo" "bar" "baz") ("foo" "bar" "") ("foo" "bar" "baz")) - (list (string-tokenize* "foo" ":") - (string-tokenize* "foo;bar;baz" ";") - (string-tokenize* "foo!bar!" "!") - (string-tokenize* "foo+-+bar+-+baz" "+-+"))) + (let ((string-tokenize* (@@ (guix search-paths) string-tokenize*))) + (list (string-tokenize* "foo" ":") + (string-tokenize* "foo;bar;baz" ";") + (string-tokenize* "foo!bar!" "!") + (string-tokenize* "foo+-+bar+-+baz" "+-+")))) (test-equal "string-replace-substring" '("foo BAR! baz" -- cgit v1.2.3 From b07901c0cc5b36efdc92263ddeaa2be28cf2f398 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 4 May 2015 22:06:24 +0200 Subject: search-paths: Add 'environment-variable-definition'. * guix/search-paths.scm (environment-variable-definition): New variable. * guix/scripts/package.scm (search-path-environment-variables): Use it. --- guix/scripts/package.scm | 2 +- guix/search-paths.scm | 25 ++++++++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 933f7d8ee5..9e433dd191 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -384,7 +384,7 @@ current settings and report only settings not already effective." (append-map manifest-entry-search-paths entries)))) (filter-map (match-lambda ((variable . value) - (format #f "export ~a=\"~a\"" variable value))) + (environment-variable-definition variable value))) (evaluate-search-paths search-paths profile getenv)))) (define (display-search-paths entries profile) diff --git a/guix/search-paths.scm b/guix/search-paths.scm index b17f5acd5d..7957c88241 100644 --- a/guix/search-paths.scm +++ b/guix/search-paths.scm @@ -33,7 +33,8 @@ search-path-specification->sexp sexp->search-path-specification - evaluate-search-paths)) + evaluate-search-paths + environment-variable-definition)) ;;; Commentary: ;;; @@ -144,4 +145,26 @@ current settings and report only settings not already effective." (filter-map search-path-definition search-paths)) +(define* (environment-variable-definition variable value + #:key + (kind 'exact) + (separator ":")) + "Return a the definition of VARIABLE to VALUE in Bash syntax: + +KIND can be either 'exact (return the definition of VARIABLE=VALUE), +'prefix (return the definition where VALUE is added as a prefix to VARIABLE's +current value), or 'suffix (return the definition where VALUE is added as a +suffix to VARIABLE's current value.) In the case of 'prefix and 'suffix, +SEPARATOR is used as the separator between VARIABLE's current value and its +prefix/suffix." + (match kind + ('exact + (format #f "export ~a=\"~a\"" variable value)) + ('prefix + (format #f "export ~a=\"~a${~a:+~a}$~a\"" + variable value variable separator variable)) + ('suffix + (format #f "export ~a=\"$~a${~a:+~a}~a\"" + variable variable variable separator value)))) + ;;; search-paths.scm ends here -- cgit v1.2.3 From 441cfb420ab7979443cc2752b714738151c9c4e6 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 4 May 2015 22:27:11 +0200 Subject: search-paths: 'evaluate-search-paths' now returns spec/value pairs. * guix/search-paths.scm (evaluate-search-paths): Return specification/value pairs instead of variable/value pairs. * guix/scripts/package.scm (search-path-environment-variables): Adjust accordingly. Pass #:separator to 'environment-variable-definition'. --- guix/scripts/package.scm | 8 ++++++-- guix/search-paths.scm | 9 +++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 9e433dd191..7f53af772f 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -383,8 +383,12 @@ current settings and report only settings not already effective." (let ((search-paths (delete-duplicates (append-map manifest-entry-search-paths entries)))) (filter-map (match-lambda - ((variable . value) - (environment-variable-definition variable value))) + ((spec . value) + (let ((variable (search-path-specification-variable spec)) + (sep (search-path-specification-separator spec))) + ;; TODO: Offer the choice between exact/prefix/suffix. + (environment-variable-definition variable value + #:separator sep)))) (evaluate-search-paths search-paths profile getenv)))) (define (display-search-paths entries profile) diff --git a/guix/search-paths.scm b/guix/search-paths.scm index 7957c88241..154e508d5b 100644 --- a/guix/search-paths.scm +++ b/guix/search-paths.scm @@ -117,12 +117,13 @@ like `string-tokenize', but SEPARATOR is a string." (define* (evaluate-search-paths search-paths directory #:optional (getenv (const #f))) "Evaluate SEARCH-PATHS, a list of search-path specifications, for DIRECTORY, -and return a list of variable/value pairs. Use GETENV to determine the +and return a list of specification/value pairs. Use GETENV to determine the current settings and report only settings not already effective." (define search-path-definition (match-lambda - (($ variable files separator - type pattern) + ((and spec + ($ variable files separator + type pattern)) (let* ((values (or (and=> (getenv variable) (cut string-tokenize* <> separator)) '())) @@ -141,7 +142,7 @@ current settings and report only settings not already effective." #:pattern pattern)))) (if (every (cut member <> values) path) #f ;VARIABLE is already set appropriately - (cons variable (string-join path separator))))))) + (cons spec (string-join path separator))))))) (filter-map search-path-definition search-paths)) -- cgit v1.2.3 From 88aab8e3499ef6b6cb63e736ce324bb7910f85dd Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 4 May 2015 22:41:31 +0200 Subject: profiles: Use a &message error condition instead of 'error'. * guix/profiles.scm (sexp->manifest): Use 'raise' instead of 'error'. --- guix/profiles.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/guix/profiles.scm b/guix/profiles.scm index fd2afc05a3..8445e00761 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -278,7 +278,8 @@ procedure is here for backward-compatibility and will eventually vanish." search-paths)))) name version output path deps search-paths))) (_ - (error "unsupported manifest format" sexp)))) + (raise (condition + (&message (message "unsupported manifest format"))))))) (define (read-manifest port) "Return the packages listed in MANIFEST." -- cgit v1.2.3 From 954cea3ae6e7264b8d2f5139dceeeeb3f553abef Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 4 May 2015 23:18:14 +0200 Subject: records: Make 'make-syntactic-constructor' available at load/eval/expand. * guix/records.scm (make-syntactic-constructor): Wrap in 'eval-when'. --- guix/records.scm | 190 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 97 insertions(+), 93 deletions(-) diff --git a/guix/records.scm b/guix/records.scm index fd17e135e1..db59a99052 100644 --- a/guix/records.scm +++ b/guix/records.scm @@ -42,102 +42,106 @@ (format #f fmt args ...) form)))) -(define* (make-syntactic-constructor type name ctor fields - #:key (thunked '()) (defaults '()) - (delayed '())) - "Make the syntactic constructor NAME for TYPE, that calls CTOR, and expects +(eval-when (expand load eval) + ;; This procedure is a syntactic helper used by 'define-record-type*', hence + ;; 'eval-when'. + + (define* (make-syntactic-constructor type name ctor fields + #:key (thunked '()) (defaults '()) + (delayed '())) + "Make the syntactic constructor NAME for TYPE, that calls CTOR, and expects all of FIELDS to be initialized. DEFAULTS is the list of FIELD/DEFAULT-VALUE tuples, THUNKED is the list of identifiers of thunked fields, and DELAYED is the list of identifiers of delayed fields." - (with-syntax ((type type) - (name name) - (ctor ctor) - (expected fields) - (defaults defaults)) - #`(define-syntax name - (lambda (s) - (define (record-inheritance orig-record field+value) - ;; Produce code that returns a record identical to ORIG-RECORD, - ;; except that values for the FIELD+VALUE alist prevail. - (define (field-inherited-value f) - (and=> (find (lambda (x) - (eq? f (car (syntax->datum x)))) - field+value) - car)) - - ;; Make sure there are no unknown field names. - (let* ((fields (map (compose car syntax->datum) field+value)) - (unexpected (lset-difference eq? fields 'expected))) - (when (pair? unexpected) - (record-error 'name s "extraneous field initializers ~a" - unexpected))) - - #`(make-struct type 0 - #,@(map (lambda (field index) - (or (field-inherited-value field) - #`(struct-ref #,orig-record - #,index))) - 'expected - (iota (length 'expected))))) - - (define (thunked-field? f) - (memq (syntax->datum f) '#,thunked)) - - (define (delayed-field? f) - (memq (syntax->datum f) '#,delayed)) - - (define (wrap-field-value f value) - (cond ((thunked-field? f) - #`(lambda () #,value)) - ((delayed-field? f) - #`(delay #,value)) - (else value))) - - (define (field-bindings field+value) - ;; Return field to value bindings, for use in 'let*' below. - (map (lambda (field+value) - (syntax-case field+value () - ((field value) - #`(field - #,(wrap-field-value #'field #'value))))) - field+value)) - - (syntax-case s (inherit #,@fields) - ((_ (inherit orig-record) (field value) (... ...)) - #`(let* #,(field-bindings #'((field value) (... ...))) - #,(record-inheritance #'orig-record - #'((field value) (... ...))))) - ((_ (field value) (... ...)) - (let ((fields (map syntax->datum #'(field (... ...)))) - (dflt (map (match-lambda - ((f v) - (list (syntax->datum f) v))) - #'defaults))) - - (define (field-value f) - (or (and=> (find (lambda (x) - (eq? f (car (syntax->datum x)))) - #'((field value) (... ...))) - car) - (let ((value - (car (assoc-ref dflt (syntax->datum f))))) - (wrap-field-value f value)))) - - (let ((fields (append fields (map car dflt)))) - (cond ((lset= eq? fields 'expected) - #`(let* #,(field-bindings - #'((field value) (... ...))) - (ctor #,@(map field-value 'expected)))) - ((pair? (lset-difference eq? fields 'expected)) - (record-error 'name s - "extraneous field initializers ~a" - (lset-difference eq? fields - 'expected))) - (else - (record-error 'name s - "missing field initializers ~a" - (lset-difference eq? 'expected - fields)))))))))))) + (with-syntax ((type type) + (name name) + (ctor ctor) + (expected fields) + (defaults defaults)) + #`(define-syntax name + (lambda (s) + (define (record-inheritance orig-record field+value) + ;; Produce code that returns a record identical to ORIG-RECORD, + ;; except that values for the FIELD+VALUE alist prevail. + (define (field-inherited-value f) + (and=> (find (lambda (x) + (eq? f (car (syntax->datum x)))) + field+value) + car)) + + ;; Make sure there are no unknown field names. + (let* ((fields (map (compose car syntax->datum) field+value)) + (unexpected (lset-difference eq? fields 'expected))) + (when (pair? unexpected) + (record-error 'name s "extraneous field initializers ~a" + unexpected))) + + #`(make-struct type 0 + #,@(map (lambda (field index) + (or (field-inherited-value field) + #`(struct-ref #,orig-record + #,index))) + 'expected + (iota (length 'expected))))) + + (define (thunked-field? f) + (memq (syntax->datum f) '#,thunked)) + + (define (delayed-field? f) + (memq (syntax->datum f) '#,delayed)) + + (define (wrap-field-value f value) + (cond ((thunked-field? f) + #`(lambda () #,value)) + ((delayed-field? f) + #`(delay #,value)) + (else value))) + + (define (field-bindings field+value) + ;; Return field to value bindings, for use in 'let*' below. + (map (lambda (field+value) + (syntax-case field+value () + ((field value) + #`(field + #,(wrap-field-value #'field #'value))))) + field+value)) + + (syntax-case s (inherit #,@fields) + ((_ (inherit orig-record) (field value) (... ...)) + #`(let* #,(field-bindings #'((field value) (... ...))) + #,(record-inheritance #'orig-record + #'((field value) (... ...))))) + ((_ (field value) (... ...)) + (let ((fields (map syntax->datum #'(field (... ...)))) + (dflt (map (match-lambda + ((f v) + (list (syntax->datum f) v))) + #'defaults))) + + (define (field-value f) + (or (and=> (find (lambda (x) + (eq? f (car (syntax->datum x)))) + #'((field value) (... ...))) + car) + (let ((value + (car (assoc-ref dflt (syntax->datum f))))) + (wrap-field-value f value)))) + + (let ((fields (append fields (map car dflt)))) + (cond ((lset= eq? fields 'expected) + #`(let* #,(field-bindings + #'((field value) (... ...))) + (ctor #,@(map field-value 'expected)))) + ((pair? (lset-difference eq? fields 'expected)) + (record-error 'name s + "extraneous field initializers ~a" + (lset-difference eq? fields + 'expected))) + (else + (record-error 'name s + "missing field initializers ~a" + (lset-difference eq? 'expected + fields))))))))))))) (define-syntax define-record-type* (lambda (s) -- cgit v1.2.3 From 2b226af1bc663fee6ebe14305add2974b9daedbc Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 26 Apr 2015 16:41:25 -0400 Subject: gnu: Add soil. * gnu/packages/gl.scm (soil): New variable. --- gnu/packages/gl.scm | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index afda76d792..62b02efd25 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -40,7 +40,8 @@ #:use-module (gnu packages fontutils) #:use-module (gnu packages guile) #:use-module (gnu packages video) - #:use-module (gnu packages xdisorg)) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages zip)) (define-public glu (package @@ -484,3 +485,45 @@ OpenGL graphics API.") (description "A library for handling OpenGL function pointer management.") (license l:x11))) + +(define-public soil + (package + (name "soil") + (version "1.0.7") + (source (origin + (method url-fetch) + ;; No versioned archive available. + (uri "http://www.lonesock.net/files/soil.zip") + (sha256 + (base32 + "00gpwp9dldzhsdhksjvmbhsd2ialraqbv6v6dpikdmpncj6mnc52")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no tests + #:phases (modify-phases %standard-phases + (delete 'configure) + (add-before 'build 'init-build + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (setenv "CFLAGS" "-fPIC") ; needed for shared library + ;; Use alternate Makefile + (copy-file "projects/makefile/alternate Makefile.txt" + "src/Makefile") + (chdir "src") + (substitute* '("Makefile") + (("INCLUDEDIR = /usr/include/SOIL") + (string-append "INCLUDEDIR = " out "/include/SOIL")) + (("LIBDIR = /usr/lib") + (string-append "LIBDIR = " out "/lib")) + ;; Remove these flags from 'install' commands. + (("-o root -g root") "")))))))) + (native-inputs + `(("unzip" ,unzip))) + (inputs + `(("mesa" ,mesa))) + (home-page "http://www.lonesock.net/soil.html") + (synopsis "OpenGL texture loading library") + (description + "SOIL is a tiny C library used primarily for uploading textures into +OpenGL.") + (license l:public-domain))) -- cgit v1.2.3 From e5326da4f4111e991fa695d7d7b566d384f82895 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 26 Apr 2015 17:46:57 -0400 Subject: gnu: Add libical. * gnu/packages/calendar.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/calendar.scm | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 gnu/packages/calendar.scm diff --git a/gnu-system.am b/gnu-system.am index f6c9947923..0644a649a3 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -173,6 +173,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/libffcall.scm \ gnu/packages/libffi.scm \ gnu/packages/libftdi.scm \ + gnu/packages/calendar.scm \ gnu/packages/libidn.scm \ gnu/packages/libphidget.scm \ gnu/packages/libreoffice.scm \ diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm new file mode 100644 index 0000000000..7e87fbbfe4 --- /dev/null +++ b/gnu/packages/calendar.scm @@ -0,0 +1,52 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 David Thompson +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages calendar) + #:use-module (gnu packages) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system cmake) + #:use-module (gnu packages icu4c) + #:use-module (gnu packages perl)) + +(define-public libical + (package + (name "libical") + (version "1.0.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/libical/libical/releases/download/v" + version "/libical-" version ".tar.gz")) + (sha256 + (base32 + "14lmjj63zyx88rf1z71l0v9ms4c2vpdhmixksjjxgywp5p2f7708")))) + (build-system cmake-build-system) + (arguments + '(#:tests? #f)) ; test suite appears broken + (native-inputs + `(("perl" ,perl))) + (inputs + `(("icu4c" ,icu4c))) + (home-page "https://libical.github.io/libical/") + (synopsis "iCalendar protocols and data formats implementation") + (description + "Libical is an implementation of the iCalendar protocols and protocol +data units.") + (license lgpl2.1))) -- cgit v1.2.3 From eb7c43c387c7a2aee7f8f72f2f68f050fa4996cd Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 26 Apr 2015 17:49:53 -0400 Subject: gnu: Add bluez. * gnu/packages/linux.scm (bluez): New variable. --- gnu/packages/linux.scm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 4658df72fa..9ff753d571 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -55,6 +55,8 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages docbook) #:use-module (gnu packages asciidoc) + #:use-module (gnu packages readline) + #:use-module (gnu packages calendar) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) @@ -2161,3 +2163,39 @@ arrays when needed.") system calls, important for the performance of databases and other advanced applications.") (license lgpl2.1+))) + +(define-public bluez + (package + (name "bluez") + (version "5.30") + (source (origin + (method url-fetch) + (uri (string-append + "https://www.kernel.org/pub/linux/bluetooth/bluez-" + version ".tar.xz")) + (sha256 + (base32 + "0b1qbnq1xzcdw5rajg9yyg31bf21jnff0n6gnf1snz89bbdllfhy")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags + (let ((out (assoc-ref %outputs "out"))) + (list "--disable-systemd" + ;; Install dbus/udev files to the correct location. + (string-append "--with-dbusconfdir=" out "/etc") + (string-append "--with-udevdir=" out "/lib/udev"))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("gettext" ,gnu-gettext))) + (inputs + `(("glib" ,glib) + ("dbus" ,dbus) + ("eudev" ,eudev) + ("libical" ,libical) + ("readline" ,readline))) + (home-page "http://www.bluez.org/") + (synopsis "Linux Bluetooth protocol stack") + (description + "BlueZ provides support for the core Bluetooth layers and protocols. It +is flexible, efficient and uses a modular implementation.") + (license gpl2+))) -- cgit v1.2.3 From 21481a284af7b7e9ad33fe072fde9d2ee3274017 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 5 May 2015 06:24:41 +0200 Subject: gnu: ardour: Add library dirs to RUNPATH. * gnu/packages/audio.scm (ardour)[arguments]: Add a build phase to add all library output directories to the rpath using linker flags. --- gnu/packages/audio.scm | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 6cba704b6d..af7533b8f9 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -151,7 +151,29 @@ namespace ARDOUR { const char* revision = \"3.5-403-gec2cb31\" ; }")))) (file-name (string-append name "-" version)))) (build-system waf-build-system) (arguments - `(#:tests? #f ; no check target + `(#:phases + (modify-phases %standard-phases + (add-after + 'unpack 'set-rpath-in-LDFLAGS + (lambda _ + (substitute* "wscript" + (("linker_flags = \\[\\]") + (string-append "linker_flags = [\"" + "-Wl,-rpath=" + (assoc-ref %outputs "out") + "/lib/ardour3/" ":" + (assoc-ref %outputs "out") + "/lib/ardour3/backends" ":" + (assoc-ref %outputs "out") + "/lib/ardour3/engines" ":" + (assoc-ref %outputs "out") + "/lib/ardour3/panners" ":" + (assoc-ref %outputs "out") + "/lib/ardour3/surfaces" ":" + (assoc-ref %outputs "out") + "/lib/ardour3/vamp" "\"]"))) + #t))) + #:tests? #f ; no check target #:python ,python-2)) (inputs `(("alsa-lib" ,alsa-lib) -- cgit v1.2.3 From 401f9a8b15b126dc6b8a357474f89ae7cb915601 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 5 May 2015 00:38:59 -0500 Subject: gnu: fltk: Fix undefined symbol errors for shared libraries. * gnu/packages/patches/fltk-shared-lib-defines.patch: New patch. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/fltk.scm (source)[patches]: New field. --- gnu-system.am | 1 + gnu/packages/fltk.scm | 5 ++- gnu/packages/patches/fltk-shared-lib-defines.patch | 51 ++++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/fltk-shared-lib-defines.patch diff --git a/gnu-system.am b/gnu-system.am index 0644a649a3..798188f7e7 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -418,6 +418,7 @@ dist_patch_DATA = \ gnu/packages/patches/findutils-absolute-paths.patch \ gnu/packages/patches/flashrom-use-libftdi1.patch \ gnu/packages/patches/flex-bison-tests.patch \ + gnu/packages/patches/fltk-shared-lib-defines.patch \ gnu/packages/patches/gawk-shell.patch \ gnu/packages/patches/gcc-arm-link-spec-fix.patch \ gnu/packages/patches/gcc-cross-environment-variables.patch \ diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm index 1ac1f2507e..cbd9d00e8c 100644 --- a/gnu/packages/fltk.scm +++ b/gnu/packages/fltk.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 John Darrington +;;; Copyright © 2015 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,6 +19,7 @@ (define-module (gnu packages fltk) #:use-module (guix licenses) + #:use-module (gnu packages) #:use-module (gnu packages xorg) #:use-module (gnu packages gl) #:use-module (guix packages) @@ -35,7 +37,8 @@ "/fltk-" version "-source.tar.gz")) (sha256 (base32 - "15qd7lkz5d5ynz70xhxhigpz3wns39v9xcf7ggkl0792syc8sfgq")))) + "15qd7lkz5d5ynz70xhxhigpz3wns39v9xcf7ggkl0792syc8sfgq")) + (patches (list (search-patch "fltk-shared-lib-defines.patch"))))) (build-system gnu-build-system) (inputs `(("libx11" ,libx11) diff --git a/gnu/packages/patches/fltk-shared-lib-defines.patch b/gnu/packages/patches/fltk-shared-lib-defines.patch new file mode 100644 index 0000000000..d36a50ff5e --- /dev/null +++ b/gnu/packages/patches/fltk-shared-lib-defines.patch @@ -0,0 +1,51 @@ +This patch from upstream revision 10588. + +--- fltk-1.3.3/src/Xutf8.h ++++ fltk-1.3.3/src/Xutf8.h +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + typedef struct { + int nb_font; +@@ -98,8 +99,8 @@ + XUtf8FontStruct *font_set, + unsigned int ucs); + +-int +-XGetUtf8FontAndGlyph( ++FL_EXPORT int ++fl_XGetUtf8FontAndGlyph( + XUtf8FontStruct *font_set, + unsigned int ucs, + XFontStruct **fnt, +--- fltk-1.3.3/src/gl_draw.cxx ++++ fltk-1.3.3/src/gl_draw.cxx +@@ -114,7 +114,7 @@ + for (int i = 0; i < 0x400; i++) { + XFontStruct *font = NULL; + unsigned short id; +- XGetUtf8FontAndGlyph(gl_fontsize->font, ii, &font, &id); ++ fl_XGetUtf8FontAndGlyph(gl_fontsize->font, ii, &font, &id); + if (font) glXUseXFont(font->fid, id, 1, gl_fontsize->listbase+ii); + ii++; + } +--- fltk-1.3.3/src/xutf8/utf8Wrap.c ++++ fltk-1.3.3/src/xutf8/utf8Wrap.c +@@ -816,10 +816,10 @@ + /** get the X font and glyph ID of a UCS char **/ + /*****************************************************************************/ + int +-XGetUtf8FontAndGlyph(XUtf8FontStruct *font_set, +- unsigned int ucs, +- XFontStruct **fnt, +- unsigned short *id) { ++fl_XGetUtf8FontAndGlyph(XUtf8FontStruct *font_set, ++ unsigned int ucs, ++ XFontStruct **fnt, ++ unsigned short *id) { + + /* int x; */ + int *encodings; /* encodings array */ -- cgit v1.2.3 From 7c3958e15a0ae5d733f1b49ea705c37203fc595a Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 4 May 2015 12:17:14 +0200 Subject: gnu: vcftools: Remove "-m64" from CFLAGS. * gnu/packages/bioinformatics.scm (vcftools): Explicitly set CFLAGS to remove "-m64" flag. --- gnu/packages/bioinformatics.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 7dc1bc48ce..1c5a5c2eeb 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -1658,6 +1658,7 @@ in terms of new algorithms.") (arguments `(#:tests? #f ; no "check" target #:make-flags (list + "CFLAGS=-O2" ; override "-m64" flag (string-append "PREFIX=" (assoc-ref %outputs "out")) (string-append "MANDIR=" (assoc-ref %outputs "out") "/share/man/man1")) -- cgit v1.2.3 From 099a2c70558b1372a64cb53a646986469cf9ba47 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 5 May 2015 10:59:26 +0200 Subject: environment: Use (guix search-paths). * guix/scripts/environment.scm: Use (guix search-paths). Fixes a regression introduced in e89431b. --- guix/scripts/environment.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index 80ae924410..b40750083c 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -22,6 +22,7 @@ #:use-module (guix derivations) #:use-module (guix packages) #:use-module (guix profiles) + #:use-module (guix search-paths) #:use-module (guix utils) #:use-module (guix monads) #:use-module (guix build utils) -- cgit v1.2.3 From c4e8d513f2048bd7ca3b57c73c2b217a349e7b46 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 5 May 2015 13:46:20 +0200 Subject: gnu-maintenance: 'gnu-package?' returns #t for R and for GNOME packages. Reported by John Darrington. * guix/gnu-maintenance.scm (gnu-package?)[mirror-type]: Add "gnome" to the list of GNU mirrors. Return #f for "cran". --- guix/gnu-maintenance.scm | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm index 0528e9f253..5cdda28bc7 100644 --- a/guix/gnu-maintenance.scm +++ b/guix/gnu-maintenance.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2010, 2011, 2012, 2013, 2014 Ludovic Courtès +;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2012, 2013 Nikita Karetnikov ;;; ;;; This file is part of GNU Guix. @@ -179,9 +179,18 @@ network to check in GNU's database." (define (mirror-type url) (let ((uri (string->uri url))) (and (eq? (uri-scheme uri) 'mirror) - (if (member (uri-host uri) '("gnu" "gnupg" "gcc")) - 'gnu - 'non-gnu)))) + (cond + ((member (uri-host uri) + '("gnu" "gnupg" "gcc" "gnome")) + ;; Definitely GNU. + 'gnu) + ((equal? (uri-host uri) "cran") + ;; Possibly GNU: mirror://cran could be either GNU R itself + ;; or a non-GNU package. + #f) + (else + ;; Definitely non-GNU. + 'non-gnu))))) (let ((url (and=> (package-source package) origin-uri)) (name (package-name package))) -- cgit v1.2.3 From 369149995cd4cedc59f1576a23c4df432e682402 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 5 May 2015 13:55:03 +0200 Subject: search-paths: 'evaluate-search-paths' can be passed a list of directories. * guix/search-paths.scm (evaluate-search-paths): Change 'directory' to 'directories', and adjust 'search-path-as-list' accordingly. * guix/scripts/package.scm (search-path-environment-variables): Adjust call accordingly. --- guix/scripts/package.scm | 3 ++- guix/search-paths.scm | 11 ++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 7f53af772f..15f3e13cc1 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -389,7 +389,8 @@ current settings and report only settings not already effective." ;; TODO: Offer the choice between exact/prefix/suffix. (environment-variable-definition variable value #:separator sep)))) - (evaluate-search-paths search-paths profile getenv)))) + (evaluate-search-paths search-paths (list profile) + getenv)))) (define (display-search-paths entries profile) "Display the search path environment variables that may need to be set for diff --git a/guix/search-paths.scm b/guix/search-paths.scm index 154e508d5b..9dfad89169 100644 --- a/guix/search-paths.scm +++ b/guix/search-paths.scm @@ -114,11 +114,12 @@ like `string-tokenize', but SEPARATOR is a string." (else (reverse (cons string result)))))) -(define* (evaluate-search-paths search-paths directory +(define* (evaluate-search-paths search-paths directories #:optional (getenv (const #f))) - "Evaluate SEARCH-PATHS, a list of search-path specifications, for DIRECTORY, -and return a list of specification/value pairs. Use GETENV to determine the -current settings and report only settings not already effective." + "Evaluate SEARCH-PATHS, a list of search-path specifications, for +DIRECTORIES, a list of directory names, and return a list of +specification/value pairs. Use GETENV to determine the current settings and +report only settings not already effective." (define search-path-definition (match-lambda ((and spec @@ -137,7 +138,7 @@ current settings and report only settings not already effective." ;; directories (see ;; .) (path (with-null-error-port - (search-path-as-list files (list directory) + (search-path-as-list files directories #:type type #:pattern pattern)))) (if (every (cut member <> values) path) -- cgit v1.2.3 From fdfa753c69acb00e4d79ee82f8772bde3e1a6cd6 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 5 May 2015 13:57:59 +0200 Subject: search-paths: Define the 'PATH' environment variable. * guix/search-paths.scm ($PATH): New variable. * guix/scripts/environment.scm (for-each-search-path): Use it. --- guix/scripts/environment.scm | 4 +--- guix/search-paths.scm | 9 +++++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index b40750083c..36d7beb348 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -57,9 +57,7 @@ path value is appended." (if (and current (not pure?)) (string-append value separator current) value))))) - (cons* (search-path-specification - (variable "PATH") - (files '("bin" "sbin"))) + (cons* $PATH (delete-duplicates (append-map package-native-search-paths inputs)))))) diff --git a/guix/search-paths.scm b/guix/search-paths.scm index 9dfad89169..89af1e1492 100644 --- a/guix/search-paths.scm +++ b/guix/search-paths.scm @@ -31,6 +31,8 @@ search-path-specification-file-type search-path-specification-file-pattern + $PATH + search-path-specification->sexp sexp->search-path-specification evaluate-search-paths @@ -58,6 +60,13 @@ (file-pattern search-path-specification-file-pattern ;#f | string (default #f))) +(define $PATH + ;; The 'PATH' variable. This variable is a bit special: it is not attached + ;; to any package in particular. + (search-path-specification + (variable "PATH") + (files '("bin" "sbin")))) + (define (search-path-specification->sexp spec) "Return an sexp representing SPEC, a . The sexp corresponds to the arguments expected by `set-path-environment-variable'." -- cgit v1.2.3 From b9ea6c6bf4948fd15876c915febad430e3177e42 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 5 May 2015 14:10:57 +0200 Subject: environment: Use 'evaluate-search-paths'. This allows 'guix environment' to correctly handle non-directory and/or pattern search-path specifications, such as that for 'XML_CATALOG_FILES'. * guix/scripts/environment.scm (for-each-search-path): Use 'evaluate-search-paths' instead of 'search-path-as-list' & co. --- guix/scripts/environment.scm | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index 36d7beb348..cf402d3677 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 David Thompson +;;; Copyright © 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,7 +26,6 @@ #:use-module (guix search-paths) #:use-module (guix utils) #:use-module (guix monads) - #:use-module (guix build utils) #:use-module (guix scripts build) #:use-module (gnu packages) #:use-module (ice-9 format) @@ -41,25 +41,24 @@ Use the output paths of DERIVATIONS to build each search path. When PURE? is #t, the existing search path value is ignored. Otherwise, the existing search path value is appended." - (let ((paths (append-map (lambda (drv) - (map (match-lambda - ((_ . output) - (derivation-output-path output))) - (derivation-outputs drv))) - derivations))) + (let ((directories (append-map (lambda (drv) + (map (match-lambda + ((_ . output) + (derivation-output-path output))) + (derivation-outputs drv))) + derivations)) + (paths (cons $PATH + (delete-duplicates + (append-map package-native-search-paths + inputs))))) (for-each (match-lambda - (($ - variable directories separator) - (let* ((current (getenv variable)) - (path (search-path-as-list directories paths)) - (value (list->search-path-as-string path separator))) - (proc variable - (if (and current (not pure?)) - (string-append value separator current) - value))))) - (cons* $PATH - (delete-duplicates - (append-map package-native-search-paths inputs)))))) + ((($ variable _ sep) . value) + (let ((current (getenv variable))) + (proc variable + (if (and current (not pure?)) + (string-append value sep current) + value))))) + (evaluate-search-paths paths directories)))) ;; Protect some env vars from purification. Borrowed from nix-shell. (define %precious-variables -- cgit v1.2.3 From 8e3a3bc290cf5de266979fdf9abb87891de4f0ab Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 5 May 2015 15:02:35 +0200 Subject: environment: Move iteration outside of 'for-each-search-path'. * guix/search-paths.scm (search-path-definition): New procedure. * guix/scripts/environment.scm (for-each-search-path): Rename to... (evaluate-input-search-paths): ... this. Remove 'proc' and 'pure?' parameters, and return directly the list of search-path/value pairs. (create-environment): Use 'for-each' and 'evaluate-input-search-paths' instead of 'for-each-search-path'. (show-search-paths): Use 'for-each', 'search-path-definition', and 'evaluate-search-paths' instead of 'for-each-search-path'. --- guix/scripts/environment.scm | 36 +++++++++++++++++++----------------- guix/search-paths.scm | 15 +++++++++++++-- 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index cf402d3677..e81532c7e4 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -36,11 +36,9 @@ #:use-module (srfi srfi-98) #:export (guix-environment)) -(define (for-each-search-path proc inputs derivations pure?) - "Apply PROC for each native search path in INPUTS in addition to 'PATH'. -Use the output paths of DERIVATIONS to build each search path. When PURE? is -#t, the existing search path value is ignored. Otherwise, the existing search -path value is appended." +(define (evaluate-input-search-paths inputs derivations) + "Evaluate the native search paths of INPUTS, a list of packages, of the +outputs of DERIVATIONS, and return a list of search-path/value pairs." (let ((directories (append-map (lambda (drv) (map (match-lambda ((_ . output) @@ -51,14 +49,7 @@ path value is appended." (delete-duplicates (append-map package-native-search-paths inputs))))) - (for-each (match-lambda - ((($ variable _ sep) . value) - (let ((current (getenv variable))) - (proc variable - (if (and current (not pure?)) - (string-append value sep current) - value))))) - (evaluate-search-paths paths directories)))) + (evaluate-search-paths paths directories))) ;; Protect some env vars from purification. Borrowed from nix-shell. (define %precious-variables @@ -78,15 +69,26 @@ as 'HOME' and 'USER' are left untouched." PURE? is #t, unset the variables in the current environment. Otherwise, augment existing enviroment variables with additional search paths." (when pure? (purify-environment)) - (for-each-search-path setenv inputs derivations pure?)) + (for-each (match-lambda + ((($ variable _ separator) . value) + (let ((current (getenv variable))) + (setenv variable + (if (and current (not pure?)) + (string-append value separator current) + value))))) + (evaluate-input-search-paths inputs derivations))) (define (show-search-paths inputs derivations pure?) "Display the needed search paths to build an environment that contains the packages within INPUTS. When PURE? is #t, do not augment existing environment variables with additional search paths." - (for-each-search-path (lambda (variable value) - (format #t "export ~a=\"~a\"~%" variable value)) - inputs derivations pure?)) + (for-each (match-lambda + ((search-path . value) + (display + (search-path-definition search-path value + #:kind (if pure? 'exact 'prefix))) + (newline))) + (evaluate-input-search-paths inputs derivations))) (define (show-help) (display (_ "Usage: guix environment [OPTION]... PACKAGE... diff --git a/guix/search-paths.scm b/guix/search-paths.scm index 89af1e1492..ee7e9a131f 100644 --- a/guix/search-paths.scm +++ b/guix/search-paths.scm @@ -36,7 +36,8 @@ search-path-specification->sexp sexp->search-path-specification evaluate-search-paths - environment-variable-definition)) + environment-variable-definition + search-path-definition)) ;;; Commentary: ;;; @@ -160,7 +161,7 @@ report only settings not already effective." #:key (kind 'exact) (separator ":")) - "Return a the definition of VARIABLE to VALUE in Bash syntax: + "Return a the definition of VARIABLE to VALUE in Bash syntax. KIND can be either 'exact (return the definition of VARIABLE=VALUE), 'prefix (return the definition where VALUE is added as a prefix to VARIABLE's @@ -178,4 +179,14 @@ prefix/suffix." (format #f "export ~a=\"$~a${~a:+~a}~a\"" variable variable variable separator value)))) +(define* (search-path-definition search-path value + #:key (kind 'exact)) + "Similar to 'environment-variable-definition', but applied to a +." + (match search-path + (($ variable _ separator) + (environment-variable-definition variable value + #:kind kind + #:separator separator)))) + ;;; search-paths.scm ends here -- cgit v1.2.3 From ae3bded68efaeac6fc85c9ee97f03155d4b7df5d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 5 May 2015 17:43:19 +0200 Subject: gnu: gpgme: Build against GnuPG 2.0. * gnu/packages/gnupg.scm (gpgme)[inputs]: Change to GNUPG-2.0. --- gnu/packages/gnupg.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index a9f1f12a19..4065c0f04d 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -300,7 +300,7 @@ libskba (working with X.509 certificates and CMS data).") ;; Needs to be propagated because gpgme.h includes gpg-error.h. `(("libgpg-error" ,libgpg-error))) (inputs - `(("gnupg" ,gnupg) + `(("gnupg" ,gnupg-2.0) ("libassuan" ,libassuan))) (arguments '(#:make-flags '("GPG=gpg2"))) (home-page "http://www.gnupg.org/related_software/gpgme/") -- cgit v1.2.3 From 4bfeb0ca74fca75febe62b8e059b0c5a6ddd622f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 5 May 2015 21:39:18 +0200 Subject: gnu: mozjs: Mark as unsupported on mips64el-linux. * gnu/packages/gnuzilla.scm (mozjs)[supported-systems]: New field. --- gnu/packages/gnuzilla.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 522404f280..8031a6c4ce 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -85,7 +85,12 @@ (synopsis "Mozilla javascript engine") (description "SpiderMonkey is Mozilla's JavaScript engine written in C/C++.") - (license license:mpl2.0))) ; and others for some files + (license license:mpl2.0) ;and others for some files + + ;; On mips64el, this fails to build with several "control reaches end of + ;; non-void function" errors (see + ;; .) + (supported-systems (delete "mips64el-linux" %supported-systems)))) (define-public nspr (package -- cgit v1.2.3 From ef80cceddc3646a299d3b7c30e9b32ad89cca021 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 5 May 2015 22:00:53 +0200 Subject: gnu: wxwidgets-2: Add $libdir to RUNPATH. * gnu/packages/wxwidgets.scm (wxwidgets-2)[arguments]: Add #:make-flags, as for WXWIDGETS. --- gnu/packages/wxwidgets.scm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm index ee270ff105..b49fb2fe84 100644 --- a/gnu/packages/wxwidgets.scm +++ b/gnu/packages/wxwidgets.scm @@ -96,5 +96,8 @@ and many other languages.") (arguments `(#:configure-flags '("--enable-unicode" "--with-regex=sys" "--with-sdl") + #:make-flags + (list (string-append "LDFLAGS=-Wl,-rpath=" + (assoc-ref %outputs "out") "/lib")) ;; No 'check' target. #:tests? #f)))) -- cgit v1.2.3 From 9ca3323608f183814a9313a08df3415075638aaf Mon Sep 17 00:00:00 2001 From: David Hashe Date: Tue, 5 May 2015 01:48:28 -0500 Subject: gnu: webkitgtk: Fix compilation on x86_64. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/webkit.scm (webkitgtk): Move library install path from lib64 to lib. Signed-off-by: Ludovic Courtès --- gnu/packages/webkit.scm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index e6de8ab0df..41b9b9a839 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Sou Bunnbu +;;; Copyright © 2015 David Hashe ;;; ;;; This file is part of GNU Guix. ;;; @@ -57,7 +58,12 @@ (arguments '(#:tests? #f ; no tests #:build-type "Release" ; turn off debugging symbols to save space - #:configure-flags '("-DPORT=GTK"))) + #:configure-flags (list + "-DPORT=GTK" + (string-append ; uses lib64 by default + "-DLIB_INSTALL_DIR=" + (assoc-ref %outputs "out") "/lib")) + #:make-flags '("lib=lib"))) ; uses lib64 by default (native-inputs `(("bison" ,bison) ("gettext" ,gnu-gettext) -- cgit v1.2.3 From 6f428fda0a23366df9bd1c6329d7aad33f2407f0 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 5 May 2015 15:09:33 -0500 Subject: gnu: perl-json-any: Fix typo in source uri scheme. * gnu/packages/perl.scm (perl-json-any)[source]: Fix typo. --- gnu/packages/perl.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 80c476b2b1..3bfe68d96b 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -2572,7 +2572,7 @@ versa using either JSON::XS or JSON::PP.") (source (origin (method url-fetch) - (uri (string-append "mirros://cpan/authors/id/E/ET/ETHER/" + (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/" "JSON-Any-" version ".tar.gz")) (sha256 (base32 -- cgit v1.2.3 From 8a629613d1eadb0f3f6fb1e5ce65b484745b30a3 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 5 May 2015 11:01:06 -0500 Subject: gnu: hop: Fix RPATHs. * gnu/packages/scheme.scm (inputs): Move patchelf input to... (native-inputs): ...here. New field. (arguments)[phases]: Use augment-rpath for patch-rpath phase. --- gnu/packages/scheme.scm | 48 +++++++++++++++++------------------------------- 1 file changed, 17 insertions(+), 31 deletions(-) diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index 77d0d846c8..ae859791c1 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -238,7 +238,7 @@ Scheme and C programs and between Scheme and Java programs.") (patches (list (search-patch "hop-bigloo-4.0b.patch"))))) (build-system gnu-build-system) (arguments - '(#:phases + `(#:phases (alist-replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) @@ -249,41 +249,27 @@ Scheme and C programs and between Scheme and Java programs.") (alist-cons-after 'strip 'patch-rpath (lambda* (#:key outputs #:allow-other-keys) - ;; Patch the RPATH of every installed library to point to $out/lib - ;; instead of $TMPDIR. Note that "patchelf --set-rpath" produces - ;; invalid binaries when used before stripping. - (let ((out (assoc-ref outputs "out")) - (tmpdir (getcwd))) - (every (lambda (lib) - (let* ((in (open-pipe* OPEN_READ "patchelf" - "--print-rpath" lib)) - (rpath (read-line in))) - (and (zero? (close-pipe in)) - (let ((rpath* (regexp-substitute/global - #f (regexp-quote tmpdir) rpath - 'pre out 'post))) - (or (equal? rpath rpath*) - (begin - (format #t "~a: changing RPATH from `~a' to `~a'~%" - lib rpath rpath*) - (zero? - (system* "patchelf" "--set-rpath" - rpath* lib)))))))) - (append (find-files (string-append out "/bin") - ".*") - (find-files (string-append out "/lib") - "\\.so$"))))) + ;; Add $out/lib to the RPATH of every installed library and + ;; executable. Note that "patchelf --set-rpath" produces invalid + ;; binaries when used before stripping. + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + (with-directory-excursion out + (every (cut augment-rpath <> lib) + (append (find-files "bin" ".*") + (find-files "lib" "\\.so$")))))) %standard-phases)) #:tests? #f ; no test suite #:modules ((guix build gnu-build-system) (guix build utils) - (ice-9 popen) - (ice-9 regex) - (ice-9 rdelim) - (srfi srfi-1)))) + (guix build rpath) + (srfi srfi-26) + (srfi srfi-1)) + #:imported-modules (,@%gnu-build-system-modules + (guix build rpath)))) + (native-inputs `(("patchelf" ,patchelf))) (inputs `(("bigloo" ,bigloo) - ("which" ,which) - ("patchelf" ,patchelf))) + ("which" ,which))) (home-page "http://hop.inria.fr/") (synopsis "Multi-tier programming language for the Web 2.0") (description -- cgit v1.2.3 From fe1a39d319258c26fb9bcedc2fd337a9e2f40df9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 1 May 2015 19:36:10 +0200 Subject: services: Group desktop services in (gnu services desktop). * gnu/services/colord.scm, gnu/services/dbus.scm, gnu/services/upower.scm: Remove. * gnu/services/desktop.scm: New file, with contents taken from the above files. * gnu-system.am (GNU_SYSTEM_MODULES): Adjust accordingly. * doc/guix.texi (Desktop Services): New section. (Various Services): Move colord-service and upower-service from here to "Desktop Services". --- doc/guix.texi | 56 +++++++--- gnu-system.am | 4 +- gnu/services/colord.scm | 72 ------------- gnu/services/dbus.scm | 127 ---------------------- gnu/services/desktop.scm | 270 +++++++++++++++++++++++++++++++++++++++++++++++ gnu/services/upower.scm | 122 --------------------- 6 files changed, 310 insertions(+), 341 deletions(-) delete mode 100644 gnu/services/colord.scm delete mode 100644 gnu/services/dbus.scm create mode 100644 gnu/services/desktop.scm delete mode 100644 gnu/services/upower.scm diff --git a/doc/guix.texi b/doc/guix.texi index d9db408e57..8241cb07bf 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4641,6 +4641,7 @@ declaration. * Base Services:: Essential system services. * Networking Services:: Network setup, SSH daemon, etc. * X Window:: Graphical display. +* Desktop Services:: D-Bus and desktop services. * Various Services:: Other services. @end menu @@ -4985,27 +4986,29 @@ appropriate screen resolution; otherwise, it must be a list of resolutions---e.g., @code{((1024 768) (640 480))}. @end deffn -@node Various Services -@subsubsection Various Services +@node Desktop Services +@subsubsection Desktop Services -The @code{(gnu services lirc)} module provides the following service. +The @code{(gnu services desktop)} module provides services that are +usually useful in the context of a ``desktop'' setup---that is, on a +machine running a graphical display server, possibly with graphical user +interfaces, etc. -@deffn {Monadic Procedure} lirc-service [#:lirc lirc] @ - [#:device #f] [#:driver #f] [#:config-file #f] @ - [#:extra-options '()] -Return a service that runs @url{http://www.lirc.org,LIRC}, a daemon that -decodes infrared signals from remote controls. +@deffn {Monadic Procedure} dbus-service @var{services} @ + [#:dbus @var{dbus}] +Return a service that runs the ``system bus'', using @var{dbus}, with +support for @var{services}. -Optionally, @var{device}, @var{driver} and @var{config-file} -(configuration file name) may be specified. See @command{lircd} manual -for details. +@uref{http://dbus.freedesktop.org/, D-Bus} is an inter-process communication +facility. Its system bus is used to allow system services to communicate +and be notified of system-wide events. -Finally, @var{extra-options} is a list of additional command-line options -passed to @command{lircd}. +@var{services} must be a list of packages that provide an +@file{etc/dbus-1/system.d} directory containing additional D-Bus configuration +and policy files. For example, to allow avahi-daemon to use the system bus, +@var{services} must be equal to @code{(list avahi)}. @end deffn -@code{(gnu services upower)} provides a power-management daemon: - @deffn {Monadic Procedure} upower-service [#:upower @var{upower}] @ [#:watts-up-pro? #f] @ [#:poll-batteries? #t] @ @@ -5025,8 +5028,6 @@ levels, with the given configuration settings. It implements the GNOME. @end deffn -@code{(gnu services colord)} provides a color management service: - @deffn {Monadic Procedure} colord-service [#:colord @var{colord}] Return a service that runs @command{colord}, a system service with a D-Bus interface to manage the color profiles of input and output devices such as @@ -5035,6 +5036,27 @@ tool. See @uref{http://www.freedesktop.org/software/colord/, the colord web site} for more information. @end deffn + +@node Various Services +@subsubsection Various Services + +The @code{(gnu services lirc)} module provides the following service. + +@deffn {Monadic Procedure} lirc-service [#:lirc lirc] @ + [#:device #f] [#:driver #f] [#:config-file #f] @ + [#:extra-options '()] +Return a service that runs @url{http://www.lirc.org,LIRC}, a daemon that +decodes infrared signals from remote controls. + +Optionally, @var{device}, @var{driver} and @var{config-file} +(configuration file name) may be specified. See @command{lircd} manual +for details. + +Finally, @var{extra-options} is a list of additional command-line options +passed to @command{lircd}. +@end deffn + + @node Setuid Programs @subsection Setuid Programs diff --git a/gnu-system.am b/gnu-system.am index 798188f7e7..9ffb76ee5d 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -329,13 +329,11 @@ GNU_SYSTEM_MODULES = \ gnu/services.scm \ gnu/services/avahi.scm \ gnu/services/base.scm \ - gnu/services/colord.scm \ - gnu/services/dbus.scm \ + gnu/services/desktop.scm \ gnu/services/dmd.scm \ gnu/services/lirc.scm \ gnu/services/networking.scm \ gnu/services/ssh.scm \ - gnu/services/upower.scm \ gnu/services/xorg.scm \ \ gnu/system.scm \ diff --git a/gnu/services/colord.scm b/gnu/services/colord.scm deleted file mode 100644 index 588436002c..0000000000 --- a/gnu/services/colord.scm +++ /dev/null @@ -1,72 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015 Ludovic Courtès -;;; Copyright © 2015 Andy Wingo -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see . - -(define-module (gnu services colord) - #:use-module (gnu services) - #:use-module (gnu system shadow) - #:use-module (gnu packages gnome) - #:use-module (ice-9 match) - #:use-module (guix monads) - #:use-module (guix store) - #:use-module (guix gexp) - #:export (colord-service)) - -;;; Commentary: -;;; -;;; This module provides service definitions for the colord color management -;;; service. -;;; -;;; Code: - -(define* (colord-service #:key (colord colord)) - "Return a service that runs @command{colord}, a system service with a D-Bus -interface to manage the color profiles of input and output devices such as -screens and scanners. It is notably used by the GNOME Color Manager graphical -tool. See @uref{http://www.freedesktop.org/software/colord/, the colord web -site} for more information." - (with-monad %store-monad - (return - (service - (documentation "Run the colord color management service.") - (provision '(colord-daemon)) - (requirement '(dbus-system udev)) - - (start #~(make-forkexec-constructor - (list (string-append #$colord "/libexec/colord")))) - (stop #~(make-kill-destructor)) - (activate #~(begin - (use-modules (guix build utils)) - (mkdir-p "/var/lib/colord") - (let ((user (getpwnam "colord"))) - (chown "/var/lib/colord" - (passwd:uid user) (passwd:gid user))))) - - (user-groups (list (user-group - (name "colord") - (system? #t)))) - (user-accounts (list (user-account - (name "colord") - (group "colord") - (system? #t) - (comment "colord daemon user") - (home-directory "/var/empty") - (shell - "/run/current-system/profile/sbin/nologin")))))))) - -;;; colord.scm ends here diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm deleted file mode 100644 index 8f3b350951..0000000000 --- a/gnu/services/dbus.scm +++ /dev/null @@ -1,127 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015 Ludovic Courtès -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see . - -(define-module (gnu services dbus) - #:use-module (gnu services) - #:use-module (gnu system shadow) - #:use-module (gnu packages glib) - #:use-module (gnu packages admin) - #:use-module (guix monads) - #:use-module (guix store) - #:use-module (guix gexp) - #:export (dbus-service)) - -;;; Commentary: -;;; -;;; This module supports the configuration of the D-Bus message bus -;;; (http://dbus.freedesktop.org/). D-Bus is an inter-process communication -;;; facility. Its "system bus" is used to allow system services to -;;; communicate and be notified of system-wide events. -;;; -;;; Code: - -(define (dbus-configuration-directory dbus services) - "Return a configuration directory for @var{dbus} that includes the -@code{etc/dbus-1/system.d} directories of each package listed in -@var{services}." - (define build - #~(begin - (use-modules (sxml simple) - (srfi srfi-1)) - - (define (services->sxml services) - ;; Return the SXML 'includedir' clauses for DIRS. - `(busconfig - ,@(append-map (lambda (dir) - `((includedir - ,(string-append dir "/etc/dbus-1/system.d")) - (servicedir ;for '.service' files - ,(string-append dir "/share/dbus-1/services")))) - services))) - - (mkdir #$output) - (copy-file (string-append #$dbus "/etc/dbus-1/system.conf") - (string-append #$output "/system.conf")) - - ;; The default 'system.conf' has an clause for - ;; 'system.d', so create it. - (mkdir (string-append #$output "/system.d")) - - ;; 'system-local.conf' is automatically included by the default - ;; 'system.conf', so this is where we stuff our own things. - (call-with-output-file (string-append #$output "/system-local.conf") - (lambda (port) - (sxml->xml (services->sxml (list #$@services)) - port))))) - - (gexp->derivation "dbus-configuration" build)) - -(define* (dbus-service services #:key (dbus dbus)) - "Return a service that runs the system bus, using @var{dbus}, with support -for @var{services}. - -@var{services} must be a list of packages that provide an -@file{etc/dbus-1/system.d} directory containing additional D-Bus configuration -and policy files. For example, to allow avahi-daemon to use the system bus, -@var{services} must be equal to @code{(list avahi)}." - (mlet %store-monad ((conf (dbus-configuration-directory dbus services))) - (return - (service - (documentation "Run the D-Bus system daemon.") - (provision '(dbus-system)) - (requirement '(user-processes)) - (start #~(make-forkexec-constructor - (list (string-append #$dbus "/bin/dbus-daemon") - "--nofork" - (string-append "--config-file=" #$conf "/system.conf")))) - (stop #~(make-kill-destructor)) - (user-groups (list (user-group - (name "messagebus") - (system? #t)))) - (user-accounts (list (user-account - (name "messagebus") - (group "messagebus") - (system? #t) - (comment "D-Bus system bus user") - (home-directory "/var/run/dbus") - (shell - #~(string-append #$shadow "/sbin/nologin"))))) - (activate #~(begin - (use-modules (guix build utils)) - - (mkdir-p "/var/run/dbus") - - (let ((user (getpwnam "messagebus"))) - (chown "/var/run/dbus" - (passwd:uid user) (passwd:gid user))) - - (unless (file-exists? "/etc/machine-id") - (format #t "creating /etc/machine-id...~%") - (let ((prog (string-append #$dbus "/bin/dbus-uuidgen"))) - ;; XXX: We can't use 'system' because the initrd's - ;; guile system(3) only works when 'sh' is in $PATH. - (let ((pid (primitive-fork))) - (if (zero? pid) - (call-with-output-file "/etc/machine-id" - (lambda (port) - (close-fdes 1) - (dup2 (port->fdes port) 1) - (execl prog))) - (waitpid pid))))))))))) - -;;; dbus.scm ends here diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm new file mode 100644 index 0000000000..5945f7af18 --- /dev/null +++ b/gnu/services/desktop.scm @@ -0,0 +1,270 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014, 2015 Ludovic Courtès +;;; Copyright © 2015 Andy Wingo +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu services desktop) + #:use-module (gnu services) + #:use-module (gnu system shadow) + #:use-module (gnu packages glib) + #:use-module (gnu packages admin) + #:use-module (gnu packages gnome) + #:use-module (guix monads) + #:use-module (guix store) + #:use-module (guix gexp) + #:use-module (ice-9 match) + #:export (dbus-service + upower-service + colord-service)) + +;;; Commentary: +;;; +;;; This module contains service definitions for a "desktop" environment. +;;; +;;; Code: + + +;;; +;;; D-Bus. +;;; + +(define (dbus-configuration-directory dbus services) + "Return a configuration directory for @var{dbus} that includes the +@code{etc/dbus-1/system.d} directories of each package listed in +@var{services}." + (define build + #~(begin + (use-modules (sxml simple) + (srfi srfi-1)) + + (define (services->sxml services) + ;; Return the SXML 'includedir' clauses for DIRS. + `(busconfig + ,@(append-map (lambda (dir) + `((includedir + ,(string-append dir "/etc/dbus-1/system.d")) + (servicedir ;for '.service' files + ,(string-append dir "/share/dbus-1/services")))) + services))) + + (mkdir #$output) + (copy-file (string-append #$dbus "/etc/dbus-1/system.conf") + (string-append #$output "/system.conf")) + + ;; The default 'system.conf' has an clause for + ;; 'system.d', so create it. + (mkdir (string-append #$output "/system.d")) + + ;; 'system-local.conf' is automatically included by the default + ;; 'system.conf', so this is where we stuff our own things. + (call-with-output-file (string-append #$output "/system-local.conf") + (lambda (port) + (sxml->xml (services->sxml (list #$@services)) + port))))) + + (gexp->derivation "dbus-configuration" build)) + +(define* (dbus-service services #:key (dbus dbus)) + "Return a service that runs the \"system bus\", using @var{dbus}, with +support for @var{services}. + +@uref{http://dbus.freedesktop.org/, D-Bus} is an inter-process communication +facility. Its system bus is used to allow system services to communicate and +be notified of system-wide events. + +@var{services} must be a list of packages that provide an +@file{etc/dbus-1/system.d} directory containing additional D-Bus configuration +and policy files. For example, to allow avahi-daemon to use the system bus, +@var{services} must be equal to @code{(list avahi)}." + (mlet %store-monad ((conf (dbus-configuration-directory dbus services))) + (return + (service + (documentation "Run the D-Bus system daemon.") + (provision '(dbus-system)) + (requirement '(user-processes)) + (start #~(make-forkexec-constructor + (list (string-append #$dbus "/bin/dbus-daemon") + "--nofork" + (string-append "--config-file=" #$conf "/system.conf")))) + (stop #~(make-kill-destructor)) + (user-groups (list (user-group + (name "messagebus") + (system? #t)))) + (user-accounts (list (user-account + (name "messagebus") + (group "messagebus") + (system? #t) + (comment "D-Bus system bus user") + (home-directory "/var/run/dbus") + (shell + #~(string-append #$shadow "/sbin/nologin"))))) + (activate #~(begin + (use-modules (guix build utils)) + + (mkdir-p "/var/run/dbus") + + (let ((user (getpwnam "messagebus"))) + (chown "/var/run/dbus" + (passwd:uid user) (passwd:gid user))) + + (unless (file-exists? "/etc/machine-id") + (format #t "creating /etc/machine-id...~%") + (let ((prog (string-append #$dbus "/bin/dbus-uuidgen"))) + ;; XXX: We can't use 'system' because the initrd's + ;; guile system(3) only works when 'sh' is in $PATH. + (let ((pid (primitive-fork))) + (if (zero? pid) + (call-with-output-file "/etc/machine-id" + (lambda (port) + (close-fdes 1) + (dup2 (port->fdes port) 1) + (execl prog))) + (waitpid pid))))))))))) + + +;;; +;;; Upower D-Bus service. +;;; + +(define* (upower-configuration-file #:key watts-up-pro? poll-batteries? + ignore-lid? use-percentage-for-policy? + percentage-low percentage-critical + percentage-action time-low + time-critical time-action + critical-power-action) + "Return an upower-daemon configuration file." + (define (bool value) + (if value "true\n" "false\n")) + + (text-file "UPower.conf" + (string-append + "[UPower]\n" + "EnableWattsUpPro=" (bool watts-up-pro?) + "NoPollBatteries=" (bool (not poll-batteries?)) + "IgnoreLid=" (bool ignore-lid?) + "UsePercentageForPolicy=" (bool use-percentage-for-policy?) + "PercentageLow=" (number->string percentage-low) "\n" + "PercentageCritical=" (number->string percentage-critical) "\n" + "PercentageAction=" (number->string percentage-action) "\n" + "TimeLow=" (number->string time-low) "\n" + "TimeCritical=" (number->string time-critical) "\n" + "TimeAction=" (number->string time-action) "\n" + "CriticalPowerAction=" (match critical-power-action + ('hybrid-sleep "HybridSleep") + ('hibernate "Hibernate") + ('power-off "PowerOff")) + "\n"))) + +(define* (upower-service #:key (upower upower) + (watts-up-pro? #f) + (poll-batteries? #t) + (ignore-lid? #f) + (use-percentage-for-policy? #f) + (percentage-low 10) + (percentage-critical 3) + (percentage-action 2) + (time-low 1200) + (time-critical 300) + (time-action 120) + (critical-power-action 'hybrid-sleep)) + "Return a service that runs @uref{http://upower.freedesktop.org/, +@command{upowerd}}, a system-wide monitor for power consumption and battery +levels, with the given configuration settings. It implements the +@code{org.freedesktop.UPower} D-Bus interface, and is notably used by GNOME." + (mlet %store-monad ((config (upower-configuration-file + #:watts-up-pro? watts-up-pro? + #:poll-batteries? poll-batteries? + #:ignore-lid? ignore-lid? + #:use-percentage-for-policy? use-percentage-for-policy? + #:percentage-low percentage-low + #:percentage-critical percentage-critical + #:percentage-action percentage-action + #:time-low time-low + #:time-critical time-critical + #:time-action time-action + #:critical-power-action critical-power-action))) + (return + (service + (documentation "Run the UPower power and battery monitor.") + (provision '(upower-daemon)) + (requirement '(dbus-system udev)) + + (start #~(make-forkexec-constructor + (list (string-append #$upower "/libexec/upowerd")) + #:environment-variables + (list (string-append "UPOWER_CONF_FILE_NAME=" #$config)))) + (stop #~(make-kill-destructor)) + (activate #~(begin + (use-modules (guix build utils)) + (mkdir-p "/var/lib/upower") + (let ((user (getpwnam "upower"))) + (chown "/var/lib/upower" + (passwd:uid user) (passwd:gid user))))) + + (user-groups (list (user-group + (name "upower") + (system? #t)))) + (user-accounts (list (user-account + (name "upower") + (group "upower") + (system? #t) + (comment "UPower daemon user") + (home-directory "/var/empty") + (shell + #~(string-append #$shadow "/sbin/nologin"))))))))) + + +;;; +;;; Colord D-Bus service. +;;; + +(define* (colord-service #:key (colord colord)) + "Return a service that runs @command{colord}, a system service with a D-Bus +interface to manage the color profiles of input and output devices such as +screens and scanners. It is notably used by the GNOME Color Manager graphical +tool. See @uref{http://www.freedesktop.org/software/colord/, the colord web +site} for more information." + (with-monad %store-monad + (return + (service + (documentation "Run the colord color management service.") + (provision '(colord-daemon)) + (requirement '(dbus-system udev)) + + (start #~(make-forkexec-constructor + (list (string-append #$colord "/libexec/colord")))) + (stop #~(make-kill-destructor)) + (activate #~(begin + (use-modules (guix build utils)) + (mkdir-p "/var/lib/colord") + (let ((user (getpwnam "colord"))) + (chown "/var/lib/colord" + (passwd:uid user) (passwd:gid user))))) + + (user-groups (list (user-group + (name "colord") + (system? #t)))) + (user-accounts (list (user-account + (name "colord") + (group "colord") + (system? #t) + (comment "colord daemon user") + (home-directory "/var/empty") + (shell + #~(string-append #$shadow "/sbin/nologin"))))))))) + +;;; desktop.scm ends here diff --git a/gnu/services/upower.scm b/gnu/services/upower.scm deleted file mode 100644 index 3654c812f1..0000000000 --- a/gnu/services/upower.scm +++ /dev/null @@ -1,122 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015 Andy Wingo -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see . - -(define-module (gnu services upower) - #:use-module (gnu services) - #:use-module (gnu system shadow) - #:use-module (gnu packages gnome) - #:use-module (ice-9 match) - #:use-module (guix monads) - #:use-module (guix store) - #:use-module (guix gexp) - #:export (upower-service)) - -;;; Commentary: -;;; -;;; This module provides service definitions for the UPower power and battery -;;; monitoring service. -;;; -;;; Code: - -(define* (configuration-file #:key watts-up-pro? poll-batteries? ignore-lid? - use-percentage-for-policy? percentage-low - percentage-critical percentage-action - time-low time-critical time-action - critical-power-action) - "Return an upower-daemon configuration file." - (define (bool value) - (if value "true\n" "false\n")) - - (text-file "UPower.conf" - (string-append - "[UPower]\n" - "EnableWattsUpPro=" (bool watts-up-pro?) - "NoPollBatteries=" (bool (not poll-batteries?)) - "IgnoreLid=" (bool ignore-lid?) - "UsePercentageForPolicy=" (bool use-percentage-for-policy?) - "PercentageLow=" (number->string percentage-low) "\n" - "PercentageCritical=" (number->string percentage-critical) "\n" - "PercentageAction=" (number->string percentage-action) "\n" - "TimeLow=" (number->string time-low) "\n" - "TimeCritical=" (number->string time-critical) "\n" - "TimeAction=" (number->string time-action) "\n" - "CriticalPowerAction=" (match critical-power-action - ('hybrid-sleep "HybridSleep") - ('hibernate "Hibernate") - ('power-off "PowerOff")) - "\n"))) - -(define* (upower-service #:key (upower upower) - (watts-up-pro? #f) - (poll-batteries? #t) - (ignore-lid? #f) - (use-percentage-for-policy? #f) - (percentage-low 10) - (percentage-critical 3) - (percentage-action 2) - (time-low 1200) - (time-critical 300) - (time-action 120) - (critical-power-action 'hybrid-sleep)) - "Return a service that runs @uref{http://upower.freedesktop.org/, -@command{upowerd}}, a system-wide monitor for power consumption and battery -levels, with the given configuration settings. It implements the -@code{org.freedesktop.UPower} D-Bus interface, and is notably used by GNOME." - (mlet %store-monad ((config (configuration-file - #:watts-up-pro? watts-up-pro? - #:poll-batteries? poll-batteries? - #:ignore-lid? ignore-lid? - #:use-percentage-for-policy? use-percentage-for-policy? - #:percentage-low percentage-low - #:percentage-critical percentage-critical - #:percentage-action percentage-action - #:time-low time-low - #:time-critical time-critical - #:time-action time-action - #:critical-power-action critical-power-action))) - (return - (service - (documentation "Run the UPower power and battery monitor.") - (provision '(upower-daemon)) - (requirement '(dbus-system udev)) - - (start #~(make-forkexec-constructor - (list (string-append #$upower "/libexec/upowerd")) - #:environment-variables - (list (string-append "UPOWER_CONF_FILE_NAME=" #$config)))) - (stop #~(make-kill-destructor)) - (activate #~(begin - (use-modules (guix build utils)) - (mkdir-p "/var/lib/upower") - (let ((user (getpwnam "upower"))) - (chown "/var/lib/upower" - (passwd:uid user) (passwd:gid user))))) - - (user-groups (list (user-group - (name "upower") - (system? #t)))) - (user-accounts (list (user-account - (name "upower") - (group "upower") - (system? #t) - (comment "UPower daemon user") - (home-directory "/var/empty") - (shell - "/run/current-system/profile/sbin/nologin")))))))) - -;;; upower.scm ends here -- cgit v1.2.3 From 68267c63674cb5e7555c828639db297c9a5d60a0 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 5 May 2015 22:44:16 +0200 Subject: gnu: librevenge, libwpd, libwpg: Fix 'license' field. * gnu/packages/libreoffice.scm (librevenge, libwpd, libwpg): Fix 'license' field to be a list of . --- gnu/packages/libreoffice.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index a832710255..481ab21fc6 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -113,7 +113,7 @@ CSV, CSS and XML.") (description "Librevenge is a base library for writing document import filters. It has interfaces for text documents, vector graphics, spreadsheets and presentations.") - (license '(mpl2.0 lgpl2.1+)))) ; dually licensed + (license (list mpl2.0 lgpl2.1+)))) ;dual licensed (define-public libwpd (package @@ -138,7 +138,7 @@ spreadsheets and presentations.") (description "Libwpd is a C++ library designed to help process WordPerfect documents. It is most commonly used to import such documents into other word processors.") - (license '(mpl2.0 lgpl2.1+)))) ; dually licensed + (license (list mpl2.0 lgpl2.1+)))) ;dual licensed (define-public libe-book (package @@ -198,4 +198,4 @@ ZVR (simple compressed text format).") (synopsis "Library and tools for the WordPerfect Graphics format") (description "The libwpg project provides a library and tools for working with graphics in the WPG (WordPerfect Graphics) format.") - (license '(mpl2.0 lgpl2.1+)))) ; dually licensed + (license (list mpl2.0 lgpl2.1+)))) ;dual licensed -- cgit v1.2.3 From 356a62b8e650867d107773120c33531ea429f189 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 5 May 2015 23:46:54 +0200 Subject: activation: Make user copies of the skeletons writable. * gnu/build/activation.scm (make-file-writable, make-skeletons-writable): New procedures. (copy-account-skeletons): Call 'make-file-writable' after 'copy-file'. (add-user): Add call to 'make-skeletons-writable'. --- gnu/build/activation.scm | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm index 0c60355a1c..8697d9d16d 100644 --- a/gnu/build/activation.scm +++ b/gnu/build/activation.scm @@ -78,6 +78,11 @@ (define (dot-or-dot-dot? file) (member file '("." ".."))) +(define (make-file-writable file) + "Make FILE writable for its owner.." + (let ((stat (lstat file))) ;XXX: symlinks + (chmod file (logior #o600 (stat:perms stat))))) + (define* (copy-account-skeletons home #:optional (directory %skeleton-directory)) "Copy the account skeletons from DIRECTORY to HOME." @@ -85,8 +90,21 @@ string Date: Tue, 5 May 2015 23:49:55 -0500 Subject: gnu: webkitgtk: Remove unnecessary make flag. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/webkit.scm (webkitgtk): Remove make-flags. Signed-off-by: Ludovic Courtès --- gnu/packages/webkit.scm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index 41b9b9a839..9692ab0d36 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -62,8 +62,7 @@ "-DPORT=GTK" (string-append ; uses lib64 by default "-DLIB_INSTALL_DIR=" - (assoc-ref %outputs "out") "/lib")) - #:make-flags '("lib=lib"))) ; uses lib64 by default + (assoc-ref %outputs "out") "/lib")))) (native-inputs `(("bison" ,bison) ("gettext" ,gnu-gettext) -- cgit v1.2.3 From c822fb8e3467c86f47a93710761fff1a30e7195b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 6 May 2015 09:50:15 +0200 Subject: download: Reinstate buffering on connection sockets. * guix/build/download.scm (open-connection-for-uri): Reinstate call to 'setvbuf' inadvertently removed in d17551d9. --- guix/build/download.scm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/guix/build/download.scm b/guix/build/download.scm index 2e0b019d38..7b8e1aac3b 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -218,6 +218,9 @@ host name without trailing dot." (thunk))))))) (with-https-proxy (let ((s (open-socket-for-uri uri))) + ;; Buffer input and output on this port. + (setvbuf s _IOFBF %http-receive-buffer-size) + (if https? (tls-wrap s (uri-host uri)) s))))) -- cgit v1.2.3 From 7623848343e02dc7505478aa5cc0ec2244e968c2 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 6 May 2015 10:31:11 +0200 Subject: download: Work around Guile small-receive-buffer bug. Previously, code using directly (guix build download) was still affected by . This includes source derivations, the 'guix download' command, and (guix gnu-maintenance). 'guix substitute' was unaffected since it used (guix http-client), which already had the fix. * guix/http-client.scm (open-socket-for-uri): Remove. (http-fetch): Remove #:buffered? argument to 'open-socket-for-uri'; use 'setvbuf' instead. * guix/scripts/substitute.scm (fetch): Likewise. * guix/build/download.scm (open-socket-for-uri): New procedure, taken from guix/http-client.scm, but without the #:buffered? parameter. --- guix/build/download.scm | 24 ++++++++++++++++++++++-- guix/http-client.scm | 35 ++++++++--------------------------- guix/scripts/substitute.scm | 4 +++- 3 files changed, 33 insertions(+), 30 deletions(-) diff --git a/guix/build/download.scm b/guix/build/download.scm index 7b8e1aac3b..65d18eb839 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -19,7 +19,7 @@ (define-module (guix build download) #:use-module (web uri) - #:use-module (web client) + #:use-module ((web client) #:hide (open-socket-for-uri)) #:use-module (web response) #:use-module (guix ftp-client) #:use-module (guix build utils) @@ -30,7 +30,8 @@ #:use-module (srfi srfi-26) #:use-module (ice-9 match) #:use-module (ice-9 format) - #:export (open-connection-for-uri + #:export (open-socket-for-uri + open-connection-for-uri resolve-uri-reference maybe-expand-mirrors url-fetch @@ -195,6 +196,25 @@ host name without trailing dot." (add-weak-reference record port) record))) +(define (open-socket-for-uri uri) + "Return an open port for URI. This variant works around + which affects Guile's 'open-socket-for-uri' up to +2.0.11 included." + (define rmem-max + ;; The maximum size for a receive buffer on Linux, see socket(7). + "/proc/sys/net/core/rmem_max") + + (define buffer-size + (if (file-exists? rmem-max) + (call-with-input-file rmem-max read) + 126976)) ;the default for Linux, per 'rmem_default' + + (let ((s ((@ (web client) open-socket-for-uri) uri))) + ;; Work around by restoring a decent + ;; buffer size. + (setsockopt s SOL_SOCKET SO_RCVBUF buffer-size) + s)) + (define (open-connection-for-uri uri) "Like 'open-socket-for-uri', but also handle HTTPS connections." (define https? diff --git a/guix/http-client.scm b/guix/http-client.scm index 3bffbb1c24..90eca0a946 100644 --- a/guix/http-client.scm +++ b/guix/http-client.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2015 Mark H Weaver ;;; Copyright © 2012, 2015 Free Software Foundation, Inc. ;;; @@ -21,7 +21,7 @@ (define-module (guix http-client) #:use-module (guix utils) #:use-module (web uri) - #:use-module (web client) + #:use-module ((web client) #:hide (open-socket-for-uri)) #:use-module (web response) #:use-module (srfi srfi-11) #:use-module (srfi srfi-34) @@ -30,14 +30,15 @@ #:use-module (rnrs bytevectors) #:use-module (guix ui) #:use-module (guix utils) - #:use-module ((guix build download) #:select (resolve-uri-reference)) + #:use-module ((guix build download) + #:select (open-socket-for-uri resolve-uri-reference)) + #:re-export (open-socket-for-uri) #:export (&http-get-error http-get-error? http-get-error-uri http-get-error-code http-get-error-reason - open-socket-for-uri http-fetch)) ;;; Commentary: @@ -207,26 +208,6 @@ closes PORT, unless KEEP-ALIVE? is true." (module-define! (resolve-module '(web client)) 'shutdown (const #f)) -(define* (open-socket-for-uri uri #:key (buffered? #t)) - "Return an open port for URI. When BUFFERED? is false, the returned port is -unbuffered." - (define rmem-max - ;; The maximum size for a receive buffer on Linux, see socket(7). - "/proc/sys/net/core/rmem_max") - - (define buffer-size - (if (file-exists? rmem-max) - (call-with-input-file rmem-max read) - 126976)) ; the default for Linux, per 'rmem_default' - - (let ((s ((@ (web client) open-socket-for-uri) uri))) - ;; Work around by restoring a decent - ;; buffer size. - (setsockopt s SOL_SOCKET SO_RCVBUF buffer-size) - (unless buffered? - (setvbuf s _IONBF)) - s)) - (define* (http-fetch uri #:key port (text? #f) (buffered? #t)) "Return an input port containing the data at URI, and the expected number of bytes available or #f. If TEXT? is true, the data at URI is considered to be @@ -235,9 +216,9 @@ unbuffered port, suitable for use in `filtered-port'. Raise an '&http-get-error' condition if downloading fails." (let loop ((uri uri)) - (let ((port (or port - (open-socket-for-uri uri - #:buffered? buffered?)))) + (let ((port (or port (open-socket-for-uri uri)))) + (unless buffered? + (setvbuf port _IONBF)) (let*-values (((resp data) ;; Try hard to use the API du jour to get an input port. ;; On Guile 2.0.5 and before, we can only get a string or diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index ae97f74d26..31559b7966 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -182,7 +182,9 @@ to the caller without emitting an error message." (close-port port)))) (begin (when (or (not port) (port-closed? port)) - (set! port (open-socket-for-uri uri #:buffered? buffered?))) + (set! port (open-socket-for-uri uri)) + (unless buffered? + (setvbuf port _IONBF))) (http-fetch uri #:text? #f #:port port)))))))) (define-record-type -- cgit v1.2.3 From d73f79099b9c756bc279f8f267b4a055fd3f668b Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sat, 25 Apr 2015 20:15:52 +0200 Subject: gnu: Add zita-convolver. * gnu/packages/audio.scm (zita-convolver): New variable. --- gnu/packages/audio.scm | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index af7533b8f9..29547a3991 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -1408,6 +1408,48 @@ directly to a different computer on your LAN network. It is an audio daemon with a much different focus than most other audio daemons.") (license license:gpl3+))) +(define-public zita-convolver + (package + (name "zita-convolver") + (version "3.1.0") + (source (origin + (method url-fetch) + (uri (string-append + "http://kokkinizita.linuxaudio.org" + "/linuxaudio/downloads/zita-convolver-" + version ".tar.bz2")) + (sha256 + (base32 + "14qrnczhp5mbwhky64il7kxc4hl1mmh495v60va7i2qnhasr6zmz")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no "check" target + #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:phases + (alist-cons-after + 'unpack 'patch-makefile-and-enter-directory + (lambda _ + (substitute* "libs/Makefile" + (("ldconfig") "true") + (("^LIBDIR =.*") "LIBDIR = lib\n")) + (chdir "libs") #t) + (alist-cons-after + 'install + 'install-symlink + (lambda _ + (symlink "libzita-convolver.so" + (string-append (assoc-ref %outputs "out") + "/lib/libzita-convolver.so.3"))) + ;; no configure script + (alist-delete 'configure %standard-phases))))) + (inputs `(("fftwf" ,fftwf))) + (home-page "http://kokkinizita.linuxaudio.org") + (synopsis "Fast, partitioned convolution engine library") + (description + "Zita convolver is a C++ library providing a real-time convolution +engine.") + (license license:gpl3+))) + (define-public zita-alsa-pcmi (package (name "zita-alsa-pcmi") -- cgit v1.2.3 From 32cf42c1eb4aa35750b6fccc935b9e1228d64cf6 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sat, 25 Apr 2015 20:46:13 +0200 Subject: gnu: Add IR. * gnu/packages/audio.scm (ir): New variable. --- gnu/packages/audio.scm | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 29547a3991..17a64a050f 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -488,6 +488,46 @@ patches that can be used with softsynths such as Timidity and WildMidi.") ;; GPLv2+ with exception for compositions using these patches. (license license:gpl2+))) +(define-public ir + (package + (name "ir") + (version "1.3.2") + (source (origin + (method url-fetch) + (uri (string-append + "http://factorial.hu/system/files/ir.lv2-" + version ".tar.gz")) + (sha256 + (base32 + "1jh2z01l9m4ar7yz0n911df07dygc7n4cl59p7qdjbh0nvkm747g")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ;no "check" target + #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:phases + ;; no configure script + (alist-delete 'configure %standard-phases))) + (inputs + `(("libsndfile" ,libsndfile) + ("libsamplerate" ,libsamplerate) + ("lv2" ,lv2) + ("glib" ,glib) + ("gtk+" ,gtk+-2) + ("zita-convolver" ,zita-convolver))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (native-search-paths + (list (search-path-specification + (variable "LV2_PATH") + (files '("lib/lv2"))))) + (home-page "http://factorial.hu/plugins/lv2/ir") + (synopsis "LV2 convolution reverb") + (description + "IR is a low-latency, real-time, high performance signal convolver +especially for creating reverb effects. It supports impulse responses with 1, +2 or 4 channels, in any soundfile format supported by libsndfile.") + (license license:gpl2+))) + (define-public jack-1 (package (name "jack") -- cgit v1.2.3 From 366553e447ac3d45695eb66f822656f3bdbaab0f Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sun, 26 Apr 2015 15:55:59 +0200 Subject: gnu: Add elogind. * gnu/packages/freedesktop.scm (elogind): New variable. --- gnu/packages/freedesktop.scm | 77 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 74 insertions(+), 3 deletions(-) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index 386f4c5972..891bd3114f 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -1,6 +1,9 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Andreas Enge ;;; Copyright © 2015 Sou Bunnbu +;;; Copyright © 2015 Andy Wingo +;;; Copyright © 2015 Ludovic Courtès +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,12 +21,19 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages freedesktop) - #:use-module ((guix licenses) #:select (expat x11)) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (gnu packages linux) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages autotools) + #:use-module (gnu packages gettext) + #:use-module (gnu packages gperf) + #:use-module (gnu packages xml) + #:use-module (gnu packages docbook) + #:use-module (gnu packages glib) ;intltool #:use-module (gnu packages xdisorg) #:use-module (gnu packages xorg)) @@ -48,7 +58,7 @@ (description "The xdg-utils package is a set of simple scripts that provide basic desktop integration functions in the framework of the freedesktop.org project.") - (license expat))) + (license license:expat))) (define-public libinput (package @@ -74,4 +84,65 @@ freedesktop.org project.") (description "Libinput is a library to handle input devices for display servers and other applications that need to directly deal with input devices.") - (license x11))) + (license license:x11))) + +(define-public elogind + (let ((commit "14405a9")) + (package + (name "elogind") + (version (string-append "219." commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "http://git.elephly.net/software/elogind.git") + (commit commit))) + (sha256 + (base32 + "1wz5lxj95qg64x2q5hf4zcb35hpxlw3wfswx6sb2srvsg50y3y72")) + (file-name (string-append name "-checkout-" commit)) + (modules '((guix build utils))) + (snippet + '(begin + (use-modules (guix build utils)) + (substitute* "Makefile.am" + ;; Avoid validation against DTD because the DTDs for + ;; both doctype 4.2 and 4.5 are needed. + (("XSLTPROC_FLAGS = ") "XSLTPROC_FLAGS = --novalid")))))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list + ;; pam_elogind fails because of bus-error.c hackery + "--disable-pam" + (string-append "--with-rootprefix=" (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'autogen + (lambda _ + (and (zero? (system* "intltoolize" "--force" "--automake")) + (zero? (system* "autoreconf" "-vif")))))))) + (native-inputs + `(("intltool" ,intltool) + ("gettext" ,gnu-gettext) + ("docbook-xsl" ,docbook-xsl) + ("docbook-xml" ,docbook-xml) + ("xsltproc" ,libxslt) + ("libxml2" ,libxml2) ;for XML_CATALOG_FILES + ("pkg-config", pkg-config) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("gperf" ,gperf))) + (inputs + `(("linux-pam" ,linux-pam) + ("linux-libre-headers" ,linux-libre-headers) + ("libcap" ,libcap) + ("dbus" ,dbus) + ("eudev" ,eudev))) + (home-page "https://github.com/andywingo/elogind") + (synopsis "User, seat, and session management service") + (description "Elogind is the systemd project's \"logind\" service, +extracted out as a separate project. Elogind integrates with PAM to provide +the org.freedesktop.login1 interface over the system bus, allowing other parts +of a the system to know what users are logged in, and where.") + (license license:lgpl2.1+)))) -- cgit v1.2.3 From 76071c70fc82479b9ceaac7aa4d56ee9282a8a09 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 5 May 2015 20:21:38 -0500 Subject: gnu: hop: Remove use of patchelf. * gnu/packages/patches/hop-linker-flags.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/scheme.scm (source)[patches]: Use it. (arguments)[phases]: Remove patch-rpath phase. [modules, imported-modules]: Remove. (native-inputs): Remove field. --- gnu-system.am | 1 + gnu/packages/patches/hop-linker-flags.patch | 60 +++++++++++++++++++++++++++++ gnu/packages/scheme.scm | 37 ++++++------------ 3 files changed, 72 insertions(+), 26 deletions(-) create mode 100644 gnu/packages/patches/hop-linker-flags.patch diff --git a/gnu-system.am b/gnu-system.am index 9ffb76ee5d..2cbb854b89 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -449,6 +449,7 @@ dist_patch_DATA = \ gnu/packages/patches/guix-test-networking.patch \ gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \ gnu/packages/patches/hop-bigloo-4.0b.patch \ + gnu/packages/patches/hop-linker-flags.patch \ gnu/packages/patches/inetutils-syslogd.patch \ gnu/packages/patches/irrlicht-mesa-10.patch \ gnu/packages/patches/jbig2dec-ignore-testtest.patch \ diff --git a/gnu/packages/patches/hop-linker-flags.patch b/gnu/packages/patches/hop-linker-flags.patch new file mode 100644 index 0000000000..f1f5dbfbd9 --- /dev/null +++ b/gnu/packages/patches/hop-linker-flags.patch @@ -0,0 +1,60 @@ +Make hop's link rules honor flags set by the --blflags configure argument. + +--- hop-2.4.0/src/Makefile 2015-05-05 19:41:04.800151036 -0500 ++++ hop-2.4.0/src/Makefile 2015-05-05 19:40:40.916150417 -0500 +@@ -69,10 +69,10 @@ + $(MAKE) link.$(LINK) DEST=$@ + + link.dynamic: +- @ $(call link,$(BIGLOO),$(BCFLAGS),$(BCFLAGSDEV),$(OBJECTS),-o,$(DEST)) ++ @ $(call link,$(BIGLOO),$(BCFLAGS) $(BLFLAGS),$(BCFLAGSDEV),$(OBJECTS),-o,$(DEST)) + + link.static: +- @ $(call link,$(BIGLOO),$(BCFLAGS),$(BCFLAGSDEV),-static-all-bigloo $(OBJECTS),-o,$(DEST)) ++ @ $(call link,$(BIGLOO),$(BCFLAGS) $(BLFLAGS),$(BCFLAGSDEV),-static-all-bigloo $(OBJECTS),-o,$(DEST)) + + link.library: + echo "***ERROR: link.library not currently supported!" +--- hop-2.4.0/hopc/Makefile 2013-01-30 07:17:59.000000000 -0600 ++++ hop-2.4.0/hopc/Makefile 2015-05-05 19:45:21.876157699 -0500 +@@ -62,7 +62,7 @@ + mkdir -p $@ + + $(BUILDBINDIR)/$(EXEC): .afile .etags $(OBJECTS) +- @ $(call link,$(BIGLOO),$(BCFLAGS),,$(OBJECTS),-o,$@) ++ @ $(call link,$(BIGLOO),$(BCFLAGS) $(BLFLAGS),$(BCFLAGSDEV),$(OBJECTS),-o,$@) + + $(BUILDBINDIR)/$(EXEC).jar: .afile .etags .jfile $(BGL_CLASSES) META-INF/MANIFEST.MF jvm-stdlibs jvm-share jvm-lib + $(JAR) $@ META-INF/MANIFEST.MF -C o/class_s . +--- hop-2.4.0/hophz/Makefile 2013-01-30 07:17:59.000000000 -0600 ++++ hop-2.4.0/hophz/Makefile 2015-05-05 19:59:42.996180030 -0500 +@@ -16,9 +16,6 @@ + -include ../etc/Makefile.hopconfig + -include ../etc/Makefile.version + +-BLFLAGS = +-BLINKFLAGS = -suffix hop +- + #*---------------------------------------------------------------------*/ + #* Target and Project */ + #*---------------------------------------------------------------------*/ +@@ -72,7 +69,7 @@ + mkdir -p $@ + + $(BUILDBINDIR)/$(EXEC): .afile .etags $(OBJECTS) +- @ $(call link,$(BIGLOO),$(BCFLAGS),$(BLINKFLAGS),$(OBJECTS),-o,$@) ++ @ $(call link,$(BIGLOO),$(BCFLAGS) $(BLFLAGS),$(BCFLAGSDEV),$(OBJECTS),-o,$@) + + $(BUILDBINDIR)/$(EXEC).jar: .afile .etags .jfile $(BGL_CLASSES) META-INF/MANIFEST.MF jvm-stdlibs jvm-share jvm-lib + @ $(JAR) $@ META-INF/MANIFEST.MF -C o/class_s . +--- hop-2.4.0/hopsh/Makefile 2013-01-30 07:17:59.000000000 -0600 ++++ hop-2.4.0/hopsh/Makefile 2015-05-05 19:46:36.060159626 -0500 +@@ -60,7 +60,7 @@ + mkdir -p $@ + + $(BUILDBINDIR)/$(EXEC): .afile .etags $(OBJECTS) +- @ $(call link,$(BIGLOO),$(BCFLAGS),$(BCFLAGSDEV),$(OBJECTS),-o,$@) ++ @ $(call link,$(BIGLOO),$(BCFLAGS) $(BLFLAGS),$(BCFLAGSDEV),$(OBJECTS),-o,$@) + + $(BUILDBINDIR)/$(EXEC).jar: .afile .etags .jfile $(BGL_CLASSES) META-INF/MANIFEST.MF jvm-stdlibs jvm-share jvm-lib + @ $(JAR) $@ META-INF/MANIFEST.MF -C o/class_s . diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index ae859791c1..f2f5287d7f 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -29,7 +29,6 @@ #:use-module (gnu packages databases) #:use-module (gnu packages emacs) #:use-module (gnu packages texinfo) - #:use-module (gnu packages elf) #:use-module (gnu packages base) #:use-module (gnu packages pkg-config) #:use-module (gnu packages avahi) @@ -235,39 +234,25 @@ Scheme and C programs and between Scheme and Java programs.") (sha256 (base32 "1v2r4ga58kk1sx0frn8qa8ccmjpic9csqzpk499wc95y9c4b1wy3")) - (patches (list (search-patch "hop-bigloo-4.0b.patch"))))) + (patches (list (search-patch "hop-bigloo-4.0b.patch") + (search-patch "hop-linker-flags.patch"))))) (build-system gnu-build-system) (arguments `(#:phases (alist-replace 'configure - (lambda* (#:key inputs outputs #:allow-other-keys) + (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (zero? (system* "./configure" - (string-append "--prefix=" out))))) - (alist-cons-after - 'strip 'patch-rpath - (lambda* (#:key outputs #:allow-other-keys) - ;; Add $out/lib to the RPATH of every installed library and - ;; executable. Note that "patchelf --set-rpath" produces invalid - ;; binaries when used before stripping. - (let* ((out (assoc-ref outputs "out")) - (lib (string-append out "/lib"))) - (with-directory-excursion out - (every (cut augment-rpath <> lib) - (append (find-files "bin" ".*") - (find-files "lib" "\\.so$")))))) - %standard-phases)) - #:tests? #f ; no test suite - #:modules ((guix build gnu-build-system) - (guix build utils) - (guix build rpath) - (srfi srfi-26) - (srfi srfi-1)) - #:imported-modules (,@%gnu-build-system-modules - (guix build rpath)))) - (native-inputs `(("patchelf" ,patchelf))) + (string-append "--prefix=" out) + (string-append "--blflags=" + ;; user flags completely override useful + ;; default flags, so repeat them here. + "-copt \\$(CPICFLAGS) -L\\$(BUILDLIBDIR) " + "-ldopt -Wl,-rpath," out "/lib"))))) + %standard-phases) + #:tests? #f)) ; no test suite (inputs `(("bigloo" ,bigloo) ("which" ,which))) (home-page "http://hop.inria.fr/") -- cgit v1.2.3 From b5cd1e4f939670236ef29b62f2721fe67012d690 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 6 May 2015 11:13:47 -0500 Subject: gnu: moe: Update to 1.7. * gnu/packages/moe.scm (moe): Update to 1.7. --- gnu/packages/moe.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/moe.scm b/gnu/packages/moe.scm index 6708d72913..675ecb6ce2 100644 --- a/gnu/packages/moe.scm +++ b/gnu/packages/moe.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Eric Bavier +;;; Copyright © 2014, 2015 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,7 +27,7 @@ (define-public moe (package (name "moe") - (version "1.6") + (version "1.7") (source (origin (method url-fetch) @@ -35,7 +35,7 @@ version ".tar.lz")) (sha256 (base32 - "1cfwi67sdl2qchqbdib4p6wxjpwz2kmn6vxn9hmh1zs0gg4xkbwc")))) + "1fzimk1qpmsm7wzfnjzzrp4dvdn7ipdb5j7969910g1m93wndfik")))) (build-system gnu-build-system) (native-inputs `(("lzip" ,lzip))) (inputs `(("ncurses" ,ncurses))) -- cgit v1.2.3 From d838e7029854d8517c0c5b631f6042a925c86a81 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 6 May 2015 11:10:24 +0200 Subject: search-paths: Export 'string-tokenize*'. * guix/search-paths.scm (string-tokenize*): Export. * tests/utils.scm ("string-tokenize*"): Adjust accordingly. --- guix/search-paths.scm | 1 + tests/utils.scm | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/guix/search-paths.scm b/guix/search-paths.scm index ee7e9a131f..7fd15d440c 100644 --- a/guix/search-paths.scm +++ b/guix/search-paths.scm @@ -35,6 +35,7 @@ search-path-specification->sexp sexp->search-path-specification + string-tokenize* evaluate-search-paths environment-variable-definition search-path-definition)) diff --git a/tests/utils.scm b/tests/utils.scm index e03a07b2f5..115868c857 100644 --- a/tests/utils.scm +++ b/tests/utils.scm @@ -21,6 +21,7 @@ #:use-module ((guix config) #:select (%gzip)) #:use-module (guix utils) #:use-module ((guix store) #:select (%store-prefix store-path-package-name)) + #:use-module ((guix search-paths) #:select (string-tokenize*)) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-64) @@ -82,11 +83,10 @@ ("foo" "bar" "baz") ("foo" "bar" "") ("foo" "bar" "baz")) - (let ((string-tokenize* (@@ (guix search-paths) string-tokenize*))) - (list (string-tokenize* "foo" ":") - (string-tokenize* "foo;bar;baz" ";") - (string-tokenize* "foo!bar!" "!") - (string-tokenize* "foo+-+bar+-+baz" "+-+")))) + (list (string-tokenize* "foo" ":") + (string-tokenize* "foo;bar;baz" ";") + (string-tokenize* "foo!bar!" "!") + (string-tokenize* "foo+-+bar+-+baz" "+-+"))) (test-equal "string-replace-substring" '("foo BAR! baz" -- cgit v1.2.3 From 611adb1ee5814907694abc9afa1bad984f0cbea0 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 6 May 2015 14:14:58 +0200 Subject: profiles: Move build code to (guix build profiles). * guix/build/profiles.scm: New file. * Makefile.am (MODULES): Add it. * guix/profiles.scm (profile-derivation)[builder]: Call out to 'build-profile'. Add (guix build profiles) to the #:modules argument. --- Makefile.am | 1 + guix/build/profiles.scm | 41 +++++++++++++++++++++++++++++++++++++++++ guix/profiles.scm | 13 +++++-------- 3 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 guix/build/profiles.scm diff --git a/Makefile.am b/Makefile.am index ae694eb0e7..4fc1fc2ffb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -79,6 +79,7 @@ MODULES = \ guix/build/store-copy.scm \ guix/build/utils.scm \ guix/build/union.scm \ + guix/build/profiles.scm \ guix/build/pull.scm \ guix/build/rpath.scm \ guix/build/cvs.scm \ diff --git a/guix/build/profiles.scm b/guix/build/profiles.scm new file mode 100644 index 0000000000..1c5b54e40b --- /dev/null +++ b/guix/build/profiles.scm @@ -0,0 +1,41 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (guix build profiles) + #:use-module (guix build union) + #:use-module (ice-9 pretty-print) + #:export (build-profile)) + +;;; Commentary: +;;; +;;; Build a user profile (essentially the union of all the installed packages) +;;; with its associated meta-data. +;;; +;;; Code: + +(define* (build-profile output inputs + #:key manifest) + "Build a user profile from INPUTS in directory OUTPUT. Write MANIFEST, an +sexp, to OUTPUT/manifest." + (union-build output inputs + #:log-port (%make-void-port "w")) + (call-with-output-file (string-append output "/manifest") + (lambda (p) + (pretty-print manifest p)))) + +;;; profile.scm ends here diff --git a/guix/profiles.scm b/guix/profiles.scm index 8445e00761..afc22e118d 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -598,20 +598,17 @@ the monadic procedures listed in HOOKS--such as an Info 'dir' file, etc." (define builder #~(begin - (use-modules (ice-9 pretty-print) - (guix build union)) + (use-modules (guix build profiles)) (setvbuf (current-output-port) _IOLBF) (setvbuf (current-error-port) _IOLBF) - (union-build #$output '#$inputs - #:log-port (%make-void-port "w")) - (call-with-output-file (string-append #$output "/manifest") - (lambda (p) - (pretty-print '#$(manifest->gexp manifest) p))))) + (build-profile #$output '#$inputs + #:manifest '#$(manifest->gexp manifest)))) (gexp->derivation "profile" builder - #:modules '((guix build union)) + #:modules '((guix build union) + (guix build profiles)) #:local-build? #t))) (define (profile-regexp profile) -- cgit v1.2.3 From d664f1b431d2a64ff58ddc4ccce40e187947b960 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 6 May 2015 17:08:00 +0200 Subject: profiles: Generate an 'etc/profile' file. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Suggested by 宋文武 in . * guix/build/profiles.scm (abstract-profile, write-environment-variable-definition): New procedures. (build-profile): Add #:search-paths parameter. Create OUTPUT/etc/profile. * guix/profiles.scm (profile-derivation)[builder]: Add 'search-paths' variable and pass it to 'build-profile'. Adjust #:modules argument. * tests/profiles.scm ("etc/profile"): New test. * doc/guix.texi (Invoking guix package): Mention etc/profile. --- .dir-locals.el | 1 + doc/guix.texi | 10 ++++++++ guix/build/profiles.scm | 67 ++++++++++++++++++++++++++++++++++++++++++++++--- guix/profiles.scm | 21 +++++++++++++--- tests/profiles.scm | 26 +++++++++++++++++++ 5 files changed, 118 insertions(+), 7 deletions(-) diff --git a/.dir-locals.el b/.dir-locals.el index 7aef853625..eb3da94da4 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -14,6 +14,7 @@ ((indent-tabs-mode . nil) (eval . (put 'eval-when 'scheme-indent-function 1)) (eval . (put 'test-assert 'scheme-indent-function 1)) + (eval . (put 'test-assertm 'scheme-indent-function 1)) (eval . (put 'test-equal 'scheme-indent-function 1)) (eval . (put 'test-eq 'scheme-indent-function 1)) (eval . (put 'call-with-input-string 'scheme-indent-function 1)) diff --git a/doc/guix.texi b/doc/guix.texi index 8241cb07bf..1b1690a8e3 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -950,6 +950,16 @@ created in @file{$HOME/.guix-profile}. This symlink always points to the current generation of the user's default profile. Thus, users can add @file{$HOME/.guix-profile/bin} to their @code{PATH} environment variable, and so on. +@cindex search paths +If you are not using the Guix System Distribution, consider adding the +following lines to your @file{~/.bash_profile} (@pxref{Bash Startup +Files,,, bash, The GNU Bash Reference Manual}) so that newly-spawned +shells get all the right environment variable definitions: + +@example +GUIX_PROFILE="$HOME/.guix-profile" \ +source "$HOME/.guix-profile/etc/profile" +@end example In a multi-user setup, user profiles are stored in a place registered as a @dfn{garbage-collector root}, which @file{$HOME/.guix-profile} points diff --git a/guix/build/profiles.scm b/guix/build/profiles.scm index 1c5b54e40b..eda54cb37a 100644 --- a/guix/build/profiles.scm +++ b/guix/build/profiles.scm @@ -18,6 +18,10 @@ (define-module (guix build profiles) #:use-module (guix build union) + #:use-module (guix build utils) + #:use-module (guix search-paths) + #:use-module (srfi srfi-26) + #:use-module (ice-9 match) #:use-module (ice-9 pretty-print) #:export (build-profile)) @@ -28,14 +32,71 @@ ;;; ;;; Code: +(define (abstract-profile profile) + "Return a procedure that replaces PROFILE in VALUE with a reference to the +'GUIX_PROFILE' environment variable. This allows users to specify what the +user-friendly name of the profile is, for instance ~/.guix-profile rather than +/gnu/store/...-profile." + (let ((replacement (string-append "${GUIX_PROFILE:-" profile "}"))) + (match-lambda + ((search-path . value) + (let* ((separator (search-path-specification-separator search-path)) + (items (string-tokenize* value separator)) + (crop (cute string-drop <> (string-length profile)))) + (cons search-path + (string-join (map (lambda (str) + (string-append replacement (crop str))) + items) + separator))))))) + +(define (write-environment-variable-definition port) + "Write the given environment variable definition to PORT." + (match-lambda + ((search-path . value) + (display (search-path-definition search-path value #:kind 'prefix) + port) + (newline port)))) + (define* (build-profile output inputs - #:key manifest) + #:key manifest search-paths) "Build a user profile from INPUTS in directory OUTPUT. Write MANIFEST, an -sexp, to OUTPUT/manifest." +sexp, to OUTPUT/manifest. Create OUTPUT/etc/profile with Bash definitions for +all the variables listed in SEARCH-PATHS." + ;; Make the symlinks. (union-build output inputs #:log-port (%make-void-port "w")) + + ;; Store meta-data. (call-with-output-file (string-append output "/manifest") (lambda (p) - (pretty-print manifest p)))) + (pretty-print manifest p))) + + ;; Add a ready-to-use Bash profile. + (mkdir-p (string-append output "/etc")) + (call-with-output-file (string-append output "/etc/profile") + (lambda (port) + ;; The use of $GUIX_PROFILE described below is not great. Another + ;; option would have been to use "$1" and have users run: + ;; + ;; source ~/.guix-profile/etc/profile ~/.guix-profile + ;; + ;; However, when 'source' is used with no arguments, $1 refers to the + ;; first positional parameter of the calling scripts, so we can rely on + ;; it. + (display "\ +# Source this file to define all the relevant environment variables in Bash +# for this profile. You may want to define the 'GUIX_PROFILE' environment +# variable to point to the \"visible\" name of the profile, like this: +# +# GUIX_PROFILE=/path/to/profile +# source /path/to/profile/etc/profile +# +# When GUIX_PROFILE is undefined, the various environment variables refer +# to this specific profile generation. +\n" port) + (let ((variables (evaluate-search-paths (cons $PATH search-paths) + (list output)))) + (for-each (write-environment-variable-definition port) + (map (abstract-profile output) variables)))))) ;;; profile.scm ends here diff --git a/guix/profiles.scm b/guix/profiles.scm index afc22e118d..11d9bf0cd9 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -598,17 +598,30 @@ the monadic procedures listed in HOOKS--such as an Info 'dir' file, etc." (define builder #~(begin - (use-modules (guix build profiles)) + (use-modules (guix build profiles) + (guix search-paths)) (setvbuf (current-output-port) _IOLBF) (setvbuf (current-error-port) _IOLBF) + (define search-paths + ;; Search paths of MANIFEST's packages, converted back to their + ;; record form. + (map sexp->search-path-specification + '#$(map search-path-specification->sexp + (append-map manifest-entry-search-paths + (manifest-entries manifest))))) + (build-profile #$output '#$inputs - #:manifest '#$(manifest->gexp manifest)))) + #:manifest '#$(manifest->gexp manifest) + #:search-paths search-paths))) (gexp->derivation "profile" builder - #:modules '((guix build union) - (guix build profiles)) + #:modules '((guix build profiles) + (guix build union) + (guix build utils) + (guix search-paths) + (guix records)) #:local-build? #t))) (define (profile-regexp profile) diff --git a/tests/profiles.scm b/tests/profiles.scm index 890f09a751..a39717191d 100644 --- a/tests/profiles.scm +++ b/tests/profiles.scm @@ -29,6 +29,8 @@ #:use-module ((gnu packages guile) #:prefix packages:) #:use-module (ice-9 match) #:use-module (ice-9 regex) + #:use-module (ice-9 popen) + #:use-module (rnrs io ports) #:use-module (srfi srfi-11) #:use-module (srfi srfi-64)) @@ -220,6 +222,30 @@ (manifest-entry-search-paths entry) (package-native-search-paths packages:guile-2.0))))))))) + +(test-assertm "etc/profile" + ;; Make sure we get an 'etc/profile' file that at least defines $PATH. + (mlet* %store-monad + ((guile -> (package + (inherit %bootstrap-guile) + (native-search-paths + (package-native-search-paths packages:guile-2.0)))) + (entry -> (package->manifest-entry guile)) + (drv (profile-derivation (manifest (list entry)) + #:hooks '())) + (profile -> (derivation->output-path drv))) + (mbegin %store-monad + (built-derivations (list drv)) + (let* ((pipe (open-input-pipe + (string-append "source " + profile "/etc/profile; " + "unset GUIX_PROFILE; set"))) + (env (get-string-all pipe))) + (return + (and (zero? (close-pipe pipe)) + (string-contains env + (string-append "PATH=" profile "/bin")))))))) + (test-end "profiles") -- cgit v1.2.3 From d9959421a54fb0f9fbb2a9016da036319b99adb9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 6 May 2015 18:23:27 +0200 Subject: system: /etc/profile sources each profile's /etc/profile. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Partly fixes . Reported by 宋文武 . * gnu/system.scm (etc-directory)[profile]: Source /run/current-system/profile/etc/profile and $HOME/.guix-profile/etc/profile when available. Move definitions of SSL_CERT_DIR, SSL_CERT_FILE, and GIT_SSL_CAINFO before that. --- gnu/system.scm | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/gnu/system.scm b/gnu/system.scm index 609604a9b5..104b223539 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -461,14 +461,40 @@ export TZDIR=\"" tzdata "/share/zoneinfo\" # Tell 'modprobe' & co. where to look for modules. export LINUX_MODULE_DIRECTORY=/run/booted-system/kernel/lib/modules -export PATH=$HOME/.guix-profile/bin:/run/current-system/profile/bin -export PATH=/run/setuid-programs:/run/current-system/profile/sbin:$PATH +# These variables are honored by OpenSSL (libssl) and Git. +export SSL_CERT_DIR=/etc/ssl/certs +export SSL_CERT_FILE=\"$SSL_CERT_DIR/ca-certificates.crt\" +export GIT_SSL_CAINFO=\"$SSL_CERT_FILE\" + +# Crucial variables that could be missing the the profiles' 'etc/profile' +# because they would require combining both profiles. +# FIXME: See . export MANPATH=$HOME/.guix-profile/share/man:/run/current-system/profile/share/man export INFOPATH=$HOME/.guix-profile/share/info:/run/current-system/profile/share/info - export XDG_DATA_DIRS=$HOME/.guix-profile/share:/run/current-system/profile/share export XDG_CONFIG_DIRS=$HOME/.guix-profile/etc/xdg:/run/current-system/profile/etc/xdg +# Ignore the default value of 'PATH'. +unset PATH + +# Load the system profile's settings. +GUIX_PROFILE=/run/current-system/profile \\ +source /run/current-system/profile/etc/profile + +# Prepend setuid programs. +export PATH=/run/setuid-programs:$PATH + +if [ -d \"$HOME/.guix-profile\" ] +then + # Load the user profile's settings. + GUIX_PROFILE=\"$HOME/.guix-profile\" \\ + source \"$HOME/.guix-profile/etc/profile\" +else + # At least define this one so that basic things just work + # when the user installs their first package. + export PATH=\"$HOME/.guix-profile/bin:$PATH\" +fi + # Append the directory of 'site-start.el' to the search path. export EMACSLOADPATH=:/etc/emacs @@ -476,11 +502,6 @@ export EMACSLOADPATH=:/etc/emacs # when /etc/machine-id is missing. Make sure these warnings are non-fatal. export DBUS_FATAL_WARNINGS=0 -# These variables are honored by OpenSSL (libssl) and Git. -export SSL_CERT_DIR=/etc/ssl/certs -export SSL_CERT_FILE=\"$SSL_CERT_DIR/ca-certificates.crt\" -export GIT_SSL_CAINFO=\"$SSL_CERT_FILE\" - # Allow Aspell to find dictionaries installed in the user profile. export ASPELL_CONF=\"dict-dir $HOME/.guix-profile/lib/aspell\" -- cgit v1.2.3 From e8444b26ab43b413cfe1c7d11d70030613d83bb6 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 14 Apr 2015 08:53:03 +0200 Subject: gnu: Add python-pyxdg. * gnu/packages/freedesktop.scm (python-pyxdg, python2-pyxdg): New variables. --- gnu/packages/freedesktop.scm | 51 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index 891bd3114f..c5b55f30a2 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -26,6 +26,9 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system gnu) + #:use-module (guix build-system python) + #:use-module (gnu packages gnome) + #:use-module (gnu packages python) #:use-module (gnu packages linux) #:use-module (gnu packages pkg-config) #:use-module (gnu packages autotools) @@ -146,3 +149,51 @@ extracted out as a separate project. Elogind integrates with PAM to provide the org.freedesktop.login1 interface over the system bus, allowing other parts of a the system to know what users are logged in, and where.") (license license:lgpl2.1+)))) + +(define-public python-pyxdg + (package + (name "python-pyxdg") + (version "0.25") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/p/pyxdg/pyxdg-" + version ".tar.gz")) + (sha256 + (base32 + "179767h8m634ydlm4v8lnz01ba42gckfp684id764zaip7h87s41")))) + (build-system python-build-system) + (arguments + '(#:phases + (alist-replace + 'check + (lambda* (#:key inputs #:allow-other-keys) + (setenv "XDG_DATA_DIRS" + (string-append (assoc-ref inputs "shared-mime-info") + "/share/")) + (substitute* "test/test-icon.py" + (("/usr/share/icons/hicolor/index.theme") + (string-append (assoc-ref inputs "hicolor-icon-theme") + "/share/icons/hicolor/index.theme"))) + + ;; One test fails with: + ;; AssertionError: 'x-apple-ios-png' != 'png' + (substitute* "test/test-mime.py" + (("self.check_mimetype\\(imgpng, 'image', 'png'\\)") "#")) + (zero? (system* "nosetests" "-v"))) + %standard-phases))) + (native-inputs + `(("shared-mime-info" ,shared-mime-info) ;for tests + ("hicolor-icon-theme" ,hicolor-icon-theme) ;for tests + ("python-nose" ,python-nose) + ("python-setuptools" ,python-setuptools))) + (home-page "http://freedesktop.org/wiki/Software/pyxdg") + (synopsis "Implementations of freedesktop.org standards in Python") + (description + "PyXDG is a collection of implementations of freedesktop.org standards in +Python") + (license license:lgpl2.0))) + +(define-public python2-pyxdg + (package-with-python2 python-pyxdg)) -- cgit v1.2.3 From 4cd369ed6b0c095d9bb9a5550e84eba22630677d Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Wed, 6 May 2015 21:18:32 +0200 Subject: gnu: Add libabw. * gnu/packages/libreoffice.scm (libabw): New variable. --- gnu/packages/libreoffice.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 481ab21fc6..1c5b195310 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -199,3 +199,33 @@ ZVR (simple compressed text format).") (description "The libwpg project provides a library and tools for working with graphics in the WPG (WordPerfect Graphics) format.") (license (list mpl2.0 lgpl2.1+)))) ;dual licensed + +(define-public libabw + (package + (name "libabw") + (version "0.1.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://dev-www.libreoffice.org/src/" name "/" + name "-" version ".tar.xz")) + (sha256 (base32 + "0zi1zj4fpxgpglbbb5n1kg3dmhqq5rpf46lli89r5daavp19iing")))) + (build-system gnu-build-system) + (native-inputs + `(("doxygen" ,doxygen) + ("gperf" ,gperf) + ("perl" ,perl) + ("pkg-config" ,pkg-config))) + (inputs + `(("boost" ,boost) + ("librevenge" ,librevenge) + ("libxml2" ,libxml2))) + (arguments + ;; avoid triggering configure errors by simple inclusion of boost headers + `(#:configure-flags '("--disable-werror"))) + (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libabw") + (synopsis "Library for parsing the AbiWord format") + (description "Libabw is a library that parses the file format of +AbiWord documents.") + (license mpl2.0))) -- cgit v1.2.3 From 9fe8a4ba4e6c13aba810bf03015e466518417c45 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Wed, 6 May 2015 21:34:49 +0200 Subject: gnu: Add libcdr. * gnu/packages/libreoffice.scm (libcdr): New variable. --- gnu/packages/libreoffice.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 1c5b195310..71bd94e8ad 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -26,6 +26,7 @@ #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages doxygen) + #:use-module (gnu packages ghostscript) #:use-module (gnu packages gperf) #:use-module (gnu packages icu4c) #:use-module (gnu packages perl) @@ -229,3 +230,33 @@ working with graphics in the WPG (WordPerfect Graphics) format.") (description "Libabw is a library that parses the file format of AbiWord documents.") (license mpl2.0))) + +(define-public libcdr + (package + (name "libcdr") + (version "0.1.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://dev-www.libreoffice.org/src/" name "/" + name "-" version ".tar.xz")) + (sha256 (base32 + "07yzb1yr5kzv0binzj5swz3zzay2gw3xb0fbkc2zwdssgrkf19nh")))) + (build-system gnu-build-system) + (native-inputs + `(("doxygen" ,doxygen) + ("pkg-config" ,pkg-config))) + (inputs + `(("boost" ,boost) + ("icu4c" ,icu4c) + ("lcms" ,lcms) + ("librevenge" ,librevenge) + ("zlib" ,zlib))) + (arguments + ;; avoid triggering a build failure due to warnings + `(#:configure-flags '("--disable-werror"))) + (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libcdr") + (synopsis "Library for parsing the CorelDRAW format") + (description "Libcdr is a library that parses the file format of +CorelDRAW documents of all versions.") + (license mpl2.0))) -- cgit v1.2.3 From 3dc67e38946b2784b2162335e9de1afd17d0d21e Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Wed, 6 May 2015 21:42:51 +0200 Subject: gnu: Add libetonyek. * gnu/packages/libreoffice.scm (libetonyek): New variable. --- gnu/packages/libreoffice.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 71bd94e8ad..3e5f331fdb 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -260,3 +260,30 @@ AbiWord documents.") (description "Libcdr is a library that parses the file format of CorelDRAW documents of all versions.") (license mpl2.0))) + +(define-public libetonyek + (package + (name "libetonyek") + (version "0.1.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://dev-www.libreoffice.org/src/" name "/" + name "-" version ".tar.xz")) + (sha256 (base32 + "0gn8v24jb9r9kxppbws6xlc7knpd9mk2n9xjvziccv5f2l7mlslw")))) + (build-system gnu-build-system) + (native-inputs + `(("cppunit" ,cppunit) + ("doxygen" ,doxygen) + ("gperf" ,gperf) + ("pkg-config" ,pkg-config))) + (inputs + `(("boost" ,boost) + ("librevenge" ,librevenge) + ("libxml2" ,libxml2))) + (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libetonyek") + (synopsis "Library for parsing the Apple Keynote format") + (description "Libetonyek is a library that parses the file format of +Apple Keynote documents. It currently supports Keynote versions 2 to 5.") + (license mpl2.0))) -- cgit v1.2.3 From 97aee2b6a57a66608ee9eee919933f2e4900886e Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Wed, 6 May 2015 21:47:45 +0200 Subject: gnu: Add libexttextcat. * gnu/packages/libreoffice.scm (libexttextcat): New variable. --- gnu/packages/libreoffice.scm | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 3e5f331fdb..4df809528c 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -20,7 +20,7 @@ (define-module (gnu packages libreoffice) #:use-module (guix packages) #:use-module (guix download) - #:use-module ((guix licenses) #:select (lgpl2.1+ mpl2.0)) + #:use-module ((guix licenses) #:select (lgpl2.1+ mpl2.0 non-copyleft)) #:use-module (guix build-system gnu) #:use-module (gnu packages boost) #:use-module (gnu packages check) @@ -287,3 +287,22 @@ CorelDRAW documents of all versions.") (description "Libetonyek is a library that parses the file format of Apple Keynote documents. It currently supports Keynote versions 2 to 5.") (license mpl2.0))) + +(define-public libexttextcat + (package + (name "libexttextcat") + (version "3.4.4") + (source + (origin + (method url-fetch) + (uri (string-append "http://dev-www.libreoffice.org/src/" name "/" + name "-" version ".tar.xz")) + (sha256 (base32 + "14v2hkygnmf1zgahfm1fha47cr67iikrz2ymiqi28d2jydn0hk7j")))) + (build-system gnu-build-system) + (home-page "http://www.freedesktop.org/wiki/Software/libexttextcat/") + (synopsis "Text Categorization library") + (description "Libexttextcat is an N-Gram-Based Text Categorization +library primarily intended for language guessing.") + (license (non-copyleft "file://LICENSE" + "See LICENSE in the distribution.")))) -- cgit v1.2.3 From ef1c4148384c66cb99facd8a20ca1dc73644926a Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Wed, 6 May 2015 21:57:42 +0200 Subject: gnu: Add libfreehand. * gnu/packages/libreoffice.scm (libfreehand): New variable. --- gnu/packages/libreoffice.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 4df809528c..2f7b4d7e99 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -306,3 +306,29 @@ Apple Keynote documents. It currently supports Keynote versions 2 to 5.") library primarily intended for language guessing.") (license (non-copyleft "file://LICENSE" "See LICENSE in the distribution.")))) + +(define-public libfreehand + (package + (name "libfreehand") + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri (string-append "http://dev-www.libreoffice.org/src/" name "/" + name "-" version ".tar.xz")) + (sha256 (base32 + "01j7mxi4lmf72w1mv2r098p8l0csdd94w2gq0ncp93djn34al6ai")))) + (build-system gnu-build-system) + (native-inputs + `(("doxygen" ,doxygen) + ("gperf" ,gperf) + ("perl" ,perl) + ("pkg-config" ,pkg-config))) + (inputs + `(("librevenge" ,librevenge) + ("zlib" ,zlib))) + (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libfreehand") + (synopsis "Library for parsing the FreeHand format") + (description "Libfreehand is a library that parses the file format of +Aldus/Macromedia/Adobe FreeHand documents.") + (license mpl2.0))) -- cgit v1.2.3 From 86e278fc1ac9b261468081e89cbd6b695f98a71c Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Wed, 6 May 2015 22:06:36 +0200 Subject: gnu: Add libmspub. * gnu/packages/libreoffice.scm (libmspub): New variable. --- gnu/packages/libreoffice.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 2f7b4d7e99..9027a83864 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -332,3 +332,29 @@ library primarily intended for language guessing.") (description "Libfreehand is a library that parses the file format of Aldus/Macromedia/Adobe FreeHand documents.") (license mpl2.0))) + +(define-public libmspub + (package + (name "libmspub") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (string-append "http://dev-www.libreoffice.org/src/" name "/" + name "-" version ".tar.xz")) + (sha256 (base32 + "03sn6lxpr49sdq6j8q7fw7yjybyfahhs03z80388mh105pwapfmh")))) + (build-system gnu-build-system) + (native-inputs + `(("doxygen" ,doxygen) + ("pkg-config" ,pkg-config))) + (inputs + `(("boost" ,boost) + ("icu4c" ,icu4c) + ("librevenge" ,librevenge) + ("zlib" ,zlib))) + (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libmspub") + (synopsis "Library for parsing the Microsoft Publisher format") + (description "Libmspub is a library that parses the file format of +Microsoft Publisher documents of all versions.") + (license mpl2.0))) -- cgit v1.2.3 From f5d4a138a7937f6a9ff4dd1cca693935322977ba Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Wed, 6 May 2015 22:12:43 +0200 Subject: gnu: Add libpagemaker. * gnu/packages/libreoffice.scm (libpagemaker): New variable. --- gnu/packages/libreoffice.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 9027a83864..98d646cddd 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -358,3 +358,32 @@ Aldus/Macromedia/Adobe FreeHand documents.") (description "Libmspub is a library that parses the file format of Microsoft Publisher documents of all versions.") (license mpl2.0))) + +(define-public libpagemaker + (package + (name "libpagemaker") + (version "0.0.2") + (source + (origin + (method url-fetch) + (uri (string-append "http://dev-www.libreoffice.org/src/" name "/" + name "-" version ".tar.xz")) + (sha256 (base32 + "05zgj5ngg9z4b7dnrfs59nm0macm99lzyxv4mg53jcvp0mkgigfd")))) + (build-system gnu-build-system) + (native-inputs + `(("doxygen" ,doxygen) + ("pkg-config" ,pkg-config))) + (inputs + `(("boost" ,boost) + ("librevenge" ,librevenge) + ("zlib" ,zlib))) + (arguments + ;; avoid triggering a build failure due to warnings + `(#:configure-flags '("--disable-werror"))) + (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libpagemaker") + (synopsis "Library for parsing the PageMaker format") + (description "Libpagemaker is a library that parses the file format of +Aldus/Adobe PageMaker documents. Currently it only understands documents +created by PageMaker version 6.x and 7.") + (license mpl2.0))) -- cgit v1.2.3 From 56203284b626cfefac355ecc10ec23191d80eabd Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Wed, 6 May 2015 22:25:21 +0200 Subject: gnu: Add libvisio. * gnu/packages/libreoffice.scm (libvisio): New variable. --- gnu/packages/libreoffice.scm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 98d646cddd..fb308603c6 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -387,3 +387,37 @@ Microsoft Publisher documents of all versions.") Aldus/Adobe PageMaker documents. Currently it only understands documents created by PageMaker version 6.x and 7.") (license mpl2.0))) + +(define-public libvisio + (package + (name "libvisio") + ;; FIXME: The newer version 0.1.1 fails its tests. + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri (string-append "http://dev-www.libreoffice.org/src/" name "/" + name "-" version ".tar.xz")) + (sha256 (base32 + "0vvd2wyp4rw6s9xnj1dc9vgdpfvm45gnb5b9hhzif0fdnx4iskqf")))) + (build-system gnu-build-system) + (native-inputs + `(("cppunit" ,cppunit) + ("doxygen" ,doxygen) + ("gperf" ,gperf) + ("perl" ,perl) + ("pkg-config" ,pkg-config))) + (inputs + `(("boost" ,boost) + ("icu4c" ,icu4c) + ("librevenge" ,librevenge) + ("libxml2" ,libxml2))) + ;; FIXME: Not needed any more for newer version 0.1.1. + (arguments + ;; avoid triggering a build failure due to warnings + `(#:configure-flags '("--disable-werror"))) + (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libvisio") + (synopsis "Library for parsing the Microsoft Visio format") + (description "Libvisio is a library that parses the file format of +Microsoft Visio documents of all versions.") + (license mpl2.0))) -- cgit v1.2.3 From 9e006fb3de0bd1af2434b32c3be23101e00b1b10 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Wed, 6 May 2015 20:13:31 +0200 Subject: tests: Fix etc/profile test. * tests/profiles.scm ("etc/profile"): Unset GUIX_PROFILE before sourcing etc/profile. Use '.' instead of 'source' for sourcing. Call 'echo $PATH' instead of using the output of 'set' to determine whether PATH is set. --- tests/profiles.scm | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tests/profiles.scm b/tests/profiles.scm index a39717191d..de1411dca2 100644 --- a/tests/profiles.scm +++ b/tests/profiles.scm @@ -237,14 +237,16 @@ (mbegin %store-monad (built-derivations (list drv)) (let* ((pipe (open-input-pipe - (string-append "source " - profile "/etc/profile; " - "unset GUIX_PROFILE; set"))) - (env (get-string-all pipe))) + (string-append "unset GUIX_PROFILE; " + ;; 'source' is a Bashism; use '.' (dot). + ". " profile "/etc/profile; " + ;; Don't try to parse set(1) output because + ;; it differs among shells; just use echo. + "echo $PATH"))) + (path (get-string-all pipe))) (return (and (zero? (close-pipe pipe)) - (string-contains env - (string-append "PATH=" profile "/bin")))))))) + (string-contains path (string-append profile "/bin")))))))) (test-end "profiles") -- cgit v1.2.3 From dd4a86207ef7be22faa825cc828dff3f82aabf2e Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 7 May 2015 00:53:48 -0400 Subject: gnu: Add dosfstools. * gnu/packages/disk.scm (dosfstools): New variable. --- gnu/packages/disk.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm index 6a7fdcfb19..22fdd290a0 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013 Nikita Karetnikov +;;; Copyright © 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -119,3 +120,30 @@ from one file to another, working to rescue data in case of read errors. The program also includes a tool for manipulating its log files, which are used to recover data more efficiently by only reading the necessary blocks.") (license gpl3+))) + +(define-public dosfstools + (package + (name "dosfstools") + (version "3.0.27") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/" name "/" name + "/releases/download/v" version "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1a2qs5g2zqbk1gzaaf4v3fw3yny6jgbzddpgcamkp3fjifn8wxl5")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags (list (string-append "PREFIX=" %output) + "CC=gcc") + #:tests? #f ;no tests + #:phases (modify-phases %standard-phases + (delete 'configure)))) + (home-page "https://github.com/dosfstools/dosfstools") + (synopsis "Utilities for making and checking MS-DOS FAT filesystems") + (description + "The dosfstools package includes the mkfs.fat and fsck.fat utilities, +which respectively make and check MS-DOS FAT filesystems.") + (license gpl3+))) -- cgit v1.2.3 From 507c71d629d6aacf47e03a94eaf0c6b9ef45c367 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 7 May 2015 09:43:59 +0200 Subject: system: Check whether ~/.guix-profile/etc/profile exists. * gnu/system.scm (etc-directory)[profile]: Check for ~/.guix-profile/etc/profile rather than just ~/.guix-profile. --- gnu/system.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/system.scm b/gnu/system.scm index 104b223539..66574c10cb 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -484,7 +484,7 @@ source /run/current-system/profile/etc/profile # Prepend setuid programs. export PATH=/run/setuid-programs:$PATH -if [ -d \"$HOME/.guix-profile\" ] +if [ -f \"$HOME/.guix-profile/etc/profile\" ] then # Load the user profile's settings. GUIX_PROFILE=\"$HOME/.guix-profile\" \\ -- cgit v1.2.3 From 669786da9103c554fb474187ddab7b7c88f8e89d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 7 May 2015 09:45:45 +0200 Subject: system: Use "." instead of "source" in /etc/profile. * gnu/system.scm (etc-directory)[profile]: Use "." instead of "source", the latter being Bash-specific. --- gnu/system.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/system.scm b/gnu/system.scm index 66574c10cb..b8d0e62f60 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -479,7 +479,7 @@ unset PATH # Load the system profile's settings. GUIX_PROFILE=/run/current-system/profile \\ -source /run/current-system/profile/etc/profile +. /run/current-system/profile/etc/profile # Prepend setuid programs. export PATH=/run/setuid-programs:$PATH @@ -488,7 +488,7 @@ if [ -f \"$HOME/.guix-profile/etc/profile\" ] then # Load the user profile's settings. GUIX_PROFILE=\"$HOME/.guix-profile\" \\ - source \"$HOME/.guix-profile/etc/profile\" + . \"$HOME/.guix-profile/etc/profile\" else # At least define this one so that basic things just work # when the user installs their first package. @@ -508,7 +508,7 @@ export ASPELL_CONF=\"dict-dir $HOME/.guix-profile/lib/aspell\" if [ -n \"$BASH_VERSION\" -a -f /etc/bashrc ] then # Load Bash-specific initialization code. - source /etc/bashrc + . /etc/bashrc fi ")) -- cgit v1.2.3 From c716f5a0e063b4dab4db5ade44b970edd51cec53 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 7 May 2015 04:40:05 -0400 Subject: gnu: apr: Update to 1.5.2. * gnu/packages/apr.scm (apr): Update to 1.5.2. --- gnu/packages/apr.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/apr.scm b/gnu/packages/apr.scm index ed9c62819d..57f0443658 100644 --- a/gnu/packages/apr.scm +++ b/gnu/packages/apr.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Cyril Roelandt -;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2014, 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,14 +29,14 @@ (define-public apr (package (name "apr") - (version "1.5.1") + (version "1.5.2") (source (origin (method url-fetch) (uri (string-append "mirror://apache/apr/apr-" version ".tar.bz2")) (sha256 (base32 - "1b4qw686bwjn19iyb0lg918q23xxd6s2gnyczhjq992d3m1vwjp9")) + "0ypn51xblix5ys9xy7da3ngdydip0qqh9rdq8nz54w9aq8lys0vx")) (patches (list (search-patch "apr-skip-getservbyname-test.patch"))) (patch-flags '("-p0")))) -- cgit v1.2.3 From 9f9d073be16b042fe0ecc1c46aea73c1fe657fe6 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 7 May 2015 04:43:01 -0400 Subject: gnu: apr-util: Use system expat library. * gnu/packages/apr.scm: Import (guix licenses) with prefix "l:". (apr)[license]: Adapt to license prefix. (apr-util)[propagated-inputs]: Add expat. [arguments]: Pass --with-expat to configure. [license]: Adapt to license prefix. --- gnu/packages/apr.scm | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/gnu/packages/apr.scm b/gnu/packages/apr.scm index 57f0443658..8c57ee3ab2 100644 --- a/gnu/packages/apr.scm +++ b/gnu/packages/apr.scm @@ -18,12 +18,13 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages apr) - #:use-module (guix licenses) + #:use-module ((guix licenses) #:prefix l:) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages perl) + #:use-module (gnu packages xml) #:use-module (gnu packages autotools)) (define-public apr @@ -59,7 +60,7 @@ an API to which software developers may code and be assured of predictable if not identical behaviour regardless of the platform on which their software is built, relieving them of the need to code special-case conditions to work around or take advantage of platform-specific deficiencies or features.") - (license asl2.0))) + (license l:asl2.0))) (define-public apr-util (package @@ -74,19 +75,23 @@ around or take advantage of platform-specific deficiencies or features.") "0bn81pfscy9yjvbmyx442svf43s6dhrdfcsnkpxz43fai5qk5kx6")))) (build-system gnu-build-system) (inputs - `(("apr" ,apr))) + `(("apr" ,apr))) + (propagated-inputs + `(("expat" ,expat))) (arguments '(#:phases (alist-replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (apr (assoc-ref inputs "apr"))) + (let ((out (assoc-ref outputs "out")) + (apr (assoc-ref inputs "apr")) + (expat (assoc-ref inputs "expat"))) (setenv "CONFIG_SHELL" (which "bash")) (zero? (system* "./configure" (string-append "--prefix=" out) - (string-append "--with-apr=" apr))))) + (string-append "--with-apr=" apr) + (string-append "--with-expat=" expat))))) %standard-phases) ;; There are race conditions during 'make check'. Typically, the @@ -98,4 +103,4 @@ around or take advantage of platform-specific deficiencies or features.") (synopsis "One of the Apache Portable Runtime Library companions") (description "APR-util provides a number of helpful abstractions on top of APR.") - (license asl2.0))) + (license l:asl2.0))) -- cgit v1.2.3 From a3f61425a6051c4f7f7f4cfde0f639652fb006f8 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 7 May 2015 01:43:48 -0400 Subject: gnu: scons: Update to 2.3.4. * gnu/packages/python.scm (scons): Update to 2.3.4. --- gnu/packages/python.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 98be765853..848a53d1d9 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -1023,14 +1023,14 @@ syntax.") (define-public scons (package (name "scons") - (version "2.1.0") + (version "2.3.4") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/scons/scons-" version ".tar.gz")) (sha256 (base32 - "07cjn4afb2cljjrd3cr7xf062qq58z8q96f58z6yplhdyqafsfa1")))) + "0hdlci43wjz8maryj83mz04ir6rwcdrrzpd7cpzvdlzycqhdfmsb")))) (build-system python-build-system) (arguments ;; With Python 3.x, fails to build with a syntax error. -- cgit v1.2.3 From ed86593620cad3f069581585cb9e763423d18294 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 7 May 2015 04:48:52 -0400 Subject: gnu: Add serf. * gnu/packages/web.scm (serf): New variable. --- gnu/packages/web.scm | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index fb3ff2d149..396c5f2474 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -46,6 +46,7 @@ #:use-module (gnu packages icu4c) #:use-module (gnu packages lua) #:use-module (gnu packages base) + #:use-module (gnu packages python) #:use-module (gnu packages pcre) #:use-module (gnu packages pkg-config) #:use-module (gnu packages xml) @@ -548,6 +549,79 @@ URLs and extracting their actual media files.") from streaming URLs. It is a command-line wrapper for the libquvi library.") (license l:lgpl2.1+))) +(define-public serf + (package + (name "serf") + (version "1.3.8") + (source + (origin + (method url-fetch) + (uri (string-append "http://serf.googlecode.com/svn/src_releases/serf-" + version ".tar.bz2")) + (sha256 + (base32 "14155g48gamcv5s0828bzij6vr14nqmbndwq8j8f9g6vcph0nl70")))) + (build-system gnu-build-system) + (native-inputs + `(("scons" ,scons) + ("python" ,python-2))) + (propagated-inputs + `(("apr" ,apr) + ("apr-util" ,apr-util) + ("openssl" ,openssl))) + (inputs + `(;; TODO: Fix build with gss. + ;;("gss" ,gss) + ("zlib" ,zlib))) + (arguments + `(#:phases + ;; TODO: Add scons-build-system and use it here. + (modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'scons-propagate-environment + (lambda _ + ;; By design, SCons does not, by default, propagate + ;; environment variables to subprocesses. See: + ;; + ;; Here, we modify the SConstruct file to arrange for + ;; environment variables to be propagated. + (substitute* "SConstruct" + (("^env = Environment\\(") + "env = Environment(ENV=os.environ, ")))) + (add-after 'unpack 'remove-non-c89-comment + (lambda _ + ;; The SConstruct file asks to compile with -std=c89, + ;; but there is a non-c89 comment in one of the files. + ;; Remove it. + (substitute* "test/test_buckets.c" + (("^//.*") "")))) + (replace 'build + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (apr (assoc-ref inputs "apr")) + (apr-util (assoc-ref inputs "apr-util")) + (openssl (assoc-ref inputs "openssl")) + ;;(gss (assoc-ref inputs "gss")) + (zlib (assoc-ref inputs "zlib"))) + (zero? (system* "scons" + (string-append "APR=" apr) + (string-append "APU=" apr-util) + (string-append "OPENSSL=" openssl) + ;;(string-append "GSSAPI=" gss) + (string-append "ZLIB=" zlib) + (string-append "PREFIX=" out)))))) + (replace 'check (lambda _ (zero? (system* "scons" "check")))) + (replace 'install (lambda _ (zero? (system* "scons" "install"))))))) + (home-page "https://code.google.com/p/serf/") + (synopsis "High-performance asynchronous HTTP client library") + (description + "serf is a C-based HTTP client library built upon the Apache Portable +Runtime (APR) library. It multiplexes connections, running the read/write +communication asynchronously. Memory copies and transformations are kept to a +minimum to provide high performance operation.") + ;; Most of the code is covered by the Apache License, Version 2.0, but the + ;; bundled CuTest framework uses a different non-copyleft license. + (license (list l:asl2.0 (l:non-copyleft "file://test/CuTest-README.txt"))))) + (define-public perl-apache-logformat-compiler (package -- cgit v1.2.3 From 46138f3e226c983452766bf237a0aa86af4184f5 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 7 May 2015 04:51:26 -0400 Subject: gnu: subversion: Add serf to inputs. This is a followup to d5e9f3809dc7d521874cfad0a242ab664f6c19bc, which upgraded subversion to 1.8.x. Previously we used 'neon' to support http access methods, but subversion 1.8 drops support for 'neon' in favor of 'serf'. * gnu/packages/version-control.scm (subversion)[inputs]: Add 'serf' and remove 'neon'. [arguments]: Fix typo in phase name. --- gnu/packages/version-control.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index fbe2c74a17..d21139248b 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -49,6 +49,7 @@ #:use-module (gnu packages ncurses) #:use-module (gnu packages openssl) #:use-module (gnu packages ssh) + #:use-module (gnu packages web) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) @@ -574,7 +575,7 @@ property manipulation.") (substitute* "libtool" (("\\\\`ls") (string-append "\\`" coreutils "/bin/ls"))))) (alist-cons-after - 'install 'instal-perl-bindings + 'install 'install-perl-bindings (lambda* (#:key outputs #:allow-other-keys) ;; Follow the instructions from ;; 'subversion/bindings/swig/INSTALL'. @@ -603,7 +604,7 @@ property manipulation.") (inputs `(("apr" ,apr) ("apr-util" ,apr-util) - ("neon" ,neon-0.29.6) + ("serf" ,serf) ("perl" ,perl) ("python" ,python-2) ; incompatible with Python 3 (print syntax) ("sqlite" ,sqlite) -- cgit v1.2.3 From 6e6e9f2551a4b9be255ebbe1528126916b7d34e1 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 7 May 2015 04:54:57 -0400 Subject: gnu: Remove neon-0.29.6. * gnu/packages/version-control.scm (neon-0.29.6): Remove variable. --- gnu/packages/version-control.scm | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index d21139248b..96cab1eed7 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -537,18 +537,6 @@ WebDAV metadata support, wrappers for PROPFIND and PROPPATCH to simplify property manipulation.") (license gpl2+))) ; for documentation and tests; source under lgpl2.0+ -(define-public neon-0.29.6 - (package (inherit neon) - (name "neon") - (version "0.29.6") - (source (origin - (method url-fetch) - (uri (string-append "http://www.webdav.org/neon/neon-" - version ".tar.gz")) - (sha256 - (base32 - "0hzbjqdx1z8zw0vmbknf159wjsxbcq8ii0wgwkqhxj3dimr0nr4w")))))) - (define-public subversion (package (name "subversion") -- cgit v1.2.3 From 105369a46b6baf94aec5382cad6c70509e3ce1fc Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 3 May 2015 17:02:59 -0400 Subject: gnu: Add postgresql-service. * gnu/services/databases.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. * doc/guix.texi ("Database Services"): New subsubsection. --- doc/guix.texi | 15 ++++++ gnu-system.am | 1 + gnu/services/databases.scm | 121 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 137 insertions(+) create mode 100644 gnu/services/databases.scm diff --git a/doc/guix.texi b/doc/guix.texi index 1b1690a8e3..2d02a04f9c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4652,6 +4652,7 @@ declaration. * Networking Services:: Network setup, SSH daemon, etc. * X Window:: Graphical display. * Desktop Services:: D-Bus and desktop services. +* Database Services:: SQL databases. * Various Services:: Other services. @end menu @@ -5046,6 +5047,20 @@ tool. See @uref{http://www.freedesktop.org/software/colord/, the colord web site} for more information. @end deffn +@node Database Services +@subsubsection Database Services + +The @code{(gnu services databases)} module provides the following service. + +@deffn {Monadic Procedure} postgresql-service [#:postgresql postgresql] @ + [#:config-file] [#:data-directory ``/var/lib/postgresql/data''] +Return a service that runs @var{postgresql}, the PostgreSQL database +server. + +The PostgreSQL daemon loads its runtime configuration from +@var{config-file} and stores the database cluster in +@var{data-directory}. +@end deffn @node Various Services @subsubsection Various Services diff --git a/gnu-system.am b/gnu-system.am index 2cbb854b89..852d558ad3 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -329,6 +329,7 @@ GNU_SYSTEM_MODULES = \ gnu/services.scm \ gnu/services/avahi.scm \ gnu/services/base.scm \ + gnu/services/databases.scm \ gnu/services/desktop.scm \ gnu/services/dmd.scm \ gnu/services/lirc.scm \ diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm new file mode 100644 index 0000000000..18f41e74da --- /dev/null +++ b/gnu/services/databases.scm @@ -0,0 +1,121 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 David Thompson +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu services databases) + #:use-module (gnu services) + #:use-module (gnu system shadow) + #:use-module (gnu packages admin) + #:use-module (gnu packages databases) + #:use-module (guix records) + #:use-module (guix monads) + #:use-module (guix store) + #:use-module (guix gexp) + #:export (postgresql-service)) + +;;; Commentary: +;;; +;;; Database services. +;;; +;;; Code: + +(define %default-postgres-hba + (text-file "pg_hba.conf" + " +local all all trust +host all all 127.0.0.1/32 trust +host all all ::1/128 trust")) + +(define %default-postgres-ident + (text-file "pg_ident.conf" + "# MAPNAME SYSTEM-USERNAME PG-USERNAME")) + +(define %default-postgres-config + (mlet %store-monad ((hba %default-postgres-hba) + (ident %default-postgres-ident)) + (text-file* "postgresql.conf" + ;; The daemon will not start without these. + "hba_file = '" hba "'\n" + "ident_file = '" ident "'\n"))) + +(define* (postgresql-service #:key (postgresql postgresql) + (config-file %default-postgres-config) + (data-directory "/var/lib/postgresql/data")) + "Return a service that runs @var{postgresql}, the PostgreSQL database server. + +The PostgreSQL daemon loads its runtime configuration from @var{config-file} +and stores the database cluster in @var{data-directory}." + ;; Wrapper script that switches to the 'postgres' user before launching + ;; daemon. + (define start-script + (mlet %store-monad ((config-file config-file)) + (gexp->script "start-postgres" + #~(let ((user (getpwnam "postgres")) + (postgres (string-append #$postgresql + "/bin/postgres"))) + (setgid (passwd:gid user)) + (setuid (passwd:uid user)) + (system* postgres + (string-append "--config-file=" #$config-file) + "-D" #$data-directory))))) + + (define activate + #~(begin + (use-modules (guix build utils) + (ice-9 match)) + + (let ((user (getpwnam "postgres")) + (initdb (string-append #$postgresql "/bin/initdb"))) + ;; Create db state directory. + (mkdir-p #$data-directory) + (chown #$data-directory (passwd:uid user) (passwd:gid user)) + + ;; Drop privileges and init state directory in a new + ;; process. Wait for it to finish before proceeding. + (match (primitive-fork) + (0 + ;; Exit with a non-zero status code if an exception is thrown. + (dynamic-wind + (const #t) + (lambda () + (setgid (passwd:gid user)) + (setuid (passwd:uid user)) + (primitive-exit (system* initdb "-D" #$data-directory))) + (lambda () + (primitive-exit 1)))) + (pid (waitpid pid)))))) + + (mlet %store-monad ((start-script start-script)) + (return + (service + (provision '(postgres)) + (documentation "Run the PostgreSQL daemon.") + (requirement '(user-processes loopback)) + (start #~(make-forkexec-constructor #$start-script)) + (stop #~(make-kill-destructor)) + (activate activate) + (user-groups (list (user-group + (name "postgres") + (system? #t)))) + (user-accounts (list (user-account + (name "postgres") + (group "postgres") + (system? #t) + (comment "PostgreSQL server user") + (home-directory "/var/empty") + (shell + #~(string-append #$shadow "/sbin/nologin"))))))))) -- cgit v1.2.3 From e5c8e4f3618e003ffee87f42deb0d3b3311bff6a Mon Sep 17 00:00:00 2001 From: David Thompson Date: Wed, 6 May 2015 17:00:07 -0400 Subject: gnu: bridge-utils: Fix build system. * gnu/packages/linux.scm (bridge-utils): Patch source to fix compilation error. Patch Makefile to fail in case of future compilation errors. --- gnu/packages/linux.scm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 9ff753d571..62d27776e5 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -1033,6 +1033,17 @@ Linux-based operating systems.") '(#:phases (alist-cons-after 'unpack 'bootstrap (lambda _ + ;; Fix "field ‘ip6’ has incomplete type" errors. + (substitute* "libbridge/libbridge.h" + (("#include ") + "#include \n#include ")) + + ;; Ensure that the entire build fails if one of the + ;; sub-Makefiles fails. + (substitute* "Makefile.in" + (("\\$\\(MAKE\\) \\$\\(MFLAGS\\) -C \\$\\$x ;") + "$(MAKE) $(MFLAGS) -C $$x || exit 1;")) + (zero? (system* "autoreconf" "-vf"))) %standard-phases) #:tests? #f)) ; no 'check' target -- cgit v1.2.3 From dc77f0d321be96a8f6817dbd33f5414d333d7fba Mon Sep 17 00:00:00 2001 From: David Thompson Date: Wed, 6 May 2015 15:08:47 -0400 Subject: gnu: Add openvpn. * gnu/packages/vpn.scm (openvpn): New variable. --- gnu/packages/vpn.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm index 5883f99505..62036d9ef7 100644 --- a/gnu/packages/vpn.scm +++ b/gnu/packages/vpn.scm @@ -28,6 +28,7 @@ #:use-module (gnu packages gettext) #:use-module (gnu packages gnupg) #:use-module (gnu packages gnutls) + #:use-module (gnu packages linux) #:use-module (gnu packages openssl) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -125,3 +126,33 @@ supported by the ASA5500 Series, by IOS 12.4(9)T or later on Cisco SR500, and probably others.") (license license:lgpl2.1) (home-page "http://www.infradead.org/openconnect/"))) + +(define-public openvpn + (package + (name "openvpn") + (version "2.3.6") + (source (origin + (method url-fetch) + (uri (string-append + "https://swupdate.openvpn.org/community/releases/openvpn-" + version ".tar.xz")) + (sha256 + (base32 + "1v8h2nshxnvn2zyr08vzkfby1kc7ma6bi0s6hix389cj9krjxbmd")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--enable-iproute2=yes"))) + (native-inputs + `(("iproute2" ,iproute))) + (inputs + `(("lzo" ,lzo) + ("openssl" ,openssl) + ("linux-pam" ,linux-pam))) + (home-page "https://openvpn.net/") + (synopsis "Virtual private network daemon") + (description "OpenVPN implements virtual private network (VPN) techniques +for creating secure point-to-point or site-to-site connections in routed or +bridged configurations and remote access facilities. It uses a custom +security protocol that utilizes SSL/TLS for key exchange. It is capable of +traversing network address translators (NATs) and firewalls. ") + (license license:gpl2))) -- cgit v1.2.3 From 88b6b125baeb41908a40591d403bceb6a9aafb10 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 7 May 2015 12:19:33 -0400 Subject: gnu: serf: Apply upstream fixes. * gnu/packages/patches/serf-comment-style-fix.patch, gnu/packages/patches/serf-deflate-buckets-test-fix.patch: New file. * gnu-system.am (dist_patch_DATA): Add them. * gnu/packages/web.scm (serf): Add patches. Remove 'remove-non-c89-comment' phase. --- gnu-system.am | 2 + gnu/packages/patches/serf-comment-style-fix.patch | 23 ++++++++ .../patches/serf-deflate-buckets-test-fix.patch | 69 ++++++++++++++++++++++ gnu/packages/web.scm | 12 ++-- 4 files changed, 98 insertions(+), 8 deletions(-) create mode 100644 gnu/packages/patches/serf-comment-style-fix.patch create mode 100644 gnu/packages/patches/serf-deflate-buckets-test-fix.patch diff --git a/gnu-system.am b/gnu-system.am index 852d558ad3..b5b71abdb0 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -538,6 +538,8 @@ dist_patch_DATA = \ gnu/packages/patches/scheme48-tests.patch \ gnu/packages/patches/scotch-test-threading.patch \ gnu/packages/patches/sdl-libx11-1.6.patch \ + gnu/packages/patches/serf-comment-style-fix.patch \ + gnu/packages/patches/serf-deflate-buckets-test-fix.patch \ gnu/packages/patches/slim-session.patch \ gnu/packages/patches/slim-config.patch \ gnu/packages/patches/slim-sigusr1.patch \ diff --git a/gnu/packages/patches/serf-comment-style-fix.patch b/gnu/packages/patches/serf-comment-style-fix.patch new file mode 100644 index 0000000000..5d336fb3c8 --- /dev/null +++ b/gnu/packages/patches/serf-comment-style-fix.patch @@ -0,0 +1,23 @@ +r2443 | andreas.stieger@gmx.de | 2014-10-21 17:42:56 -0400 (Tue, 21 Oct 2014) | 7 lines + +Follow-up to r2419: Correct comment style + +* test/test_buckets.c + (deflate_compress): Correct comment style not supported by strict + compilers, fails on /branches/1.3.x + +Index: test/test_buckets.c +=================================================================== +--- test/test_buckets.c (revision 2442) ++++ test/test_buckets.c (revision 2443) +@@ -1323,9 +1323,9 @@ + + /* The largest buffer we should need is 0.1% larger than the + uncompressed data, + 12 bytes. This info comes from zlib.h. ++ buf_size = orig_len + (orig_len / 1000) + 12; + Note: This isn't sufficient when using Z_NO_FLUSH and extremely compressed + data. Use a buffer bigger than what we need. */ +-// buf_size = orig_len + (orig_len / 1000) + 12; + buf_size = 100000; + + write_buf = apr_palloc(pool, buf_size); diff --git a/gnu/packages/patches/serf-deflate-buckets-test-fix.patch b/gnu/packages/patches/serf-deflate-buckets-test-fix.patch new file mode 100644 index 0000000000..be8be1b1e8 --- /dev/null +++ b/gnu/packages/patches/serf-deflate-buckets-test-fix.patch @@ -0,0 +1,69 @@ +r2445 | chemodax | 2014-10-23 12:15:22 -0400 (Thu, 23 Oct 2014) | 6 lines + +Reduce memory usage by deflate buckets test. + +* test/test_buckets.c + (deflate_buckets): Add POOL argument and use it instead of tb->pool. + (test_deflate_buckets): Use iterpool for deflate_buckets() call. + +Index: test/test_buckets.c +=================================================================== +--- test/test_buckets.c (revision 2444) ++++ test/test_buckets.c (revision 2445) +@@ -1400,12 +1400,12 @@ + expected_len); + } + +-static void deflate_buckets(CuTest *tc, int nr_of_loops) ++static void deflate_buckets(CuTest *tc, int nr_of_loops, apr_pool_t *pool) + { + const char *msg = "12345678901234567890123456789012345678901234567890"; + + test_baton_t *tb = tc->testBaton; +- serf_bucket_alloc_t *alloc = serf_bucket_allocator_create(tb->pool, NULL, ++ serf_bucket_alloc_t *alloc = serf_bucket_allocator_create(pool, NULL, + NULL); + z_stream zdestr; + int i; +@@ -1424,8 +1424,8 @@ + { + serf_config_t *config; + +- serf_context_t *ctx = serf_context_create(tb->pool); +- /* status = */ serf__config_store_get_config(ctx, NULL, &config, tb->pool); ++ serf_context_t *ctx = serf_context_create(pool); ++ /* status = */ serf__config_store_get_config(ctx, NULL, &config, pool); + + serf_bucket_set_config(defbkt, config); + } +@@ -1447,11 +1447,11 @@ + if (i == nr_of_loops - 1) { + CuAssertIntEquals(tc, APR_SUCCESS, + deflate_compress(&data, &len, &zdestr, msg, +- strlen(msg), 1, tb->pool)); ++ strlen(msg), 1, pool)); + } else { + CuAssertIntEquals(tc, APR_SUCCESS, + deflate_compress(&data, &len, &zdestr, msg, +- strlen(msg), 0, tb->pool)); ++ strlen(msg), 0, pool)); + } + + if (len == 0) +@@ -1469,10 +1469,15 @@ + static void test_deflate_buckets(CuTest *tc) + { + int i; ++ apr_pool_t *iterpool; ++ test_baton_t *tb = tc->testBaton; + ++ apr_pool_create(&iterpool, tb->pool); + for (i = 1; i < 1000; i++) { +- deflate_buckets(tc, i); ++ apr_pool_clear(iterpool); ++ deflate_buckets(tc, i, iterpool); + } ++ apr_pool_destroy(iterpool); + } + + static apr_status_t discard_data(serf_bucket_t *bkt, diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 396c5f2474..e77bad76d6 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -559,7 +559,10 @@ from streaming URLs. It is a command-line wrapper for the libquvi library.") (uri (string-append "http://serf.googlecode.com/svn/src_releases/serf-" version ".tar.bz2")) (sha256 - (base32 "14155g48gamcv5s0828bzij6vr14nqmbndwq8j8f9g6vcph0nl70")))) + (base32 "14155g48gamcv5s0828bzij6vr14nqmbndwq8j8f9g6vcph0nl70")) + (patches (map search-patch '("serf-comment-style-fix.patch" + "serf-deflate-buckets-test-fix.patch"))) + (patch-flags '("-p0")))) (build-system gnu-build-system) (native-inputs `(("scons" ,scons) @@ -587,13 +590,6 @@ from streaming URLs. It is a command-line wrapper for the libquvi library.") (substitute* "SConstruct" (("^env = Environment\\(") "env = Environment(ENV=os.environ, ")))) - (add-after 'unpack 'remove-non-c89-comment - (lambda _ - ;; The SConstruct file asks to compile with -std=c89, - ;; but there is a non-c89 comment in one of the files. - ;; Remove it. - (substitute* "test/test_buckets.c" - (("^//.*") "")))) (replace 'build (lambda* (#:key inputs outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out")) -- cgit v1.2.3 From f4d8f85555ad3fae9a27cee177ff4b72410809a9 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Wed, 6 May 2015 13:46:18 -0400 Subject: gnu: mesa: Build gallium drivers for nouveau. * gnu/packages/gl.scm (mesa): Pass "nouveau" to "--with-gallium-drivers" flag. --- gnu/packages/gl.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index 62b02efd25..b760a5e8a6 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -220,7 +220,7 @@ also known as DXTn or DXTC) for Mesa.") (arguments `(#:configure-flags '(;; drop r300 from default gallium drivers, as it requires llvm - "--with-gallium-drivers=r600,svga,swrast" + "--with-gallium-drivers=r600,svga,swrast,nouveau" ;; Enable various optional features. TODO: opencl requires libclc, ;; omx requires libomxil-bellagio "--with-egl-platforms=x11,drm" -- cgit v1.2.3 From c024ae3601d645fc332ba97895a77454433003b3 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sun, 19 Apr 2015 18:38:24 +0200 Subject: gnu: Add goffice-0.8. * gnu/packages/gnome.scm (goffice-0.8): New variable. --- gnu/packages/gnome.scm | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 96a21efd59..5caa1770cb 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -69,7 +69,8 @@ #:use-module (gnu packages mail) #:use-module (gnu packages backup) #:use-module (gnu packages nettle) - #:use-module (gnu packages ncurses)) + #:use-module (gnu packages ncurses) + #:use-module (srfi srfi-1)) (define-public brasero (package @@ -1278,6 +1279,33 @@ Hints specification (EWMH).") ;; Note: NOT LGPL (list license:gpl2 license:gpl3)))) +(define-public goffice-0.8 + (package (inherit goffice) + (version "0.8.17") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" (package-name goffice) "/" + (version-major+minor version) "/" + (package-name goffice) "-" version ".tar.xz")) + (sha256 + (base32 "05fvzbs5bin05bbsr4dp79aiva3lnq0a3a40zq55i13vnsz70l0n")))) + (arguments + `(#:phases + (alist-cons-after + 'unpack 'fix-pcre-check + (lambda _ + ;; Only glib.h can be included directly. See + ;; https://bugzilla.gnome.org/show_bug.cgi?id=670316 + (substitute* "configure" + (("glib/gregex\\.h") "glib.h")) #t) + %standard-phases))) + (propagated-inputs + ;; libgoffice-0.8.pc mentions libgsf-1 + `(("libgsf" ,libgsf))) + (inputs + `(("gtk" ,gtk+-2) + ,@(alist-delete "gtk" (package-inputs goffice)))))) + (define-public gnumeric (package (name "gnumeric") -- cgit v1.2.3 From 7b05ba9161579004ace734efc42d48c6f1708d5c Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 6 May 2015 08:38:06 +0200 Subject: gnu: Add WebkitGTK 2.4.8. * gnu/packages/webkit.scm (webkitgtk-2.4): New variable. * gnu/packages/patches/webkitgtk-2.4.8-gmutexlocker.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + .../patches/webkitgtk-2.4.8-gmutexlocker.patch | 289 +++++++++++++++++++++ gnu/packages/webkit.scm | 32 +++ 3 files changed, 322 insertions(+) create mode 100644 gnu/packages/patches/webkitgtk-2.4.8-gmutexlocker.patch diff --git a/gnu-system.am b/gnu-system.am index b5b71abdb0..75da645039 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -559,6 +559,7 @@ dist_patch_DATA = \ gnu/packages/patches/vpnc-script.patch \ gnu/packages/patches/vtk-mesa-10.patch \ gnu/packages/patches/w3m-fix-compile.patch \ + gnu/packages/patches/webkitgtk-2.4.8-gmutexlocker.patch \ gnu/packages/patches/weex-vacopy.patch \ gnu/packages/patches/wicd-urwid-1.3.patch \ gnu/packages/patches/wmctrl-64-fix.patch \ diff --git a/gnu/packages/patches/webkitgtk-2.4.8-gmutexlocker.patch b/gnu/packages/patches/webkitgtk-2.4.8-gmutexlocker.patch new file mode 100644 index 0000000000..79e12c302f --- /dev/null +++ b/gnu/packages/patches/webkitgtk-2.4.8-gmutexlocker.patch @@ -0,0 +1,289 @@ +Webkit's own WebCore::GMutexLocker conflicts with the GMutexLocker in +glib-2.44.0. + +Patch taken from . + + +diff -up webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp.gmutexlocker webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp +--- webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp.gmutexlocker 2015-02-18 15:40:21.851816374 +0100 ++++ webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp 2015-02-18 15:45:58.560092191 +0100 +@@ -316,7 +316,7 @@ void MediaPlayerPrivateGStreamerBase::mu + #if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER_GL) && !USE(COORDINATED_GRAPHICS) + PassRefPtr MediaPlayerPrivateGStreamerBase::updateTexture(TextureMapper* textureMapper) + { +- GMutexLocker lock(m_bufferMutex); ++ WebCore::GMutexLocker lock(m_bufferMutex); + if (!m_buffer) + return nullptr; + +@@ -366,7 +366,7 @@ void MediaPlayerPrivateGStreamerBase::tr + g_return_if_fail(GST_IS_BUFFER(buffer)); + + { +- GMutexLocker lock(m_bufferMutex); ++ WebCore::GMutexLocker lock(m_bufferMutex); + gst_buffer_replace(&m_buffer, buffer); + } + +@@ -398,7 +398,7 @@ void MediaPlayerPrivateGStreamerBase::pa + if (!m_player->visible()) + return; + +- GMutexLocker lock(m_bufferMutex); ++ WebCore::GMutexLocker lock(m_bufferMutex); + if (!m_buffer) + return; + +diff -up webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp.gmutexlocker webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp +diff -up webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp.gmutexlocker webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp +--- webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp.gmutexlocker 2015-02-18 15:16:11.995228731 +0100 ++++ webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp 2015-02-18 15:45:42.686843477 +0100 +@@ -118,7 +118,7 @@ static gboolean webkitVideoSinkTimeoutCa + WebKitVideoSink* sink = reinterpret_cast(data); + WebKitVideoSinkPrivate* priv = sink->priv; + +- GMutexLocker lock(priv->bufferMutex); ++ WebCore::GMutexLocker lock(priv->bufferMutex); + GstBuffer* buffer = priv->buffer; + priv->buffer = 0; + priv->timeoutId = 0; +@@ -140,7 +140,7 @@ static GstFlowReturn webkitVideoSinkRend + WebKitVideoSink* sink = WEBKIT_VIDEO_SINK(baseSink); + WebKitVideoSinkPrivate* priv = sink->priv; + +- GMutexLocker lock(priv->bufferMutex); ++ WebCore::GMutexLocker lock(priv->bufferMutex); + + if (priv->unlocked) + return GST_FLOW_OK; +@@ -279,7 +279,7 @@ static void webkitVideoSinkGetProperty(G + + static void unlockBufferMutex(WebKitVideoSinkPrivate* priv) + { +- GMutexLocker lock(priv->bufferMutex); ++ WebCore::GMutexLocker lock(priv->bufferMutex); + + if (priv->buffer) { + gst_buffer_unref(priv->buffer); +@@ -305,7 +305,7 @@ static gboolean webkitVideoSinkUnlockSto + WebKitVideoSinkPrivate* priv = WEBKIT_VIDEO_SINK(baseSink)->priv; + + { +- GMutexLocker lock(priv->bufferMutex); ++ WebCore::GMutexLocker lock(priv->bufferMutex); + priv->unlocked = false; + } + +@@ -330,7 +330,7 @@ static gboolean webkitVideoSinkStart(Gst + { + WebKitVideoSinkPrivate* priv = WEBKIT_VIDEO_SINK(baseSink)->priv; + +- GMutexLocker lock(priv->bufferMutex); ++ WebCore::GMutexLocker lock(priv->bufferMutex); + priv->unlocked = false; + return TRUE; + } +diff -up webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp.gmutexlocker webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp +--- webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp.gmutexlocker 2015-02-18 15:16:40.954678407 +0100 ++++ webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp 2015-02-18 15:45:19.567481225 +0100 +@@ -346,7 +346,7 @@ static void webKitWebSrcSetProperty(GObj + + switch (propID) { + case PROP_IRADIO_MODE: { +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + priv->iradioMode = g_value_get_boolean(value); + break; + } +@@ -364,7 +364,7 @@ static void webKitWebSrcGetProperty(GObj + WebKitWebSrc* src = WEBKIT_WEB_SRC(object); + WebKitWebSrcPrivate* priv = src->priv; + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + switch (propID) { + case PROP_IRADIO_MODE: + g_value_set_boolean(value, priv->iradioMode); +@@ -417,7 +417,7 @@ static gboolean webKitWebSrcStop(WebKitW + + ASSERT(isMainThread()); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + + bool seeking = priv->seekID; + +@@ -476,7 +476,7 @@ static gboolean webKitWebSrcStart(WebKit + + ASSERT(isMainThread()); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + + priv->startID = 0; + priv->corsAccessCheck = CORSNoCheck; +@@ -573,7 +573,7 @@ static GstStateChangeReturn webKitWebSrc + return ret; + } + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + switch (transition) { + case GST_STATE_CHANGE_READY_TO_PAUSED: + GST_DEBUG_OBJECT(src, "READY->PAUSED"); +@@ -604,7 +604,7 @@ static gboolean webKitWebSrcQueryWithPar + gst_query_parse_duration(query, &format, NULL); + + GST_DEBUG_OBJECT(src, "duration query in format %s", gst_format_get_name(format)); +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + if (format == GST_FORMAT_BYTES && src->priv->size > 0) { + gst_query_set_duration(query, format, src->priv->size); + result = TRUE; +@@ -612,7 +612,7 @@ static gboolean webKitWebSrcQueryWithPar + break; + } + case GST_QUERY_URI: { +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + gst_query_set_uri(query, src->priv->uri); + result = TRUE; + break; +@@ -653,7 +653,7 @@ static gchar* webKitWebSrcGetUri(GstURIH + WebKitWebSrc* src = WEBKIT_WEB_SRC(handler); + gchar* ret; + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + ret = g_strdup(src->priv->uri); + return ret; + } +@@ -668,7 +668,7 @@ static gboolean webKitWebSrcSetUri(GstUR + return FALSE; + } + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + + g_free(priv->uri); + priv->uri = 0; +@@ -704,7 +704,7 @@ static gboolean webKitWebSrcNeedDataMain + + ASSERT(isMainThread()); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + // already stopped + if (!priv->needDataID) + return FALSE; +@@ -725,7 +725,7 @@ static void webKitWebSrcNeedDataCb(GstAp + + GST_DEBUG_OBJECT(src, "Need more data: %u", length); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + if (priv->needDataID || !priv->paused) { + return; + } +@@ -739,7 +739,7 @@ static gboolean webKitWebSrcEnoughDataMa + + ASSERT(isMainThread()); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + // already stopped + if (!priv->enoughDataID) + return FALSE; +@@ -760,7 +760,7 @@ static void webKitWebSrcEnoughDataCb(Gst + + GST_DEBUG_OBJECT(src, "Have enough data"); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + if (priv->enoughDataID || priv->paused) { + return; + } +@@ -774,7 +774,7 @@ static gboolean webKitWebSrcSeekMainCb(W + + ASSERT(isMainThread()); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + // already stopped + if (!priv->seekID) + return FALSE; +@@ -792,7 +792,7 @@ static gboolean webKitWebSrcSeekDataCb(G + WebKitWebSrcPrivate* priv = src->priv; + + GST_DEBUG_OBJECT(src, "Seeking to offset: %" G_GUINT64_FORMAT, offset); +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + if (offset == priv->offset && priv->requestedOffset == priv->offset) + return TRUE; + +@@ -811,7 +811,7 @@ static gboolean webKitWebSrcSeekDataCb(G + void webKitWebSrcSetMediaPlayer(WebKitWebSrc* src, WebCore::MediaPlayer* player) + { + ASSERT(player); +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + src->priv->player = player; + } + +@@ -841,7 +841,7 @@ char* StreamingClient::createReadBuffer( + + mapGstBuffer(buffer); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + priv->buffer = adoptGRef(buffer); + locker.unlock(); + +@@ -867,7 +867,7 @@ void StreamingClient::handleResponseRece + return; + } + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + + priv->corsAccessCheck = corsAccessCheck; + +@@ -966,7 +966,7 @@ void StreamingClient::handleDataReceived + WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src); + WebKitWebSrcPrivate* priv = src->priv; + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + + GST_LOG_OBJECT(src, "Have %lld bytes of data", priv->buffer ? static_cast(gst_buffer_get_size(priv->buffer.get())) : length); + +@@ -1035,7 +1035,7 @@ void StreamingClient::handleNotifyFinish + + GST_DEBUG_OBJECT(src, "Have EOS"); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + if (!priv->seekID) { + locker.unlock(); + gst_app_src_end_of_stream(priv->appsrc); +@@ -1194,7 +1194,7 @@ void ResourceHandleStreamingClient::wasB + + GST_ERROR_OBJECT(src, "Request was blocked"); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + uri.reset(g_strdup(src->priv->uri)); + locker.unlock(); + +@@ -1208,7 +1208,7 @@ void ResourceHandleStreamingClient::cann + + GST_ERROR_OBJECT(src, "Cannot show URL"); + +- GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); ++ WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src)); + uri.reset(g_strdup(src->priv->uri)); + locker.unlock(); + +diff -up webkitgtk-2.4.8/Source/WTF/wtf/gobject/GMutexLocker.h.gmutexlocker webkitgtk-2.4.8/Source/WTF/wtf/gobject/GMutexLocker.h diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index 9692ab0d36..b091c88601 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Sou Bunnbu ;;; Copyright © 2015 David Hashe +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,9 +23,13 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system cmake) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages base) #:use-module (gnu packages bison) #:use-module (gnu packages databases) #:use-module (gnu packages enchant) + #:use-module (gnu packages flex) #:use-module (gnu packages gettext) #:use-module (gnu packages gl) #:use-module (gnu packages glib) @@ -108,3 +113,30 @@ HTML/CSS applications to full-fledged web browsers.") license:lgpl2.1+ license:bsd-2 license:bsd-3)))) + +(define-public webkitgtk-2.4 + ;; Latest release of the stable 2.4 series. + (package (inherit webkitgtk) + (name "webkitgtk") + (version "2.4.8") + (source (origin + (method url-fetch) + (uri (string-append "http://www.webkitgtk.org/releases/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "08xxqsxpa63nzgbsz63vrdxdxgpysyiy7jdcjb57k1hprdcibwb8")) + (patches (list (search-patch "webkitgtk-2.4.8-gmutexlocker.patch"))))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no tests + #:phases (modify-phases %standard-phases + (add-after + 'unpack 'set-gcc + (lambda _ (setenv "CC" "gcc") #t))) + #:configure-flags '("--enable-webkit2=no" + "--with-gtk=2.0"))) + (inputs + `(("flex" ,flex) + ("which" ,which) + ,@(package-inputs webkitgtk))))) -- cgit v1.2.3 From e55c1b67ead07be673d2b86bf48575db959b885f Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 6 May 2015 08:41:40 +0200 Subject: gnu: Add GnuCash. * gnu/packages/gnucash.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/gnucash.scm | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 gnu/packages/gnucash.scm diff --git a/gnu-system.am b/gnu-system.am index 75da645039..817bad74f0 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -124,6 +124,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/gl.scm \ gnu/packages/glib.scm \ gnu/packages/gnome.scm \ + gnu/packages/gnucash.scm \ gnu/packages/gnunet.scm \ gnu/packages/gnupg.scm \ gnu/packages/gnustep.scm \ diff --git a/gnu/packages/gnucash.scm b/gnu/packages/gnucash.scm new file mode 100644 index 0000000000..d254615cf2 --- /dev/null +++ b/gnu/packages/gnucash.scm @@ -0,0 +1,72 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages gnucash) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages gnome) + #:use-module (gnu packages glib) + #:use-module (gnu packages gtk) + #:use-module (gnu packages guile) + #:use-module (gnu packages icu4c) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages webkit) + #:use-module (gnu packages xml)) + +(define-public gnucash + (package + (name "gnucash") + (version "2.6.6") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/gnucash/gnucash-" + version ".tar.bz2")) + (sha256 + (base32 + "103ir5qg6k8m2mmg9b99c3gn8myxh1gsqyr0mfhmrhqya68wfdr3")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ;FIXME: failing at /qof/gnc-date/qof print date dmy buff + #:configure-flags '("--disable-dbi"))) + (inputs + `(("guile" ,guile-2.0) + ("icu4c" ,icu4c) + ("glib" ,glib) + ("gtk" ,gtk+-2) + ("goffice" ,goffice-0.8) + ("libgnomecanvas" ,libgnomecanvas) + ("libxml2" ,libxml2) + ("libxslt" ,libxslt) + ("webkitgtk" ,webkitgtk-2.4))) + (native-inputs + `(("glib" ,glib "bin") ; glib-compile-schemas, etc. + ("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (home-page "https://gnu.org/software/gnucash") + (synopsis "Personal and small business financial accounting software") + (description + "GnuCash is personal and professional financial-accounting software. +It can be used to track bank accounts, stocks, income and expenses, based on +the double-entry accounting practice. It includes support for QIF/OFX/HBCI +import and transaction matching. It also automates several tasks, such as +financial calculations or scheduled transactions.") + (license gpl3+))) -- cgit v1.2.3 From 002806c929b88781adbcd376de7cc581a9234c58 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 20 Apr 2015 21:36:17 +0200 Subject: gnu: Add Ardour 4. * gnu/packages/audio.scm (ardour): Rename to ... (ardour-3): ... this. (ardour): New variable. --- gnu/packages/audio.scm | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 17a64a050f..82e2d3a5c8 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -128,7 +128,7 @@ attacks, performing pitch detection, tapping the beat and producing MIDI streams from live audio.") (license license:gpl3+))) -(define-public ardour +(define-public ardour-3 (package (name "ardour") (version "3.5.403") @@ -140,6 +140,9 @@ streams from live audio.") (url "git://git.ardour.org/ardour/ardour.git") (commit version))) (snippet + ;; Ardour expects this file to exist at build time. It can be + ;; created from a git checkout with: + ;; ./waf create_stored_revision '(call-with-output-file "libs/ardour/revision.cc" (lambda (port) @@ -222,6 +225,29 @@ record, edit, mix and master audio and MIDI projects. It is targeted at audio engineers, musicians, soundtrack editors and composers.") (license license:gpl2+))) +(define-public ardour + (package (inherit ardour) + (name "ardour") + (version "4.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "git://git.ardour.org/ardour/ardour.git") + (commit version))) + (snippet + ;; Ardour expects this file to exist at build time. It can be + ;; created from a git checkout with: + ;; ./waf create_stored_revision + '(call-with-output-file + "libs/ardour/revision.cc" + (lambda (port) + (format port "#include \"ardour/revision.h\" +namespace ARDOUR { const char* revision = \"4.0\" ; }")))) + (sha256 + (base32 + "0a8bydc24xv0cahdqfaxdmi1f43cyr9psiyshxpbrkdqw2c7a4xi")) + (file-name (string-append name "-" version)))))) + (define-public azr3 (package (name "azr3") -- cgit v1.2.3 From 32cf989587b32e22177746ac13d48afcec4d2dee Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 7 May 2015 22:47:31 +0200 Subject: gnu: ardour: Fix inheritance of Ardour package. * gnu/packages/audio.scm (ardour): Inherit from "ardour-3" instead of "ardour". --- gnu/packages/audio.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 82e2d3a5c8..543fe49390 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -226,7 +226,7 @@ engineers, musicians, soundtrack editors and composers.") (license license:gpl2+))) (define-public ardour - (package (inherit ardour) + (package (inherit ardour-3) (name "ardour") (version "4.0") (source (origin -- cgit v1.2.3 From cf2abac8ec07ca421393df755211779b60739ae6 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 7 May 2015 23:07:54 +0200 Subject: artwork: Update to latest version. * gnu/artwork.scm (%artwork-repository): Update. * gnu/services/xorg.scm (%default-slim-theme-name): Change to "0.x". * gnu/system/grub.scm (%background-image): Change to GuixSD-fully-black-4-3.svg. --- gnu/artwork.scm | 4 ++-- gnu/services/xorg.scm | 2 +- gnu/system/grub.scm | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/gnu/artwork.scm b/gnu/artwork.scm index c3b1695ba7..94c89143a6 100644 --- a/gnu/artwork.scm +++ b/gnu/artwork.scm @@ -32,9 +32,9 @@ (method git-fetch) (uri (git-reference (url "git://git.savannah.gnu.org/guix/guix-artwork.git") - (commit "61ae7c8"))) + (commit "6998d30"))) (sha256 (base32 - "102fxk2l6b0ibry3n430q8ljhwrnbml9qgalzkz6v09r7sx6a532")))) + "0k7j3pj9s3zqiqmfkapypssvzx3f12yr0cc2rbzxqfii0b4clp1j")))) ;;; artwork.scm ends here diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index c687b46bc2..8fd003f96a 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -192,7 +192,7 @@ which should be passed to this script as the first argument. If not, the (define %default-slim-theme-name ;; This must be the name of the sub-directory in %DEFAULT-SLIM-THEME that ;; contains the actual theme files. - "0.8") + "0.x") (define* (slim-service #:key (slim slim) (allow-empty-passwords? #t) auto-login? diff --git a/gnu/system/grub.scm b/gnu/system/grub.scm index 17b08aa9b7..e49b6dbe54 100644 --- a/gnu/system/grub.scm +++ b/gnu/system/grub.scm @@ -80,7 +80,8 @@ (define %background-image (grub-image (aspect-ratio 4/3) - (file #~(string-append #$%artwork-repository "/grub/GuixSD-4-3.svg")))) + (file #~(string-append #$%artwork-repository + "/grub/GuixSD-fully-black-4-3.svg")))) (define %default-theme ;; Default theme contributed by Felipe López. -- cgit v1.2.3 From 74a63b118b4069635077a234819430e65c591140 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Thu, 7 May 2015 22:35:13 +0200 Subject: gnu: Add libodfgen. * gnu/packages/libreoffice.scm (libodfgen): New variable. --- gnu/packages/libreoffice.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index fb308603c6..2db4a83893 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -421,3 +421,33 @@ created by PageMaker version 6.x and 7.") (description "Libvisio is a library that parses the file format of Microsoft Visio documents of all versions.") (license mpl2.0))) + +(define-public libodfgen + (package + (name "libodfgen") + (version "0.1.3") + (source + (origin + (method url-fetch) + (uri (string-append "http://dev-www.libreoffice.org/src/" + name "-" version ".tar.bz2")) + (sha256 (base32 + "074qsav86ixwi9zm1f77g9vxdf1ihm6n930vxjg8q3lwzd8g7lb6")))) + (build-system gnu-build-system) + (native-inputs + `(("doxygen" ,doxygen) + ("pkg-config" ,pkg-config))) + (inputs + `(("boost" ,boost) + ("librevenge" ,librevenge) + ("zlib" ,zlib))) + (arguments + ;; avoid triggering configure errors by simple inclusion of boost headers + `(#:configure-flags '("--disable-werror"))) + (home-page "http://sourceforge.net/p/libwpd/wiki/libodfgen/") + (synopsis "ODF (Open Document Format) library") + (description "Libodfgen is a library for generating documents in the +Open Document Format (ODF). It provides generator implementations for all +document interfaces supported by librevenge: +text documents, vector drawings, presentations and spreadsheets.") + (license (list mpl2.0 lgpl2.1+)))) ; dual license -- cgit v1.2.3 From 1d59b83b27a65800ac292fd25152ee6bf4f40fe8 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Thu, 7 May 2015 22:48:46 +0200 Subject: gnu: Add libmwaw. * gnu/packages/libreoffice.scm (libmwaw): New variable. --- gnu/packages/libreoffice.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 2db4a83893..c058e03a0d 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -451,3 +451,32 @@ Open Document Format (ODF). It provides generator implementations for all document interfaces supported by librevenge: text documents, vector drawings, presentations and spreadsheets.") (license (list mpl2.0 lgpl2.1+)))) ; dual license + +(define-public libmwaw + (package + (name "libmwaw") + (version "0.3.4") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/" name "/" name "/" + name "-" version ".tar.xz")) + (sha256 (base32 + "1sn95flxrh85qjsg1kk700c1ggxaaccr9j1nnw7x4daw8lky25ac")))) + (build-system gnu-build-system) + (native-inputs + `(("doxygen" ,doxygen) + ("pkg-config" ,pkg-config))) + (inputs + `(("boost" ,boost) + ("librevenge" ,librevenge) + ("zlib" ,zlib))) + (arguments + ;; avoid triggering configure errors by simple inclusion of boost headers + `(#:configure-flags '("--disable-werror"))) + (home-page "http://sourceforge.net/p/libmwaw/wiki/Home/") + (synopsis "Import library for some old Macintosh text documents") + (description "Libmwaw contains some import filters for old Macintosh +text documents (MacWrite, ClarisWorks, ... ) and for some graphics and +spreadsheet documents.") + (license (list mpl2.0 lgpl2.1+)))) ; dual license -- cgit v1.2.3 From 82741a8a112a472f5249a2412dba7f5b3c26ca88 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Thu, 7 May 2015 23:11:01 +0200 Subject: gnu: Add libwps. * gnu/packages/libreoffice.scm (libwps): New variable. --- gnu/packages/libreoffice.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index c058e03a0d..17f4a0ca01 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -480,3 +480,31 @@ text documents, vector drawings, presentations and spreadsheets.") text documents (MacWrite, ClarisWorks, ... ) and for some graphics and spreadsheet documents.") (license (list mpl2.0 lgpl2.1+)))) ; dual license + +(define-public libwps + (package + (name "libwps") + (version "0.3.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/" name "/" name "/" + name "-" version ".tar.xz")) + (sha256 (base32 + "14wfhw1ahavhx4hrdzc4hdwxjlffrm939kswf2x1250jnmyjlb5v")))) + (build-system gnu-build-system) + (native-inputs + `(("doxygen" ,doxygen) + ("pkg-config" ,pkg-config))) + (inputs + `(("boost" ,boost) + ("librevenge" ,librevenge) + ("zlib" ,zlib))) + (arguments + ;; avoid triggering configure errors by simple inclusion of boost headers + `(#:configure-flags '("--disable-werror"))) + (home-page "http://libwps.sourceforge.net/") + (synopsis "Import library for Microsoft Works text documents") + (description "Libwps is a library for importing files in the Microsoft +Works word processor file format.") + (license (list mpl2.0 lgpl2.1+)))) ; dual license -- cgit v1.2.3 From aa2e989e1e6d480e964b08a3395c1d7aa704e392 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 7 May 2015 18:40:15 -0400 Subject: gnu: linux-libre: Update to 4.0.2. * gnu/packages/patches/linux-libre-libreboot-fix.patch: Remove file. * gnu-system.am (dist_patch_DATA): Remove it. * gnu/packages/linux.scm (linux-libre): Update to 4.0.2. Remove patch. --- gnu-system.am | 1 - gnu/packages/linux.scm | 6 ++-- .../patches/linux-libre-libreboot-fix.patch | 37 ---------------------- 3 files changed, 2 insertions(+), 42 deletions(-) delete mode 100644 gnu/packages/patches/linux-libre-libreboot-fix.patch diff --git a/gnu-system.am b/gnu-system.am index 817bad74f0..95378a7cb7 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -472,7 +472,6 @@ dist_patch_DATA = \ gnu/packages/patches/libvpx-fix-armhf-link.patch \ gnu/packages/patches/libvpx-fix-ssse3-quantize.patch \ gnu/packages/patches/libvpx-vp9-out-of-bounds-access.patch \ - gnu/packages/patches/linux-libre-libreboot-fix.patch \ gnu/packages/patches/lirc-localstatedir.patch \ gnu/packages/patches/lm-sensors-hwmon-attrs.patch \ gnu/packages/patches/lua51-liblua-so.patch \ diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 62d27776e5..5da3979218 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -200,7 +200,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." #f))) (define-public linux-libre - (let* ((version "4.0.1") + (let* ((version "4.0.2") (build-phase '(lambda* (#:key system inputs #:allow-other-keys #:rest args) ;; Apply the neat patch. @@ -273,9 +273,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." (uri (linux-libre-urls version)) (sha256 (base32 - "1d5r26fh7dpdckvxfyn69r72h02yvri92rcmi2r658k56snsxs2k")) - (patches - (list (search-patch "linux-libre-libreboot-fix.patch"))))) + "18iyp2hzzb00jy389prp0lmby0i32qlbxjn74r4msmfra9s0w8mp")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) ("bc" ,bc) diff --git a/gnu/packages/patches/linux-libre-libreboot-fix.patch b/gnu/packages/patches/linux-libre-libreboot-fix.patch deleted file mode 100644 index d340a99fcb..0000000000 --- a/gnu/packages/patches/linux-libre-libreboot-fix.patch +++ /dev/null @@ -1,37 +0,0 @@ -This patch fixes linux-libre-3.19.x on Libreboot X60 machines. -Copied from https://bugzilla.kernel.org/show_bug.cgi?id=93171#c25 - ---- a/drivers/gpu/drm/i915/i915_irq.c -+++ a/drivers/gpu/drm/i915/i915_irq.c -@@ -3598,14 +3598,12 @@ static int i8xx_irq_postinstall(struct drm_device *dev) - ~(I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | - I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | - I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | -- I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT | -- I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT); -+ I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT); - I915_WRITE16(IMR, dev_priv->irq_mask); - - I915_WRITE16(IER, - I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | - I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | -- I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT | - I915_USER_INTERRUPT); - POSTING_READ16(IER); - -@@ -3767,14 +3765,12 @@ static int i915_irq_postinstall(struct drm_device *dev) - I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | - I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | - I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | -- I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT | -- I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT); -+ I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT); - - enable_mask = - I915_ASLE_INTERRUPT | - I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | - I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | -- I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT | - I915_USER_INTERRUPT; - - if (I915_HAS_HOTPLUG(dev)) { -- cgit v1.2.3 From ad12c43e972482dc9d38c7214fee751bad290ea7 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 8 May 2015 12:36:58 +0200 Subject: gnu: gcj: Add $libdir to RUNPATH. * gnu/packages/gcc.scm (gcj)[arguments]: Add build phase to add library output directory to RUNPATH. --- gnu/packages/gcc.scm | 76 +++++++++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 34 deletions(-) diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 4512e54e8b..b652521bb8 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -415,38 +415,47 @@ Go. It also includes runtime support libraries for these languages.") "--enable-languages=java" ,@(remove (cut string-match "--enable-languages.*" <>) ,flags)))) - ((#:phases phases) - `(alist-cons-after - 'install 'install-javac-and-javap-wrappers - (lambda _ - (let* ((javac (assoc-ref %build-inputs "javac.in")) - (ecj (assoc-ref %build-inputs "ecj-bootstrap")) - (gcj (assoc-ref %outputs "out")) - (gcjbin (string-append gcj "/bin/")) - (jvm (string-append gcj "/lib/jvm/")) - (target (string-append jvm "/bin/javac"))) - - (symlink (string-append gcjbin "jcf-dump") - (string-append jvm "/bin/javap")) - - (copy-file ecj (string-append gcj "/share/java/ecj.jar")) - - ;; Create javac wrapper from the template javac.in by - ;; replacing the @VARIABLES@ with paths. - (copy-file javac target) - (patch-shebang target) - (substitute* target - (("@JAVA@") - (string-append jvm "/bin/java")) - (("@ECJ_JAR@") - (string-append gcj "/share/java/ecj.jar")) - (("@RT_JAR@") - (string-append jvm "/jre/lib/rt.jar")) - (("@TOOLS_JAR@") - (string-append jvm "/lib/tools.jar"))) - (chmod target #o755) - #t)) - (alist-cons-after + ((#:phases phases) + `(modify-phases ,phases + (add-after + 'unpack 'add-lib-output-to-rpath + (lambda _ + (substitute* "libjava/Makefile.in" + (("libgcj_bc_dummy_LINK = .* -shared" line) + (string-append line " -Wl,-rpath=$(libdir)")) + (("libgcj(_bc)?_la_LDFLAGS =" ldflags _) + (string-append ldflags " -Wl,-rpath=$(libdir)"))))) + (add-after + 'install 'install-javac-and-javap-wrappers + (lambda _ + (let* ((javac (assoc-ref %build-inputs "javac.in")) + (ecj (assoc-ref %build-inputs "ecj-bootstrap")) + (gcj (assoc-ref %outputs "out")) + (gcjbin (string-append gcj "/bin/")) + (jvm (string-append gcj "/lib/jvm/")) + (target (string-append jvm "/bin/javac"))) + + (symlink (string-append gcjbin "jcf-dump") + (string-append jvm "/bin/javap")) + + (copy-file ecj (string-append gcj "/share/java/ecj.jar")) + + ;; Create javac wrapper from the template javac.in by + ;; replacing the @VARIABLES@ with paths. + (copy-file javac target) + (patch-shebang target) + (substitute* target + (("@JAVA@") + (string-append jvm "/bin/java")) + (("@ECJ_JAR@") + (string-append gcj "/share/java/ecj.jar")) + (("@RT_JAR@") + (string-append jvm "/jre/lib/rt.jar")) + (("@TOOLS_JAR@") + (string-append jvm "/lib/tools.jar"))) + (chmod target #o755) + #t))) + (add-after 'install 'remove-broken-or-conflicting-files (lambda _ (let ((out (assoc-ref %outputs "out"))) @@ -456,8 +465,7 @@ Go. It also includes runtime support libraries for these languages.") "libjawt.so") (find-files (string-append out "/bin") ".*(c\\+\\+|cpp|g\\+\\+|gcc.*)")))) - #t) - ,phases))))))) + #t)))))))) (define ecj-bootstrap-4.8 (origin -- cgit v1.2.3 From 6b888efff627c0e50f45e22a6408a02232d3b87f Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Fri, 8 May 2015 22:08:04 +0800 Subject: gnu: Add aisleriot. * gnu/packages/gnome.scm (aisleriot): New variable. --- gnu/packages/gnome.scm | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 5caa1770cb..9508fc78c0 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -45,6 +45,7 @@ #:use-module (gnu packages gnuzilla) #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) + #:use-module (gnu packages guile) #:use-module (gnu packages pdf) #:use-module (gnu packages polkit) #:use-module (gnu packages popt) @@ -2219,3 +2220,38 @@ settings, themes, mouse settings, and startup of other daemons.") playlists in a variety of formats.") (license license:lgpl2.0+))) +(define-public aisleriot + (package + (name "aisleriot") + (version "3.16.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "19k483x9dkq8vjbq8f333pk9qil64clpsfg20q8xk9bgmk38aj8h")))) + (build-system glib-or-gtk-build-system) + (arguments + '(#:configure-flags + '("--with-platform=gtk-only" + "--with-card-theme-formats=svg"))) + (native-inputs + `(("desktop-file-utils" ,desktop-file-utils) + ("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc. + ("intltool" ,intltool) + ("itstool" ,itstool) + ("pkg-config" ,pkg-config) + ("xmllint" ,libxml2))) + (inputs + `(("gtk+" ,gtk+) + ("guile" ,guile-2.0) + ("libcanberra" ,libcanberra) + ("librsvg" ,librsvg))) + (home-page "https://wiki.gnome.org/Apps/Aisleriot") + (synopsis "Solitaire card games") + (description + "Aisleriot (also known as Solitaire or sol) is a collection of card games +which are easy to play with the aid of a mouse.") + (license license:gpl3+))) -- cgit v1.2.3 From 15137a29c23e4beab7641b6c6191fdff9716dea4 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 8 May 2015 14:59:00 +0200 Subject: nss: Add '%mdns-host-lookup-nss'. * gnu/system/nss.scm (%mdns-host-lookup-nss): New variable. * doc/guix.texi (Name Service Switch): Document it. --- doc/guix.texi | 24 +++++++++++++++++++----- gnu/system/nss.scm | 23 +++++++++++++++++++++++ 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 2d02a04f9c..8e36ce3a5c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -5180,6 +5180,10 @@ for host names ending in @code{.local}: (name "mdns"))))) @end example +Don't worry: the @code{%mdns-host-lookup-nss} variable (see below) +contains this configuration, so you won't have to type it if all you +want is to have @code{.local} host lookup working. + Note that, in this case, in addition to setting the @code{name-service-switch} of the @code{operating-system} declaration, @code{nscd-service} must be told where to find the @code{nss-mdns} @@ -5207,6 +5211,21 @@ configuration file: @noindent @dots{} and then refer to @var{%my-base-services} instead of @var{%base-services} in the @code{operating-system} declaration. +Lastly, this relies on the availability of the Avahi service +(@pxref{Desktop Services, @code{avahi-service}}). + +For convenience, the following variables provide typical NSS +configurations. + +@defvr {Scheme Variable} %default-nss +This is the default name service switch configuration, a +@code{name-service-switch} object. +@end defvr + +@defvr {Scheme Variable} %mdns-host-lookup-nss +This is the name service switch configuration with support for host name +lookup over multicast DNS (mDNS) for host names ending in @code{.local}. +@end defvr The reference for name service switch configuration is given below. It is a direct mapping of the C library's configuration file format, so @@ -5217,11 +5236,6 @@ not only of adding this warm parenthetic feel that we like, but also static checks: you'll know about syntax errors and typos as soon as you run @command{guix system}. -@defvr {Scheme Variable} %default-nss -This is the default name service switch configuration, a -@code{name-service-switch} object. -@end defvr - @deftp {Data Type} name-service-switch This is the data type representation the configuration of libc's name diff --git a/gnu/system/nss.scm b/gnu/system/nss.scm index ec2d2517e7..f4d2855289 100644 --- a/gnu/system/nss.scm +++ b/gnu/system/nss.scm @@ -29,6 +29,8 @@ lookup-specification %default-nss + %mdns-host-lookup-nss + %files %compat %dns @@ -148,6 +150,27 @@ ;; Default NSS configuration. (name-service-switch)) +(define %mdns-host-lookup-nss + (name-service-switch + (hosts (list %files ;first, check /etc/hosts + + ;; If the above did not succeed, try with 'mdns_minimal'. + (name-service + (name "mdns_minimal") + + ;; 'mdns_minimal' is authoritative for '.local'. When it + ;; returns "not found", no need to try the next methods. + (reaction (lookup-specification + (not-found => return)))) + + ;; Then fall back to DNS. + (name-service + (name "dns")) + + ;; Finally, try with the "full" 'mdns'. + (name-service + (name "mdns")))))) + ;;; ;;; Serialization. -- cgit v1.2.3 From a0dac7a01f766e75dc73200a889f31c3920a2d98 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 8 May 2015 15:39:45 +0200 Subject: profiles: Ensure the profile's etc/ directory is writable. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reported by 宋文武 . * guix/build/profiles.scm (build-etc/profile, ensure-writable-directory): New procedures. (build-profile): Use them. * tests/profiles.scm ("etc/profile when etc/ already exists"): New test. --- guix/build/profiles.scm | 74 +++++++++++++++++++++++++++++++++++++++---------- tests/profiles.scm | 29 +++++++++++++++++++ 2 files changed, 88 insertions(+), 15 deletions(-) diff --git a/guix/build/profiles.scm b/guix/build/profiles.scm index eda54cb37a..525d59b979 100644 --- a/guix/build/profiles.scm +++ b/guix/build/profiles.scm @@ -21,6 +21,7 @@ #:use-module (guix build utils) #:use-module (guix search-paths) #:use-module (srfi srfi-26) + #:use-module (ice-9 ftw) #:use-module (ice-9 match) #:use-module (ice-9 pretty-print) #:export (build-profile)) @@ -57,21 +58,9 @@ user-friendly name of the profile is, for instance ~/.guix-profile rather than port) (newline port)))) -(define* (build-profile output inputs - #:key manifest search-paths) - "Build a user profile from INPUTS in directory OUTPUT. Write MANIFEST, an -sexp, to OUTPUT/manifest. Create OUTPUT/etc/profile with Bash definitions for -all the variables listed in SEARCH-PATHS." - ;; Make the symlinks. - (union-build output inputs - #:log-port (%make-void-port "w")) - - ;; Store meta-data. - (call-with-output-file (string-append output "/manifest") - (lambda (p) - (pretty-print manifest p))) - - ;; Add a ready-to-use Bash profile. +(define (build-etc/profile output search-paths) + "Build the 'OUTPUT/etc/profile' shell file containing environment variable +definitions for all the SEARCH-PATHS." (mkdir-p (string-append output "/etc")) (call-with-output-file (string-append output "/etc/profile") (lambda (port) @@ -99,4 +88,59 @@ all the variables listed in SEARCH-PATHS." (for-each (write-environment-variable-definition port) (map (abstract-profile output) variables)))))) +(define (ensure-writable-directory directory) + "Ensure DIRECTORY exists and is writable. If DIRECTORY is currently a +symlink (to a read-only directory in the store), then delete the symlink and +instead make DIRECTORY a \"real\" directory containing symlinks." + (define (unsymlink link) + (let* ((target (readlink link)) + (files (scandir target + (negate (cut member <> '("." "..")))))) + (delete-file link) + (mkdir link) + (for-each (lambda (file) + (symlink (string-append target "/" file) + (string-append link "/" file))) + files))) + + (catch 'system-error + (lambda () + (mkdir directory)) + (lambda args + (let ((errno (system-error-errno args))) + (if (= errno EEXIST) + (let ((stat (lstat directory))) + (case (stat:type stat) + ((symlink) + ;; "Unsymlink" DIRECTORY so that it is writable. + (unsymlink directory)) + ((directory) + #t) + (else + (error "cannot mkdir because a same-named file exists" + directory)))) + (apply throw args)))))) + +(define* (build-profile output inputs + #:key manifest search-paths) + "Build a user profile from INPUTS in directory OUTPUT. Write MANIFEST, an +sexp, to OUTPUT/manifest. Create OUTPUT/etc/profile with Bash definitions for +-all the variables listed in SEARCH-PATHS." + ;; Make the symlinks. + (union-build output inputs + #:log-port (%make-void-port "w")) + + ;; Store meta-data. + (call-with-output-file (string-append output "/manifest") + (lambda (p) + (pretty-print manifest p))) + + ;; Make sure we can write to 'OUTPUT/etc'. 'union-build' above could have + ;; made 'etc' a symlink to a read-only sub-directory in the store so we need + ;; to work around that. + (ensure-writable-directory (string-append output "/etc")) + + ;; Write 'OUTPUT/etc/profile'. + (build-etc/profile output search-paths)) + ;;; profile.scm ends here diff --git a/tests/profiles.scm b/tests/profiles.scm index de1411dca2..ac7f28bf53 100644 --- a/tests/profiles.scm +++ b/tests/profiles.scm @@ -24,6 +24,7 @@ #:use-module (guix monads) #:use-module (guix packages) #:use-module (guix derivations) + #:use-module (guix build-system trivial) #:use-module (gnu packages bootstrap) #:use-module ((gnu packages base) #:prefix packages:) #:use-module ((gnu packages guile) #:prefix packages:) @@ -248,6 +249,34 @@ (and (zero? (close-pipe pipe)) (string-contains path (string-append profile "/bin")))))))) +(test-assertm "etc/profile when etc/ already exists" + ;; Here 'union-build' makes the profile's etc/ a symlink to the package's + ;; etc/ directory, which makes it read-only. Make sure the profile build + ;; handles that. + (mlet* %store-monad + ((thing -> (dummy-package "dummy" + (build-system trivial-build-system) + (arguments + `(#:guile ,%bootstrap-guile + #:builder + (let ((out (assoc-ref %outputs "out"))) + (mkdir out) + (mkdir (string-append out "/etc")) + (call-with-output-file (string-append out "/etc/foo") + (lambda (port) + (display "foo!" port)))))))) + (entry -> (package->manifest-entry thing)) + (drv (profile-derivation (manifest (list entry)) + #:hooks '())) + (profile -> (derivation->output-path drv))) + (mbegin %store-monad + (built-derivations (list drv)) + (return (and (file-exists? (string-append profile "/etc/profile")) + (string=? (call-with-input-file + (string-append profile "/etc/foo") + get-string-all) + "foo!")))))) + (test-end "profiles") -- cgit v1.2.3 From 4467be213a93bab8f38ad5e4214dc947b8ca0bd1 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 8 May 2015 15:58:59 +0200 Subject: services: Add '%desktop-services'. * gnu/services/desktop.scm (%desktop-services): New variable. * doc/guix.texi (Desktop Services): Document it. --- doc/guix.texi | 23 +++++++++++++++++++++++ gnu/services/desktop.scm | 32 +++++++++++++++++++++++++++++++- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index 8e36ce3a5c..7504deab4e 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -5005,6 +5005,29 @@ usually useful in the context of a ``desktop'' setup---that is, on a machine running a graphical display server, possibly with graphical user interfaces, etc. +To simplify things, the module defines a variable containing the set of +services that users typically expect on a machine with a graphical +environment and networking: + +@defvr {Scheme Variable} %desktop-services +This is a list of services that builds upon @var{%base-services} and +adds or adjust services for a typical ``desktop'' setup. + +In particular, it adds a graphical login manager (@pxref{X Window, +@code{slim-service}}), a network management tool (@pxref{Networking +Services, @code{wicd-service}}), energy and color management services, +an NTP client and an SSH server (@pxref{Networking Services}), the Avahi +daemon, and has the name service switch service configured to be able to +use @code{nss-mdns} (@pxref{Name Service Switch, mDNS}). +@end defvr + +The @var{%desktop-services} variable can be used as the @code{services} +field of an @code{operating-system} declaration (@pxref{operating-system +Reference, @code{services}}). + +The actual service definitions provided by @code{(gnu services desktop)} +are described below. + @deffn {Monadic Procedure} dbus-service @var{services} @ [#:dbus @var{dbus}] Return a service that runs the ``system bus'', using @var{dbus}, with diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 5945f7af18..910dc1f9e0 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -19,17 +19,25 @@ (define-module (gnu services desktop) #:use-module (gnu services) + #:use-module (gnu services base) + #:use-module (gnu services avahi) + #:use-module (gnu services xorg) + #:use-module (gnu services networking) + #:use-module (gnu services ssh) #:use-module (gnu system shadow) #:use-module (gnu packages glib) #:use-module (gnu packages admin) #:use-module (gnu packages gnome) + #:use-module (gnu packages avahi) + #:use-module (gnu packages wicd) #:use-module (guix monads) #:use-module (guix store) #:use-module (guix gexp) #:use-module (ice-9 match) #:export (dbus-service upower-service - colord-service)) + colord-service + %desktop-services)) ;;; Commentary: ;;; @@ -267,4 +275,26 @@ site} for more information." (shell #~(string-append #$shadow "/sbin/nologin"))))))))) +(define %desktop-services + ;; List of services typically useful for a "desktop" use case. + (cons* (slim-service) + + (avahi-service) + (wicd-service) + (upower-service) + (colord-service) + (dbus-service (list avahi wicd upower colord)) + + (ntp-service) + (lsh-service) + + (map (lambda (mservice) + ;; Provide an nscd ready to use nss-mdns. + (mlet %store-monad ((service mservice)) + (if (memq 'nscd (service-provision service)) + (nscd-service (nscd-configuration) + #:name-services (list nss-mdns)) + mservice))) + %base-services))) + ;;; desktop.scm ends here -- cgit v1.2.3 From 04e4e6ab51f271298f9a001ba5c8c6ae6426fd64 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 8 May 2015 16:26:53 +0200 Subject: doc: Document sessions and ~/.xsession for SLiM. * gnu/services/xorg.scm (slim-service): Document session types and ~/.xsession. * doc/guix.texi (X Window): Adjust accordingly. --- doc/guix.texi | 13 +++++++++++++ gnu/services/xorg.scm | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/doc/guix.texi b/doc/guix.texi index 7504deab4e..b44811f3cb 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4968,6 +4968,19 @@ Return a service that spawns the SLiM graphical login manager, which in turn starts the X display server with @var{startx}, a command as returned by @code{xorg-start-command}. +@cindex X session + +SLiM automatically looks for session types described by the @file{.desktop} +files in @file{/run/current-system/profile/share/xsessions} and allows users +to choose a session from the log-in screen using @kbd{F1}. Packages such as +@var{xfce}, @var{sawfish}, and @var{ratpoison} provide @file{.desktop} files; +adding them to the system-wide set of packages automatically makes them +available at the log-in screen. + +In addition, @file{~/.xsession} files are honored. When available, +@file{~/.xsession} must be an executable that starts a window manager +and/or other X clients. + When @var{allow-empty-passwords?} is true, allow logins with an empty password. When @var{auto-login?} is true, log in automatically as @var{default-user}. diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 8fd003f96a..4821614ba2 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -207,6 +207,19 @@ which should be passed to this script as the first argument. If not, the turn starts the X display server with @var{startx}, a command as returned by @code{xorg-start-command}. +@cindex X session + +SLiM automatically looks for session types described by the @file{.desktop} +files in @file{/run/current-system/profile/share/xsessions} and allows users +to choose a session from the log-in screen using @kbd{F1}. Packages such as +@var{xfce}, @var{sawfish}, and @var{ratpoison} provide @file{.desktop} files; +adding them to the system-wide set of packages automatically makes them +available at the log-in screen. + +In addition, @file{~/.xsession} files are honored. When available, +@file{~/.xsession} must be an executable that starts a window manager +and/or other X clients. + When @var{allow-empty-passwords?} is true, allow logins with an empty password. When @var{auto-login?} is true, log in automatically as @var{default-user} with @var{auto-login-session}. -- cgit v1.2.3 From 965a7332201af37059bdaf97dc2ec21249bc9d32 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 8 May 2015 16:33:52 +0200 Subject: doc: Document 'avahi-service'. * gnu/services/avahi.scm (avahi-service): Add URL in docstring. * doc/guix.texi (Networking Services): Document it. (Name Service Switch): Fix cross-reference. --- doc/guix.texi | 26 +++++++++++++++++++++++++- gnu/services/avahi.scm | 2 +- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index b44811f3cb..e2465ee823 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4952,6 +4952,30 @@ This mechanism can prevent programs running locally, such as Web browsers, from accessing Facebook. @end defvr +The @code{(gnu services avahi)} provides the following definition. + +@deffn {Monadic Procedure} avahi-service [#:avahi @var{avahi}] @ + [#:host-name #f] [#:publish? #t] [#:ipv4? #t] @ + [#:ipv6? #t] [#:wide-area? #f] @ + [#:domains-to-browse '()] +Return a service that runs @command{avahi-daemon}, a system-wide +mDNS/DNS-SD responder that allows for service discovery and +"zero-configuration" host name lookups (see @uref{http://avahi.org/}). + +If @var{host-name} is different from @code{#f}, use that as the host name to +publish for this machine; otherwise, use the machine's actual host name. + +When @var{publish?} is true, publishing of host names and services is allowed; +in particular, avahi-daemon will publish the machine's host name and IP +address via mDNS on the local network. + +When @var{wide-area?} is true, DNS-SD over unicast DNS is enabled. + +Boolean values @var{ipv4?} and @var{ipv6?} determine whether to use IPv4/IPv6 +sockets. +@end deffn + + @node X Window @subsubsection X Window @@ -5248,7 +5272,7 @@ configuration file: @dots{} and then refer to @var{%my-base-services} instead of @var{%base-services} in the @code{operating-system} declaration. Lastly, this relies on the availability of the Avahi service -(@pxref{Desktop Services, @code{avahi-service}}). +(@pxref{Networking Services, @code{avahi-service}}). For convenience, the following variables provide typical NSS configurations. diff --git a/gnu/services/avahi.scm b/gnu/services/avahi.scm index 0a56f3d7f6..a3ca5ab6fb 100644 --- a/gnu/services/avahi.scm +++ b/gnu/services/avahi.scm @@ -63,7 +63,7 @@ (domains-to-browse '())) "Return a service that runs @command{avahi-daemon}, a system-wide mDNS/DNS-SD responder that allows for service discovery and -\"zero-configuration\" host name lookups. +\"zero-configuration\" host name lookups (see @uref{http://avahi.org/}). If @var{host-name} is different from @code{#f}, use that as the host name to publish for this machine; otherwise, use the machine's actual host name. -- cgit v1.2.3 From 9c8bd626a1e531e65ca9d5262924ff027b8a60cf Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 8 May 2015 09:35:07 +0200 Subject: gnu: gimp: Enable Python scripting support. * gnu/packages/gimp.scm (gimp): Enable Python scripting support. --- gnu/packages/gimp.scm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm index 25a41690dd..35c55dc2f9 100644 --- a/gnu/packages/gimp.scm +++ b/gnu/packages/gimp.scm @@ -32,6 +32,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages xml) #:use-module (gnu packages photo) + #:use-module (gnu packages python) #:use-module (gnu packages xorg) #:use-module (gnu packages imagemagick)) @@ -127,10 +128,6 @@ buffers.") (base32 "0bdj0l7a94jqhjnj40m9rqaf622wj905iximivb55iy98639aanq")))) (build-system gnu-build-system) - (arguments - `(#:configure-flags - ;; We don't have pygtk which seems to be needed for this feature - `("--disable-python"))) (inputs `(("babl" ,babl) ("glib" ,glib) @@ -141,6 +138,8 @@ buffers.") ("exif" ,libexif) ;optional, EXIF + XMP support ("lcms" ,lcms) ;optional, color management ("librsvg" ,librsvg) ;optional, SVG support + ("python" ,python-2) ;optional, Python support + ("python2-pygtk" ,python2-pygtk) ;optional, Python support ("gegl" ,gegl))) (native-inputs `(("pkg-config" ,pkg-config) -- cgit v1.2.3 From 85bafc31f63714d0e47c83d8eb8bdd2ae71c0994 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 8 May 2015 19:58:56 -0400 Subject: gnu: mariadb: Update to 10.0.18. * gnu/packages/databases.scm (mariadb): Update to 10.0.18. --- gnu/packages/databases.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 5daf7ecba1..6fcfca0a87 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -158,7 +158,7 @@ Language.") (define-public mariadb (package (name "mariadb") - (version "10.0.17") + (version "10.0.18") (source (origin (method url-fetch) (uri (string-append "https://downloads.mariadb.org/f/" @@ -166,7 +166,7 @@ Language.") name "-" version ".tar.gz")) (sha256 (base32 - "04ckq67qgkghh7yzrbzwidk7wn7yjml15gzj2c5p1hs2k7lr9lww")))) + "1xcs391cm0vnl9bvx1470v8z4d77zqv16n6iaqi12jm0ma8fwvv8")))) (build-system cmake-build-system) (arguments '(#:configure-flags -- cgit v1.2.3 From cbf71ea25ebf4291ce379003f8df9f2dbcc4f3b9 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 7 May 2015 05:32:47 -0400 Subject: gnu: subversion: Add fix for sqlite-3.8.9. * gnu/packages/patches/subversion-sqlite-3.8.9-fix.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/version-control.scm (subversion): Add patch. --- gnu-system.am | 1 + .../patches/subversion-sqlite-3.8.9-fix.patch | 59 ++++++++++++++++++++++ gnu/packages/version-control.scm | 5 +- 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/subversion-sqlite-3.8.9-fix.patch diff --git a/gnu-system.am b/gnu-system.am index 95378a7cb7..77c7836671 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -544,6 +544,7 @@ dist_patch_DATA = \ gnu/packages/patches/slim-config.patch \ gnu/packages/patches/slim-sigusr1.patch \ gnu/packages/patches/soprano-find-clucene.patch \ + gnu/packages/patches/subversion-sqlite-3.8.9-fix.patch \ gnu/packages/patches/superlu-dist-scotchmetis.patch \ gnu/packages/patches/tcsh-fix-autotest.patch \ gnu/packages/patches/teckit-cstdio.patch \ diff --git a/gnu/packages/patches/subversion-sqlite-3.8.9-fix.patch b/gnu/packages/patches/subversion-sqlite-3.8.9-fix.patch new file mode 100644 index 0000000000..92d8a85c8f --- /dev/null +++ b/gnu/packages/patches/subversion-sqlite-3.8.9-fix.patch @@ -0,0 +1,59 @@ +This upstream patch (r1672295) is needed to fix a test failure when built +against sqlite 3.8.9. See: + + https://mail-archives.apache.org/mod_mbox/subversion-dev/201504.mbox/%3C5526D197.6020808@gmx.de%3E + + +r1672295 | rhuijben | 2015-04-09 07:31:12 -0400 (Thu, 09 Apr 2015) | 15 lines + +Optimize STMT_SELECT_EXTERNALS_DEFINED when using Sqlite 3.8.9, by +adding two more rows to the sqlite_stat1 table. + +This fixes a test failure in wc-queries-test.c, but actual users most +likely don't notice a difference as a tablescan on an EXTERNALS tables +index is not that expensive, given that most working copies don't have +many externals. + +* subversion/libsvn_wc/wc-metadata.sql + (STMT_INSTALL_SCHEMA_STATISTICS): Add two rows. + +* subversion/tests/libsvn_wc/wc-queries-test.c + (test_schema_statistics): Add a dummy externals row to allow + verifying schema. + +Index: subversion/tests/libsvn_wc/wc-queries-test.c +=================================================================== +--- subversion/tests/libsvn_wc/wc-queries-test.c (revision 1672294) ++++ subversion/tests/libsvn_wc/wc-queries-test.c (revision 1672295) +@@ -927,6 +927,15 @@ + "VALUES (1, '', '')", + NULL, NULL, NULL)); + ++ SQLITE_ERR( ++ sqlite3_exec(sdb, ++ "INSERT INTO EXTERNALS (wc_id, local_relpath," ++ " parent_relpath, repos_id," ++ " presence, kind, def_local_relpath," ++ " def_repos_relpath) " ++ "VALUES (1, 'subdir', '', 1, 'normal', 'dir', '', '')", ++ NULL, NULL, NULL)); ++ + /* These are currently not necessary for query optimization, but it's better + to tell Sqlite how we intend to use this table anyway */ + SQLITE_ERR( +Index: subversion/libsvn_wc/wc-metadata.sql +=================================================================== +--- subversion/libsvn_wc/wc-metadata.sql (revision 1672294) ++++ subversion/libsvn_wc/wc-metadata.sql (revision 1672295) +@@ -619,6 +619,11 @@ + INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES + ('WC_LOCK', 'sqlite_autoindex_WC_LOCK_1', '100 100 1'); + ++INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES ++ ('EXTERNALS','sqlite_autoindex_EXTERNALS_1', '100 100 1'); ++INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES ++ ('EXTERNALS','I_EXTERNALS_DEFINED', '100 100 3 1'); ++ + /* sqlite_autoindex_WORK_QUEUE_1 doesn't exist because WORK_QUEUE is + a INTEGER PRIMARY KEY AUTOINCREMENT table */ + diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 96cab1eed7..0d153fa92d 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -547,7 +547,10 @@ property manipulation.") "subversion-" version ".tar.bz2")) (sha256 (base32 - "0ybmc0yq83jhblp42wdqvn2cryra3sypx8mkxn5b8lq7hilcr68h")))) + "0ybmc0yq83jhblp42wdqvn2cryra3sypx8mkxn5b8lq7hilcr68h")) + (patches + (list (search-patch "subversion-sqlite-3.8.9-fix.patch"))) + (patch-flags '("-p0")))) (build-system gnu-build-system) (arguments '(#:phases (alist-cons-after -- cgit v1.2.3 From 57e95b261bf316caf784e74dd3f838a6ef59c344 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 6 May 2015 19:16:38 -0400 Subject: gnu: sqlite: Update to 3.8.9. * gnu/packages/databases.scm (sqlite): Update to 3.8.9. --- gnu/packages/databases.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 6fcfca0a87..a0d9f88f05 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -289,7 +289,7 @@ types are supported, as is encryption.") (define-public sqlite (package (name "sqlite") - (version "3.8.8.3") + (version "3.8.9") (source (origin (method url-fetch) ;; TODO: Download from sqlite.org once this bug : @@ -309,7 +309,7 @@ types are supported, as is encryption.") "/sqlite-autoconf-" numeric-version ".tar.gz"))) (sha256 (base32 - "04dl53iv5q0srv4jcgjfzsrdzkq6dg1sgmlmpw9lrd4xrmj6jmvl")))) + "18k90bbfvvgc5204nm1hzw0vsj9ygzv7zbq3z6zrya6j5hwvdsvn")))) (build-system gnu-build-system) (inputs `(("readline" ,readline))) (arguments -- cgit v1.2.3 From 15f0de0581987c539f86012bf524559e283f5942 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 9 May 2015 12:57:36 -0400 Subject: system: activate-ptrace-attach: Handle kernels without YAMA support. * gnu/build/activation.scm (activate-ptrace-attach): Check for the existence of /proc/sys/kernel/yama/ptrace_scope before trying to write to it. --- gnu/build/activation.scm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm index 8697d9d16d..352e736050 100644 --- a/gnu/build/activation.scm +++ b/gnu/build/activation.scm @@ -369,9 +369,11 @@ found in Linux 3.4 onward that prevents users from attaching to their own processes--see Yama.txt in the Linux source tree for the rationale. This sounds like an unacceptable restriction for little or no security improvement." - (call-with-output-file "/proc/sys/kernel/yama/ptrace_scope" - (lambda (port) - (display 0 port)))) + (let ((file "/proc/sys/kernel/yama/ptrace_scope")) + (when (file-exists? file) + (call-with-output-file file + (lambda (port) + (display 0 port)))))) (define %current-system -- cgit v1.2.3 From 6f05630ba6848fa666f4ea57aab7f7ffbc15fc72 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 9 May 2015 15:40:14 +0200 Subject: gnu: wicd: Add patch to fix template instantiation. * gnu/packages/patches/wicd-template-instantiation.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/wicd.scm (wicd)[source]: Use it. --- gnu-system.am | 1 + .../patches/wicd-template-instantiation.patch | 29 ++++++++++++++++++++++ gnu/packages/wicd.scm | 4 ++- 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/wicd-template-instantiation.patch diff --git a/gnu-system.am b/gnu-system.am index 77c7836671..d3e91ed05b 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -562,6 +562,7 @@ dist_patch_DATA = \ gnu/packages/patches/w3m-fix-compile.patch \ gnu/packages/patches/webkitgtk-2.4.8-gmutexlocker.patch \ gnu/packages/patches/weex-vacopy.patch \ + gnu/packages/patches/wicd-template-instantiation.patch \ gnu/packages/patches/wicd-urwid-1.3.patch \ gnu/packages/patches/wmctrl-64-fix.patch \ gnu/packages/patches/wpa-supplicant-CVE-2015-1863.patch \ diff --git a/gnu/packages/patches/wicd-template-instantiation.patch b/gnu/packages/patches/wicd-template-instantiation.patch new file mode 100644 index 0000000000..16d8fa6e1d --- /dev/null +++ b/gnu/packages/patches/wicd-template-instantiation.patch @@ -0,0 +1,29 @@ +Wicd 1.7.3 fails to instantiate template lines that have several +variable references. For instance, the line: + + wep_key$_KEY_INDEX=$_KEY + +which is found in in the 'wep-hex' template, expands to these two +lines: + + wep_key0=$_KEY + wep_key0=123456789ab + +This patch fixes that by only emitting the fully substituted line. + +Patch by Ludovic Courtès . + +--- a/wicd/misc.py 2012-11-17 00:07:08 +0000 ++++ b/wicd/misc.py 2015-05-09 11:22:37 +0000 +@@ -321,11 +321,11 @@ def ParseEncryption(network): + rep_val = '0' + if rep_val: + line = line.replace("$_%s" % cur_val, str(rep_val)) +- config_file = ''.join([config_file, line]) + else: + print "Ignoring template line: '%s'" % line + else: + print "Weird parsing error occurred" ++ config_file = ''.join([config_file, line]) + else: # Just a regular entry. + config_file = ''.join([config_file, line]) diff --git a/gnu/packages/wicd.scm b/gnu/packages/wicd.scm index 1953a56b6c..779ec84e3c 100644 --- a/gnu/packages/wicd.scm +++ b/gnu/packages/wicd.scm @@ -44,7 +44,9 @@ "/+download/wicd-" version ".tar.gz")) (sha256 (base32 "00c4rq753bhg64rv1v9yl834ssq7igyy7cz3swp287b5n5bqiqwi")) - (patches (list (search-patch "wicd-urwid-1.3.patch"))))) + (patches (map search-patch + '("wicd-urwid-1.3.patch" + "wicd-template-instantiation.patch"))))) (build-system python-build-system) (native-inputs `(("gettext" ,gnu-gettext))) (inputs `(("dbus" ,dbus) -- cgit v1.2.3 From 54d6223d2c240c0214c123e0b0aa977a01a3c209 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 9 May 2015 16:41:38 +0200 Subject: doc: Rename OS config example. * gnu/system/os-config.tmpl: Rename to... * gnu/system/examples/bare-bones.tmpl: ... this. * Makefile.am (EXAMPLES): Adjust accordingly. * doc.am (doc/os-config.texi): Likewise. * gnu/system/install.scm (configuration-template-service)[template]: Likewise. --- Makefile.am | 2 +- doc.am | 4 ++-- gnu/system/examples/bare-bones.tmpl | 47 +++++++++++++++++++++++++++++++++++++ gnu/system/install.scm | 2 +- gnu/system/os-config.tmpl | 47 ------------------------------------- 5 files changed, 51 insertions(+), 51 deletions(-) create mode 100644 gnu/system/examples/bare-bones.tmpl delete mode 100644 gnu/system/os-config.tmpl diff --git a/Makefile.am b/Makefile.am index 4fc1fc2ffb..b20421a753 100644 --- a/Makefile.am +++ b/Makefile.am @@ -135,7 +135,7 @@ KCONFIGS = \ # Templates, examples. EXAMPLES = \ - gnu/system/os-config.tmpl + gnu/system/examples/bare-bones.tmpl GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go guix/tests.go diff --git a/doc.am b/doc.am index 56ad114ec8..c517e0f908 100644 --- a/doc.am +++ b/doc.am @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2012, 2013, 2014 Ludovic Courtès +# Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès # Copyright © 2013 Andreas Enge # # This file is part of GNU Guix. @@ -30,7 +30,7 @@ BUILT_SOURCES += doc/os-config.texi EXTRA_DIST += doc/os-config.texi MAINTAINERCLEANFILES = doc/os-config.texi -doc/os-config.texi: gnu/system/os-config.tmpl +doc/os-config.texi: gnu/system/examples/bare-bones.tmpl $(MKDIR_P) "`dirname "$@"`" cp "$<" "$@" diff --git a/gnu/system/examples/bare-bones.tmpl b/gnu/system/examples/bare-bones.tmpl new file mode 100644 index 0000000000..e14c95733a --- /dev/null +++ b/gnu/system/examples/bare-bones.tmpl @@ -0,0 +1,47 @@ +;; This is an operating system configuration template. + +(use-modules (gnu)) +(use-service-modules xorg networking dbus avahi) +(use-package-modules xorg avahi) + +(operating-system + (host-name "antelope") + (timezone "Europe/Paris") + (locale "en_US.UTF-8") + + ;; Assuming /dev/sdX is the target hard disk, and "root" is + ;; the label of the target root file system. + (bootloader (grub-configuration (device "/dev/sdX"))) + (file-systems (cons (file-system + (device "root") + (title 'label) + (mount-point "/") + (type "ext4")) + %base-file-systems)) + + ;; This is where user accounts are specified. The "root" + ;; account is implicit, and is initially created with the + ;; empty password. + (users (list (user-account + (name "alice") + (comment "Bob's sister") + (group "users") + + ;; Adding the account to the "wheel" group + ;; makes it a sudoer. Adding it to "audio" + ;; and "video" allows the user to play sound + ;; and access the webcam. + (supplementary-groups '("wheel" + "audio" "video")) + (home-directory "/home/alice")))) + + ;; Globally-installed packages. + (packages (cons xterm %base-packages)) + + ;; Add services to the baseline: the SLiM log-in manager + ;; for Xorg sessions, a DHCP client, Avahi, and D-Bus. + (services (cons* (slim-service) + (dhcp-client-service) + (avahi-service) + (dbus-service (list avahi)) + %base-services))) diff --git a/gnu/system/install.scm b/gnu/system/install.scm index d55f0a0978..bba2df5094 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -175,7 +175,7 @@ configuration template file in the installation system." (define local-template "/etc/configuration-template.scm") (define template - (search-path %load-path "gnu/system/os-config.tmpl")) + (search-path %load-path "gnu/system/examples/bare-bones.tmpl")) (mlet %store-monad ((template (interned-file template))) (return (service diff --git a/gnu/system/os-config.tmpl b/gnu/system/os-config.tmpl deleted file mode 100644 index e14c95733a..0000000000 --- a/gnu/system/os-config.tmpl +++ /dev/null @@ -1,47 +0,0 @@ -;; This is an operating system configuration template. - -(use-modules (gnu)) -(use-service-modules xorg networking dbus avahi) -(use-package-modules xorg avahi) - -(operating-system - (host-name "antelope") - (timezone "Europe/Paris") - (locale "en_US.UTF-8") - - ;; Assuming /dev/sdX is the target hard disk, and "root" is - ;; the label of the target root file system. - (bootloader (grub-configuration (device "/dev/sdX"))) - (file-systems (cons (file-system - (device "root") - (title 'label) - (mount-point "/") - (type "ext4")) - %base-file-systems)) - - ;; This is where user accounts are specified. The "root" - ;; account is implicit, and is initially created with the - ;; empty password. - (users (list (user-account - (name "alice") - (comment "Bob's sister") - (group "users") - - ;; Adding the account to the "wheel" group - ;; makes it a sudoer. Adding it to "audio" - ;; and "video" allows the user to play sound - ;; and access the webcam. - (supplementary-groups '("wheel" - "audio" "video")) - (home-directory "/home/alice")))) - - ;; Globally-installed packages. - (packages (cons xterm %base-packages)) - - ;; Add services to the baseline: the SLiM log-in manager - ;; for Xorg sessions, a DHCP client, Avahi, and D-Bus. - (services (cons* (slim-service) - (dhcp-client-service) - (avahi-service) - (dbus-service (list avahi)) - %base-services))) -- cgit v1.2.3 From c217cbd84d7aee7414945a6cf85e1d704fff6e32 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 9 May 2015 22:28:03 +0200 Subject: services: dhcp-client: Better track dhclient's PID. * gnu/services/networking.scm (dhcp-client-service)[start]: Remove PID-FILE first. When 'call-with-input-file' throws ENOENT, try again. --- gnu/services/networking.scm | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index f9d262d977..33ecf9ccd3 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -165,6 +165,8 @@ Protocol (DHCP) client, on all the non-loopback network interfaces." (provision '(networking)) (start #~(lambda _ + (false-if-exception (delete-file #$pid-file)) + ;; When invoked without any arguments, 'dhclient' ;; discovers all non-loopback interfaces *that are ;; up*. However, the relevant interfaces are @@ -178,7 +180,19 @@ Protocol (DHCP) client, on all the non-loopback network interfaces." "-pf" #$pid-file ifaces)))) (and (zero? (cdr (waitpid pid))) - (call-with-input-file #$pid-file read))))) + (let loop () + (catch 'system-error + (lambda () + (call-with-input-file #$pid-file read)) + (lambda args + ;; 'dhclient' returned before PID-FILE + ;; was created, so try again. + (let ((errno (system-error-errno args))) + (if (= ENOENT errno) + (begin + (sleep 1) + (loop)) + (apply throw args)))))))))) (stop #~(make-kill-destructor)))))) (define %ntp-servers -- cgit v1.2.3 From 36ffaca2469e6a98e23f59c4a7e82ed985710310 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 9 May 2015 23:16:11 +0200 Subject: doc: Add desktop configuration example. * gnu/system/examples/bare-bones.tmpl: Change 'packages' and 'host-name'. Remove D-Bus, Avahi, and SLiM services, and add lsh instead. * gnu/system/examples/desktop.tmpl: New file. * Makefile.am (EXAMPLES): Add it. --- Makefile.am | 3 ++- gnu/system/examples/bare-bones.tmpl | 23 ++++++++++---------- gnu/system/examples/desktop.tmpl | 42 +++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 13 deletions(-) create mode 100644 gnu/system/examples/desktop.tmpl diff --git a/Makefile.am b/Makefile.am index b20421a753..6478aeb8e0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -135,7 +135,8 @@ KCONFIGS = \ # Templates, examples. EXAMPLES = \ - gnu/system/examples/bare-bones.tmpl + gnu/system/examples/bare-bones.tmpl \ + gnu/system/examples/desktop.tmpl GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go guix/tests.go diff --git a/gnu/system/examples/bare-bones.tmpl b/gnu/system/examples/bare-bones.tmpl index e14c95733a..8f4faca2d3 100644 --- a/gnu/system/examples/bare-bones.tmpl +++ b/gnu/system/examples/bare-bones.tmpl @@ -1,12 +1,13 @@ -;; This is an operating system configuration template. +;; This is an operating system configuration template +;; for a "bare bones" setup, with no X11 display server. (use-modules (gnu)) -(use-service-modules xorg networking dbus avahi) -(use-package-modules xorg avahi) +(use-service-modules networking ssh) +(use-package-modules admin) (operating-system - (host-name "antelope") - (timezone "Europe/Paris") + (host-name "komputilo") + (timezone "Europe/Berlin") (locale "en_US.UTF-8") ;; Assuming /dev/sdX is the target hard disk, and "root" is @@ -36,12 +37,10 @@ (home-directory "/home/alice")))) ;; Globally-installed packages. - (packages (cons xterm %base-packages)) + (packages (cons tcpdump %base-packages)) - ;; Add services to the baseline: the SLiM log-in manager - ;; for Xorg sessions, a DHCP client, Avahi, and D-Bus. - (services (cons* (slim-service) - (dhcp-client-service) - (avahi-service) - (dbus-service (list avahi)) + ;; Add services to the baseline: a DHCP client and + ;; an SSH server. + (services (cons* (dhcp-client-service) + (lsh-service #:port-number 2222) %base-services))) diff --git a/gnu/system/examples/desktop.tmpl b/gnu/system/examples/desktop.tmpl new file mode 100644 index 0000000000..07e3f0b1d6 --- /dev/null +++ b/gnu/system/examples/desktop.tmpl @@ -0,0 +1,42 @@ +;; This is an operating system configuration template +;; for a "desktop" setup with X11. + +(use-modules (gnu) (gnu system nss)) +(use-service-modules desktop) +(use-package-modules xfce ratpoison wicd avahi xorg) + +(operating-system + (host-name "antelope") + (timezone "Europe/Paris") + (locale "en_US.UTF-8") + + ;; Assuming /dev/sdX is the target hard disk, and "root" is + ;; the label of the target root file system. + (bootloader (grub-configuration (device "/dev/sdX"))) + (file-systems (cons (file-system + (device "root") + (title 'label) + (mount-point "/") + (type "ext4")) + %base-file-systems)) + + (users (list (user-account + (name "bob") + (comment "Alice's brother") + (group "users") + (supplementary-groups '("wheel" + "audio" "video")) + (home-directory "/home/bob")))) + + ;; Add Xfce and Ratpoison; that allows us to choose + ;; sessions using either of these at the log-in screen. + (packages (cons* xfce ratpoison ;desktop environments + xterm wicd avahi ;useful tools + %base-packages)) + + ;; Use the "desktop" services, which include the X11 + ;; log-in service, networking with Wicd, and more. + (services %desktop-services) + + ;; Allow resolution of '.local' host names with mDNS. + (name-service-switch %mdns-host-lookup-nss)) -- cgit v1.2.3 From e1fbc32a0a1d027ec641ac0e249ad9aa1d5a8ffa Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 9 May 2015 23:34:01 +0200 Subject: install: Have several OS config templates under /etc/configuration. * gnu/system/install.scm (configuration-template-service): Remove 'local-template' and 'template'. Add 'search' and 'templates'. [activate]: Copy all of TEMPLATES to /etc/configuration. * doc/guix.texi (System Installation): Adjust file name accordingly. --- doc/guix.texi | 2 +- gnu/system/install.scm | 29 ++++++++++++++++++++++------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index e2465ee823..ea4a5c7b7c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3927,7 +3927,7 @@ It is better to store that file on the target root file system, say, as A minimal operating system configuration, with just the bare minimum and only a root account would look like this (on the installation system, -this example is available as @file{/etc/configuration-template.scm}): +this example is available as @file{/etc/configuration/bare-bones.scm}): @example @include os-config.texi diff --git a/gnu/system/install.scm b/gnu/system/install.scm index bba2df5094..82793a6648 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -32,6 +32,8 @@ #:use-module (gnu packages grub) #:use-module (gnu packages texinfo) #:use-module (gnu packages compression) + #:use-module (ice-9 match) + #:use-module (srfi srfi-26) #:export (self-contained-tarball installation-os)) @@ -172,12 +174,17 @@ the given target.") "Return a dummy service whose purpose is to install an operating system configuration template file in the installation system." - (define local-template - "/etc/configuration-template.scm") - (define template - (search-path %load-path "gnu/system/examples/bare-bones.tmpl")) + (define search + (cut search-path %load-path <>)) + (define templates + (map (match-lambda + ((file '-> target) + (list (local-file (search file)) + (string-append "/etc/configuration/" target)))) + '(("gnu/system/examples/bare-bones.tmpl" -> "bare-bones.scm") + ("gnu/system/examples/desktop.tmpl" -> "desktop.scm")))) - (mlet %store-monad ((template (interned-file template))) + (with-monad %store-monad (return (service (requirement '(root-file-system)) (provision '(os-config-template)) @@ -186,8 +193,16 @@ configuration template file in the installation system." (start #~(const #t)) (stop #~(const #f)) (activate - #~(unless (file-exists? #$local-template) - (copy-file #$template #$local-template))))))) + #~(begin + (use-modules (ice-9 match) + (guix build utils)) + + (mkdir-p "/etc/configuration") + (for-each (match-lambda + ((file target) + (unless (file-exists? target) + (copy-file file target)))) + '#$templates))))))) (define %nscd-minimal-caches ;; Minimal in-memory caching policy for nscd. -- cgit v1.2.3 From dd51caac55f052cecc61c7b8ab16654e3ace569f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 9 May 2015 23:51:46 +0200 Subject: doc: Show both the "bare-bones" and the "desktop" configurations. * doc/guix.texi (System Installation): Add xref to "Using the Configuration System" instead of including one here. (Using the Configuration System): Remove first example, and include os-config-bare-bones.texi instead. Include os-config-desktop.texi as a second example. * doc.am (OS_CONFIG_EXAMPLES_TEXI): New variable. (BUILT_SOURCES, EXTRA_DIST, MAINTAINERCLEANFILES): Use it. (doc/os-config.texi): Remove. (doc/os-config-%.texi): New target. --- .gitignore | 2 ++ doc.am | 12 ++++++++---- doc/guix.texi | 55 +++++++++++++++++++------------------------------------ 3 files changed, 29 insertions(+), 40 deletions(-) diff --git a/.gitignore b/.gitignore index eaa7dbd51a..47cb39584e 100644 --- a/.gitignore +++ b/.gitignore @@ -112,3 +112,5 @@ GTAGS /emacs/guix-helper.scm /emacs/guix-init.el /emacs/guix-profiles.el +/doc/os-config-bare-bones.texi +/doc/os-config-desktop.texi diff --git a/doc.am b/doc.am index c517e0f908..df85cfe2b0 100644 --- a/doc.am +++ b/doc.am @@ -25,12 +25,16 @@ EXTRA_DIST += \ doc/images/bootstrap-graph.eps \ doc/images/bootstrap-graph.pdf +OS_CONFIG_EXAMPLES_TEXI = \ + doc/os-config-bare-bones.texi \ + doc/os-config-desktop.texi + # Bundle this file so that makeinfo finds it in out-of-source-tree builds. -BUILT_SOURCES += doc/os-config.texi -EXTRA_DIST += doc/os-config.texi -MAINTAINERCLEANFILES = doc/os-config.texi +BUILT_SOURCES += $(OS_CONFIG_EXAMPLES_TEXI) +EXTRA_DIST += $(OS_CONFIG_EXAMPLES_TEXI) +MAINTAINERCLEANFILES = $(OS_CONFIG_EXAMPLES_TEXI) -doc/os-config.texi: gnu/system/examples/bare-bones.tmpl +doc/os-config-%.texi: gnu/system/examples/%.tmpl $(MKDIR_P) "`dirname "$@"`" cp "$<" "$@" diff --git a/doc/guix.texi b/doc/guix.texi index ea4a5c7b7c..33b1c2ed01 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3925,20 +3925,14 @@ that end, the installation system comes with two text editors: GNU nano It is better to store that file on the target root file system, say, as @file{/mnt/etc/config.scm}. -A minimal operating system configuration, with just the bare minimum and -only a root account would look like this (on the installation system, -this example is available as @file{/etc/configuration/bare-bones.scm}): +@xref{Using the Configuration System}, for examples of operating system +configurations. These examples are available under +@file{/etc/configuration} in the installation image, so you can copy +them and use them as a starting point for your own configuration. -@example -@include os-config.texi -@end example - -@noindent -For more information on @code{operating-system} declarations, -@pxref{Using the Configuration System}. - -Once that is done, the new system must be initialized (remember that the -target root file system is mounted under @file{/mnt}): +Once you are done preparing the configuration file, the new system must +be initialized (remember that the target root file system is mounted +under @file{/mnt}): @example guix system init /mnt/etc/config.scm /mnt @@ -4021,29 +4015,7 @@ kernel, initial RAM disk, and boot loader looks like this: @findex operating-system @lisp -(use-modules (gnu) ; for 'user-account', '%base-services', etc. - (gnu packages emacs) ; for 'emacs' - (gnu services ssh)) ; for 'lsh-service' - -(operating-system - (host-name "komputilo") - (timezone "Europe/Paris") - (locale "fr_FR.utf8") - (bootloader (grub-configuration - (device "/dev/sda"))) - (file-systems (cons (file-system - (device "/dev/sda1") ; or partition label - (mount-point "/") - (type "ext3")) - %base-file-systems)) - (users (list (user-account - (name "alice") - (group "users") - (comment "Bob's sister") - (home-directory "/home/alice")))) - (packages (cons emacs %base-packages)) - (services (cons (lsh-service #:port 2222 #:root-login? #t) - %base-services))) +@include os-config-bare-bones.texi @end lisp This example should be self-describing. Some of the fields defined @@ -4076,6 +4048,17 @@ generated as needed (@pxref{Defining Services}). @xref{operating-system Reference}, for details about the available @code{operating-system} fields. +The configuration for a typical ``desktop'' usage, with the X11 display +server, a desktop environment, network management, an SSH server, and +more, would look like this: + +@lisp +@include os-config-desktop.texi +@end lisp + +@xref{Desktop Services}, for the exact list of services provided by +@var{%desktop-services}. + Assuming the above snippet is stored in the @file{my-system-config.scm} file, the @command{guix system reconfigure my-system-config.scm} command instantiates that configuration, and makes it the default GRUB boot -- cgit v1.2.3 From 8fda1b797063af19bda898e41dcf6a8369d8aed5 Mon Sep 17 00:00:00 2001 From: Cyril Roelandt Date: Fri, 8 May 2015 19:37:05 +0200 Subject: Remove leftover patches. * gnu/packages/patches/guix-test-networking.patch: Delete it. * gnu/packages/patches/libtool-skip-tests.patch: Delete it. * gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch: Delete it. * gnu/packages/patches/udev-gir-libtool.patch: Delete it. * gnu-system.am (dist_patch_DATA): Remove them as well. --- gnu-system.am | 4 -- gnu/packages/patches/guix-test-networking.patch | 15 ------ gnu/packages/patches/libtool-skip-tests.patch | 55 ---------------------- .../patches/python-sqlite-3.8.4-test-fix.patch | 15 ------ gnu/packages/patches/udev-gir-libtool.patch | 17 ------- 5 files changed, 106 deletions(-) delete mode 100644 gnu/packages/patches/guix-test-networking.patch delete mode 100644 gnu/packages/patches/libtool-skip-tests.patch delete mode 100644 gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch delete mode 100644 gnu/packages/patches/udev-gir-libtool.patch diff --git a/gnu-system.am b/gnu-system.am index d3e91ed05b..f5649f1a0f 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -448,7 +448,6 @@ dist_patch_DATA = \ gnu/packages/patches/guile-default-utf8.patch \ gnu/packages/patches/guile-linux-syscalls.patch \ gnu/packages/patches/guile-relocatable.patch \ - gnu/packages/patches/guix-test-networking.patch \ gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \ gnu/packages/patches/hop-bigloo-4.0b.patch \ gnu/packages/patches/hop-linker-flags.patch \ @@ -466,7 +465,6 @@ dist_patch_DATA = \ gnu/packages/patches/liboop-mips64-deplibs-fix.patch \ gnu/packages/patches/libmad-mips-newgcc.patch \ gnu/packages/patches/libtheora-config-guess.patch \ - gnu/packages/patches/libtool-skip-tests.patch \ gnu/packages/patches/libtool-skip-tests2.patch \ gnu/packages/patches/libssh-CVE-2014-0017.patch \ gnu/packages/patches/libvpx-fix-armhf-link.patch \ @@ -524,7 +522,6 @@ dist_patch_DATA = \ gnu/packages/patches/pyqt-configure.patch \ gnu/packages/patches/python-fix-tests.patch \ gnu/packages/patches/python-libffi-mips-n32-fix.patch \ - gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch \ gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \ gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch \ gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ @@ -550,7 +547,6 @@ dist_patch_DATA = \ gnu/packages/patches/teckit-cstdio.patch \ gnu/packages/patches/texi2html-document-encoding.patch \ gnu/packages/patches/texi2html-i18n.patch \ - gnu/packages/patches/udev-gir-libtool.patch \ gnu/packages/patches/unzip-CVE-2014-8139.patch \ gnu/packages/patches/unzip-CVE-2014-8140.patch \ gnu/packages/patches/unzip-CVE-2014-8141.patch \ diff --git a/gnu/packages/patches/guix-test-networking.patch b/gnu/packages/patches/guix-test-networking.patch deleted file mode 100644 index a8d1f4fd2f..0000000000 --- a/gnu/packages/patches/guix-test-networking.patch +++ /dev/null @@ -1,15 +0,0 @@ -Skip that test when the network is unreachable. - -diff --git a/tests/packages.scm b/tests/packages.scm -index 04e3b0b..6ac215b 100644 ---- a/tests/packages.scm -+++ b/tests/packages.scm -@@ -139,6 +139,8 @@ - (and (direct-store-path? source) - (string-suffix? "utils.scm" source)))) - -+(unless (false-if-exception (getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)) -+ (test-skip 1)) - (test-equal "package-source-derivation, snippet" - "OK" - (let* ((file (search-bootstrap-binary "guile-2.0.9.tar.xz" diff --git a/gnu/packages/patches/libtool-skip-tests.patch b/gnu/packages/patches/libtool-skip-tests.patch deleted file mode 100644 index 9191d40487..0000000000 --- a/gnu/packages/patches/libtool-skip-tests.patch +++ /dev/null @@ -1,55 +0,0 @@ -Because our GCC 'lib' spec automatically adds '-rpath' for each '-L' -and a couple more '-rpath, there are two test failures: -one in demo.test, and one in destdir.at. Disable these. - -Also skip the nopic test on ARM and MIPS systems. - ---- libtool-2.4.6/tests/demo.at.orig 2015-01-16 13:52:04.000000000 -0500 -+++ libtool-2.4.6/tests/demo.at 2015-02-16 10:48:51.435851966 -0500 -@@ -510,7 +510,7 @@ - AT_SETUP([force non-PIC objects]) - - AT_CHECK([case $host in --hppa*|x86_64*|s390*) -+hppa*|x86_64*|s390*|arm*|mips*) - # These hosts cannot use non-PIC shared libs - exit 77 ;; - *-solaris*|*-sunos*) ---- libtool-2.4.6/tests/testsuite.orig 2015-02-15 11:15:25.000000000 -0500 -+++ libtool-2.4.6/tests/testsuite 2015-02-16 10:50:58.736483216 -0500 -@@ -8741,7 +8741,7 @@ - - { set +x - $as_echo "$at_srcdir/demo.at:535: case \$host in --hppa*|x86_64*|s390*) -+hppa*|x86_64*|s390*|arm*|mips*) - # These hosts cannot use non-PIC shared libs - exit 77 ;; - *-solaris*|*-sunos*) -@@ -8766,7 +8766,7 @@ - " - at_fn_check_prepare_notrace 'a `...` command substitution' "demo.at:535" - ( $at_check_trace; case $host in --hppa*|x86_64*|s390*) -+hppa*|x86_64*|s390*|arm*|mips*) - # These hosts cannot use non-PIC shared libs - exit 77 ;; - *-solaris*|*-sunos*) -@@ -9298,7 +9298,7 @@ - #AT_START_34 - at_fn_group_banner 34 'demo.at:548' \ - "hardcoding library path" " " 4 --at_xfail=no -+at_xfail=yes - test no = "$ACLOCAL" && at_xfail=yes - test no = "$AUTOHEADER" && at_xfail=yes - test no = "$AUTOMAKE" && at_xfail=yes -@@ -27243,7 +27243,7 @@ - #AT_START_98 - at_fn_group_banner 98 'destdir.at:75' \ - "DESTDIR with in-package deplibs" " " 8 --at_xfail=no -+at_xfail=yes - eval `$LIBTOOL --config | $GREP '^fast_install='` - case $fast_install in no) :;; *) false;; esac && at_xfail=yes - ( diff --git a/gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch b/gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch deleted file mode 100644 index 2f8b159870..0000000000 --- a/gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch +++ /dev/null @@ -1,15 +0,0 @@ -From resolution of upstream python issue #20901: http://bugs.python.org/issue20901 - -diff --git a/Lib/sqlite3/test/hooks.py b/Lib/sqlite3/test/hooks.py ---- Lib/sqlite3/test/hooks.py -+++ Lib/sqlite3/test/hooks.py -@@ -162,7 +162,7 @@ class ProgressTests(unittest.TestCase): - create table bar (a, b) - """) - second_count = len(progress_calls) -- self.assertGreater(first_count, second_count) -+ self.assertGreaterEqual(first_count, second_count) - - def CheckCancelOperation(self): - """ - diff --git a/gnu/packages/patches/udev-gir-libtool.patch b/gnu/packages/patches/udev-gir-libtool.patch deleted file mode 100644 index 7504f87eb8..0000000000 --- a/gnu/packages/patches/udev-gir-libtool.patch +++ /dev/null @@ -1,17 +0,0 @@ -Without this patch, 'ld' as invoked by 'g-ir-scanner' fails to find -lgudev-1.0 -This is because libtool puts it in $(top_builddir)/.libs. - -This patch forces 'g-ir-scanner' to use libtool, which enables it to find -libgudev-1.0.la. - ---- udev-182/Makefile.in 2014-06-22 14:55:07.000000000 +0200 -+++ udev-182/Makefile.in 2014-06-22 14:55:15.000000000 +0200 -@@ -3622,7 +3622,7 @@ test-sys-distclean: - @ENABLE_GUDEV_TRUE@@ENABLE_INTROSPECTION_TRUE@ --namespace GUdev \ - @ENABLE_GUDEV_TRUE@@ENABLE_INTROSPECTION_TRUE@ --nsversion=1.0 \ - @ENABLE_GUDEV_TRUE@@ENABLE_INTROSPECTION_TRUE@ --include=GObject-2.0 \ --@ENABLE_GUDEV_TRUE@@ENABLE_INTROSPECTION_TRUE@ --library=gudev-1.0 \ -+@ENABLE_GUDEV_TRUE@@ENABLE_INTROSPECTION_TRUE@ --library=gudev-1.0 --libtool=$(top_builddir)/libtool \ - @ENABLE_GUDEV_TRUE@@ENABLE_INTROSPECTION_TRUE@ --library-path=$(top_builddir)/src \ - @ENABLE_GUDEV_TRUE@@ENABLE_INTROSPECTION_TRUE@ --library-path=$(top_builddir)/src/gudev \ - @ENABLE_GUDEV_TRUE@@ENABLE_INTROSPECTION_TRUE@ --output $@ \ -- cgit v1.2.3 From 47c66da00b737b28f27429e472c71cf987409b60 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 7 May 2015 21:15:56 +0200 Subject: build: Require Guile >= 2.0.7. * configure.ac: Require guile-2.0 >= 2.0.7. * README: Adjust accordingly. * doc/guix.texi (Requirements): Likewise. --- README | 2 +- configure.ac | 2 +- doc/guix.texi | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README b/README index 2d5e4492d0..fafa6524e9 100644 --- a/README +++ b/README @@ -20,7 +20,7 @@ Guix is based on the [[http://nixos.org/nix/][Nix]] package manager. GNU Guix currently depends on the following packages: - - [[http://gnu.org/software/guile/][GNU Guile 2.0.x]], version 2.0.5 or later + - [[http://gnu.org/software/guile/][GNU Guile 2.0.x]], version 2.0.7 or later - [[http://gnupg.org/][GNU libgcrypt]] - optionally [[http://savannah.nongnu.org/projects/guile-json/][Guile-JSON]], for the 'guix import pypi' command - optionally [[http://www.gnutls.org][GnuTLS]] compiled with guile support enabled, for HTTPS support diff --git a/configure.ac b/configure.ac index 5a9cea6fe2..6979752d16 100644 --- a/configure.ac +++ b/configure.ac @@ -67,7 +67,7 @@ dnl Make sure they are available. m4_pattern_forbid([PKG_CHECK_MODULES]) m4_pattern_forbid([GUILE_MODULE_AVAILABLE]) -PKG_CHECK_MODULES([GUILE], [guile-2.0 >= 2.0.5]) +PKG_CHECK_MODULES([GUILE], [guile-2.0 >= 2.0.7]) AC_PATH_PROG([GUILE], [guile]) AC_PATH_PROG([GUILD], [guild]) if test "x$GUILD" = "x"; then diff --git a/doc/guix.texi b/doc/guix.texi index 33b1c2ed01..767c00e439 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -332,7 +332,7 @@ in the Guix source tree for additional details. GNU Guix depends on the following packages: @itemize -@item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.5 or later; +@item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.7 or later; @item @url{http://gnupg.org/, GNU libgcrypt}; @end itemize -- cgit v1.2.3 From 09d809db6a37502b8cb2fb71748cc8bf500e117f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 7 May 2015 21:51:30 +0200 Subject: Remove assorted Guile 2.0.5 workarounds. * guix/scripts/authenticate.scm (%default-port-conversion-strategy): Remove. * guix/scripts/substitute.scm (fetch): Remove 2.0.5 special cases. * guix/serialization.scm (write-file): Remove 'scandir' workaround. * guix/ui.scm (command-files): Likewise. --- guix/scripts/authenticate.scm | 8 +------- guix/scripts/substitute.scm | 19 ++++--------------- guix/serialization.scm | 16 +++++----------- guix/ui.scm | 5 +---- 4 files changed, 11 insertions(+), 37 deletions(-) diff --git a/guix/scripts/authenticate.scm b/guix/scripts/authenticate.scm index e9900689fa..eedebb4bac 100644 --- a/guix/scripts/authenticate.scm +++ b/guix/scripts/authenticate.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -82,12 +82,6 @@ to stdout upon success." (leave (_ "error: corrupt signature data: ~a~%") (canonical-sexp->string signature))))) -(define %default-port-conversion-strategy - ;; This fluid is in Guile > 2.0.5. - (if (defined? '%default-port-conversion-strategy) - (@ (guile) %default-port-conversion-strategy) - (make-fluid #f))) - ;;; ;;; Entry point with 'openssl'-compatible interface. We support this diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index 31559b7966..8b4fa36d2a 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -157,15 +157,12 @@ to the caller without emitting an error message." (leave (_ "download from '~a' failed: ~a, ~s~%") (uri->string (http-get-error-uri c)) code (http-get-error-reason c)))))) - ;; On Guile 2.0.5, `http-fetch' fetches the whole thing at once. So - ;; honor TIMEOUT? to disable the timeout when fetching a nar. - ;; ;; Test this with: ;; sudo tc qdisc add dev eth0 root netem delay 1500ms ;; and then cancel with: ;; sudo tc qdisc del dev eth0 root (let ((port #f)) - (with-timeout (if (or timeout? (guile-version>? "2.0.5")) + (with-timeout (if timeout? %fetch-timeout 0) (begin @@ -649,17 +646,9 @@ PORT. REPORT-PROGRESS is a two-argument procedure such as that returned by ;; XXX: We're not in control, so we always return anyway. n)) - ;; Since `http-fetch' in Guile 2.0.5 returns all the data once it's done, - ;; don't pretend to report any progress in that case. - (if (guile-version>? "2.0.5") - (make-custom-binary-input-port "progress-port-proc" - read! #f #f - (cut close-port port)) - (begin - (format (current-error-port) (_ "Downloading, please wait...~%")) - (format (current-error-port) - (_ "(Please consider upgrading Guile to get proper progress report.)~%")) - port))) + (make-custom-binary-input-port "progress-port-proc" + read! #f #f + (cut close-port port))) (define-syntax with-networking (syntax-rules () diff --git a/guix/serialization.scm b/guix/serialization.scm index 51d7ef76c6..7a3defc03d 100644 --- a/guix/serialization.scm +++ b/guix/serialization.scm @@ -279,17 +279,11 @@ sub-directories of FILE as needed." (write-string "type" p) (write-string "directory" p) (let ((entries - ;; NOTE: Guile 2.0.5's 'scandir' returns all subdirectories - ;; unconditionally, including "." and "..", regardless of the - ;; 'select?' predicate passed to it, so we have to filter - ;; those out externally. - (filter (negate (cut member <> '("." ".."))) - ;; 'scandir' defaults to 'string-locale '("." ".."))) string)) - ;; In Guile 2.0.5 `scandir' would return "." and ".." regardless even though - ;; they don't match `dot-scm?'. Work around it by doing additional - ;; filtering. (if directory - (filter dot-scm? (scandir directory dot-scm?)) + (scandir directory dot-scm?) '())) (define (commands) -- cgit v1.2.3 From 005c8fc6e0718f6e66ba19f4d21c056fea5c8aa3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 7 May 2015 21:51:12 +0200 Subject: http-client: Remove monkey patching for 2.0.5. * guix/http-client.scm (read-response-body*): Remove. (http-fetch): Remove hacks for 2.0.5. --- guix/http-client.scm | 58 ++++------------------------------------------------ 1 file changed, 4 insertions(+), 54 deletions(-) diff --git a/guix/http-client.scm b/guix/http-client.scm index 90eca0a946..dc8d3298fc 100644 --- a/guix/http-client.scm +++ b/guix/http-client.scm @@ -175,33 +175,7 @@ closes PORT, unless KEEP-ALIVE? is true." ;; Guile <= 2.0.9 had a bug whereby 'response-body-port' would read more ;; than what 'content-length' says. See Guile commit 802a25b. (module-set! (resolve-module '(web response)) - 'make-delimited-input-port make-delimited-input-port)) - - (define (read-response-body* r) - "Reads the response body from @var{r}, as a bytevector. Returns - @code{#f} if there was no response body." - (define bad-response - (@@ (web response) bad-response)) - - (if (member '(chunked) (response-transfer-encoding r)) - (let ((chunk-port (make-chunked-input-port (response-port r) - #:keep-alive? #t))) - (get-bytevector-all chunk-port)) - (let ((nbytes (response-content-length r))) - ;; Backport of Guile commit 84dfde82ae8f6ec247c1c147c1e2ae50b207bad9 - ;; ("fix response-body-port for responses without content-length"). - (if nbytes - (let ((bv (get-bytevector-n (response-port r) nbytes))) - (if (= (bytevector-length bv) nbytes) - bv - (bad-response "EOF while reading response body: ~a bytes of ~a" - (bytevector-length bv) nbytes))) - (get-bytevector-all (response-port r)))))) - - ;; Install this patch only on Guile 2.0.5. - (unless (guile-version>? "2.0.5") - (module-set! (resolve-module '(web response)) - 'read-response-body read-response-body*))) + 'make-delimited-input-port make-delimited-input-port))) ;; XXX: Work around , present in Guile ;; up to 2.0.7. @@ -221,39 +195,15 @@ Raise an '&http-get-error' condition if downloading fails." (setvbuf port _IONBF)) (let*-values (((resp data) ;; Try hard to use the API du jour to get an input port. - ;; On Guile 2.0.5 and before, we can only get a string or - ;; bytevector, and not an input port. Work around that. (if (guile-version>? "2.0.7") (http-get uri #:streaming? #t #:port port) ; 2.0.9+ - (if (defined? 'http-get*) - (http-get* uri #:decode-body? text? - #:port port) ; 2.0.7 - (http-get uri #:decode-body? text? - #:port port)))) ; 2.0.5- + (http-get* uri #:decode-body? text? ; 2.0.7 + #:port port))) ((code) (response-code resp))) (case code ((200) - (let ((len (response-content-length resp))) - (cond ((not data) - (begin - ;; Guile 2.0.5 and earlier did not support chunked - ;; transfer encoding, which is required for instance when - ;; fetching %PACKAGE-LIST-URL (see - ;; ). - ;; Normally the `when-guile<=2.0.5' block above fixes - ;; that, but who knows what could happen. - (warning (_ "using Guile ~a, which does not support ~s encoding~%") - (version) - (response-transfer-encoding resp)) - (leave (_ "download failed; use a newer Guile~%") - uri resp))) - ((string? data) ; `http-get' from 2.0.5- - (values (open-input-string data) len)) - ((bytevector? data) ; likewise - (values (open-bytevector-input-port data) len)) - (else ; input port - (values data len))))) + (values data (response-content-length resp))) ((301 ; moved permanently 302) ; found (redirection) (let ((uri (resolve-uri-reference (response-location resp) uri))) -- cgit v1.2.3 From f0b98b848384f2957a1658a73f0ff20bcec38c23 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 10 May 2015 11:20:35 +0200 Subject: doc: Mention GNU Make as a requirement. * README (Requirements): Add GNU Make. * doc/guix.texi (Requirements): Likewise. --- README | 1 + doc/guix.texi | 1 + 2 files changed, 2 insertions(+) diff --git a/README b/README index fafa6524e9..fe46192acf 100644 --- a/README +++ b/README @@ -22,6 +22,7 @@ GNU Guix currently depends on the following packages: - [[http://gnu.org/software/guile/][GNU Guile 2.0.x]], version 2.0.7 or later - [[http://gnupg.org/][GNU libgcrypt]] + - [[http://www.gnu.org/software/make/][GNU Make]] - optionally [[http://savannah.nongnu.org/projects/guile-json/][Guile-JSON]], for the 'guix import pypi' command - optionally [[http://www.gnutls.org][GnuTLS]] compiled with guile support enabled, for HTTPS support in the 'guix download' command. Note that 'guix import pypi' requires diff --git a/doc/guix.texi b/doc/guix.texi index 767c00e439..698b63fac5 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -334,6 +334,7 @@ GNU Guix depends on the following packages: @itemize @item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.7 or later; @item @url{http://gnupg.org/, GNU libgcrypt}; +@item @url{http://www.gnu.org/software/make/, GNU Make}. @end itemize The following dependencies are optional: -- cgit v1.2.3 From 6633f86b4941ec35bb4c328ec1e0b2bbfc41ad83 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Tue, 28 Apr 2015 22:21:37 +0300 Subject: gnu: Add tvtime. * gnu/packages/tv.scm, gnu/packages/patches/tvtime-gcc41.patch, gnu/packages/patches/tvtime-pngoutput.patch, gnu/packages/patches/tvtime-videodev2.patch, gnu/packages/patches/tvtime-xmltv.patch: New files. * gnu-system.am (GNU_SYSTEM_MODULES): Add package. (dist_patch_DATA): Add patches. --- gnu-system.am | 5 +++ gnu/packages/patches/tvtime-gcc41.patch | 58 ++++++++++++++++++++++++++ gnu/packages/patches/tvtime-pngoutput.patch | 15 +++++++ gnu/packages/patches/tvtime-videodev2.patch | 15 +++++++ gnu/packages/patches/tvtime-xmltv.patch | 28 +++++++++++++ gnu/packages/tv.scm | 64 +++++++++++++++++++++++++++++ 6 files changed, 185 insertions(+) create mode 100644 gnu/packages/patches/tvtime-gcc41.patch create mode 100644 gnu/packages/patches/tvtime-pngoutput.patch create mode 100644 gnu/packages/patches/tvtime-videodev2.patch create mode 100644 gnu/packages/patches/tvtime-xmltv.patch create mode 100644 gnu/packages/tv.scm diff --git a/gnu-system.am b/gnu-system.am index f5649f1a0f..0932ef4ad2 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -294,6 +294,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/tmux.scm \ gnu/packages/tor.scm \ gnu/packages/tre.scm \ + gnu/packages/tv.scm \ gnu/packages/unrtf.scm \ gnu/packages/upnp.scm \ gnu/packages/uucp.scm \ @@ -547,6 +548,10 @@ dist_patch_DATA = \ gnu/packages/patches/teckit-cstdio.patch \ gnu/packages/patches/texi2html-document-encoding.patch \ gnu/packages/patches/texi2html-i18n.patch \ + gnu/packages/patches/tvtime-gcc41.patch \ + gnu/packages/patches/tvtime-pngoutput.patch \ + gnu/packages/patches/tvtime-videodev2.patch \ + gnu/packages/patches/tvtime-xmltv.patch \ gnu/packages/patches/unzip-CVE-2014-8139.patch \ gnu/packages/patches/unzip-CVE-2014-8140.patch \ gnu/packages/patches/unzip-CVE-2014-8141.patch \ diff --git a/gnu/packages/patches/tvtime-gcc41.patch b/gnu/packages/patches/tvtime-gcc41.patch new file mode 100644 index 0000000000..d6e42721b8 --- /dev/null +++ b/gnu/packages/patches/tvtime-gcc41.patch @@ -0,0 +1,58 @@ +Source: https://projects.archlinux.org/svntogit/community.git/tree/trunk/tvtime-1.0.2-gcc41.patch?h=packages/tvtime + +--- tvtime-1.0.1/plugins/greedyh.asm 2005-08-14 18:16:43.000000000 +0200 ++++ tvtime-1.0.1-gcc41/plugins/greedyh.asm 2005-11-28 17:53:09.210774544 +0100 +@@ -18,7 +18,7 @@ + + #include "x86-64_macros.inc" + +-void DScalerFilterGreedyH::FUNCT_NAME(TDeinterlaceInfo* pInfo) ++void FUNCT_NAME(TDeinterlaceInfo* pInfo) + { + int64_t i; + bool InfoIsOdd = (pInfo->PictureHistory[0]->Flags & PICTURE_INTERLACED_ODD) ? 1 : 0; +diff -Naur tvtime-1.0.1/plugins/tomsmocomp/TomsMoCompAll2.inc tvtime-1.0.1-gcc41/plugins/tomsmocomp/TomsMoCompAll2.inc +--- tvtime-1.0.1/plugins/tomsmocomp/TomsMoCompAll2.inc 2004-10-20 17:31:05.000000000 +0200 ++++ tvtime-1.0.1-gcc41/plugins/tomsmocomp/TomsMoCompAll2.inc 2005-11-28 17:53:33.251119856 +0100 +@@ -5,9 +5,9 @@ + #endif + + #ifdef USE_STRANGE_BOB +-#define SEARCH_EFFORT_FUNC(n) DScalerFilterTomsMoComp::SEFUNC(n##_SB) ++#define SEARCH_EFFORT_FUNC(n) SEFUNC(n##_SB) + #else +-#define SEARCH_EFFORT_FUNC(n) DScalerFilterTomsMoComp::SEFUNC(n) ++#define SEARCH_EFFORT_FUNC(n) SEFUNC(n) + #endif + + int SEARCH_EFFORT_FUNC(0) // we don't try at all ;-) +diff -Naur tvtime-1.0.1/plugins/tomsmocomp.cpp tvtime-1.0.1-gcc41/plugins/tomsmocomp.cpp +--- tvtime-1.0.1/plugins/tomsmocomp.cpp 2004-10-20 19:38:04.000000000 +0200 ++++ tvtime-1.0.1-gcc41/plugins/tomsmocomp.cpp 2005-11-28 17:52:53.862107896 +0100 +@@ -31,7 +31,7 @@ + + #define IS_MMX + #define SSE_TYPE MMX +-#define FUNCT_NAME DScalerFilterTomsMoComp::filterDScaler_MMX ++#define FUNCT_NAME filterDScaler_MMX + #include "tomsmocomp/TomsMoCompAll.inc" + #undef IS_MMX + #undef SSE_TYPE +@@ -39,7 +39,7 @@ + + #define IS_3DNOW + #define SSE_TYPE 3DNOW +-#define FUNCT_NAME DScalerFilterTomsMoComp::filterDScaler_3DNOW ++#define FUNCT_NAME filterDScaler_3DNOW + #include "tomsmocomp/TomsMoCompAll.inc" + #undef IS_3DNOW + #undef SSE_TYPE +@@ -47,7 +47,7 @@ + + #define IS_SSE + #define SSE_TYPE SSE +-#define FUNCT_NAME DScalerFilterTomsMoComp::filterDScaler_SSE ++#define FUNCT_NAME filterDScaler_SSE + #include "tomsmocomp/TomsMoCompAll.inc" + #undef IS_SSE + #undef SSE_TYPE diff --git a/gnu/packages/patches/tvtime-pngoutput.patch b/gnu/packages/patches/tvtime-pngoutput.patch new file mode 100644 index 0000000000..0d14f77ca1 --- /dev/null +++ b/gnu/packages/patches/tvtime-pngoutput.patch @@ -0,0 +1,15 @@ +Source: https://sources.debian.net/src/tvtime/1.0.2-14/debian/patches/libpng.diff + +From: Nobuhiro Iwamatsu +Date: Mon, 14 May 2012 19:01:31 +0900 +Prepares the package for libpng 1.5. Closes: #650582. + +--- tvtime-1.0.2.orig/src/pngoutput.c ++++ tvtime-1.0.2/src/pngoutput.c +@@ -18,5 +18,6 @@ + + #include + #include ++#include + #include + #include "pngoutput.h" diff --git a/gnu/packages/patches/tvtime-videodev2.patch b/gnu/packages/patches/tvtime-videodev2.patch new file mode 100644 index 0000000000..74131f25d0 --- /dev/null +++ b/gnu/packages/patches/tvtime-videodev2.patch @@ -0,0 +1,15 @@ +Fix compilation error: non-existing header file. + +This is an excerpt from the debian patch: +http://http.debian.net/debian/pool/main/t/tvtime/tvtime_1.0.2-14.diff.gz + +--- tvtime-1.0.2.orig/src/videodev2.h ++++ tvtime-1.0.2/src/videodev2.h +@@ -16,7 +16,6 @@ + #ifdef __KERNEL__ + #include /* need struct timeval */ + #endif +-#include /* need __user */ + + /* for kernel versions 2.4.26 and below: */ + #ifndef __user diff --git a/gnu/packages/patches/tvtime-xmltv.patch b/gnu/packages/patches/tvtime-xmltv.patch new file mode 100644 index 0000000000..2f4afc6e5a --- /dev/null +++ b/gnu/packages/patches/tvtime-xmltv.patch @@ -0,0 +1,28 @@ +Fix compilation error: conflicting types for 'locale_t'. + +This is an excerpt from the debian patch ... +http://http.debian.net/debian/pool/main/t/tvtime/tvtime_1.0.2-14.diff.gz + +--- tvtime-1.0.2.orig/src/xmltv.c ++++ tvtime-1.0.2/src/xmltv.c +@@ -118,9 +118,9 @@ + typedef struct { + const char *code; + const char *name; +-} locale_t; ++} tvtime_locale_t; + +-static locale_t locale_table[] = { ++static tvtime_locale_t locale_table[] = { + {"AA", "Afar"}, {"AB", "Abkhazian"}, {"AF", "Afrikaans"}, + {"AM", "Amharic"}, {"AR", "Arabic"}, {"AS", "Assamese"}, + {"AY", "Aymara"}, {"AZ", "Azerbaijani"}, {"BA", "Bashkir"}, +@@ -168,7 +168,7 @@ + {"XH", "Xhosa"}, {"YO", "Yoruba"}, {"ZH", "Chinese"}, + {"ZU", "Zulu"} }; + +-const int num_locales = sizeof( locale_table ) / sizeof( locale_t ); ++const int num_locales = sizeof( locale_table ) / sizeof( tvtime_locale_t ); + + /** + * Timezone parsing code based loosely on the algorithm in diff --git a/gnu/packages/tv.scm b/gnu/packages/tv.scm new file mode 100644 index 0000000000..0a229e149a --- /dev/null +++ b/gnu/packages/tv.scm @@ -0,0 +1,64 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Alex Kost +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages tv) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages) + #:use-module (gnu packages xorg) + #:use-module (gnu packages image) + #:use-module (gnu packages compression) + #:use-module (gnu packages xml) + #:use-module (gnu packages fontutils)) + +(define-public tvtime + (package + (name "tvtime") + (version "1.0.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/tvtime/tvtime-" + version ".tar.gz")) + (sha256 + (base32 + "08q5gzbyz0lxb730rz6d6amkzimlc7nanv6n50j2bpw4n2xa9wmf")) + (patches (list (search-patch "tvtime-videodev2.patch") + (search-patch "tvtime-pngoutput.patch") + (search-patch "tvtime-xmltv.patch") + (search-patch "tvtime-gcc41.patch"))))) + (build-system gnu-build-system) + (inputs + `(("libx11" ,libx11) + ("libxext" ,libxext) + ("libxt" ,libxt) + ("libxtst" ,libxtst) + ("libxinerama" ,libxinerama) + ("libxv" ,libxv) + ("libxxf86vm" ,libxxf86vm) + ("libpng" ,libpng) + ("libxml2" ,libxml2) + ("freetype" ,freetype) + ("zlib" ,zlib))) + (home-page "http://tvtime.sourceforge.net") + (synopsis "Television viewer") + (description + "Tvtime processes the input from your video capture card and +displays it on a monitor. It focuses on a high visual quality.") + (license license:gpl2+))) -- cgit v1.2.3 From b8949a2fc9821cd30c732a668b962f09aa9e3543 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 8 May 2015 20:22:38 -0400 Subject: gnu: libtasn1: Update to 4.5. * gnu/packages/gnutls.scm (libtasn1): Update to 4.5. --- gnu/packages/gnutls.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnutls.scm b/gnu/packages/gnutls.scm index 17cd4582ff..c549ff3410 100644 --- a/gnu/packages/gnutls.scm +++ b/gnu/packages/gnutls.scm @@ -39,7 +39,7 @@ (define-public libtasn1 (package (name "libtasn1") - (version "4.4") + (version "4.5") (source (origin (method url-fetch) @@ -47,7 +47,7 @@ version ".tar.gz")) (sha256 (base32 - "0p8c5s1gm3z3nn4s9qc6gs18grbk45mx44byqw2l2qzynjqrsd7q")))) + "1nhvnznhg2aqfrfjxc8v008hjlzkh5831jsfahqk89qrw7fbbcw9")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) -- cgit v1.2.3 From fc8a431c39bc0db3623130a664d8fe3b815bc221 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 10 May 2015 14:05:49 +0200 Subject: gnu: libcdio: Synchronize description. * gnu/packages/cdrom.scm (libcdio)[description]: Synchronize with GNU. --- gnu/packages/cdrom.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm index 3383fb653d..98a3e16b04 100644 --- a/gnu/packages/cdrom.scm +++ b/gnu/packages/cdrom.scm @@ -95,7 +95,9 @@ caching facility provided by the library.") for CD-ROM and CD image file access. It allows the developer to add CD access to an application without having to worry about the OS- and device-dependent properties of CD-ROM or the specific details of CD image -formats.") +formats. It includes pycdio, a Python interface to libcdio, and +libcdio-paranoia, a library providing jitter-free and error-free audio +extraction from CDs.") (license gpl3+))) (define-public libcdio-paranoia -- cgit v1.2.3 From 487abff67cf56cee1318a5327d97998011e50a0e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 10 May 2015 19:21:30 +0200 Subject: nls: Add package files for translation. * po/packages/POTFILES.in: Add a bunch of files. --- po/packages/POTFILES.in | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/po/packages/POTFILES.in b/po/packages/POTFILES.in index 0e7bc4c0d3..b1da6d2023 100644 --- a/po/packages/POTFILES.in +++ b/po/packages/POTFILES.in @@ -6,24 +6,52 @@ gnu/packages/aspell.scm gnu/packages/backup.scm gnu/packages/base.scm gnu/packages/bittorrent.scm +gnu/packages/certs.scm +gnu/packages/compression.scm gnu/packages/databases.scm +gnu/packages/debug.scm +gnu/packages/dejagnu.scm +gnu/packages/feh.scm gnu/packages/games.scm gnu/packages/gcc.scm +gnu/packages/geeqie.scm gnu/packages/gettext.scm gnu/packages/gnuzilla.scm gnu/packages/gtk.scm gnu/packages/guile.scm -gnu/packages/image.scm gnu/packages/imagemagick.scm +gnu/packages/image.scm gnu/packages/inkscape.scm +gnu/packages/jemalloc.scm +gnu/packages/key-mon.scm +gnu/packages/less.scm +gnu/packages/lesstif.scm gnu/packages/linux.scm gnu/packages/lout.scm +gnu/packages/messaging.scm gnu/packages/mpd.scm +gnu/packages/netpbm.scm +gnu/packages/nettle.scm +gnu/packages/networking.scm gnu/packages/pdf.scm +gnu/packages/pem.scm +gnu/packages/perl.scm gnu/packages/photo.scm +gnu/packages/qemu.scm gnu/packages/ratpoison.scm +gnu/packages/readline.scm gnu/packages/scanner.scm gnu/packages/scheme.scm +gnu/packages/search.scm +gnu/packages/serveez.scm +gnu/packages/telephony.scm +gnu/packages/texinfo.scm +gnu/packages/texlive.scm +gnu/packages/textutils.scm +gnu/packages/version-control.scm +gnu/packages/webkit.scm +gnu/packages/web.scm +gnu/packages/weechat.scm gnu/packages/wordnet.scm gnu/packages/xiph.scm gnu/packages/zip.scm -- cgit v1.2.3 From d7fdab25410bfc84b944153983529fc38916653b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 10 May 2015 20:28:58 +0200 Subject: build: check-final-inputs-self-contained uses %HYDRA-SUPPORTED-SYSTEMS. * build-aux/check-final-inputs-self-contained.scm: Change '%supported-systems' to '%hydra-supported-systems'. --- build-aux/check-final-inputs-self-contained.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-aux/check-final-inputs-self-contained.scm b/build-aux/check-final-inputs-self-contained.scm index ba85c876d2..9b791f2e2d 100644 --- a/build-aux/check-final-inputs-self-contained.scm +++ b/build-aux/check-final-inputs-self-contained.scm @@ -77,5 +77,5 @@ refer to the bootstrap tools." (set-build-options store #:use-substitutes? #t) (for-each (cut test-final-inputs store <>) - %supported-systems))) + %hydra-supported-systems))) -- cgit v1.2.3 From 1ec78e9d71d7c38c5739c90d3927e227bce23caa Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Fri, 8 May 2015 14:44:29 -0500 Subject: gnu: octave: Add fftw, arpack, and glu inputs. * gnu/packages/maths.scm (octave)[inputs]: Add fftw, fftwf, arpack, and glu. [description]: Wrap to 80 columns. --- gnu/packages/maths.scm | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 417af4a91b..db8293471a 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -382,6 +382,9 @@ extremely large and complex data collections.") `(("lapack" ,lapack) ("readline" ,readline) ("glpk" ,glpk) + ("fftw" ,fftw) + ("fftwf" ,fftwf) + ("arpack" ,arpack-ng) ("curl" ,curl) ("pcre" ,pcre) ("fltk" ,fltk) @@ -390,16 +393,18 @@ extremely large and complex data collections.") ("hdf5" ,hdf5) ("libxft" ,libxft) ("mesa" ,mesa) + ("glu" ,glu) ("zlib" ,zlib))) (native-inputs `(("gfortran" ,gfortran-4.8) ("pkg-config" ,pkg-config) ("perl" ,perl) - ;; The following inputs are not actually used in the build process. However, the - ;; ./configure gratuitously tests for their existence and assumes that programs not - ;; present at build time are also not, and can never be, available at run time! - ;; If these inputs are therefore not present, support for them will be built out. - ;; However, Octave will still run without them, albeit without the features they + ;; The following inputs are not actually used in the build process. + ;; However, the ./configure gratuitously tests for their existence and + ;; assumes that programs not present at build time are also not, and + ;; can never be, available at run time! If these inputs are therefore + ;; not present, support for them will be built out. However, Octave + ;; will still run without them, albeit without the features they ;; provide. ("less" ,less) ("texinfo" ,texinfo) @@ -411,11 +416,11 @@ extremely large and complex data collections.") "/bin/sh")))) (home-page "http://www.gnu.org/software/octave/") (synopsis "High-level language for numerical computation") - (description "GNU Octave is a high-level interpreted language that is specialized -for numerical computations. It can be used for both linear and non-linear -applications and it provides great support for visualizing results. Work may -be performed both at the interactive command-line as well as via script -files.") + (description "GNU Octave is a high-level interpreted language that is +specialized for numerical computations. It can be used for both linear and +non-linear applications and it provides great support for visualizing results. +Work may be performed both at the interactive command-line as well as via +script files.") (license license:gpl3+))) (define-public gmsh -- cgit v1.2.3 From d48c8e7b6070a63dc12ead0bb9ea47b790e237f0 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 11 May 2015 12:46:31 -0400 Subject: gnu: wpa-supplicant: Add security fixes. * gnu/packages/patches/wpa-supplicant-2015-2-fix.patch, gnu/packages/patches/wpa-supplicant-2015-3-fix.patch, gnu/packages/patches/wpa-supplicant-2015-4-fix-pt1.patch, gnu/packages/patches/wpa-supplicant-2015-4-fix-pt2.patch, gnu/packages/patches/wpa-supplicant-2015-4-fix-pt3.patch, gnu/packages/patches/wpa-supplicant-2015-4-fix-pt4.patch, gnu/packages/patches/wpa-supplicant-2015-4-fix-pt5.patch: New files. * gnu-system.am (dist_patch_DATA): Add them. * gnu/packages/admin.scm (wpa-supplicant-light)[source]: Add patches. --- gnu-system.am | 7 ++ gnu/packages/admin.scm | 9 ++- .../patches/wpa-supplicant-2015-2-fix.patch | 51 +++++++++++++++ .../patches/wpa-supplicant-2015-3-fix.patch | 43 +++++++++++++ .../patches/wpa-supplicant-2015-4-fix-pt1.patch | 75 ++++++++++++++++++++++ .../patches/wpa-supplicant-2015-4-fix-pt2.patch | 68 ++++++++++++++++++++ .../patches/wpa-supplicant-2015-4-fix-pt3.patch | 54 ++++++++++++++++ .../patches/wpa-supplicant-2015-4-fix-pt4.patch | 52 +++++++++++++++ .../patches/wpa-supplicant-2015-4-fix-pt5.patch | 34 ++++++++++ 9 files changed, 392 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/wpa-supplicant-2015-2-fix.patch create mode 100644 gnu/packages/patches/wpa-supplicant-2015-3-fix.patch create mode 100644 gnu/packages/patches/wpa-supplicant-2015-4-fix-pt1.patch create mode 100644 gnu/packages/patches/wpa-supplicant-2015-4-fix-pt2.patch create mode 100644 gnu/packages/patches/wpa-supplicant-2015-4-fix-pt3.patch create mode 100644 gnu/packages/patches/wpa-supplicant-2015-4-fix-pt4.patch create mode 100644 gnu/packages/patches/wpa-supplicant-2015-4-fix-pt5.patch diff --git a/gnu-system.am b/gnu-system.am index 0932ef4ad2..6804fd3d38 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -567,6 +567,13 @@ dist_patch_DATA = \ gnu/packages/patches/wicd-urwid-1.3.patch \ gnu/packages/patches/wmctrl-64-fix.patch \ gnu/packages/patches/wpa-supplicant-CVE-2015-1863.patch \ + gnu/packages/patches/wpa-supplicant-2015-2-fix.patch \ + gnu/packages/patches/wpa-supplicant-2015-3-fix.patch \ + gnu/packages/patches/wpa-supplicant-2015-4-fix-pt1.patch \ + gnu/packages/patches/wpa-supplicant-2015-4-fix-pt2.patch \ + gnu/packages/patches/wpa-supplicant-2015-4-fix-pt3.patch \ + gnu/packages/patches/wpa-supplicant-2015-4-fix-pt4.patch \ + gnu/packages/patches/wpa-supplicant-2015-4-fix-pt5.patch \ gnu/packages/patches/xf86-video-ark-remove-mibstore.patch \ gnu/packages/patches/xf86-video-ast-remove-mibstore.patch \ gnu/packages/patches/xf86-video-geode-glibc-2.20.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 319bfad7e4..883f25d7c3 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -704,7 +704,14 @@ commands and their arguments.") (base32 "08li21q1wjn5chrv289w666il9ah1w419y3dkq2rl4wnq0rci385")) (patches - (list (search-patch "wpa-supplicant-CVE-2015-1863.patch"))))) + (map search-patch '("wpa-supplicant-CVE-2015-1863.patch" + "wpa-supplicant-2015-2-fix.patch" + "wpa-supplicant-2015-3-fix.patch" + "wpa-supplicant-2015-4-fix-pt1.patch" + "wpa-supplicant-2015-4-fix-pt2.patch" + "wpa-supplicant-2015-4-fix-pt3.patch" + "wpa-supplicant-2015-4-fix-pt4.patch" + "wpa-supplicant-2015-4-fix-pt5.patch"))))) (build-system gnu-build-system) (arguments '(#:phases (alist-replace diff --git a/gnu/packages/patches/wpa-supplicant-2015-2-fix.patch b/gnu/packages/patches/wpa-supplicant-2015-2-fix.patch new file mode 100644 index 0000000000..cd097006d2 --- /dev/null +++ b/gnu/packages/patches/wpa-supplicant-2015-2-fix.patch @@ -0,0 +1,51 @@ +Patch copied from http://w1.fi/security/2015-2/ + +From 5acd23f4581da58683f3cf5e36cb71bbe4070bd7 Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Tue, 28 Apr 2015 17:08:33 +0300 +Subject: [PATCH] WPS: Fix HTTP chunked transfer encoding parser + +strtoul() return value may end up overflowing the int h->chunk_size and +resulting in a negative value to be stored as the chunk_size. This could +result in the following memcpy operation using a very large length +argument which would result in a buffer overflow and segmentation fault. + +This could have been used to cause a denial service by any device that +has been authorized for network access (either wireless or wired). This +would affect both the WPS UPnP functionality in a WPS AP (hostapd with +upnp_iface parameter set in the configuration) and WPS ER +(wpa_supplicant with WPS_ER_START control interface command used). + +Validate the parsed chunk length value to avoid this. In addition to +rejecting negative values, we can also reject chunk size that would be +larger than the maximum configured body length. + +Thanks to Kostya Kortchinsky of Google security team for discovering and +reporting this issue. + +Signed-off-by: Jouni Malinen +--- + src/wps/httpread.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/wps/httpread.c b/src/wps/httpread.c +index 2f08f37..d2855e3 100644 +--- a/src/wps/httpread.c ++++ b/src/wps/httpread.c +@@ -533,6 +533,13 @@ static void httpread_read_handler(int sd, void *eloop_ctx, void *sock_ctx) + if (!isxdigit(*cbp)) + goto bad; + h->chunk_size = strtoul(cbp, NULL, 16); ++ if (h->chunk_size < 0 || ++ h->chunk_size > h->max_bytes) { ++ wpa_printf(MSG_DEBUG, ++ "httpread: Invalid chunk size %d", ++ h->chunk_size); ++ goto bad; ++ } + /* throw away chunk header + * so we have only real data + */ +-- +1.9.1 + diff --git a/gnu/packages/patches/wpa-supplicant-2015-3-fix.patch b/gnu/packages/patches/wpa-supplicant-2015-3-fix.patch new file mode 100644 index 0000000000..de042f0c49 --- /dev/null +++ b/gnu/packages/patches/wpa-supplicant-2015-3-fix.patch @@ -0,0 +1,43 @@ +Patch copied from http://w1.fi/security/2015-3/ + +From ef566a4d4f74022e1fdb0a2addfe81e6de9f4aae Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Wed, 29 Apr 2015 02:21:53 +0300 +Subject: [PATCH] AP WMM: Fix integer underflow in WMM Action frame parser + +The length of the WMM Action frame was not properly validated and the +length of the information elements (int left) could end up being +negative. This would result in reading significantly past the stack +buffer while parsing the IEs in ieee802_11_parse_elems() and while doing +so, resulting in segmentation fault. + +This can result in an invalid frame being used for a denial of service +attack (hostapd process killed) against an AP with a driver that uses +hostapd for management frame processing (e.g., all mac80211-based +drivers). + +Thanks to Kostya Kortchinsky of Google security team for discovering and +reporting this issue. + +Signed-off-by: Jouni Malinen +--- + src/ap/wmm.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/ap/wmm.c b/src/ap/wmm.c +index 6d4177c..314e244 100644 +--- a/src/ap/wmm.c ++++ b/src/ap/wmm.c +@@ -274,6 +274,9 @@ void hostapd_wmm_action(struct hostapd_data *hapd, + return; + } + ++ if (left < 0) ++ return; /* not a valid WMM Action frame */ ++ + /* extract the tspec info element */ + if (ieee802_11_parse_elems(pos, left, &elems, 1) == ParseFailed) { + hostapd_logger(hapd, mgmt->sa, HOSTAPD_MODULE_IEEE80211, +-- +1.9.1 + diff --git a/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt1.patch b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt1.patch new file mode 100644 index 0000000000..7ebf5f4cc1 --- /dev/null +++ b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt1.patch @@ -0,0 +1,75 @@ +Patch copied from http://w1.fi/security/2015-4/ + +From dd2f043c9c43d156494e33d7ce22db96e6ef42c7 Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Fri, 1 May 2015 16:37:45 +0300 +Subject: [PATCH 1/5] EAP-pwd peer: Fix payload length validation for Commit + and Confirm + +The length of the received Commit and Confirm message payloads was not +checked before reading them. This could result in a buffer read +overflow when processing an invalid message. + +Fix this by verifying that the payload is of expected length before +processing it. In addition, enforce correct state transition sequence to +make sure there is no unexpected behavior if receiving a Commit/Confirm +message before the previous exchanges have been completed. + +Thanks to Kostya Kortchinsky of Google security team for discovering and +reporting this issue. + +Signed-off-by: Jouni Malinen +--- + src/eap_peer/eap_pwd.c | 29 +++++++++++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +diff --git a/src/eap_peer/eap_pwd.c b/src/eap_peer/eap_pwd.c +index f2b0926..a629437 100644 +--- a/src/eap_peer/eap_pwd.c ++++ b/src/eap_peer/eap_pwd.c +@@ -355,6 +355,23 @@ eap_pwd_perform_commit_exchange(struct eap_sm *sm, struct eap_pwd_data *data, + BIGNUM *mask = NULL, *x = NULL, *y = NULL, *cofactor = NULL; + u16 offset; + u8 *ptr, *scalar = NULL, *element = NULL; ++ size_t prime_len, order_len; ++ ++ if (data->state != PWD_Commit_Req) { ++ ret->ignore = TRUE; ++ goto fin; ++ } ++ ++ prime_len = BN_num_bytes(data->grp->prime); ++ order_len = BN_num_bytes(data->grp->order); ++ ++ if (payload_len != 2 * prime_len + order_len) { ++ wpa_printf(MSG_INFO, ++ "EAP-pwd: Unexpected Commit payload length %u (expected %u)", ++ (unsigned int) payload_len, ++ (unsigned int) (2 * prime_len + order_len)); ++ goto fin; ++ } + + if (((data->private_value = BN_new()) == NULL) || + ((data->my_element = EC_POINT_new(data->grp->group)) == NULL) || +@@ -554,6 +571,18 @@ eap_pwd_perform_confirm_exchange(struct eap_sm *sm, struct eap_pwd_data *data, + u8 conf[SHA256_MAC_LEN], *cruft = NULL, *ptr; + int offset; + ++ if (data->state != PWD_Confirm_Req) { ++ ret->ignore = TRUE; ++ goto fin; ++ } ++ ++ if (payload_len != SHA256_MAC_LEN) { ++ wpa_printf(MSG_INFO, ++ "EAP-pwd: Unexpected Confirm payload length %u (expected %u)", ++ (unsigned int) payload_len, SHA256_MAC_LEN); ++ goto fin; ++ } ++ + /* + * first build up the ciphersuite which is group | random_function | + * prf +-- +1.9.1 + diff --git a/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt2.patch b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt2.patch new file mode 100644 index 0000000000..c11e4175d9 --- /dev/null +++ b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt2.patch @@ -0,0 +1,68 @@ +Patch copied from http://w1.fi/security/2015-4/ + +From e28a58be26184c2a23f80b410e0997ef1bd5d578 Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Fri, 1 May 2015 16:40:44 +0300 +Subject: [PATCH 2/5] EAP-pwd server: Fix payload length validation for Commit + and Confirm + +The length of the received Commit and Confirm message payloads was not +checked before reading them. This could result in a buffer read +overflow when processing an invalid message. + +Fix this by verifying that the payload is of expected length before +processing it. In addition, enforce correct state transition sequence to +make sure there is no unexpected behavior if receiving a Commit/Confirm +message before the previous exchanges have been completed. + +Thanks to Kostya Kortchinsky of Google security team for discovering and +reporting this issue. + +Signed-off-by: Jouni Malinen +--- + src/eap_server/eap_server_pwd.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/src/eap_server/eap_server_pwd.c b/src/eap_server/eap_server_pwd.c +index 66bd5d2..3189105 100644 +--- a/src/eap_server/eap_server_pwd.c ++++ b/src/eap_server/eap_server_pwd.c +@@ -656,9 +656,21 @@ eap_pwd_process_commit_resp(struct eap_sm *sm, struct eap_pwd_data *data, + BIGNUM *x = NULL, *y = NULL, *cofactor = NULL; + EC_POINT *K = NULL, *point = NULL; + int res = 0; ++ size_t prime_len, order_len; + + wpa_printf(MSG_DEBUG, "EAP-pwd: Received commit response"); + ++ prime_len = BN_num_bytes(data->grp->prime); ++ order_len = BN_num_bytes(data->grp->order); ++ ++ if (payload_len != 2 * prime_len + order_len) { ++ wpa_printf(MSG_INFO, ++ "EAP-pwd: Unexpected Commit payload length %u (expected %u)", ++ (unsigned int) payload_len, ++ (unsigned int) (2 * prime_len + order_len)); ++ goto fin; ++ } ++ + if (((data->peer_scalar = BN_new()) == NULL) || + ((data->k = BN_new()) == NULL) || + ((cofactor = BN_new()) == NULL) || +@@ -774,6 +786,13 @@ eap_pwd_process_confirm_resp(struct eap_sm *sm, struct eap_pwd_data *data, + u8 conf[SHA256_MAC_LEN], *cruft = NULL, *ptr; + int offset; + ++ if (payload_len != SHA256_MAC_LEN) { ++ wpa_printf(MSG_INFO, ++ "EAP-pwd: Unexpected Confirm payload length %u (expected %u)", ++ (unsigned int) payload_len, SHA256_MAC_LEN); ++ goto fin; ++ } ++ + /* build up the ciphersuite: group | random_function | prf */ + grp = htons(data->group_num); + ptr = (u8 *) &cs; +-- +1.9.1 + diff --git a/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt3.patch b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt3.patch new file mode 100644 index 0000000000..963dac9270 --- /dev/null +++ b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt3.patch @@ -0,0 +1,54 @@ +Patch copied from http://w1.fi/security/2015-4/ + +From 477c74395acd0123340457ba6f15ab345d42016e Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Sat, 2 May 2015 19:23:04 +0300 +Subject: [PATCH 3/5] EAP-pwd peer: Fix Total-Length parsing for fragment + reassembly + +The remaining number of bytes in the message could be smaller than the +Total-Length field size, so the length needs to be explicitly checked +prior to reading the field and decrementing the len variable. This could +have resulted in the remaining length becoming negative and interpreted +as a huge positive integer. + +In addition, check that there is no already started fragment in progress +before allocating a new buffer for reassembling fragments. This avoid a +potential memory leak when processing invalid message. + +Signed-off-by: Jouni Malinen +--- + src/eap_peer/eap_pwd.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/eap_peer/eap_pwd.c b/src/eap_peer/eap_pwd.c +index a629437..1d2079b 100644 +--- a/src/eap_peer/eap_pwd.c ++++ b/src/eap_peer/eap_pwd.c +@@ -866,11 +866,23 @@ eap_pwd_process(struct eap_sm *sm, void *priv, struct eap_method_ret *ret, + * if it's the first fragment there'll be a length field + */ + if (EAP_PWD_GET_LENGTH_BIT(lm_exch)) { ++ if (len < 2) { ++ wpa_printf(MSG_DEBUG, ++ "EAP-pwd: Frame too short to contain Total-Length field"); ++ ret->ignore = TRUE; ++ return NULL; ++ } + tot_len = WPA_GET_BE16(pos); + wpa_printf(MSG_DEBUG, "EAP-pwd: Incoming fragments whose " + "total length = %d", tot_len); + if (tot_len > 15000) + return NULL; ++ if (data->inbuf) { ++ wpa_printf(MSG_DEBUG, ++ "EAP-pwd: Unexpected new fragment start when previous fragment is still in use"); ++ ret->ignore = TRUE; ++ return NULL; ++ } + data->inbuf = wpabuf_alloc(tot_len); + if (data->inbuf == NULL) { + wpa_printf(MSG_INFO, "Out of memory to buffer " +-- +1.9.1 + diff --git a/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt4.patch b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt4.patch new file mode 100644 index 0000000000..3d945382bc --- /dev/null +++ b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt4.patch @@ -0,0 +1,52 @@ +Patch copied from http://w1.fi/security/2015-4/ + +From 3035cc2894e08319b905bd6561e8bddc8c2db9fa Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Sat, 2 May 2015 19:26:06 +0300 +Subject: [PATCH 4/5] EAP-pwd server: Fix Total-Length parsing for fragment + reassembly + +The remaining number of bytes in the message could be smaller than the +Total-Length field size, so the length needs to be explicitly checked +prior to reading the field and decrementing the len variable. This could +have resulted in the remaining length becoming negative and interpreted +as a huge positive integer. + +In addition, check that there is no already started fragment in progress +before allocating a new buffer for reassembling fragments. This avoid a +potential memory leak when processing invalid message. + +Signed-off-by: Jouni Malinen +--- + src/eap_server/eap_server_pwd.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/eap_server/eap_server_pwd.c b/src/eap_server/eap_server_pwd.c +index 3189105..2bfc3c2 100644 +--- a/src/eap_server/eap_server_pwd.c ++++ b/src/eap_server/eap_server_pwd.c +@@ -942,11 +942,21 @@ static void eap_pwd_process(struct eap_sm *sm, void *priv, + * the first fragment has a total length + */ + if (EAP_PWD_GET_LENGTH_BIT(lm_exch)) { ++ if (len < 2) { ++ wpa_printf(MSG_DEBUG, ++ "EAP-pwd: Frame too short to contain Total-Length field"); ++ return; ++ } + tot_len = WPA_GET_BE16(pos); + wpa_printf(MSG_DEBUG, "EAP-pwd: Incoming fragments, total " + "length = %d", tot_len); + if (tot_len > 15000) + return; ++ if (data->inbuf) { ++ wpa_printf(MSG_DEBUG, ++ "EAP-pwd: Unexpected new fragment start when previous fragment is still in use"); ++ return; ++ } + data->inbuf = wpabuf_alloc(tot_len); + if (data->inbuf == NULL) { + wpa_printf(MSG_INFO, "EAP-pwd: Out of memory to " +-- +1.9.1 + diff --git a/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt5.patch b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt5.patch new file mode 100644 index 0000000000..30f71974ad --- /dev/null +++ b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt5.patch @@ -0,0 +1,34 @@ +Patch copied from http://w1.fi/security/2015-4/ + +From 28a069a545b06b99eb55ad53f63f2c99e65a98f6 Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Sat, 2 May 2015 19:26:28 +0300 +Subject: [PATCH 5/5] EAP-pwd peer: Fix asymmetric fragmentation behavior + +The L (Length) and M (More) flags needs to be cleared before deciding +whether the locally generated response requires fragmentation. This +fixes an issue where these flags from the server could have been invalid +for the following message. In some cases, this could have resulted in +triggering the wpabuf security check that would terminate the process +due to invalid buffer allocation. + +Signed-off-by: Jouni Malinen +--- + src/eap_peer/eap_pwd.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/eap_peer/eap_pwd.c b/src/eap_peer/eap_pwd.c +index 1d2079b..e58b13a 100644 +--- a/src/eap_peer/eap_pwd.c ++++ b/src/eap_peer/eap_pwd.c +@@ -968,6 +968,7 @@ eap_pwd_process(struct eap_sm *sm, void *priv, struct eap_method_ret *ret, + /* + * we have output! Do we need to fragment it? + */ ++ lm_exch = EAP_PWD_GET_EXCHANGE(lm_exch); + len = wpabuf_len(data->outbuf); + if ((len + EAP_PWD_HDR_SIZE) > data->mtu) { + resp = eap_msg_alloc(EAP_VENDOR_IETF, EAP_TYPE_PWD, data->mtu, +-- +1.9.1 + -- cgit v1.2.3 From d49976ed4edc2eb6f42fb215917d1c67079bdf1f Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 11 May 2015 20:24:59 +0200 Subject: gnu: ardour: Extract RUNPATH phase. * gnu/packages/audio.scm (ardour-rpath-phase): New procedure. * gnu/packages/audio.scm (ardour, ardour-3): Generate version-dependent build phase with ardour-rpath-phase. --- gnu/packages/audio.scm | 44 +++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 543fe49390..e15381b68a 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -21,6 +21,7 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) + #:use-module (guix utils) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system gnu) #:use-module (guix build-system waf) @@ -128,6 +129,22 @@ attacks, performing pitch detection, tapping the beat and producing MIDI streams from live audio.") (license license:gpl3+))) +(define (ardour-rpath-phase major-version) + `(lambda* (#:key outputs #:allow-other-keys) + (let ((libdir (string-append (assoc-ref outputs "out") + "/lib/ardour" ,major-version))) + (substitute* "wscript" + (("linker_flags = \\[\\]") + (string-append "linker_flags = [\"" + "-Wl,-rpath=" + libdir ":" + libdir "/backends" ":" + libdir "/engines" ":" + libdir "/panners" ":" + libdir "/surfaces" ":" + libdir "/vamp" "\"]")))) + #t)) + (define-public ardour-3 (package (name "ardour") @@ -158,24 +175,7 @@ namespace ARDOUR { const char* revision = \"3.5-403-gec2cb31\" ; }")))) (modify-phases %standard-phases (add-after 'unpack 'set-rpath-in-LDFLAGS - (lambda _ - (substitute* "wscript" - (("linker_flags = \\[\\]") - (string-append "linker_flags = [\"" - "-Wl,-rpath=" - (assoc-ref %outputs "out") - "/lib/ardour3/" ":" - (assoc-ref %outputs "out") - "/lib/ardour3/backends" ":" - (assoc-ref %outputs "out") - "/lib/ardour3/engines" ":" - (assoc-ref %outputs "out") - "/lib/ardour3/panners" ":" - (assoc-ref %outputs "out") - "/lib/ardour3/surfaces" ":" - (assoc-ref %outputs "out") - "/lib/ardour3/vamp" "\"]"))) - #t))) + ,(ardour-rpath-phase (version-prefix version 1)))) #:tests? #f ; no check target #:python ,python-2)) (inputs @@ -246,7 +246,13 @@ namespace ARDOUR { const char* revision = \"4.0\" ; }")))) (sha256 (base32 "0a8bydc24xv0cahdqfaxdmi1f43cyr9psiyshxpbrkdqw2c7a4xi")) - (file-name (string-append name "-" version)))))) + (file-name (string-append name "-" version)))) + (arguments + (substitute-keyword-arguments (package-arguments ardour-3) + ((#:phases phases) + `(modify-phases ,phases + (replace 'set-rpath-in-LDFLAGS + ,(ardour-rpath-phase (version-prefix version 1))))))))) (define-public azr3 (package -- cgit v1.2.3 From 2a9a94419a35702958b3933eddf1df59c10aac40 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Mon, 11 May 2015 22:14:36 +0200 Subject: gnu: Add hunspell. * gnu/packages/libreoffice.scm (hunspell): New variable. --- gnu/packages/libreoffice.scm | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 17f4a0ca01..0a88e03875 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -20,7 +20,8 @@ (define-module (gnu packages libreoffice) #:use-module (guix packages) #:use-module (guix download) - #:use-module ((guix licenses) #:select (lgpl2.1+ mpl2.0 non-copyleft)) + #:use-module ((guix licenses) + #:select (gpl2+ lgpl2.1+ mpl1.1 mpl2.0 non-copyleft)) #:use-module (guix build-system gnu) #:use-module (gnu packages boost) #:use-module (gnu packages check) @@ -508,3 +509,23 @@ spreadsheet documents.") (description "Libwps is a library for importing files in the Microsoft Works word processor file format.") (license (list mpl2.0 lgpl2.1+)))) ; dual license + +(define-public hunspell + (package + (name "hunspell") + (version "1.3.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/" name "/" + name "-" version ".tar.gz")) + (sha256 (base32 + "0v14ff9s37vkh45diaddndcrj0hmn67arh8xh8k79q9c1vgc1cm7")))) + (build-system gnu-build-system) + (home-page "http://hunspell.sourceforge.net/") + (synopsis "Spell checker") + (description "Hunspell is a spell checker and morphological analyzer +library and program designed for languages with rich morphology and complex +word compounding or character encoding.") + ;; triple license, including "mpl1.1 or later" + (license (list mpl1.1 gpl2+ lgpl2.1+)))) -- cgit v1.2.3 From 1c625dd3726ecec879a3628ec3e4c89bde00a8c6 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Mon, 11 May 2015 22:37:21 +0200 Subject: gnu: Add hyphen. * gnu/packages/libreoffice.scm (hyphen): New variable. --- gnu/packages/libreoffice.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 0a88e03875..6f7bda3b31 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -529,3 +529,24 @@ library and program designed for languages with rich morphology and complex word compounding or character encoding.") ;; triple license, including "mpl1.1 or later" (license (list mpl1.1 gpl2+ lgpl2.1+)))) + +(define-public hyphen + (package + (name "hyphen") + (version "2.8.8") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/hunspell/" + name "-" version ".tar.gz")) + (sha256 (base32 + "01ap9pr6zzzbp4ky0vy7i1983fwyqy27pl0ld55s30fdxka3ciih")))) + (build-system gnu-build-system) + (inputs + `(("perl" ,perl))) + (home-page "http://hunspell.sourceforge.net/") + (synopsis "Hyphenation library") + (description "Hyphen is a hyphenation library using TeX hyphenation +patterns, which are pre-processed by a perl script.") + ;; triple license, including "mpl1.1 or later" + (license (list mpl1.1 mpl2.0 gpl2+ lgpl2.1+)))) -- cgit v1.2.3 From 2320ea1a51ce707ca19967f50e6fbedefafe14c4 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Mon, 11 May 2015 22:53:47 +0200 Subject: gnu: Add MyThes. * gnu/packages/libreoffice.scm (mythes): New variable. --- gnu/packages/libreoffice.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 6f7bda3b31..539600a12b 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -550,3 +550,28 @@ word compounding or character encoding.") patterns, which are pre-processed by a perl script.") ;; triple license, including "mpl1.1 or later" (license (list mpl1.1 mpl2.0 gpl2+ lgpl2.1+)))) + +(define-public mythes + (package + (name "mythes") + (version "1.2.4") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/hunspell/" + name "-" version ".tar.gz")) + (sha256 (base32 + "0prh19wy1c74kmzkkavm9qslk99gz8h8wmjvwzjc6lf8v2az708y")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("hunspell" ,hunspell) + ("perl" ,perl))) + (home-page "http://hunspell.sourceforge.net/") + (synopsis "Thesaurus") + (description "MyThes is a simple thesaurus that uses a structured text +data file and an index file with binary search to look up words and phrases +and to return information on pronunciations, meaningss and synonyms.") + (license (non-copyleft "file://COPYING" + "See COPYING in the distribution.")))) -- cgit v1.2.3 From 1303a4a4517260def862ce7fe97e6b28dd8005e1 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 11 May 2015 22:21:31 +0200 Subject: daemon: Fix possible use-after-free. This is essentially a backport of by Eelco Dolstra . The use-after-free bug would typically manifest when building with GCC 5.1. --- nix/libstore/build.cc | 29 +++++++---------------------- nix/libutil/util.cc | 20 ++++++++++++++------ nix/libutil/util.hh | 5 +++++ 3 files changed, 26 insertions(+), 28 deletions(-) diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc index f38cd29940..b3c994d6de 100644 --- a/nix/libstore/build.cc +++ b/nix/libstore/build.cc @@ -401,18 +401,6 @@ static void commonChildInit(Pipe & logPipe) } -/* Convert a string list to an array of char pointers. Careful: the - string list should outlive the array. */ -const char * * strings2CharPtrs(const Strings & ss) -{ - const char * * arr = new const char * [ss.size() + 1]; - const char * * p = arr; - foreach (Strings::const_iterator, i, ss) *p++ = i->c_str(); - *p = 0; - return arr; -} - - /* Restore default handling of SIGPIPE, otherwise some programs will randomly say "Broken pipe". */ static void restoreSIGPIPE() @@ -2135,11 +2123,7 @@ void DerivationGoal::initChild() Strings envStrs; foreach (Environment::const_iterator, i, env) envStrs.push_back(rewriteHashes(i->first + "=" + i->second, rewritesToTmp)); - const char * * envArr = strings2CharPtrs(envStrs); - - Path program = drv.builder.c_str(); - std::vector args; /* careful with c_str()! */ - string user; /* must be here for its c_str()! */ + std::vector envArr = stringsToCharPtrs(envStrs); /* If we are running in `build-users' mode, then switch to the user we allocated above. Make sure that we drop all root @@ -2165,17 +2149,18 @@ void DerivationGoal::initChild() } /* Fill in the arguments. */ + Strings args; string builderBasename = baseNameOf(drv.builder); args.push_back(builderBasename.c_str()); foreach (Strings::iterator, i, drv.args) - args.push_back(rewriteHashes(*i, rewritesToTmp).c_str()); - args.push_back(0); + args.push_back(rewriteHashes(*i, rewritesToTmp)); + std::vector argArr = stringsToCharPtrs(args); restoreSIGPIPE(); /* Execute the program. This should not return. */ inSetup = false; - execve(program.c_str(), (char * *) &args[0], (char * *) envArr); + execve(drv.builder.c_str(), (char * *) &argArr[0], (char * *) &envArr[0]); throw SysError(format("executing `%1%'") % drv.builder); @@ -2778,7 +2763,7 @@ void SubstitutionGoal::tryToRun() args.push_back("--substitute"); args.push_back(storePath); args.push_back(destPath); - const char * * argArr = strings2CharPtrs(args); + std::vector argArr = stringsToCharPtrs(args); /* Fork the substitute program. */ pid = maybeVfork(); @@ -2796,7 +2781,7 @@ void SubstitutionGoal::tryToRun() if (dup2(outPipe.writeSide, STDOUT_FILENO) == -1) throw SysError("cannot dup output pipe into stdout"); - execv(sub.c_str(), (char * *) argArr); + execv(sub.c_str(), (char * *) &argArr[0]); throw SysError(format("executing `%1%'") % sub); diff --git a/nix/libutil/util.cc b/nix/libutil/util.cc index 846674a29d..024cea83d1 100644 --- a/nix/libutil/util.cc +++ b/nix/libutil/util.cc @@ -852,16 +852,20 @@ void killUser(uid_t uid) ////////////////////////////////////////////////////////////////////// +std::vector stringsToCharPtrs(const Strings & ss) +{ + std::vector res; + foreach (Strings::const_iterator, i, ss) + res.push_back(i->c_str()); + res.push_back(0); + return res; +} + + string runProgram(Path program, bool searchPath, const Strings & args) { checkInterrupt(); - std::vector cargs; /* careful with c_str()! */ - cargs.push_back(program.c_str()); - for (Strings::const_iterator i = args.begin(); i != args.end(); ++i) - cargs.push_back(i->c_str()); - cargs.push_back(0); - /* Create a pipe. */ Pipe pipe; pipe.create(); @@ -880,6 +884,10 @@ string runProgram(Path program, bool searchPath, const Strings & args) if (dup2(pipe.writeSide, STDOUT_FILENO) == -1) throw SysError("dupping stdout"); + Strings args_(args); + args_.push_front(program); + auto cargs = stringsToCharPtrs(args_); + if (searchPath) execvp(program.c_str(), (char * *) &cargs[0]); else diff --git a/nix/libutil/util.hh b/nix/libutil/util.hh index ce2d77c19a..a70981877b 100644 --- a/nix/libutil/util.hh +++ b/nix/libutil/util.hh @@ -257,6 +257,11 @@ void killUser(uid_t uid); string runProgram(Path program, bool searchPath = false, const Strings & args = Strings()); +/* Convert a list of strings to a null-terminated vector of char + *'s. The result must not be accessed beyond the lifetime of the + list of strings. */ +std::vector stringsToCharPtrs(const Strings & ss); + /* Close all file descriptors except stdin, stdout, stderr, and those listed in the given set. Good practice in child processes. */ void closeMostFDs(const set & exceptions); -- cgit v1.2.3 From efb5e833ba0450c5136e7a282c83789bd623afd1 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 11 May 2015 22:59:29 +0200 Subject: doc: Document X.509 certificates. * doc/guix.texi (Using the Configuration System): Add xref to "X.509 Certificates". (X.509 Certificates): New section. * gnu/system/examples/desktop.tmpl: Use NSS-CERTS. --- doc/guix.texi | 46 +++++++++++++++++++++++++++++++++++++++- gnu/system/examples/desktop.tmpl | 3 ++- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 698b63fac5..137b39bed2 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3998,6 +3998,7 @@ instance to support new system services. * Locales:: Language and cultural convention settings. * Services:: Specifying system services. * Setuid Programs:: Programs running with root privileges. +* X.509 Certificates:: Authenticating HTTPS servers. * Name Service Switch:: Configuring libc's name service switch. * Initial RAM Disk:: Linux-Libre bootstrapping. * GRUB Configuration:: Configuring the boot loader. @@ -4058,7 +4059,8 @@ more, would look like this: @end lisp @xref{Desktop Services}, for the exact list of services provided by -@var{%desktop-services}. +@var{%desktop-services}. @xref{X.509 Certificates}, for background +information about the @code{nss-certs} package that is used here. Assuming the above snippet is stored in the @file{my-system-config.scm} file, the @command{guix system reconfigure my-system-config.scm} command @@ -5172,6 +5174,48 @@ Under the hood, the actual setuid programs are created in the files in this directory refer to the ``real'' binaries, which are in the store. +@node X.509 Certificates +@subsection X.509 Certificates + +@cindex HTTPS, certificates +@cindex X.509 certificates +@cindex TLS +Web servers available over HTTPS (that is, HTTP over the transport-layer +security mechanism, TLS) send client programs an @dfn{X.509 certificate} +that the client can then use to @emph{authenticate} the server. To do +that, clients verify that the server's certificate is signed by a +so-called @dfn{certificate authority} (CA). But to verify the CA's +signature, clients must have first acquired the CA's certificate. + +Web browsers such as GNU@tie{}IceCat include their own set of CA +certificates, such that they are able to verify CA signatures +out-of-the-box. + +However, most other programs that can talk HTTPS---@command{wget}, +@command{git}, @command{w3m}, etc.---need to be told where CA +certificates can be found. + +@cindex @code{nss-certs} +In GuixSD, this is done by adding a package that provides certificates +to the @code{packages} field of the @code{operating-system} declaration +(@pxref{operating-system Reference}). GuixSD includes one such package, +@code{nss-certs}, which is a set of CA certificates provided as part of +Mozilla's Network Security Services. + +Note that it is @emph{not} part of @var{%base-packages}, so you need to +explicitly add it. The @file{/etc/ssl/certs} directory, which is where +most applications and libraries look for certificates by default, points +to the certificates installed globally. + +Unprivileged users can also install their own certificate package in +their profile. A number of environment variables need to be defined so +that applications and libraries know where to find them. Namely, the +OpenSSL library honors the @code{SSL_CERT_DIR} and @code{SSL_CERT_FILE} +variables. Some applications add their own environment variables; for +instance, the Git version control system honors the certificate bundle +pointed to by the @code{GIT_SSL_CAINFO} environment variable. + + @node Name Service Switch @subsection Name Service Switch diff --git a/gnu/system/examples/desktop.tmpl b/gnu/system/examples/desktop.tmpl index 07e3f0b1d6..b2919f7221 100644 --- a/gnu/system/examples/desktop.tmpl +++ b/gnu/system/examples/desktop.tmpl @@ -3,7 +3,7 @@ (use-modules (gnu) (gnu system nss)) (use-service-modules desktop) -(use-package-modules xfce ratpoison wicd avahi xorg) +(use-package-modules xfce ratpoison wicd avahi xorg certs) (operating-system (host-name "antelope") @@ -32,6 +32,7 @@ ;; sessions using either of these at the log-in screen. (packages (cons* xfce ratpoison ;desktop environments xterm wicd avahi ;useful tools + nss-certs ;for HTTPS access %base-packages)) ;; Use the "desktop" services, which include the X11 -- cgit v1.2.3 From b599e9ebf5e05c0acc76081a2feb4d4c17cfbe0f Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 11 May 2015 22:39:26 -0400 Subject: install: desktop.tmpl: Add "netdev" to the user's supplementary groups. * gnu/system/examples/desktop.tmpl: Add "netdev" to the user's supplementary groups. --- gnu/system/examples/desktop.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/system/examples/desktop.tmpl b/gnu/system/examples/desktop.tmpl index b2919f7221..c78188eb61 100644 --- a/gnu/system/examples/desktop.tmpl +++ b/gnu/system/examples/desktop.tmpl @@ -24,7 +24,7 @@ (name "bob") (comment "Alice's brother") (group "users") - (supplementary-groups '("wheel" + (supplementary-groups '("wheel" "netdev" "audio" "video")) (home-directory "/home/bob")))) -- cgit v1.2.3 From ae80609603935eb6b12965ddeec70df7241b69eb Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 12 May 2015 10:04:47 +0200 Subject: doc: Use @indicateurl where appropriate. * doc/guix.texi (Binary Installation, Invoking guix-daemon, System Installation): Use @indicateurl instead of @code where appropriate. --- doc/guix.texi | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 137b39bed2..d82a8e9376 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -258,7 +258,7 @@ Installing goes along these lines: @enumerate @item Download the binary tarball from -@code{ftp://alpha.gnu.org/gnu/guix/guix-binary-@value{VERSION}.@var{system}.tar.xz}@footnote{As +@indicateurl{ftp://alpha.gnu.org/gnu/guix/guix-binary-@value{VERSION}.@var{system}.tar.xz}@footnote{As usual, make sure to download the associated @file{.sig} file and to verify the authenticity of the tarball against it!}, where @var{system} is @code{x86_64-linux} for an @code{x86_64} machine already running the @@ -695,7 +695,7 @@ remote procedure call (@pxref{The Store}). @item --substitute-urls=@var{urls} Consider @var{urls} the default whitespace-separated list of substitute -source URLs. When this option is omitted, @code{http://hydra.gnu.org} +source URLs. When this option is omitted, @indicateurl{http://hydra.gnu.org} is used. This means that substitutes may be downloaded from @var{urls}, as long @@ -3820,7 +3820,7 @@ to report issues (and success stories!), and join us in improving it. @subsection USB Stick Installation An installation image for USB sticks can be downloaded from -@code{ftp://alpha.gnu.org/gnu/guix/gsd-usb-install-@value{VERSION}.@var{system}.xz}, +@indicateurl{ftp://alpha.gnu.org/gnu/guix/gsd-usb-install-@value{VERSION}.@var{system}.xz}, where @var{system} is one of: @table @code -- cgit v1.2.3 From 4705641fd05a880d748c6ef80de029b08fc1b7ca Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 12 May 2015 10:07:42 +0200 Subject: doc: "GSD" -> "GuixSD". * doc/guix.texi: Replace "GSD" with "GuixSD". --- doc/guix.texi | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index d82a8e9376..35cb8f148b 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -213,11 +213,11 @@ Guix has a command-line interface, which allows users to build, install, upgrade, and remove packages, as well as a Scheme programming interface. @cindex Guix System Distribution -@cindex GSD +@cindex GuixSD Last but not least, Guix is used to build a distribution of the GNU system, with many GNU and non-GNU free software packages. The Guix -System Distribution, or GNU@tie{}GSD, takes advantage of the core -properties of Guix at the system level. With GNU@tie{}GSD, users +System Distribution, or GNU@tie{}GuixSD, takes advantage of the core +properties of Guix at the system level. With GuixSD, users @emph{declare} all aspects of the operating system configuration, and Guix takes care of instantiating that configuration in a reproducible, stateless fashion. @xref{GNU Distribution}. @@ -3692,7 +3692,7 @@ Reference Manual}) on @var{port} (37146 by default). @chapter GNU Distribution @cindex Guix System Distribution -@cindex GSD +@cindex GuixSD Guix comes with a distribution of the GNU system consisting entirely of free software@footnote{The term ``free'' here refers to the @url{http://www.gnu.org/philosophy/free-sw.html,freedom provided to @@ -3701,7 +3701,7 @@ distribution can be installed on its own (@pxref{System Installation}), but it is also possible to install Guix as a package manager on top of an installed GNU/Linux system (@pxref{Installation}). To distinguish between the two, we refer to the standalone distribution as the Guix -System Distribution, or GNU@tie{}GSD. +System Distribution, or GuixSD. The distribution provides core GNU packages such as GNU libc, GCC, and Binutils, as well as many GNU and non-GNU applications. The complete @@ -3738,7 +3738,7 @@ n32 application binary interface (ABI), and Linux-Libre kernel. @end table -GSD itself is currently only available on @code{i686} and @code{x86_64}. +GuixSD itself is currently only available on @code{i686} and @code{x86_64}. @noindent For information on porting to other architectures or kernels, @@ -3778,13 +3778,13 @@ link that follows: @pxref{Help,,, info, Info: An Introduction}. Hit @subsection Limitations -As of version @value{VERSION}, the Guix System Distribution (GSD) is +As of version @value{VERSION}, the Guix System Distribution (GuixSD) is not production-ready. It may contain bugs and lack important features. Thus, if you are looking for a stable production system that respects your freedom as a computer user, a good solution at this point is to consider @url{http://www.gnu.org/distros/free-distros.html, one of more established GNU/Linux distributions}. We hope you can soon switch -to the GSD without fear, of course. In the meantime, you can +to the GuixSD without fear, of course. In the meantime, you can also keep using your distribution and try out the package manager on top of it (@pxref{Installation}). @@ -3820,7 +3820,7 @@ to report issues (and success stories!), and join us in improving it. @subsection USB Stick Installation An installation image for USB sticks can be downloaded from -@indicateurl{ftp://alpha.gnu.org/gnu/guix/gsd-usb-install-@value{VERSION}.@var{system}.xz}, +@indicateurl{ftp://alpha.gnu.org/gnu/guix/guixsd-usb-install-@value{VERSION}.@var{system}.xz}, where @var{system} is one of: @table @code @@ -3842,7 +3842,7 @@ To copy the image to a USB stick, follow these steps: Decompress the image using the @command{xz} command: @example -xz -d gsd-usb-install-@value{VERSION}.@var{system}.xz +xz -d guixsd-usb-install-@value{VERSION}.@var{system}.xz @end example @item @@ -3851,7 +3851,7 @@ its device name. Assuming that USB stick is known as @file{/dev/sdX}, copy the image with: @example -dd if=gsd-usb-install-@value{VERSION}.x86_64 of=/dev/sdX +dd if=guixsd-usb-install-@value{VERSION}.x86_64 of=/dev/sdX @end example Access to @file{/dev/sdX} usually requires root privileges. @@ -5573,7 +5573,7 @@ This action does not actually install anything. @item init Populate the given directory with all the files necessary to run the operating system specified in @var{file}. This is useful for first-time -installations of GSD. For instance: +installations of GuixSD. For instance: @example guix system init my-os-config.scm /mnt -- cgit v1.2.3 From 8ce229fca2e1151100236cd884b0ee96fbe66062 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 12 May 2015 10:57:34 +0200 Subject: doc: Make 'guix publish' more visible. * doc/guix.texi (Substitutes): Add xref to "Invoking guix publish". (Invoking guix publish): Add xref to "Substitutes". Explain what Hydra is. --- doc/guix.texi | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 35cb8f148b..3a9f91e7dc 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -1349,7 +1349,9 @@ determination to subvert the computing infrastructure and exploit its weaknesses. While using @code{hydra.gnu.org} substitutes can be convenient, we encourage users to also build on their own, or even run their own build farm, such that @code{hydra.gnu.org} is less of an -interesting target. +interesting target. One way to help is by publishing the software you +build using @command{guix publish} so that others have one more choice +of server to download substitutes from (@pxref{Invoking guix publish}). Guix has the foundations to maximize build reproducibility (@pxref{Features}). In most cases, independent builds of a given @@ -3643,11 +3645,14 @@ build} supports (@pxref{Invoking guix build, common build options}). @section Invoking @command{guix publish} The purpose of @command{guix publish} is to enable users to easily share -their store with others. When @command{guix publish} runs, it spawns an -HTTP server which allows anyone with network access to obtain -substitutes from it. This means that any machine running Guix can also -act as if it were a build farm, since the HTTP interface is -Hydra-compatible. +their store with others, which can then use it as a substitute server +(@pxref{Substitutes}). + +When @command{guix publish} runs, it spawns an HTTP server which allows +anyone with network access to obtain substitutes from it. This means +that any machine running Guix can also act as if it were a build farm, +since the HTTP interface is compatible with Hydra, the software behind +the @code{hydra.gnu.org} build farm. For security, each substitute is signed, allowing recipients to check their authenticity and integrity (@pxref{Substitutes}). Because @@ -3684,7 +3689,8 @@ Listen for HTTP requests on @var{port}. @item --repl[=@var{port}] @itemx -r [@var{port}] Spawn a Guile REPL server (@pxref{REPL Servers,,, guile, GNU Guile -Reference Manual}) on @var{port} (37146 by default). +Reference Manual}) on @var{port} (37146 by default). This is used +primarily for debugging a running @command{guix publish} server. @end table @c ********************************************************************* -- cgit v1.2.3 From b32f58dd8ecfe009033079ae8d89c35224bb216f Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 12 May 2015 17:40:18 +0800 Subject: gnu: gnome-icon-theme: Update to 3.12.0. * gnu/packages/gnome.scm (gnome-icon-theme): Update to 3.12.0. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 9508fc78c0..c63fba00af 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -371,7 +371,7 @@ update-desktop-database: updates the database containing a cache of MIME types (define-public gnome-icon-theme (package (name "gnome-icon-theme") - (version "3.10.0") + (version "3.12.0") (source (origin (method url-fetch) @@ -380,7 +380,7 @@ update-desktop-database: updates the database containing a cache of MIME types name "-" version ".tar.xz")) (sha256 (base32 - "1xinbgkkvlhazj887ajcl13i7kdc1wcca02jwxzvjrvchjsp4m66")))) + "0fjh9qmmgj34zlgxb09231ld7khys562qxbpsjlaplq2j85p57im")))) (build-system gnu-build-system) (inputs `(("gtk+" ,gtk+) -- cgit v1.2.3 From 73b6cf429bfa6fd441581e45b83a7828f0c25cfb Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 12 May 2015 18:01:24 +0800 Subject: gnu: gnome-icon-theme: Move GTK+ and icon-naming-utils to 'native-inputs'. * gnu/packages/gnome.scm (gnome-icon-theme): Move inputs to native-inputs. --- gnu/packages/gnome.scm | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index c63fba00af..8adcbddc04 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -38,7 +38,6 @@ #:use-module (gnu packages curl) #:use-module (gnu packages databases) #:use-module (gnu packages flex) - #:use-module (gnu packages databases) #:use-module (gnu packages docbook) #:use-module (gnu packages glib) #:use-module (gnu packages gnupg) @@ -382,12 +381,11 @@ update-desktop-database: updates the database containing a cache of MIME types (base32 "0fjh9qmmgj34zlgxb09231ld7khys562qxbpsjlaplq2j85p57im")))) (build-system gnu-build-system) - (inputs - `(("gtk+" ,gtk+) - ("icon-naming-utils" ,icon-naming-utils))) (native-inputs - `(("intltool" ,intltool) - ("pkg-config" ,pkg-config))) + `(("gtk+" ,gtk+) ; for gtk-update-icon-cache + ("icon-naming-utils" ,icon-naming-utils) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config))) (home-page "http://art.gnome.org/") (synopsis "GNOME icon theme") -- cgit v1.2.3 From 4cbaf2ab6569cf5b4acbd0242ef9ef12ef7e4743 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 11 May 2015 15:50:34 +0200 Subject: gnu: icedtea6: Add target-dependent include directory to CPATH. * gnu/packages/java.scm (gcj-4.8)[arguments]: Add target-dependent GCJ include directory to CPATH environment variable. --- gnu/packages/java.scm | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 26fc3eccf5..ea8de9e2cf 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -250,6 +250,11 @@ build process and its dependencies, whereas Make uses Makefile format.") ;; gremlin) doesn't support it yet, so skip this phase. #:validate-runpath? #f + #:modules ((guix build utils) + (guix build gnu-build-system) + (ice-9 popen) + (ice-9 rdelim)) + #:configure-flags (let* ((gcjdir (assoc-ref %build-inputs "gcj")) (ecj (string-append gcjdir "/share/java/ecj.jar")) @@ -378,9 +383,16 @@ build process and its dependencies, whereas Make uses Makefile format.") (lambda* (#:key inputs #:allow-other-keys) (let* ((gcjdir (assoc-ref %build-inputs "gcj")) (gcjlib (string-append gcjdir "/lib")) - (antpath (string-append (getcwd) "/../apache-ant-1.9.4"))) + (antpath (string-append (getcwd) "/../apache-ant-1.9.4")) + ;; Get target-specific include directory so that + ;; libgcj-config.h is found when compiling hotspot. + (gcjinclude (let* ((port (open-input-pipe "gcj -print-file-name=include")) + (str (read-line port))) + (close-pipe port) + str))) (setenv "CPATH" - (string-append (assoc-ref %build-inputs "libxrender") + (string-append gcjinclude ":" + (assoc-ref %build-inputs "libxrender") "/include/X11/extensions" ":" (assoc-ref %build-inputs "libxtst") "/include/X11/extensions" ":" -- cgit v1.2.3 From 1600544a1089d2d79841fa693f0b2a8ba19540fa Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 11 May 2015 13:08:19 -0400 Subject: gnu: icu4c: Update to 55.1. * gnu/packages/icu4c.scm (icu4c): Update to 55.1. --- gnu/packages/icu4c.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/icu4c.scm b/gnu/packages/icu4c.scm index a575e91c8c..a753a22b20 100644 --- a/gnu/packages/icu4c.scm +++ b/gnu/packages/icu4c.scm @@ -28,7 +28,7 @@ (define-public icu4c (package (name "icu4c") - (version "54.1") + (version "55.1") (source (origin (method url-fetch) (uri (string-append "http://download.icu-project.org/files/icu4c/" @@ -37,7 +37,7 @@ (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version) "-src.tgz")) (sha256 - (base32 "1cwapgjmvrcv1n2wjspj3vahidg596gjfp4jn1gcb4baralcjayl")))) + (base32 "0ys5f5spizg45qlaa31j2lhgry0jka2gfha527n4ndfxxz5j4sz1")))) (build-system gnu-build-system) (inputs `(("perl" ,perl))) -- cgit v1.2.3 From 6ad2e17e8e44064c22c79b530a02fcc78ae85b5b Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 12 May 2015 10:28:04 -0500 Subject: gnu: Add bool. * gnu/packages/search.scm (bool): New variable. --- gnu/packages/search.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm index 5886c6a9ea..55ce45b30d 100644 --- a/gnu/packages/search.scm +++ b/gnu/packages/search.scm @@ -124,4 +124,26 @@ files and directories.") command line tool for interacting with libtocc.") (license gpl3+))) +(define-public bool + (package + (name "bool") + (version "0.2.2") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/bool/bool-" + version ".tar.xz")) + (sha256 + (base32 + "1frdmgrmb509fxbdpsxxw3lvvwv7xm1pavqrqgm4jg698iix6xfw")))) + (build-system gnu-build-system) + (home-page "https://www.gnu.org/software/bool") + (synopsis "Find files that match a boolean expression") + (description + "GNU Bool is a utility for finding files that match a boolean expression. +The boolean operators supported are AND, OR, and NOT. Also supported is the +NEAR operator for locating two expressions within a short distance from each +other.") + (license gpl3+))) + ;;; search.scm ends here -- cgit v1.2.3 From 5463fe512a02eb186ad95a1cae9d2682dbe2ccd0 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 12 May 2015 11:41:55 +0200 Subject: publish: Add '--user' option. * guix/scripts/publish.scm (show-help): Add --user. (%options): Likewise. (run-publish-server): Change 'port' parameter to 'socket'. Pass #:socket instead of #:addr and #:port to 'run-server'. Update caller accordingly. (open-server-socket, gather-user-privileges): New procedures. (guix-publish): Use them. Force %PRIVATE-KEY and %PUBLIC-KEY early on. Warn when running as root. * doc/guix.texi (Invoking guix publish): Document --user. --- doc/guix.texi | 8 +++++- guix/scripts/publish.scm | 65 ++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 61 insertions(+), 12 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 3a9f91e7dc..8654e08b4f 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3657,7 +3657,8 @@ the @code{hydra.gnu.org} build farm. For security, each substitute is signed, allowing recipients to check their authenticity and integrity (@pxref{Substitutes}). Because @command{guix publish} uses the system's signing key, which is only -readable by the system administrator, it must run as root. +readable by the system administrator, it must be started as root; the +@code{--user} option makes it drop root privileges early on. The general syntax is: @@ -3686,6 +3687,11 @@ The following options are available: @itemx -p @var{port} Listen for HTTP requests on @var{port}. +@item --user=@var{user} +@itemx -u @var{user} +Change privileges to @var{user} as soon as possible---i.e., once the +server socket is open and the signing key has been read. + @item --repl[=@var{port}] @itemx -r [@var{port}] Spawn a Guile REPL server (@pxref{REPL Servers,,, guile, GNU Guile diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm index c7c66fefbe..86d3a754f3 100644 --- a/guix/scripts/publish.scm +++ b/guix/scripts/publish.scm @@ -51,6 +51,8 @@ Publish ~a over HTTP.\n") %store-directory) (display (_ " -p, --port=PORT listen on PORT")) (display (_ " + -u, --user=USER change privileges to USER as soon as possible")) + (display (_ " -r, --repl[=PORT] spawn REPL server on PORT")) (newline) (display (_ " @@ -68,6 +70,9 @@ Publish ~a over HTTP.\n") %store-directory) (option '(#\V "version") #f #f (lambda _ (show-version-and-exit "guix publish"))) + (option '(#\u "user") #t #f + (lambda (opt name arg result) + (alist-cons 'user arg result))) (option '(#\p "port") #t #f (lambda (opt name arg result) (alist-cons 'port (string->number* arg) result))) @@ -220,24 +225,62 @@ example: \"/foo/bar\" yields '(\"foo\" \"bar\")." (_ (not-found request))) (not-found request)))) -(define (run-publish-server port store) +(define (run-publish-server socket store) (run-server (make-request-handler store) 'http - `(#:addr ,INADDR_ANY - #:port ,port))) + `(#:socket ,socket))) + +(define (open-server-socket addr port) + "Return a TCP socket bound to ADDR and PORT." + (let ((sock (socket PF_INET SOCK_STREAM 0))) + (setsockopt sock SOL_SOCKET SO_REUSEADDR 1) + (bind sock AF_INET addr port) + sock)) + +(define (gather-user-privileges user) + "Switch to the identity of USER, a user name." + (catch 'misc-error + (lambda () + (let ((user (getpw user))) + (setgroups #()) + (setgid (passwd:gid user)) + (setuid (passwd:uid user)))) + (lambda (key proc message args . rest) + (leave (_ "user '~a' not found: ~a~%") + user (apply format #f message args))))) + + +;;; +;;; Entry point. +;;; (define (guix-publish . args) (with-error-handling - (let* ((opts (args-fold* args %options - (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) - (lambda (arg result) - (leave (_ "~A: extraneuous argument~%") arg)) - %default-options)) - (port (assoc-ref opts 'port)) + (let* ((opts (args-fold* args %options + (lambda (opt name arg result) + (leave (_ "~A: unrecognized option~%") name)) + (lambda (arg result) + (leave (_ "~A: extraneuous argument~%") arg)) + %default-options)) + (port (assoc-ref opts 'port)) + (user (assoc-ref opts 'user)) + (socket (open-server-socket INADDR_ANY port)) (repl-port (assoc-ref opts 'repl))) + ;; Read the key right away so that (1) we fail early on if we can't + ;; access them, and (2) we can then drop privileges. + (force %private-key) + (force %public-key) + + (when user + ;; Now that we've read the key material and opened the socket, we can + ;; drop privileges. + (gather-user-privileges user)) + + (when (zero? (getuid)) + (warning (_ "server running as root; \ +consider using the '--user' option!~%"))) (format #t (_ "publishing ~a on port ~d~%") %store-directory port) (when repl-port (repl:spawn-server (repl:make-tcp-server-socket #:port repl-port))) (with-store store - (run-publish-server (assoc-ref opts 'port) store))))) + (run-publish-server socket store))))) -- cgit v1.2.3 From 083b54b7c74a68958fe84b8f627123a030775d1e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 12 May 2015 18:41:58 +0200 Subject: gnu: inetutils: Update to 1.9.3. * gnu/packages/patches/inetutils-syslogd.patch: Remove. * gnu-system.am (dist_patch_DATA): Adjust accordingly. * gnu/packages/admin.scm (inetutils): Bump to 1.9.3. [source]: Remove patch. [native-inputs]: Remove. --- gnu-system.am | 1 - gnu/packages/admin.scm | 9 ++------- gnu/packages/patches/inetutils-syslogd.patch | 20 -------------------- 3 files changed, 2 insertions(+), 28 deletions(-) delete mode 100644 gnu/packages/patches/inetutils-syslogd.patch diff --git a/gnu-system.am b/gnu-system.am index 6804fd3d38..d9053bdb7e 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -452,7 +452,6 @@ dist_patch_DATA = \ gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \ gnu/packages/patches/hop-bigloo-4.0b.patch \ gnu/packages/patches/hop-linker-flags.patch \ - gnu/packages/patches/inetutils-syslogd.patch \ gnu/packages/patches/irrlicht-mesa-10.patch \ gnu/packages/patches/jbig2dec-ignore-testtest.patch \ gnu/packages/patches/kmod-module-directory.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 883f25d7c3..a96ce9cdfb 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -152,25 +152,20 @@ re-executing them as necessary.") (define-public inetutils (package (name "inetutils") - (version "1.9.2") + (version "1.9.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/inetutils/inetutils-" version ".tar.gz")) (sha256 (base32 - "04wrm0v7l4890mmbaawd6wjwdv08bkglgqhpz0q4dkb0l50fl8q4")) - (patches (list (search-patch "inetutils-syslogd.patch"))))) + "06dshajjpyi9sxi7qfki9gnp5r3nxvyvf81r81gx0x2qkqzqcxlj")))) (build-system gnu-build-system) (arguments `(;; FIXME: `tftp.sh' relies on `netstat' from utils-linux, ;; which is currently missing. #:tests? #f)) (inputs `(("ncurses" ,ncurses) ("readline" ,readline))) ; for 'ftp' - - ;; Help2man is needed because of the patch that modifies syslogd.c. - (native-inputs `(("help2man" ,help2man))) - (home-page "http://www.gnu.org/software/inetutils/") (synopsis "Basic networking utilities") (description diff --git a/gnu/packages/patches/inetutils-syslogd.patch b/gnu/packages/patches/inetutils-syslogd.patch deleted file mode 100644 index 0bf9eb7fc6..0000000000 --- a/gnu/packages/patches/inetutils-syslogd.patch +++ /dev/null @@ -1,20 +0,0 @@ -From . - -2015-04-01 Ludovic Courtès - - * src/syslogd.c (load_conffile): Use 'bcopy' instead of 'strcpy' - since the two regions may overlap. - Reported by Alex Kost - at . - ---- a/src/syslogd.c -+++ b/src/syslogd.c -@@ -1989,7 +1989,7 @@ load_conffile (const char *filename, struct filed **nextp) - if (*p == '\0' || *p == '#') - continue; - -- strcpy (cline, p); -+ bcopy (p, cline, strlen (p) + 1); - - /* Cut the trailing spaces. */ - for (p = strchr (cline, '\0'); isspace (*--p);) -- cgit v1.2.3 From 9e2292ef3d9e2626381f9726c72d71057160b7c3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 12 May 2015 21:20:19 +0200 Subject: publish: Add '--listen'. * guix/scripts/publish.scm (show-help, %options): Add --listen. (getaddrinfo*): New procedure. (%default-options): Add 'address'. (open-server-socket): Replace 'addr' and 'port' with 'address', a sockaddr. (guix-publish): Adjust accordingly. Augment "publishing" message with the actual address. * doc/guix.texi (Invoking guix publish): Document it. --- doc/guix.texi | 4 ++++ guix/scripts/publish.scm | 58 +++++++++++++++++++++++++++++++++++------------- 2 files changed, 47 insertions(+), 15 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 8654e08b4f..50d51c6c61 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3687,6 +3687,10 @@ The following options are available: @itemx -p @var{port} Listen for HTTP requests on @var{port}. +@item --listen=@var{host} +Listen on the network interface for @var{host}. The default is to +accept connections from any interface. + @item --user=@var{user} @itemx -u @var{user} Change privileges to @var{user} as soon as possible---i.e., once the diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm index 86d3a754f3..7bad2619b9 100644 --- a/guix/scripts/publish.scm +++ b/guix/scripts/publish.scm @@ -50,6 +50,8 @@ Publish ~a over HTTP.\n") %store-directory) (display (_ " -p, --port=PORT listen on PORT")) + (display (_ " + --listen=HOST listen on the network interface for HOST")) (display (_ " -u, --user=USER change privileges to USER as soon as possible")) (display (_ " @@ -62,6 +64,15 @@ Publish ~a over HTTP.\n") %store-directory) (newline) (show-bug-report-information)) +(define (getaddrinfo* host) + "Like 'getaddrinfo', but properly report errors." + (catch 'getaddrinfo-error + (lambda () + (getaddrinfo host)) + (lambda (key error) + (leave (_ "lookup of host '~a' failed: ~a~%") + host (gai-strerror error))))) + (define %options (list (option '(#\h "help") #f #f (lambda _ @@ -76,6 +87,15 @@ Publish ~a over HTTP.\n") %store-directory) (option '(#\p "port") #t #f (lambda (opt name arg result) (alist-cons 'port (string->number* arg) result))) + (option '("listen") #t #f + (lambda (opt name arg result) + (match (getaddrinfo* arg) + ((info _ ...) + (alist-cons 'address (addrinfo:addr info) + result)) + (() + (leave (_ "lookup of host '~a' returned nothing") + name))))) (option '(#\r "repl") #f #t (lambda (opt name arg result) ;; If port unspecified, use default Guile REPL port. @@ -83,7 +103,8 @@ Publish ~a over HTTP.\n") %store-directory) (alist-cons 'repl (or port 37146) result)))))) (define %default-options - '((port . 8080) + `((port . 8080) + (address . ,(make-socket-address AF_INET INADDR_ANY 0)) (repl . #f))) (define (lazy-read-file-sexp file) @@ -230,11 +251,11 @@ example: \"/foo/bar\" yields '(\"foo\" \"bar\")." 'http `(#:socket ,socket))) -(define (open-server-socket addr port) - "Return a TCP socket bound to ADDR and PORT." - (let ((sock (socket PF_INET SOCK_STREAM 0))) +(define (open-server-socket address) + "Return a TCP socket bound to ADDRESS, a socket address." + (let ((sock (socket (sockaddr:fam address) SOCK_STREAM 0))) (setsockopt sock SOL_SOCKET SO_REUSEADDR 1) - (bind sock AF_INET addr port) + (bind sock address) sock)) (define (gather-user-privileges user) @@ -256,15 +277,19 @@ example: \"/foo/bar\" yields '(\"foo\" \"bar\")." (define (guix-publish . args) (with-error-handling - (let* ((opts (args-fold* args %options - (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) - (lambda (arg result) - (leave (_ "~A: extraneuous argument~%") arg)) - %default-options)) - (port (assoc-ref opts 'port)) - (user (assoc-ref opts 'user)) - (socket (open-server-socket INADDR_ANY port)) + (let* ((opts (args-fold* args %options + (lambda (opt name arg result) + (leave (_ "~A: unrecognized option~%") name)) + (lambda (arg result) + (leave (_ "~A: extraneuous argument~%") arg)) + %default-options)) + (user (assoc-ref opts 'user)) + (port (assoc-ref opts 'port)) + (address (let ((addr (assoc-ref opts 'address))) + (make-socket-address (sockaddr:fam addr) + (sockaddr:addr addr) + port))) + (socket (open-server-socket address)) (repl-port (assoc-ref opts 'repl))) ;; Read the key right away so that (1) we fail early on if we can't ;; access them, and (2) we can then drop privileges. @@ -279,7 +304,10 @@ example: \"/foo/bar\" yields '(\"foo\" \"bar\")." (when (zero? (getuid)) (warning (_ "server running as root; \ consider using the '--user' option!~%"))) - (format #t (_ "publishing ~a on port ~d~%") %store-directory port) + (format #t (_ "publishing ~a on ~a, port ~d~%") + %store-directory + (inet-ntop (sockaddr:fam address) (sockaddr:addr address)) + (sockaddr:port address)) (when repl-port (repl:spawn-server (repl:make-tcp-server-socket #:port repl-port))) (with-store store -- cgit v1.2.3 From 1e61e22f4d5e1f82389fe62246e69b661806b4c4 Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Tue, 12 May 2015 15:29:06 +0200 Subject: gnu: Add miredo. * gnu/packages/networking.scm (miredo): New variable. --- gnu/packages/networking.scm | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index b9125af509..dd13e1720b 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -24,7 +24,35 @@ #:use-module (guix build-system gnu) #:use-module (gnu packages openssl)) -;; XXX: Group with other networking tools like tcpdump in a module? +(define-public miredo + (package + (name "miredo") + (version "1.2.6") + (source (origin + (method url-fetch) + (uri (string-append "http://www.remlab.net/files/miredo/miredo-" + version ".tar.xz")) + (sha256 + (base32 + "0j9ilig570snbmj48230hf7ms8kvcwi2wblycqrmhh85lksd49ps")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The checkconf test in src/ requires network access. + (add-before + 'check 'disable-checkconf-test + (lambda _ + (substitute* "src/Makefile" + (("^TESTS = .*") "TESTS = \n"))))))) + (home-page "http://www.remlab.net/miredo/") + (synopsis "Teredo IPv6 tunneling software") + (description + "Miredo is an implementation (client, relay, server) of the Teredo +specification, which provides IPv6 Internet connectivity to IPv6 enabled hosts +residing in IPv4-only networks, even when they are behind a NAT device.") + (license license:gpl2+))) + (define-public socat (package (name "socat") -- cgit v1.2.3 From 19595c08f3a7341992c8377bfbd244920b4b2711 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 12 May 2015 22:26:58 -0400 Subject: gnu: gnupg: Update to 2.1.4. * gnu/packages/gnupg.scm (gnupg): Update to 2.1.4. --- gnu/packages/gnupg.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 4065c0f04d..3a63b673bb 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -190,14 +190,14 @@ compatible to GNU Pth.") (define-public gnupg (package (name "gnupg") - (version "2.1.3") + (version "2.1.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/gnupg/gnupg-" version ".tar.bz2")) (sha256 (base32 - "1vf8fmwcq81abzw2mypz5j7m4xy0vl4z6lri5lxfbd2bsyq7ygi1")))) + "1c3c89b7ziknz6h1dnwmfjhgyy28g982rcncrhmhylb8v3npw4k4")))) (build-system gnu-build-system) (inputs `(("bzip2" ,bzip2) -- cgit v1.2.3 From e736cfcee692b364f26eaccc45048179c5bb88f2 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 12 May 2015 22:28:49 -0400 Subject: gnu: gnubik: Update to 2.4.2. * gnu/packages/games.scm (gnubik): Update to 2.4.2. --- gnu/packages/games.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index d86e151a85..afed704840 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -108,7 +108,7 @@ representation of the playing board.") (define-public gnubik (package (name "gnubik") - (version "2.4.1") + (version "2.4.2") (source (origin (method url-fetch) @@ -116,7 +116,7 @@ representation of the playing board.") version ".tar.gz")) (sha256 (base32 - "0mfpwz341i1qpzi2qgslpc5i7d4fv7i01kv392m11pczqdc7i7m5")))) + "0mhpfnxzbns0wfrsjv5vafqr34770rbvkmdzxk0x0aq67hb3zyl5")))) (build-system gnu-build-system) (inputs `(("gtk+" ,gtk+-2) ("mesa" ,mesa) -- cgit v1.2.3 From fb8ebb8316080e80307df61a8474deda001c6b02 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 12 May 2015 22:29:53 -0400 Subject: gnu: autogen: Update to 5.18.5. * gnu/packages/autogen.scm (autogen): Update to 5.18.5. Add pkg-config to native-inputs. --- gnu/packages/autogen.scm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gnu/packages/autogen.scm b/gnu/packages/autogen.scm index c27ea15e70..45b7cb81cc 100644 --- a/gnu/packages/autogen.scm +++ b/gnu/packages/autogen.scm @@ -23,13 +23,14 @@ #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages base) #:use-module (gnu packages guile)) (define-public autogen (package (name "autogen") - (version "5.18.4") + (version "5.18.5") (source (origin (method url-fetch) @@ -38,9 +39,10 @@ version ".tar.gz")) (sha256 (base32 - "0pbjzwgvmjvi6nl1bcyhfc9kl93s6321dgmvp5dqdip7i8dgin9w")))) + "1flnbnmkbqmbfgammkl8m36wrlk6rhpgnf9pdm6gdfhqalxvggbv")))) (build-system gnu-build-system) - (native-inputs `(("perl" ,perl))) ;for doc generator mdoc + (native-inputs `(("perl" ,perl) ;for doc generator mdoc + ("pkg-config" ,pkg-config))) (inputs `(("which" ,which) ("guile" ,guile-2.0))) (arguments -- cgit v1.2.3 From 512da657d747ab157f8ca49442e67bd7452ba676 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 12 May 2015 22:33:16 -0400 Subject: gnu: sharutils: Update to 4.15.1. * gnu/packages/compression.scm (sharutils): Update to 4.15.1. --- gnu/packages/compression.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 4684fce130..b6608c6d12 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -297,7 +297,7 @@ archiving. Lzip is a clean implementation of the LZMA algorithm.") (define-public sharutils (package (name "sharutils") - (version "4.15") + (version "4.15.1") (source (origin (method url-fetch) @@ -305,7 +305,7 @@ archiving. Lzip is a clean implementation of the LZMA algorithm.") version ".tar.xz")) (sha256 (base32 - "19gqb6qbqmpgh6xlpgpj0ayw2nshllxg9d01qb5z8bnkhfcla8ka")))) + "0znl2yfkzmjl854zd4b4yafg41fqx4pgzy142jsp34053z50synb")))) (build-system gnu-build-system) (inputs `(("which" ,which))) -- cgit v1.2.3 From d7cbc91d1a81c98b3167603bc1f9405f12a0d6e3 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 12 May 2015 22:51:22 -0400 Subject: gnu: sharutils: Correct source hash. This is a followup to 512da657d747ab157f8ca49442e67bd7452ba676. * gnu/packages/compression.scm (sharutils): Correct source hash. --- gnu/packages/compression.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index b6608c6d12..b76dd5275a 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -305,7 +305,7 @@ archiving. Lzip is a clean implementation of the LZMA algorithm.") version ".tar.xz")) (sha256 (base32 - "0znl2yfkzmjl854zd4b4yafg41fqx4pgzy142jsp34053z50synb")))) + "02p7j270wrbwxcb86lcvxrzl29xmr3n5a2m7if46jnprvcvycb5r")))) (build-system gnu-build-system) (inputs `(("which" ,which))) -- cgit v1.2.3 From e1820d14439abedb1cb1caa5cd9f68bcfcbbd466 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 12 May 2015 23:18:29 -0400 Subject: gnu: icecat: Apply fixes for CVE-2015-{0797,2708,2710,2713,2716}. * gnu/packages/patches/icecat-CVE-2015-0797.patch, gnu/packages/patches/icecat-CVE-2015-2708-pt1.patch, gnu/packages/patches/icecat-CVE-2015-2708-pt2.patch, gnu/packages/patches/icecat-CVE-2015-2708-pt3.patch, gnu/packages/patches/icecat-CVE-2015-2708-pt4.patch, gnu/packages/patches/icecat-CVE-2015-2710-pt1.patch, gnu/packages/patches/icecat-CVE-2015-2710-pt2.patch, gnu/packages/patches/icecat-CVE-2015-2710-pt3.patch, gnu/packages/patches/icecat-CVE-2015-2713-pt1.patch, gnu/packages/patches/icecat-CVE-2015-2713-pt2.patch, gnu/packages/patches/icecat-CVE-2015-2716.patch: New files. * gnu-system.am (dist_patch_DATA): Add them. * gnu/packages/gnuzilla.scm (icecat): Add patches. --- gnu-system.am | 11 + gnu/packages/gnuzilla.scm | 13 +- gnu/packages/patches/icecat-CVE-2015-0797.patch | 35 +++ .../patches/icecat-CVE-2015-2708-pt1.patch | 240 +++++++++++++++++ .../patches/icecat-CVE-2015-2708-pt2.patch | 284 +++++++++++++++++++++ .../patches/icecat-CVE-2015-2708-pt3.patch | 228 +++++++++++++++++ .../patches/icecat-CVE-2015-2708-pt4.patch | 26 ++ .../patches/icecat-CVE-2015-2710-pt1.patch | 199 +++++++++++++++ .../patches/icecat-CVE-2015-2710-pt2.patch | 64 +++++ .../patches/icecat-CVE-2015-2710-pt3.patch | 50 ++++ .../patches/icecat-CVE-2015-2713-pt1.patch | 102 ++++++++ .../patches/icecat-CVE-2015-2713-pt2.patch | 47 ++++ gnu/packages/patches/icecat-CVE-2015-2716.patch | 62 +++++ 13 files changed, 1360 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/icecat-CVE-2015-0797.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-2708-pt1.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-2708-pt2.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-2708-pt3.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-2708-pt4.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-2710-pt1.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-2710-pt2.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-2710-pt3.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-2713-pt1.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-2713-pt2.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-2716.patch diff --git a/gnu-system.am b/gnu-system.am index d9053bdb7e..e25eae59fe 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -452,6 +452,17 @@ dist_patch_DATA = \ gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \ gnu/packages/patches/hop-bigloo-4.0b.patch \ gnu/packages/patches/hop-linker-flags.patch \ + gnu/packages/patches/icecat-CVE-2015-0797.patch \ + gnu/packages/patches/icecat-CVE-2015-2708-pt1.patch \ + gnu/packages/patches/icecat-CVE-2015-2708-pt2.patch \ + gnu/packages/patches/icecat-CVE-2015-2708-pt3.patch \ + gnu/packages/patches/icecat-CVE-2015-2708-pt4.patch \ + gnu/packages/patches/icecat-CVE-2015-2710-pt1.patch \ + gnu/packages/patches/icecat-CVE-2015-2710-pt2.patch \ + gnu/packages/patches/icecat-CVE-2015-2710-pt3.patch \ + gnu/packages/patches/icecat-CVE-2015-2713-pt1.patch \ + gnu/packages/patches/icecat-CVE-2015-2713-pt2.patch \ + gnu/packages/patches/icecat-CVE-2015-2716.patch \ gnu/packages/patches/irrlicht-mesa-10.patch \ gnu/packages/patches/jbig2dec-ignore-testtest.patch \ gnu/packages/patches/kmod-module-directory.patch \ diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 8031a6c4ce..0207bcbad2 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -233,7 +233,18 @@ standards.") name "-" version ".tar.bz2")) (sha256 (base32 - "1a4l23msg4cpc4yp59q2z6xv63r6advlbnjy65v4djv6yhgnqf1i")))) + "1a4l23msg4cpc4yp59q2z6xv63r6advlbnjy65v4djv6yhgnqf1i")) + (patches (map search-patch '("icecat-CVE-2015-0797.patch" + "icecat-CVE-2015-2708-pt1.patch" + "icecat-CVE-2015-2708-pt2.patch" + "icecat-CVE-2015-2708-pt3.patch" + "icecat-CVE-2015-2708-pt4.patch" + "icecat-CVE-2015-2710-pt1.patch" + "icecat-CVE-2015-2710-pt2.patch" + "icecat-CVE-2015-2710-pt3.patch" + "icecat-CVE-2015-2713-pt1.patch" + "icecat-CVE-2015-2713-pt2.patch" + "icecat-CVE-2015-2716.patch"))))) (build-system gnu-build-system) (inputs `(("alsa-lib" ,alsa-lib) diff --git a/gnu/packages/patches/icecat-CVE-2015-0797.patch b/gnu/packages/patches/icecat-CVE-2015-0797.patch new file mode 100644 index 0000000000..5727ed753c --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0797.patch @@ -0,0 +1,35 @@ +From 147543038273042f71284fa8487c71670163da5f Mon Sep 17 00:00:00 2001 +From: Ralph Giles +Date: Tue, 31 Mar 2015 16:18:22 -0700 +Subject: [PATCH] Bug 1080995 - Don't use the h264parser gstreamer element. + r=kinetik, a=sledru + +--- + content/media/gstreamer/GStreamerFormatHelper.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/content/media/gstreamer/GStreamerFormatHelper.cpp b/content/media/gstreamer/GStreamerFormatHelper.cpp +index 25095e7..ebd12c2 100644 +--- a/content/media/gstreamer/GStreamerFormatHelper.cpp ++++ b/content/media/gstreamer/GStreamerFormatHelper.cpp +@@ -67,6 +67,7 @@ static char const * const sDefaultCodecCaps[][2] = { + + static char const * const sPluginBlacklist[] = { + "flump3dec", ++ "h264parse", + }; + + GStreamerFormatHelper::GStreamerFormatHelper() +@@ -251,7 +252,8 @@ static gboolean FactoryFilter(GstPluginFeature *aFeature, gpointer) + const gchar *className = + gst_element_factory_get_klass(GST_ELEMENT_FACTORY_CAST(aFeature)); + +- if (!strstr(className, "Decoder") && !strstr(className, "Demux")) { ++ if (!strstr(className, "Decoder") && !strstr(className, "Demux") && ++ !strstr(className, "Parser")) { + return FALSE; + } + +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-2708-pt1.patch b/gnu/packages/patches/icecat-CVE-2015-2708-pt1.patch new file mode 100644 index 0000000000..e755d7531a --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-2708-pt1.patch @@ -0,0 +1,240 @@ +From 5f61ae17ec82d288a3fe4892ec999c0e20c486c0 Mon Sep 17 00:00:00 2001 +From: "Byron Campen [:bwc]" +Date: Mon, 6 Apr 2015 11:52:28 -0700 +Subject: [PATCH] Bug 1151139 - Simplify how we choose which streams to gather + stats from. r=mt, a=abillings + +--- + ...t_peerConnection_offerRequiresReceiveAudio.html | 2 + + ...t_peerConnection_offerRequiresReceiveVideo.html | 2 + + ...rConnection_offerRequiresReceiveVideoAudio.html | 2 + + media/mtransport/nricectx.h | 13 +++++ + media/mtransport/nricemediastream.cpp | 1 + + media/mtransport/nricemediastream.h | 5 +- + .../src/peerconnection/PeerConnectionImpl.cpp | 66 ++++++++++------------ + .../src/peerconnection/PeerConnectionImpl.h | 2 +- + 8 files changed, 54 insertions(+), 39 deletions(-) + +diff --git a/dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveAudio.html b/dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveAudio.html +index 69d7e49..d68c078 100644 +--- a/dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveAudio.html ++++ b/dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveAudio.html +@@ -17,6 +17,8 @@ + + runTest(function() { + var test = new PeerConnectionTest(); ++ test.chain.remove('PC_LOCAL_CHECK_STATS'); ++ test.chain.remove('PC_REMOTE_CHECK_STATS'); + test.setOfferConstraints({ mandatory: { OfferToReceiveAudio: true } }); + test.run(); + }); +diff --git a/dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideo.html b/dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideo.html +index 5f1d0e5..0ecb0b7 100644 +--- a/dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideo.html ++++ b/dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideo.html +@@ -17,6 +17,8 @@ + + runTest(function() { + var test = new PeerConnectionTest(); ++ test.chain.remove('PC_LOCAL_CHECK_STATS'); ++ test.chain.remove('PC_REMOTE_CHECK_STATS'); + test.setOfferConstraints({ mandatory: { OfferToReceiveVideo: true } }); + test.run(); + }); +diff --git a/dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideoAudio.html b/dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideoAudio.html +index c3dea10..78eb0d4 100644 +--- a/dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideoAudio.html ++++ b/dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideoAudio.html +@@ -17,6 +17,8 @@ + + runTest(function() { + var test = new PeerConnectionTest(); ++ test.chain.remove('PC_LOCAL_CHECK_STATS'); ++ test.chain.remove('PC_REMOTE_CHECK_STATS'); + test.setOfferConstraints({ mandatory: { + OfferToReceiveVideo: true, + OfferToReceiveAudio: true +diff --git a/media/mtransport/nricectx.h b/media/mtransport/nricectx.h +index d1209a7..7350666 100644 +--- a/media/mtransport/nricectx.h ++++ b/media/mtransport/nricectx.h +@@ -196,6 +196,19 @@ class NrIceCtx { + RefPtr CreateStream(const std::string& name, + int components); + ++ RefPtr GetStream(size_t index) { ++ if (index < streams_.size()) { ++ return streams_[index]; ++ } ++ return nullptr; ++ } ++ ++ // Some might be null ++ size_t GetStreamCount() const ++ { ++ return streams_.size(); ++ } ++ + // The name of the ctx + const std::string& name() const { return name_; } + +diff --git a/media/mtransport/nricemediastream.cpp b/media/mtransport/nricemediastream.cpp +index 9e96cb5..d2b6429 100644 +--- a/media/mtransport/nricemediastream.cpp ++++ b/media/mtransport/nricemediastream.cpp +@@ -209,6 +209,7 @@ nsresult NrIceMediaStream::ParseAttributes(std::vector& + return NS_ERROR_FAILURE; + } + ++ has_parsed_attrs_ = true; + return NS_OK; + } + +diff --git a/media/mtransport/nricemediastream.h b/media/mtransport/nricemediastream.h +index aba5fc3..2494ecf 100644 +--- a/media/mtransport/nricemediastream.h ++++ b/media/mtransport/nricemediastream.h +@@ -149,6 +149,7 @@ class NrIceMediaStream { + + // Parse remote attributes + nsresult ParseAttributes(std::vector& candidates); ++ bool HasParsedAttributes() const { return has_parsed_attrs_; } + + // Parse trickle ICE candidate + nsresult ParseTrickleCandidate(const std::string& candidate); +@@ -204,7 +205,8 @@ class NrIceMediaStream { + name_(name), + components_(components), + stream_(nullptr), +- opaque_(nullptr) {} ++ opaque_(nullptr), ++ has_parsed_attrs_(false) {} + + DISALLOW_COPY_ASSIGN(NrIceMediaStream); + +@@ -214,6 +216,7 @@ class NrIceMediaStream { + const int components_; + nr_ice_media_stream *stream_; + ScopedDeletePtr opaque_; ++ bool has_parsed_attrs_; + }; + + +diff --git a/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp b/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp +index ebcc17d..c70e3e4 100644 +--- a/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp ++++ b/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp +@@ -149,7 +149,8 @@ PRLogModuleInfo *signalingLogInfo() { + namespace sipcc { + + #ifdef MOZILLA_INTERNAL_API +-RTCStatsQuery::RTCStatsQuery(bool internal) : internalStats(internal) { ++RTCStatsQuery::RTCStatsQuery(bool internal) : internalStats(internal), ++ grabAllLevels(false) { + } + + RTCStatsQuery::~RTCStatsQuery() { +@@ -2037,32 +2038,8 @@ PeerConnectionImpl::BuildStatsQuery_m( + + query->iceCtx = mMedia->ice_ctx(); + +- // From the list of MediaPipelines, determine the set of NrIceMediaStreams +- // we are interested in. +- std::set levelsToGrab; +- if (trackId) { +- for (size_t p = 0; p < query->pipelines.Length(); ++p) { +- size_t level = query->pipelines[p]->level(); +- MOZ_ASSERT(level); +- levelsToGrab.insert(level); +- } +- } else { +- // We want to grab all streams, so ignore the pipelines (this also ends up +- // grabbing DataChannel streams, which is what we want) +- for (size_t s = 0; s < mMedia->num_ice_media_streams(); ++s) { +- levelsToGrab.insert(s + 1); // mIceStreams is 0-indexed +- } +- } +- +- for (auto s = levelsToGrab.begin(); s != levelsToGrab.end(); ++s) { +- // TODO(bcampen@mozilla.com): I may need to revisit this for bundle. +- // (Bug 786234) +- RefPtr temp(mMedia->ice_media_stream(*s - 1)); +- RefPtr flow(mMedia->GetTransportFlow(*s, false)); +- // flow can be null for unused levels, such as unused DataChannels +- if (temp && flow) { +- query->streams.AppendElement(temp); +- } ++ if (!trackId) { ++ query->grabAllLevels = true; + } + + return rv; +@@ -2103,6 +2080,9 @@ static void RecordIceStats_s( + bool internalStats, + DOMHighResTimeStamp now, + RTCStatsReportInternal* report) { ++ if (!mediaStream.HasParsedAttributes()) { ++ return; ++ } + + NS_ConvertASCIItoUTF16 componentId(mediaStream.name().c_str()); + if (internalStats) { +@@ -2292,20 +2272,32 @@ PeerConnectionImpl::ExecuteStatsQuery_s(RTCStatsQuery *query) { + break; + } + } ++ ++ if (!query->grabAllLevels) { ++ // If we're grabbing all levels, that means we want datachannels too, ++ // which don't have pipelines. ++ if (query->iceCtx->GetStream(p - 1)) { ++ RecordIceStats_s(*query->iceCtx->GetStream(p - 1), ++ query->internalStats, ++ query->now, ++ &(query->report)); ++ } ++ } + } + +- // Gather stats from ICE +- for (size_t s = 0; s != query->streams.Length(); ++s) { +- RecordIceStats_s(*query->streams[s], +- query->internalStats, +- query->now, +- &(query->report)); ++ if (query->grabAllLevels) { ++ for (size_t i = 0; i < query->iceCtx->GetStreamCount(); ++i) { ++ if (query->iceCtx->GetStream(i)) { ++ RecordIceStats_s(*query->iceCtx->GetStream(i), ++ query->internalStats, ++ query->now, ++ &(query->report)); ++ } ++ } + } + +- // NrIceCtx and NrIceMediaStream must be destroyed on STS, so it is not safe +- // to dispatch them back to main. +- // We clear streams first to maintain destruction order +- query->streams.Clear(); ++ // NrIceCtx must be destroyed on STS, so it is not safe ++ // to dispatch it back to main. + query->iceCtx = nullptr; + return NS_OK; + } +diff --git a/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.h b/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.h +index 847085c..497230a 100644 +--- a/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.h ++++ b/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.h +@@ -174,7 +174,7 @@ class RTCStatsQuery { + bool internalStats; + nsTArray> pipelines; + mozilla::RefPtr iceCtx; +- nsTArray> streams; ++ bool grabAllLevels; + DOMHighResTimeStamp now; + }; + #endif // MOZILLA_INTERNAL_API +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-2708-pt2.patch b/gnu/packages/patches/icecat-CVE-2015-2708-pt2.patch new file mode 100644 index 0000000000..9788806557 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-2708-pt2.patch @@ -0,0 +1,284 @@ +From 272c1ba11fac7a9ceede2f4f737bb27b4bbcad71 Mon Sep 17 00:00:00 2001 +From: Steve Fink +Date: Thu, 19 Mar 2015 20:50:57 -0700 +Subject: [PATCH] Bug 1120655 - Suppress zone/compartment collection while + iterating. r=terrence, a=bkerensa + +--- + js/src/gc/Zone.h | 9 ++++---- + js/src/jsgc.cpp | 57 +++++++++++++++++++++++++++++++++++---------------- + js/src/jsgc.h | 11 +++++++++- + js/src/vm/Runtime.cpp | 1 + + js/src/vm/Runtime.h | 3 +++ + 5 files changed, 58 insertions(+), 23 deletions(-) + +diff --git a/js/src/gc/Zone.h b/js/src/gc/Zone.h +index e7f687a..dd058f0 100644 +--- a/js/src/gc/Zone.h ++++ b/js/src/gc/Zone.h +@@ -353,10 +353,11 @@ enum ZoneSelector { + + class ZonesIter { + private: ++ gc::AutoEnterIteration iterMarker; + JS::Zone **it, **end; + + public: +- ZonesIter(JSRuntime *rt, ZoneSelector selector) { ++ ZonesIter(JSRuntime *rt, ZoneSelector selector) : iterMarker(rt) { + it = rt->zones.begin(); + end = rt->zones.end(); + +@@ -427,13 +428,13 @@ struct CompartmentsInZoneIter + template + class CompartmentsIterT + { +- private: ++ gc::AutoEnterIteration iterMarker; + ZonesIterT zone; + mozilla::Maybe comp; + + public: + explicit CompartmentsIterT(JSRuntime *rt) +- : zone(rt) ++ : iterMarker(rt), zone(rt) + { + if (zone.done()) + comp.construct(); +@@ -442,7 +443,7 @@ class CompartmentsIterT + } + + CompartmentsIterT(JSRuntime *rt, ZoneSelector selector) +- : zone(rt, selector) ++ : iterMarker(rt), zone(rt, selector) + { + if (zone.done()) + comp.construct(); +diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp +index 15c86c8..1dfe0ab 100644 +--- a/js/src/jsgc.cpp ++++ b/js/src/jsgc.cpp +@@ -2525,7 +2525,7 @@ ReleaseObservedTypes(JSRuntime* rt) + * arbitrary compartment in the zone. + */ + static void +-SweepCompartments(FreeOp *fop, Zone *zone, bool keepAtleastOne, bool lastGC) ++SweepCompartments(FreeOp *fop, Zone *zone, bool keepAtleastOne, bool destroyingRuntime) + { + JSRuntime *rt = zone->runtimeFromMainThread(); + JSDestroyCompartmentCallback callback = rt->destroyCompartmentCallback; +@@ -2543,7 +2543,7 @@ SweepCompartments(FreeOp *fop, Zone *zone, bool keepAtleastOne, bool lastGC) + * deleted and keepAtleastOne is true. + */ + bool dontDelete = read == end && !foundOne && keepAtleastOne; +- if ((!comp->marked && !dontDelete) || lastGC) { ++ if ((!comp->marked && !dontDelete) || destroyingRuntime) { + if (callback) + callback(fop, comp); + if (comp->principals) +@@ -2559,9 +2559,13 @@ SweepCompartments(FreeOp *fop, Zone *zone, bool keepAtleastOne, bool lastGC) + } + + static void +-SweepZones(FreeOp *fop, bool lastGC) ++SweepZones(FreeOp *fop, bool destroyingRuntime) + { + JSRuntime *rt = fop->runtime(); ++ MOZ_ASSERT_IF(destroyingRuntime, rt->numActiveZoneIters == 0); ++ if (rt->numActiveZoneIters) ++ return; ++ + JSZoneCallback callback = rt->destroyZoneCallback; + + /* Skip the atomsCompartment zone. */ +@@ -2576,17 +2580,17 @@ SweepZones(FreeOp* fop, bool lastGC) + + if (zone->wasGCStarted()) { + if ((zone->allocator.arenas.arenaListsAreEmpty() && !zone->hasMarkedCompartments()) || +- lastGC) ++ destroyingRuntime) + { + zone->allocator.arenas.checkEmptyFreeLists(); + if (callback) + callback(zone); +- SweepCompartments(fop, zone, false, lastGC); ++ SweepCompartments(fop, zone, false, destroyingRuntime); + JS_ASSERT(zone->compartments.empty()); + fop->delete_(zone); + continue; + } +- SweepCompartments(fop, zone, true, lastGC); ++ SweepCompartments(fop, zone, true, destroyingRuntime); + } + *write++ = zone; + } +@@ -3787,7 +3791,7 @@ EndSweepingZoneGroup(JSRuntime *rt) + } + + static void +-BeginSweepPhase(JSRuntime *rt, bool lastGC) ++BeginSweepPhase(JSRuntime *rt, bool destroyingRuntime) + { + /* + * Sweep phase. +@@ -3804,7 +3808,7 @@ BeginSweepPhase(JSRuntime *rt, bool lastGC) + gcstats::AutoPhase ap(rt->gcStats, gcstats::PHASE_SWEEP); + + #ifdef JS_THREADSAFE +- rt->gcSweepOnBackgroundThread = !lastGC && rt->useHelperThreads(); ++ rt->gcSweepOnBackgroundThread = !destroyingRuntime && rt->useHelperThreads(); + #endif + + #ifdef DEBUG +@@ -3903,12 +3907,12 @@ SweepPhase(JSRuntime *rt, SliceBudget &sliceBudget) + } + + static void +-EndSweepPhase(JSRuntime *rt, JSGCInvocationKind gckind, bool lastGC) ++EndSweepPhase(JSRuntime *rt, JSGCInvocationKind gckind, bool destroyingRuntime) + { + gcstats::AutoPhase ap(rt->gcStats, gcstats::PHASE_SWEEP); + FreeOp fop(rt, rt->gcSweepOnBackgroundThread); + +- JS_ASSERT_IF(lastGC, !rt->gcSweepOnBackgroundThread); ++ JS_ASSERT_IF(destroyingRuntime, !rt->gcSweepOnBackgroundThread); + + JS_ASSERT(rt->gcMarker.isDrained()); + rt->gcMarker.stop(); +@@ -3959,8 +3963,8 @@ EndSweepPhase(JSRuntime *rt, JSGCInvocationKind gckind, bool lastGC) + * This removes compartments from rt->compartment, so we do it last to make + * sure we don't miss sweeping any compartments. + */ +- if (!lastGC) +- SweepZones(&fop, lastGC); ++ if (!destroyingRuntime) ++ SweepZones(&fop, destroyingRuntime); + + if (!rt->gcSweepOnBackgroundThread) { + /* +@@ -4001,8 +4005,8 @@ EndSweepPhase(JSRuntime *rt, JSGCInvocationKind gckind, bool lastGC) + rt->freeLifoAlloc.freeAll(); + + /* Ensure the compartments get swept if it's the last GC. */ +- if (lastGC) +- SweepZones(&fop, lastGC); ++ if (destroyingRuntime) ++ SweepZones(&fop, destroyingRuntime); + } + + for (ZonesIter zone(rt, WithAtoms); !zone.done(); zone.next()) { +@@ -4339,7 +4343,7 @@ IncrementalCollectSlice(JSRuntime *rt, + AutoCopyFreeListToArenasForGC copy(rt); + AutoGCSlice slice(rt); + +- bool lastGC = (reason == JS::gcreason::DESTROY_RUNTIME); ++ bool destroyingRuntime = (reason == JS::gcreason::DESTROY_RUNTIME); + + gc::State initialState = rt->gcIncrementalState; + +@@ -4384,7 +4388,7 @@ IncrementalCollectSlice(JSRuntime *rt, + return; + } + +- if (!lastGC) ++ if (!destroyingRuntime) + PushZealSelectedObjects(rt); + + rt->gcIncrementalState = MARK; +@@ -4426,7 +4430,7 @@ IncrementalCollectSlice(JSRuntime *rt, + * This runs to completion, but we don't continue if the budget is + * now exhasted. + */ +- BeginSweepPhase(rt, lastGC); ++ BeginSweepPhase(rt, destroyingRuntime); + if (sliceBudget.isOverBudget()) + break; + +@@ -4445,7 +4449,7 @@ IncrementalCollectSlice(JSRuntime *rt, + if (!finished) + break; + +- EndSweepPhase(rt, gckind, lastGC); ++ EndSweepPhase(rt, gckind, destroyingRuntime); + + if (rt->gcSweepOnBackgroundThread) + rt->gcHelperThread.startBackgroundSweep(gckind == GC_SHRINK); +@@ -5386,3 +5390,20 @@ JS::AutoAssertNoGC::~AutoAssertNoGC() + MOZ_ASSERT(gcNumber == runtime->gcNumber, "GC ran inside an AutoAssertNoGC scope."); + } + #endif ++ ++namespace js { ++namespace gc { ++ ++AutoEnterIteration::AutoEnterIteration(JSRuntime *rt_) : rt(rt_) ++{ ++ ++rt->numActiveZoneIters; ++} ++ ++AutoEnterIteration::~AutoEnterIteration() ++{ ++ MOZ_ASSERT(rt->numActiveZoneIters); ++ --rt->numActiveZoneIters; ++} ++ ++} /* namespace gc */ ++} /* namespace js */ +diff --git a/js/src/jsgc.h b/js/src/jsgc.h +index 825cff5..ca331c0 100644 +--- a/js/src/jsgc.h ++++ b/js/src/jsgc.h +@@ -1077,7 +1077,7 @@ MaybeVerifyBarriers(JSContext* cx, bool always = false) + /* + * Instances of this class set the |JSRuntime::suppressGC| flag for the duration + * that they are live. Use of this class is highly discouraged. Please carefully +- * read the comment in jscntxt.h above |suppressGC| and take all appropriate ++ * read the comment in vm/Runtime.h above |suppressGC| and take all appropriate + * precautions before instantiating this class. + */ + class AutoSuppressGC +@@ -1113,6 +1113,15 @@ class AutoEnterOOMUnsafeRegion + class AutoEnterOOMUnsafeRegion {}; + #endif /* DEBUG */ + ++/* Prevent compartments and zones from being collected during iteration. */ ++class AutoEnterIteration { ++ JSRuntime *rt; ++ ++ public: ++ AutoEnterIteration(JSRuntime *rt_); ++ ~AutoEnterIteration(); ++}; ++ + } /* namespace gc */ + + #ifdef DEBUG +diff --git a/js/src/vm/Runtime.cpp b/js/src/vm/Runtime.cpp +index bb5c8680..0d8c6cd 100644 +--- a/js/src/vm/Runtime.cpp ++++ b/js/src/vm/Runtime.cpp +@@ -195,6 +195,7 @@ JSRuntime::JSRuntime(JSRuntime *parentRuntime, JSUseHelperThreads useHelperThrea + gcShouldCleanUpEverything(false), + gcGrayBitsValid(false), + gcIsNeeded(0), ++ numActiveZoneIters(0), + gcStats(thisFromCtor()), + gcNumber(0), + gcStartNumber(0), +diff --git a/js/src/vm/Runtime.h b/js/src/vm/Runtime.h +index 5aeb924..ba4180e 100644 +--- a/js/src/vm/Runtime.h ++++ b/js/src/vm/Runtime.h +@@ -1061,6 +1061,9 @@ struct JSRuntime : public JS::shadow::Runtime, + */ + volatile uintptr_t gcIsNeeded; + ++ mozilla::Atomic numActiveZoneIters; ++ friend class js::gc::AutoEnterIteration; ++ + js::gcstats::Statistics gcStats; + + /* Incremented on every GC slice. */ +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-2708-pt3.patch b/gnu/packages/patches/icecat-CVE-2015-2708-pt3.patch new file mode 100644 index 0000000000..f684804d0b --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-2708-pt3.patch @@ -0,0 +1,228 @@ +From 4dcbca8b3c26b451e1376cd1b7c88ab984a45b39 Mon Sep 17 00:00:00 2001 +From: Mats Palmgren +Date: Tue, 14 Apr 2015 22:12:39 -0400 +Subject: [PATCH] Bug 1143299 - Make frame insertion methods deal with + aPrevFrame being on an overflow list. r=roc, a=bkerensa + +--- + layout/generic/nsBlockFrame.cpp | 18 ++++++++++++--- + layout/generic/nsBlockFrame.h | 14 ++++++++---- + layout/generic/nsContainerFrame.cpp | 41 +++++++++++++++++++--------------- + layout/tables/nsTableFrame.cpp | 2 ++ + layout/tables/nsTableRowFrame.cpp | 2 ++ + layout/tables/nsTableRowGroupFrame.cpp | 2 ++ + 6 files changed, 54 insertions(+), 25 deletions(-) + +diff --git a/layout/generic/nsBlockFrame.cpp b/layout/generic/nsBlockFrame.cpp +index a011bcf..70d5297 100644 +--- a/layout/generic/nsBlockFrame.cpp ++++ b/layout/generic/nsBlockFrame.cpp +@@ -1049,7 +1049,7 @@ nsBlockFrame::Reflow(nsPresContext* aPresContext, + state.mOverflowTracker = &tracker; + + // Drain & handle pushed floats +- DrainPushedFloats(state); ++ DrainPushedFloats(); + nsOverflowAreas fcBounds; + nsReflowStatus fcStatus = NS_FRAME_COMPLETE; + ReflowPushedFloats(state, fcBounds, fcStatus); +@@ -4438,9 +4438,13 @@ nsBlockFrame::DrainSelfOverflowList() + * might push some of them on). Floats with placeholders in this block + * are reflowed by (nsBlockReflowState/nsLineLayout)::AddFloat, which + * also maintains these invariants. ++ * ++ * DrainSelfPushedFloats moves any pushed floats from this block's own ++ * PushedFloats list back into mFloats. DrainPushedFloats additionally ++ * moves frames from its prev-in-flow's PushedFloats list into mFloats. + */ + void +-nsBlockFrame::DrainPushedFloats(nsBlockReflowState& aState) ++nsBlockFrame::DrainSelfPushedFloats() + { + #ifdef DEBUG + // Between when we drain pushed floats and when we complete reflow, +@@ -4503,12 +4507,18 @@ nsBlockFrame::DrainPushedFloats(nsBlockReflowState& aState) + RemovePushedFloats()->Delete(presContext->PresShell()); + } + } ++} ++ ++void ++nsBlockFrame::DrainPushedFloats() ++{ ++ DrainSelfPushedFloats(); + + // After our prev-in-flow has completed reflow, it may have a pushed + // floats list, containing floats that we need to own. Take these. + nsBlockFrame* prevBlock = static_cast(GetPrevInFlow()); + if (prevBlock) { +- AutoFrameListPtr list(presContext, prevBlock->RemovePushedFloats()); ++ AutoFrameListPtr list(PresContext(), prevBlock->RemovePushedFloats()); + if (list && list->NotEmpty()) { + mFloats.InsertFrames(this, nullptr, *list); + } +@@ -4711,6 +4721,7 @@ nsBlockFrame::AppendFrames(ChildListID aListID, + return nsContainerFrame::AppendFrames(aListID, aFrameList); + } + else if (kFloatList == aListID) { ++ DrainSelfPushedFloats(); // ensure the last frame is in mFloats + mFloats.AppendFrames(nullptr, aFrameList); + return NS_OK; + } +@@ -4757,6 +4768,7 @@ nsBlockFrame::InsertFrames(ChildListID aListID, + return nsContainerFrame::InsertFrames(aListID, aPrevFrame, aFrameList); + } + else if (kFloatList == aListID) { ++ DrainSelfPushedFloats(); // ensure aPrevFrame is in mFloats + mFloats.InsertFrames(this, aPrevFrame, aFrameList); + return NS_OK; + } +diff --git a/layout/generic/nsBlockFrame.h b/layout/generic/nsBlockFrame.h +index 1a6bb1e..07f7508 100644 +--- a/layout/generic/nsBlockFrame.h ++++ b/layout/generic/nsBlockFrame.h +@@ -533,10 +533,16 @@ protected: + return GetStateBits() & NS_BLOCK_HAS_OVERFLOW_OUT_OF_FLOWS; + } + +- /** grab pushed floats from this block's prevInFlow, and splice +- * them into this block's mFloats list. +- */ +- void DrainPushedFloats(nsBlockReflowState& aState); ++ /** ++ * Moves frames from our PushedFloats list back into our mFloats list. ++ */ ++ void DrainSelfPushedFloats(); ++ ++ /** ++ * First calls DrainSelfPushedFloats() then grabs pushed floats from this ++ * block's prev-in-flow, and splice them into this block's mFloats list too. ++ */ ++ void DrainPushedFloats(); + + /** Load all our floats into the float manager (without reflowing them). + * Assumes float manager is in our own coordinate system. +diff --git a/layout/generic/nsContainerFrame.cpp b/layout/generic/nsContainerFrame.cpp +index 76f0748..3ffcba7 100644 +--- a/layout/generic/nsContainerFrame.cpp ++++ b/layout/generic/nsContainerFrame.cpp +@@ -102,16 +102,18 @@ nsContainerFrame::AppendFrames(ChildListID aListID, + return NS_ERROR_INVALID_ARG; + } + } +- if (aFrameList.NotEmpty()) { +- mFrames.AppendFrames(this, aFrameList); + +- // Ask the parent frame to reflow me. +- if (aListID == kPrincipalList) +- { +- PresContext()->PresShell()-> +- FrameNeedsReflow(this, nsIPresShell::eTreeChange, +- NS_FRAME_HAS_DIRTY_CHILDREN); +- } ++ if (MOZ_UNLIKELY(aFrameList.IsEmpty())) { ++ return NS_OK; ++ } ++ ++ DrainSelfOverflowList(); // ensure the last frame is in mFrames ++ mFrames.AppendFrames(this, aFrameList); ++ ++ if (aListID != kNoReflowPrincipalList) { ++ PresContext()->PresShell()-> ++ FrameNeedsReflow(this, nsIPresShell::eTreeChange, ++ NS_FRAME_HAS_DIRTY_CHILDREN); + } + return NS_OK; + } +@@ -131,16 +133,19 @@ nsContainerFrame::InsertFrames(ChildListID aListID, + return NS_ERROR_INVALID_ARG; + } + } +- if (aFrameList.NotEmpty()) { +- // Insert frames after aPrevFrame +- mFrames.InsertFrames(this, aPrevFrame, aFrameList); + +- if (aListID == kPrincipalList) +- { +- PresContext()->PresShell()-> +- FrameNeedsReflow(this, nsIPresShell::eTreeChange, +- NS_FRAME_HAS_DIRTY_CHILDREN); +- } ++ if (MOZ_UNLIKELY(aFrameList.IsEmpty())) { ++ return NS_OK; ++ } ++ ++ DrainSelfOverflowList(); // ensure aPrevFrame is in mFrames ++ mFrames.InsertFrames(this, aPrevFrame, aFrameList); ++ ++ if (aListID != kNoReflowPrincipalList) { ++ PresContext()->PresShell()-> ++ FrameNeedsReflow(this, nsIPresShell::eTreeChange, ++ NS_FRAME_HAS_DIRTY_CHILDREN); ++ + } + return NS_OK; + } +diff --git a/layout/tables/nsTableFrame.cpp b/layout/tables/nsTableFrame.cpp +index 60613ba..44088da 100644 +--- a/layout/tables/nsTableFrame.cpp ++++ b/layout/tables/nsTableFrame.cpp +@@ -2232,6 +2232,7 @@ nsTableFrame::AppendFrames(ChildListID aListID, + InsertColGroups(startColIndex, + nsFrameList::Slice(mColGroups, f, f->GetNextSibling())); + } else if (IsRowGroup(display->mDisplay)) { ++ DrainSelfOverflowList(); // ensure the last frame is in mFrames + // Append the new row group frame to the sibling chain + mFrames.AppendFrame(nullptr, f); + +@@ -2404,6 +2405,7 @@ nsTableFrame::HomogenousInsertFrames(ChildListID aListID, + InsertColGroups(startColIndex, newColgroups); + } else if (IsRowGroup(display->mDisplay)) { + NS_ASSERTION(aListID == kPrincipalList, "unexpected child list"); ++ DrainSelfOverflowList(); // ensure aPrevFrame is in mFrames + // Insert the frames in the sibling chain + const nsFrameList::Slice& newRowGroups = + mFrames.InsertFrames(nullptr, aPrevFrame, aFrameList); +diff --git a/layout/tables/nsTableRowFrame.cpp b/layout/tables/nsTableRowFrame.cpp +index d1c493b..2351de3 100644 +--- a/layout/tables/nsTableRowFrame.cpp ++++ b/layout/tables/nsTableRowFrame.cpp +@@ -182,6 +182,7 @@ nsTableRowFrame::AppendFrames(ChildListID aListID, + { + NS_ASSERTION(aListID == kPrincipalList, "unexpected child list"); + ++ DrainSelfOverflowList(); // ensure the last frame is in mFrames + const nsFrameList::Slice& newCells = mFrames.AppendFrames(nullptr, aFrameList); + + // Add the new cell frames to the table +@@ -208,6 +209,7 @@ nsTableRowFrame::InsertFrames(ChildListID aListID, + NS_ASSERTION(aListID == kPrincipalList, "unexpected child list"); + NS_ASSERTION(!aPrevFrame || aPrevFrame->GetParent() == this, + "inserting after sibling frame with different parent"); ++ DrainSelfOverflowList(); // ensure aPrevFrame is in mFrames + //Insert Frames in the frame list + const nsFrameList::Slice& newCells = mFrames.InsertFrames(nullptr, aPrevFrame, aFrameList); + +diff --git a/layout/tables/nsTableRowGroupFrame.cpp b/layout/tables/nsTableRowGroupFrame.cpp +index 34aaf02..40b349b 100644 +--- a/layout/tables/nsTableRowGroupFrame.cpp ++++ b/layout/tables/nsTableRowGroupFrame.cpp +@@ -1389,6 +1389,7 @@ nsTableRowGroupFrame::AppendFrames(ChildListID aListID, + { + NS_ASSERTION(aListID == kPrincipalList, "unexpected child list"); + ++ DrainSelfOverflowList(); // ensure the last frame is in mFrames + ClearRowCursor(); + + // collect the new row frames in an array +@@ -1430,6 +1431,7 @@ nsTableRowGroupFrame::InsertFrames(ChildListID aListID, + NS_ASSERTION(!aPrevFrame || aPrevFrame->GetParent() == this, + "inserting after sibling frame with different parent"); + ++ DrainSelfOverflowList(); // ensure aPrevFrame is in mFrames + ClearRowCursor(); + + // collect the new row frames in an array +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-2708-pt4.patch b/gnu/packages/patches/icecat-CVE-2015-2708-pt4.patch new file mode 100644 index 0000000000..eb2295f5ac --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-2708-pt4.patch @@ -0,0 +1,26 @@ +From e6082e031f0fa2a4a7a63ff124c6f22aeb75393d Mon Sep 17 00:00:00 2001 +From: Terrence Cole +Date: Fri, 10 Apr 2015 08:58:26 -0700 +Subject: [PATCH] Bug 1152177 - Make jsid and Value pre barriers symetrical. + r=jonco, a=abillings + +--- + js/src/gc/Barrier.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/js/src/gc/Barrier.h b/js/src/gc/Barrier.h +index 7efd785..9fc6bd0 100644 +--- a/js/src/gc/Barrier.h ++++ b/js/src/gc/Barrier.h +@@ -1062,6 +1062,8 @@ class BarrieredId + JS_ASSERT(obj == JSID_TO_OBJECT(value)); + } + } else if (JSID_IS_STRING(value)) { ++ if (StringIsPermanentAtom(JSID_TO_STRING(value))) ++ return; + JSString *str = JSID_TO_STRING(value); + JS::shadow::Zone *shadowZone = ShadowZoneOfStringFromAnyThread(str); + if (shadowZone->needsBarrier()) { +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-2710-pt1.patch b/gnu/packages/patches/icecat-CVE-2015-2710-pt1.patch new file mode 100644 index 0000000000..4f119f6fe9 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-2710-pt1.patch @@ -0,0 +1,199 @@ +From 0bd8486f4088c0845514986f61861688e0be011d Mon Sep 17 00:00:00 2001 +From: Cameron McCormack +Date: Mon, 6 Apr 2015 09:11:55 -0400 +Subject: [PATCH] Bug 1149542 - Part 1: Return early from SVG text layout if we + discover mPositions is not long enough. r=dholbert, a=sledru + +--- + layout/svg/SVGTextFrame.cpp | 59 +++++++++++++++++++++++++++++++-------------- + layout/svg/SVGTextFrame.h | 23 ++++++++++++------ + 2 files changed, 56 insertions(+), 26 deletions(-) + +diff --git a/layout/svg/SVGTextFrame.cpp b/layout/svg/SVGTextFrame.cpp +index 721e699..45327881 100644 +--- a/layout/svg/SVGTextFrame.cpp ++++ b/layout/svg/SVGTextFrame.cpp +@@ -14,6 +14,7 @@ + #include "gfxTypes.h" + #include "LookAndFeel.h" + #include "mozilla/gfx/2D.h" ++#include "mozilla/Likely.h" + #include "nsAlgorithm.h" + #include "nsBlockFrame.h" + #include "nsCaret.h" +@@ -4316,23 +4317,28 @@ ShouldStartRunAtIndex(const nsTArray& aPositions, + return false; + } + +-uint32_t +-SVGTextFrame::ResolvePositions(nsIContent* aContent, +- uint32_t aIndex, +- bool aInTextPath, +- bool& aForceStartOfChunk, +- nsTArray& aDeltas) ++bool ++SVGTextFrame::ResolvePositionsForNode(nsIContent* aContent, ++ uint32_t& aIndex, ++ bool aInTextPath, ++ bool& aForceStartOfChunk, ++ nsTArray& aDeltas) + { + if (aContent->IsNodeOfType(nsINode::eTEXT)) { + // We found a text node. + uint32_t length = static_cast(aContent)->TextLength(); + if (length) { ++ uint32_t end = aIndex + length; ++ if (MOZ_UNLIKELY(end > mPositions.Length())) { ++ MOZ_ASSERT_UNREACHABLE("length of mPositions does not match characters " ++ "found by iterating content"); ++ return false; ++ } + if (aForceStartOfChunk) { + // Note this character as starting a new anchored chunk. + mPositions[aIndex].mStartOfChunk = true; + aForceStartOfChunk = false; + } +- uint32_t end = aIndex + length; + while (aIndex < end) { + // Record whether each of these characters should start a new rendered + // run. That is always the case for characters on a text path. +@@ -4345,18 +4351,23 @@ SVGTextFrame::ResolvePositions(nsIContent* aContent, + aIndex++; + } + } +- return aIndex; ++ return true; + } + + // Skip past elements that aren't text content elements. + if (!IsTextContentElement(aContent)) { +- return aIndex; ++ return true; + } + + if (aContent->Tag() == nsGkAtoms::textPath) { + // elements are as if they are specified with x="0" y="0", but + // only if they actually have some text content. + if (HasTextContent(aContent)) { ++ if (MOZ_UNLIKELY(aIndex >= mPositions.Length())) { ++ MOZ_ASSERT_UNREACHABLE("length of mPositions does not match characters " ++ "found by iterating content"); ++ return false; ++ } + mPositions[aIndex].mPosition = gfxPoint(); + mPositions[aIndex].mStartOfChunk = true; + } +@@ -4376,8 +4387,14 @@ SVGTextFrame::ResolvePositions(nsIContent* aContent, + rotate = &animatedRotate->GetAnimValue(); + } + +- uint32_t count = GetTextContentLength(aContent); + bool percentages = false; ++ uint32_t count = GetTextContentLength(aContent); ++ ++ if (MOZ_UNLIKELY(aIndex + count > mPositions.Length())) { ++ MOZ_ASSERT_UNREACHABLE("length of mPositions does not match characters " ++ "found by iterating content"); ++ return false; ++ } + + // New text anchoring chunks start at each character assigned a position + // with x="" or y="", or if we forced one with aForceStartOfChunk due to +@@ -4456,8 +4473,11 @@ SVGTextFrame::ResolvePositions(nsIContent* aContent, + for (nsIContent* child = aContent->GetFirstChild(); + child; + child = child->GetNextSibling()) { +- aIndex = ResolvePositions(child, aIndex, inTextPath, aForceStartOfChunk, +- aDeltas); ++ bool ok = ResolvePositionsForNode(child, aIndex, inTextPath, ++ aForceStartOfChunk, aDeltas); ++ if (!ok) { ++ return false; ++ } + } + + if (aContent->Tag() == nsGkAtoms::textPath) { +@@ -4465,7 +4485,7 @@ SVGTextFrame::ResolvePositions(nsIContent* aContent, + aForceStartOfChunk = true; + } + +- return aIndex; ++ return true; + } + + bool +@@ -4501,8 +4521,10 @@ SVGTextFrame::ResolvePositions(nsTArray& aDeltas, + + // Recurse over the content and fill in character positions as we go. + bool forceStartOfChunk = false; +- return ResolvePositions(mContent, 0, aRunPerGlyph, +- forceStartOfChunk, aDeltas) != 0; ++ index = 0; ++ bool ok = ResolvePositionsForNode(mContent, index, aRunPerGlyph, ++ forceStartOfChunk, aDeltas); ++ return ok && index > 0; + } + + void +@@ -4958,9 +4980,10 @@ SVGTextFrame::DoGlyphPositioning() + // Get the x, y, dx, dy, rotate values for the subtree. + nsTArray deltas; + if (!ResolvePositions(deltas, adjustingTextLength)) { +- // If ResolvePositions returned false, it means that there were some +- // characters in the DOM but none of them are displayed. Clear out +- // mPositions so that we don't attempt to do any painting later. ++ // If ResolvePositions returned false, it means either there were some ++ // characters in the DOM but none of them are displayed, or there was ++ // an error in processing mPositions. Clear out mPositions so that we don't ++ // attempt to do any painting later. + mPositions.Clear(); + return; + } +diff --git a/layout/svg/SVGTextFrame.h b/layout/svg/SVGTextFrame.h +index 48951f7..912af8b 100644 +--- a/layout/svg/SVGTextFrame.h ++++ b/layout/svg/SVGTextFrame.h +@@ -505,15 +505,18 @@ private: + * Recursive helper for ResolvePositions below. + * + * @param aContent The current node. +- * @param aIndex The current character index. ++ * @param aIndex (in/out) The current character index. + * @param aInTextPath Whether we are currently under a element. +- * @param aForceStartOfChunk Whether the next character we find should start a +- * new anchored chunk. +- * @return The character index we got up to. ++ * @param aForceStartOfChunk (in/out) Whether the next character we find ++ * should start a new anchored chunk. ++ * @param aDeltas (in/out) Receives the resolved dx/dy values for each ++ * character. ++ * @return false if we discover that mPositions did not have enough ++ * elements; true otherwise. + */ +- uint32_t ResolvePositions(nsIContent* aContent, uint32_t aIndex, +- bool aInTextPath, bool& aForceStartOfChunk, +- nsTArray& aDeltas); ++ bool ResolvePositionsForNode(nsIContent* aContent, uint32_t& aIndex, ++ bool aInTextPath, bool& aForceStartOfChunk, ++ nsTArray& aDeltas); + + /** + * Initializes mPositions with character position information based on +@@ -521,9 +524,13 @@ private: + * was not given for that character. Also fills aDeltas with values based on + * dx/dy attributes. + * ++ * @param aDeltas (in/out) Receives the resolved dx/dy values for each ++ * character. + * @param aRunPerGlyph Whether mPositions should record that a new run begins + * at each glyph. +- * @return True if we recorded any positions. ++ * @return false if we did not record any positions (due to having no ++ * displayed characters) or if we discover that mPositions did not have ++ * enough elements; true otherwise. + */ + bool ResolvePositions(nsTArray& aDeltas, bool aRunPerGlyph); + +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-2710-pt2.patch b/gnu/packages/patches/icecat-CVE-2015-2710-pt2.patch new file mode 100644 index 0000000000..26a10ca2e4 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-2710-pt2.patch @@ -0,0 +1,64 @@ +From f7c0070831e72735c43beb426ac0c2ce33403f4f Mon Sep 17 00:00:00 2001 +From: Cameron McCormack +Date: Mon, 6 Apr 2015 09:12:06 -0400 +Subject: [PATCH] Bug 1149542 - Part 2: Track undisplayed characters before + empty text frames properly. r=dholbert, a=sledru + +--- + layout/svg/SVGTextFrame.cpp | 29 ++++++++++++++++------------- + 1 file changed, 16 insertions(+), 13 deletions(-) + +diff --git a/layout/svg/SVGTextFrame.cpp b/layout/svg/SVGTextFrame.cpp +index 45327881..9d331b8 100644 +--- a/layout/svg/SVGTextFrame.cpp ++++ b/layout/svg/SVGTextFrame.cpp +@@ -290,22 +290,25 @@ GetNonEmptyTextFrameAndNode(nsIFrame* aFrame, + nsTextNode*& aTextNode) + { + nsTextFrame* text = do_QueryFrame(aFrame); +- if (!text) { +- return false; +- } ++ bool isNonEmptyTextFrame = text && text->GetContentLength() != 0; + +- nsIContent* content = text->GetContent(); +- NS_ASSERTION(content && content->IsNodeOfType(nsINode::eTEXT), +- "unexpected content type for nsTextFrame"); ++ if (isNonEmptyTextFrame) { ++ nsIContent* content = text->GetContent(); ++ NS_ASSERTION(content && content->IsNodeOfType(nsINode::eTEXT), ++ "unexpected content type for nsTextFrame"); + +- nsTextNode* node = static_cast(content); +- if (node->TextLength() == 0) { +- return false; ++ nsTextNode* node = static_cast(content); ++ MOZ_ASSERT(node->TextLength() != 0, ++ "frame's GetContentLength() should be 0 if the text node " ++ "has no content"); ++ ++ aTextFrame = text; ++ aTextNode = node; + } + +- aTextFrame = text; +- aTextNode = node; +- return true; ++ MOZ_ASSERT(IsNonEmptyTextFrame(aFrame) == isNonEmptyTextFrame, ++ "our logic should agree with IsNonEmptyTextFrame"); ++ return isNonEmptyTextFrame; + } + + /** +@@ -1298,7 +1301,7 @@ GetUndisplayedCharactersBeforeFrame(nsTextFrame* aFrame) + /** + * Traverses the nsTextFrames for an SVGTextFrame and records a + * TextNodeCorrespondenceProperty on each for the number of undisplayed DOM +- * characters between each frame. This is done by iterating simultaenously ++ * characters between each frame. This is done by iterating simultaneously + * over the nsTextNodes and nsTextFrames and noting when nsTextNodes (or + * parts of them) are skipped when finding the next nsTextFrame. + */ +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-2710-pt3.patch b/gnu/packages/patches/icecat-CVE-2015-2710-pt3.patch new file mode 100644 index 0000000000..6759506213 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-2710-pt3.patch @@ -0,0 +1,50 @@ +From 2cda46e6158a459b56b392c8e389b055fdf740ca Mon Sep 17 00:00:00 2001 +From: Ryan VanderMeulen +Date: Mon, 6 Apr 2015 22:59:41 -0400 +Subject: [PATCH] Bug 1149542 - Replace MOZ_ASSERT_UNREACHABLE with MOZ_ASSERT. + r=dholbert, a=bustage + +--- + layout/svg/SVGTextFrame.cpp | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/layout/svg/SVGTextFrame.cpp b/layout/svg/SVGTextFrame.cpp +index 9d331b8..e7b7275 100644 +--- a/layout/svg/SVGTextFrame.cpp ++++ b/layout/svg/SVGTextFrame.cpp +@@ -4333,8 +4333,8 @@ SVGTextFrame::ResolvePositionsForNode(nsIContent* aContent, + if (length) { + uint32_t end = aIndex + length; + if (MOZ_UNLIKELY(end > mPositions.Length())) { +- MOZ_ASSERT_UNREACHABLE("length of mPositions does not match characters " +- "found by iterating content"); ++ MOZ_ASSERT(false, "length of mPositions does not match characters " ++ "found by iterating content"); + return false; + } + if (aForceStartOfChunk) { +@@ -4367,8 +4367,8 @@ SVGTextFrame::ResolvePositionsForNode(nsIContent* aContent, + // only if they actually have some text content. + if (HasTextContent(aContent)) { + if (MOZ_UNLIKELY(aIndex >= mPositions.Length())) { +- MOZ_ASSERT_UNREACHABLE("length of mPositions does not match characters " +- "found by iterating content"); ++ MOZ_ASSERT(false, "length of mPositions does not match characters " ++ "found by iterating content"); + return false; + } + mPositions[aIndex].mPosition = gfxPoint(); +@@ -4394,8 +4394,8 @@ SVGTextFrame::ResolvePositionsForNode(nsIContent* aContent, + uint32_t count = GetTextContentLength(aContent); + + if (MOZ_UNLIKELY(aIndex + count > mPositions.Length())) { +- MOZ_ASSERT_UNREACHABLE("length of mPositions does not match characters " +- "found by iterating content"); ++ MOZ_ASSERT(false, "length of mPositions does not match characters " ++ "found by iterating content"); + return false; + } + +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-2713-pt1.patch b/gnu/packages/patches/icecat-CVE-2015-2713-pt1.patch new file mode 100644 index 0000000000..9e52759ae8 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-2713-pt1.patch @@ -0,0 +1,102 @@ +From 2b1c90da3e849e1c9d7457658290aa8eb01d0fa9 Mon Sep 17 00:00:00 2001 +From: Mats Palmgren +Date: Thu, 16 Apr 2015 09:04:19 +0000 +Subject: [PATCH] Bug 1153478 - Part 1: Add nsInlineFrame::StealFrame and make + it deal with being called on the wrong parent for aChild (due to lazy + reparenting). r=roc, a=sledru + +--- + layout/generic/nsContainerFrame.cpp | 7 +++---- + layout/generic/nsInlineFrame.cpp | 39 +++++++++++++++++++++++++++++++++++++ + layout/generic/nsInlineFrame.h | 4 +++- + 3 files changed, 45 insertions(+), 5 deletions(-) + +diff --git a/layout/generic/nsContainerFrame.cpp b/layout/generic/nsContainerFrame.cpp +index 3ffcba7..34878af 100644 +--- a/layout/generic/nsContainerFrame.cpp ++++ b/layout/generic/nsContainerFrame.cpp +@@ -172,13 +172,12 @@ nsContainerFrame::RemoveFrame(ChildListID aListID, + nsIPresShell* shell = PresContext()->PresShell(); + nsContainerFrame* lastParent = nullptr; + while (aOldFrame) { +- //XXXfr probably should use StealFrame here. I'm not sure if we need to +- // check the overflow lists atm, but we'll need a prescontext lookup +- // for overflow containers once we can split abspos elements with +- // inline containing blocks. + nsIFrame* oldFrameNextContinuation = aOldFrame->GetNextContinuation(); + nsContainerFrame* parent = + static_cast(aOldFrame->GetParent()); ++ // Please note that 'parent' may not actually be where 'aOldFrame' lives. ++ // We really MUST use StealFrame() and nothing else here. ++ // @see nsInlineFrame::StealFrame for details. + parent->StealFrame(aOldFrame, true); + aOldFrame->Destroy(); + aOldFrame = oldFrameNextContinuation; +diff --git a/layout/generic/nsInlineFrame.cpp b/layout/generic/nsInlineFrame.cpp +index 526041e..a392a15 100644 +--- a/layout/generic/nsInlineFrame.cpp ++++ b/layout/generic/nsInlineFrame.cpp +@@ -172,6 +172,45 @@ nsInlineFrame::PeekOffsetCharacter(bool aForward, int32_t* aOffset, + return CONTINUE; + } + ++nsresult ++nsInlineFrame::StealFrame(nsIFrame* aChild, ++ bool aForceNormal) ++{ ++ if (aChild->HasAnyStateBits(NS_FRAME_IS_OVERFLOW_CONTAINER) && ++ !aForceNormal) { ++ return nsContainerFrame::StealFrame(aChild, aForceNormal); ++ } ++ ++ nsInlineFrame* parent = this; ++ bool removed = false; ++ do { ++ removed = parent->mFrames.StartRemoveFrame(aChild); ++ if (removed) { ++ break; ++ } ++ ++ // We didn't find the child in our principal child list. ++ // Maybe it's on the overflow list? ++ nsFrameList* frameList = parent->GetOverflowFrames(); ++ if (frameList) { ++ removed = frameList->ContinueRemoveFrame(aChild); ++ if (frameList->IsEmpty()) { ++ parent->DestroyOverflowList(); ++ } ++ if (removed) { ++ break; ++ } ++ } ++ ++ // Due to our "lazy reparenting" optimization 'aChild' might not actually ++ // be on any of our child lists, but instead in one of our next-in-flows. ++ parent = static_cast(parent->GetNextInFlow()); ++ } while (parent); ++ ++ MOZ_ASSERT(removed, "nsInlineFrame::StealFrame: can't find aChild"); ++ return removed ? NS_OK : NS_ERROR_UNEXPECTED; ++} ++ + void + nsInlineFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder, + const nsRect& aDirtyRect, +diff --git a/layout/generic/nsInlineFrame.h b/layout/generic/nsInlineFrame.h +index 1a9899e..3e49241 100644 +--- a/layout/generic/nsInlineFrame.h ++++ b/layout/generic/nsInlineFrame.h +@@ -61,7 +61,9 @@ public: + + virtual FrameSearchResult PeekOffsetCharacter(bool aForward, int32_t* aOffset, + bool aRespectClusters = true) MOZ_OVERRIDE; +- ++ ++ virtual nsresult StealFrame(nsIFrame* aChild, bool aForceNormal) MOZ_OVERRIDE; ++ + // nsIHTMLReflow overrides + virtual void AddInlineMinWidth(nsRenderingContext *aRenderingContext, + InlineMinWidthData *aData) MOZ_OVERRIDE; +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-2713-pt2.patch b/gnu/packages/patches/icecat-CVE-2015-2713-pt2.patch new file mode 100644 index 0000000000..b1f2adde47 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-2713-pt2.patch @@ -0,0 +1,47 @@ +From d84ed2990dd2304fef752213f1908280ff24d77c Mon Sep 17 00:00:00 2001 +From: Mats Palmgren +Date: Thu, 16 Apr 2015 09:04:19 +0000 +Subject: [PATCH] Bug 1153478 - Part 2: Remove useless assertions. r=roc, + a=sledru + +--- + layout/generic/nsContainerFrame.cpp | 1 - + layout/generic/nsInlineFrame.cpp | 3 --- + 2 files changed, 4 deletions(-) + +diff --git a/layout/generic/nsContainerFrame.cpp b/layout/generic/nsContainerFrame.cpp +index 34878af..b95bddd 100644 +--- a/layout/generic/nsContainerFrame.cpp ++++ b/layout/generic/nsContainerFrame.cpp +@@ -1516,7 +1516,6 @@ nsContainerFrame::DrainSelfOverflowList() + { + AutoFrameListPtr overflowFrames(PresContext(), StealOverflowFrames()); + if (overflowFrames) { +- NS_ASSERTION(mFrames.NotEmpty(), "overflow list w/o frames"); + mFrames.AppendFrames(nullptr, *overflowFrames); + return true; + } +diff --git a/layout/generic/nsInlineFrame.cpp b/layout/generic/nsInlineFrame.cpp +index a392a15..e0922bb 100644 +--- a/layout/generic/nsInlineFrame.cpp ++++ b/layout/generic/nsInlineFrame.cpp +@@ -449,7 +449,6 @@ nsInlineFrame::DrainSelfOverflowListInternal(DrainFlags aFlags, + { + AutoFrameListPtr overflowFrames(PresContext(), StealOverflowFrames()); + if (overflowFrames) { +- NS_ASSERTION(mFrames.NotEmpty(), "overflow list w/o frames"); + // The frames on our own overflowlist may have been pushed by a + // previous lazilySetParentPointer Reflow so we need to ensure the + // correct parent pointer. This is sometimes skipped by Reflow. +@@ -1157,8 +1156,6 @@ nsFirstLineFrame::DrainSelfOverflowList() + { + AutoFrameListPtr overflowFrames(PresContext(), StealOverflowFrames()); + if (overflowFrames) { +- NS_ASSERTION(mFrames.NotEmpty(), "overflow list w/o frames"); +- + bool result = !overflowFrames->IsEmpty(); + const nsFrameList::Slice& newFrames = + mFrames.AppendFrames(nullptr, *overflowFrames); +-- +2.2.1 + diff --git a/gnu/packages/patches/icecat-CVE-2015-2716.patch b/gnu/packages/patches/icecat-CVE-2015-2716.patch new file mode 100644 index 0000000000..ce036a0921 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-2716.patch @@ -0,0 +1,62 @@ +From 9dcb4563847cb6e2a8112dca03d2684907f96313 Mon Sep 17 00:00:00 2001 +From: Eric Rahm +Date: Fri, 10 Apr 2015 15:50:23 -0700 +Subject: [PATCH] Bug 1140537 - Sanity check size calculations. r=peterv, + a=abillings + +--- + parser/expat/lib/xmlparse.c | 23 +++++++++++++++++++++-- + 1 file changed, 21 insertions(+), 2 deletions(-) + +diff --git a/parser/expat/lib/xmlparse.c b/parser/expat/lib/xmlparse.c +index 70acf1a..436b735 100644 +--- a/parser/expat/lib/xmlparse.c ++++ b/parser/expat/lib/xmlparse.c +@@ -1651,6 +1651,12 @@ XML_ParseBuffer(XML_Parser parser, int len, int isFinal) + void * XMLCALL + XML_GetBuffer(XML_Parser parser, int len) + { ++/* BEGIN MOZILLA CHANGE (sanity check len) */ ++ if (len < 0) { ++ errorCode = XML_ERROR_NO_MEMORY; ++ return NULL; ++ } ++/* END MOZILLA CHANGE */ + switch (ps_parsing) { + case XML_SUSPENDED: + errorCode = XML_ERROR_SUSPENDED; +@@ -1662,8 +1668,13 @@ XML_GetBuffer(XML_Parser parser, int len) + } + + if (len > bufferLim - bufferEnd) { +- /* FIXME avoid integer overflow */ + int neededSize = len + (int)(bufferEnd - bufferPtr); ++/* BEGIN MOZILLA CHANGE (sanity check neededSize) */ ++ if (neededSize < 0) { ++ errorCode = XML_ERROR_NO_MEMORY; ++ return NULL; ++ } ++/* END MOZILLA CHANGE */ + #ifdef XML_CONTEXT_BYTES + int keep = (int)(bufferPtr - buffer); + +@@ -1692,7 +1703,15 @@ XML_GetBuffer(XML_Parser parser, int len) + bufferSize = INIT_BUFFER_SIZE; + do { + bufferSize *= 2; +- } while (bufferSize < neededSize); ++/* BEGIN MOZILLA CHANGE (prevent infinite loop on overflow) */ ++ } while (bufferSize < neededSize && bufferSize > 0); ++/* END MOZILLA CHANGE */ ++/* BEGIN MOZILLA CHANGE (sanity check bufferSize) */ ++ if (bufferSize <= 0) { ++ errorCode = XML_ERROR_NO_MEMORY; ++ return NULL; ++ } ++/* END MOZILLA CHANGE */ + newBuf = (char *)MALLOC(bufferSize); + if (newBuf == 0) { + errorCode = XML_ERROR_NO_MEMORY; +-- +2.2.1 + -- cgit v1.2.3 From 6b832e4d7bdb51aaf90b192b2c6d4c4ccdbf75fd Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 13 May 2015 11:47:56 +0200 Subject: Update NEWS. --- NEWS | 154 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) diff --git a/NEWS b/NEWS index 977c6e83e5..bb3a101ece 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,160 @@ Copyright © 2013, 2014, 2015 Ludovic Courtès Please send Guix bug reports to bug-guix@gnu.org. +* Changes in 0.8.2 (since 0.8.1) + +** Package management + +*** New “binary tarball” installation method is available + +See “Binary Installation” in the manual. + +*** New ‘guix publish’ command, to publish one’s store + +See “Invoking guix publish” in the manual. + +*** ‘guix package’ runs “profile creation hooks” as needed + +It creates X.509 certificate bundles in the profile’s etc/ssl directory, if +needed, generates a package database cache for GHC if the profile includes GHC +(the Haskell compiler), and generates an Info ‘dir’ file (this part was +already done before.) + +*** ‘guix package’ creates an ‘etc/profile’ file in the profile + +See “Invoking guix package” in the manual. + +*** Commands understand version prefixes, such as ‘gcc-5’ for ‘gcc-5.1.0’ + +*** ‘guix package --search’ now sorts packages by name and version + +*** Substitute information is now fetched using HTTP pipelining + +Before that the “substituter” used threads. Using HTTP pipelining means that +resource consumption is reduced on both the client and server sides. As a +side effect, a progress report is displayed as substitute info is downloaded. + +*** ‘guix package’ warns when a $GUIX_PACKAGE_PATH module cannot be loaded + +*** New ‘--sources’ option to ‘guix build’ + +*** New Bash completion file, installed in $sysconfdir/bash_completion.d + +*** New ‘guix import hackage’ command + +See “Invoking guix import” in the manual. + +*** ‘guix lint’ supports FTP for the ‘source’ and ‘home-page’ checkers + +*** ‘guix lint’ has a new ‘derivation’ checker + +*** ‘guix import cpan’ better handles dependencies and licenses + +*** Packages are now build in an environment with a UTF-8 locale + +** Distribution + +*** C library's name service switch (NSS) is now fully configurable + +See “Name Service Switch” in the manual. + +*** New services: wicd, lirc, colord, upower, console-keymap + +*** Xorg service supports new drivers, such as Nouveau + +*** lsh service has new options, initializes its seed by default + +*** /etc/ssl symlink is created, for X.509 certificates + +See “X.509 Certificates” in the manual. + +*** ‘guix system’ reports duplicate service identifiers + +*** New /etc/bashrc file that loads Bash completion when available + +*** SLiM service uses sessions from /run/current-system/profile/share/xsessions + +See “X Window” in the manual. + +*** The Linux “YAMA” restricting policy on PTRACE_ATTACH is now disabled + +*** /etc/shells now lists all the user accounts’ shells + +*** /gnu/store is now remounted read-only, to avoid accidental modification + +*** /etc/profile is sources each profile’s ‘etc/profile’ file + +*** XXX new packages + +*** XXX package updates + +** Programming interfaces + +*** New (guix build gremlin) to parse and validate ELF dynamic link info + +*** (guix build-system gnu) has a new ‘validate-runpath’ phase + +This phase reads the dynamic entries of ELF files and reports libraries listed +as NEEDED that are not found in the RUNPATH. + +*** New (gnu services desktop) module and ‘%desktop-services’ variable + +*** New (guix cvs-download) module, for CVS checkouts + +*** New (guix build-system waf) module, for the Waf build system + +*** New (guix build-system haskell) module, to build Haskell packages + +*** (guix build-system gnu) now supports zip archives + +*** New convenience syntax ‘modify-phases’ added in (guix build utils) + +*** The ‘ld’ wrapper more finely determines whether to use ‘-rpath’ + +*** (guix gexp) exports ‘gexp-input’ to describe input unambiguously + +*** The ‘define-gexp-compiler’ form allows (guix gexp) to be extended + +*** New ‘local-file’ constructor exported by (guix gexp) + +** Noteworthy bug fixes + +*** Profiles created with ‘guix package -p’ as indirect GC roots + +Before that they were made permanent GC roots–i.e., uncollectable. + +*** ‘guix package’ distinguishes downgrades from upgrades + +*** Handle HTTP redirects to relative URI references + () + +*** Downloads now honor the ‘http_proxy’ environment variable + () + +*** ‘--no-*’ options are now always correctly handled + () + +*** SLiM no longer leaks open file descriptors + +*** Don't compare objects with 'equal?' + () + +*** x86_64 and i686 bootstrap binaries updated () + +*** ‘find-files’ no longer follows symlinks () + +*** libc message catalog (‘libc.mo’) is now installed + +*** libstdc++ has appropriate RUNPATH () + +*** ‘dhcp-client-service’ now correctly tracks dhclient’s PID + +** Native language support + +*** New translations: da (Danish) + +*** Updated translations: eo + * Changes in 0.8.1 (since 0.8) ** Package management -- cgit v1.2.3 From d423ac6047b9fec17314ea0e6351e174b0074f61 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Wed, 13 May 2015 12:31:18 -0400 Subject: NEWS: Mention new postgresql service in 0.8.2. --- NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NEWS b/NEWS index bb3a101ece..396110efae 100644 --- a/NEWS +++ b/NEWS @@ -67,7 +67,7 @@ See “Invoking guix import” in the manual. See “Name Service Switch” in the manual. -*** New services: wicd, lirc, colord, upower, console-keymap +*** New services: wicd, lirc, colord, upower, console-keymap, postgresql *** Xorg service supports new drivers, such as Nouveau -- cgit v1.2.3 From 49607566e18069d4d24d830bb647206b7186d269 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 13 May 2015 19:12:59 +0200 Subject: doc: Increase package count. * doc/guix.texi (System Installation): Increase package count. --- doc/guix.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index 50d51c6c61..049292ddff 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3825,7 +3825,7 @@ Few system services are currently supported out-of-the-box (@pxref{Services}). @item -On the order of 1,200 packages are available, which means that you may +On the order of 1,900 packages are available, which means that you may occasionally find that a useful package is missing. @end itemize -- cgit v1.2.3 From 853c2f18e7c374cfd991bfc11832497e00349ed5 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 13 May 2015 22:08:56 +0200 Subject: gnu: e2fsprogs: Remove references to linux-libre-headers. This removes the final linux-libre-headers and its references (including bootstrap-binaries) from the closure. * gnu/packages/linux.scm (e2fsprogs)[arguments]: Augment 'install-libs' phase to make .a files writable. --- gnu/packages/linux.scm | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 5da3979218..1ef473fbe4 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -577,8 +577,21 @@ slabtop, and skill.") (string-append "#!" (which "sh"))))) (alist-cons-after 'install 'install-libs - (lambda _ - (zero? (system* "make" "install-libs"))) + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + (and (zero? (system* "make" "install-libs")) + + ;; Make the .a writable so that 'strip' works. + ;; Failing to do that, due to debug symbols, we + ;; retain a reference to the final + ;; linux-libre-headers, which refer to the + ;; bootstrap binaries. + (let ((archives (find-files lib "\\.a$"))) + (for-each (lambda (file) + (chmod file #o666)) + archives) + #t)))) %standard-phases)) ;; FIXME: Tests work by comparing the stdout/stderr of programs, that -- cgit v1.2.3 From 1eefe4a87b51084731aaeec5ebcfd4b712059821 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 13 May 2015 22:30:24 +0200 Subject: gnu: Tweak a few synopses and descriptions reported by 'lint'. * gnu/packages/haskell.scm (ghc-text)[synopsis]: Remove period. [description]: Two space after end-of-sentence periods. (ghc-http)[description]: Likewise. * gnu/packages/image.scm (libwebp)[description]: Likewise. * gnu/packages/libedit.scm (libedit)[description]: Likewise. * gnu/packages/kde.scm (oxygen-icons)[synopsis]: Capitalize. --- gnu/packages/haskell.scm | 7 +++---- gnu/packages/image.scm | 8 ++++---- gnu/packages/kde.scm | 2 +- gnu/packages/libedit.scm | 2 +- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 3bb5e3074a..ac87de540e 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -373,14 +373,13 @@ access to the full zlib feature set.") (arguments `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. (home-page "https://github.com/bos/text") - (synopsis - "Efficient packed Unicode text type library.") + (synopsis "Efficient packed Unicode text type library") (description "An efficient packed, immutable Unicode text type (both strict and lazy), with a powerful loop fusion optimization framework. The 'Text' type represents Unicode character strings, in a time and -space-efficient manner. This package provides text processing +space-efficient manner. This package provides text processing capabilities that are optimized for performance critical use, both in terms of large data quantities and high speed.") (license bsd-3))) @@ -870,7 +869,7 @@ package into this package.") (home-page "https://github.com/haskell/HTTP") (synopsis "Library for client-side HTTP") (description - "The HTTP package supports client-side web programming in Haskell. It + "The HTTP package supports client-side web programming in Haskell. It lets you set up HTTP connections, transmitting requests and processing the responses coming back.") (license bsd-3))) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index c24ec99375..89590cc5ad 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -555,10 +555,10 @@ multi-dimensional image processing.") (synopsis "Lossless and lossy image compression") (description "WebP is a new image format that provides lossless and lossy compression -for images. WebP lossless images are 26% smaller in size compared to -PNGs. WebP lossy images are 25-34% smaller in size compared to JPEG images at -equivalent SSIM index. WebP supports lossless transparency (also known as -alpha channel) with just 22% additional bytes. Transparency is also supported +for images. WebP lossless images are 26% smaller in size compared to +PNGs. WebP lossy images are 25-34% smaller in size compared to JPEG images at +equivalent SSIM index. WebP supports lossless transparency (also known as +alpha channel) with just 22% additional bytes. Transparency is also supported with lossy compression and typically provides 3x smaller file sizes compared to PNG when lossy compression is acceptable for the red/green/blue color channels.") diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm index c6556865c2..1409e7c0b1 100644 --- a/gnu/packages/kde.scm +++ b/gnu/packages/kde.scm @@ -224,6 +224,6 @@ calculation of sha1 for every file crawled (arguments `(#:tests? #f)) ; no test target (home-page "http://www.kde.org/") - (synopsis "oxygen icon theme for the KDE desktop") + (synopsis "Oxygen icon theme for the KDE desktop") (description "KDE desktop environment") (license lgpl3+))) diff --git a/gnu/packages/libedit.scm b/gnu/packages/libedit.scm index fcf5ab4c74..1d7b5b6a5f 100644 --- a/gnu/packages/libedit.scm +++ b/gnu/packages/libedit.scm @@ -42,7 +42,7 @@ (synopsis "NetBSD Editline library") (description "This is an autotool- and libtoolized port of the NetBSD Editline -library (libedit). This Berkeley-style licensed command line editor library +library (libedit). This Berkeley-style licensed command line editor library provides generic line editing, history, and tokenization functions, similar to those found in GNU Readline.") (license bsd-3))) -- cgit v1.2.3 From ee5bae302e7e72fb126cd4a1185f2852b472420e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 13 May 2015 22:45:41 +0200 Subject: gnu: lftp: Add alternate URL for old tarballs. * gnu/packages/ftp.scm (lftp)[source]: Add /old alternate URL. --- gnu/packages/ftp.scm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm index 22ea1af965..790ffc66c2 100644 --- a/gnu/packages/ftp.scm +++ b/gnu/packages/ftp.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Ludovic Courtès +;;; Copyright © 2014, 2015 Ludovic Courtès ;;; Copyright © 2015 Andreas Enge ;;; Copyright © 2015 Mark H Weaver ;;; @@ -36,8 +36,10 @@ (version "4.6.1") (source (origin (method url-fetch) - (uri (string-append "http://lftp.yar.ru/ftp/lftp-" - version ".tar.xz")) + (uri (list (string-append "http://lftp.yar.ru/ftp/lftp-" + version ".tar.xz") + (string-append "http://lftp.yar.ru/ftp/old/lftp-" + version ".tar.xz"))) (sha256 (base32 "1grmp8zg7cjgjinz66mrh53whigkqzl90nlxj05hapnhk3ns3vni")) -- cgit v1.2.3 From 45cbe390c30ad453f954939a02f0f9cd4fc7ee9f Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Tue, 12 May 2015 16:32:08 +0200 Subject: gnu: guix-0.8.1: Add gnutls to propagated inputs. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/package-management.scm (guix-0.8.1): Add gnutls to propagated inputs. Signed-off-by: Ludovic Courtès --- gnu/packages/package-management.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 75efd0c448..b5ae3de36a 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -29,6 +29,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages gnupg) #:use-module (gnu packages databases) + #:use-module (gnu packages gnutls) #:use-module (gnu packages graphviz) #:use-module (gnu packages pkg-config) #:use-module (gnu packages autotools) @@ -130,7 +131,8 @@ (base32 "1mi3brl7l58aww34rawhvja84xc7l1b4hmwdmc36fp9q9mfx0lg5")))))) (propagated-inputs - `(("guile-json" ,guile-json) + `(("gnutls" ,gnutls) ;for 'guix download' & co. + ("guile-json" ,guile-json) ("geiser" ,geiser))) ;for guix.el (home-page "http://www.gnu.org/software/guix") -- cgit v1.2.3 From ec6b5a9942c4ce7b368514c4c9e388dee4f7343a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 13 May 2015 23:41:08 +0200 Subject: Update NEWS. --- NEWS | 224 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 221 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 396110efae..7cc5e9433f 100644 --- a/NEWS +++ b/NEWS @@ -93,9 +93,227 @@ See “X Window” in the manual. *** /etc/profile is sources each profile’s ‘etc/profile’ file -*** XXX new packages - -*** XXX package updates +*** 718 new packages + +aalib, aarddict, acpid, agg, aisleriot, alsa-modular-synth, ant, ardour, +ardour, argtable, arpack-ng, aspell-dict-ru, aubio, audacity, avidemux, +avidemux, azr3, bamtools, bash-completion, bedops, bind-utils, bluez, bool, +brdf-explorer, bwa, calf, calibre, catch, ccl, chibi-scheme, chmlib, +clalsadrv, clipper, clisp, clustal-omega, colord, colordiff, cpufrequtils, +crossmap, csound, ctl, cunit, cutadapt, desktop-file-utils, djvulibre, +dnsmasq, dosfstools, double-conversion, dovecot, ecl, efl, elementary, +elogind, emacs-no-x, emotion-generic-players, enca, enlightenment, +evas-generic-loaders, exim, express, extremetuxracer, faad2, fastx-toolkit, +fcitx, fdupes, flexbar, fluidsynth, font-adobe-source-han-sans, +font-wqy-zenhei, freepats, gambit-c, ganv, geda-gaf, geoclue, geocode-glib, +ghc, ghc-case-insensitive, ghc-containers, ghc-fgl, ghc-hashable, ghc-http, +ghc-hunit, ghc-mtl, ghc-network, ghc-network-uri, ghc-parallel, ghc-parsec, +ghc-paths, ghc-primitive, ghc-quickcheck, ghc-random, ghc-split, ghc-stm, +ghc-syb, ghc-text, ghc-tf-random, ghc-unordered-containers, ghc-vector, +ghc-zlib, girara, gitolite, glib-networking, glibc-locales, +glibc-utf8-locales, glibc-utf8-locales, glm, gnome-mines, +gnome-settings-daemon, gnome-terminal, gnucash, gnugo, grit, gst-libav, +guile-minikanren, guile-reader, hdparm, hisat, htseq, htsjdk, hunspell, +hyphen, i2c-tools, ibus, icecast, icedtea6, icedtea7, ilmbase, ir, isync, +ixion, jack2, jalv, jansson, jemalloc, julia, key-mon, ladspa, lash, +leptonica, liba52, libabw, libaio, libass, libavc1394, libbluray, libbs2b, +libcaca, libcap-ng, libcdio-paranoia, libcdr, libdca, libdv, libdvdcss, +libe-book, libedit, libepoxy, libetonyek, libexttextcat, libffcall, +libfreehand, libgnomecanvasmm, libgtextutils, libgweather, libical, +libiec61883, libinput, liblo, libmodplug, libmspack, libmspub, libmtp, +libmwaw, libodfgen, libpagemaker, libqtxdg, libquvi, libquvi-scripts, +libraw1394, librecad, librep, librevenge, libsbsms, libsecret, libshout, +libsoup, libsrtp, libtocc, libungif, libva, libvisio, libwacom, libwebp, +libwpd, libwpg, libwps, libxklavier, libxmp, libyaml, lilv, lilypond, lirc, +livestreamer, ltrace, lv2, lv2-mda-epiano, lv2-mda-piano, lvtk, macs, mariadb, +markdown, mdadm, mdds, mesa-headers, mesa-utils, miredo, miso, moreutils, +mpd-mpc, mpdscribble, mplayer2, mpv, muparser, mythes, ncbi-vdb, ngircd, +ngs-java, ngs-sdk, npth, nss-certs, openblas, openexr, openlibm, openntpd, +openspecfun, openvpn, orc, orcus, p11-kit, patchage, pbtranscript-tofu, pcb, +perl-algorithm-c3, perl-algorithm-diff, perl-aliased, +perl-apache-logformat-compiler, perl-appconfig, perl-b-hooks-endofscope, +perl-base, perl-bit-vector, perl-boolean, perl-cache-cache, +perl-cache-fastmmap, perl-capture-tiny, perl-carp-assert, +perl-carp-assert-more, perl-carp-clan, perl-catalyst-action-renderview, +perl-catalyst-action-rest, perl-catalyst-component-instancepercontext, +perl-catalyst-devel, perl-catalyst-dispatchtype-regex, +perl-catalyst-model-dbic-schema, perl-catalyst-plugin-accesslog, +perl-catalyst-plugin-authentication, perl-catalyst-plugin-captcha, +perl-catalyst-plugin-configloader, perl-catalyst-plugin-session, +perl-catalyst-plugin-session-state-cookie, +perl-catalyst-plugin-session-store-fastmmap, perl-catalyst-plugin-stacktrace, +perl-catalyst-plugin-static-simple, perl-catalyst-runtime, +perl-catalyst-traitfor-request-proxybase, perl-catalyst-view-download, +perl-catalyst-view-json, perl-catalyst-view-tt, +perl-catalystx-component-traits, perl-catalystx-roleapplicator, +perl-catalystx-script-server-starman, perl-cgi-simple, perl-cgi-struct, +perl-class-accessor, perl-class-accessor-chained, perl-class-accessor-grouped, +perl-class-c3, perl-class-c3-adopt-next, perl-class-c3-componentised, +perl-class-data-inheritable, perl-class-date, perl-class-factory-util, +perl-class-inspector, perl-class-load, perl-class-load-xs, +perl-class-method-modifiers, perl-class-methodmaker, perl-class-singleton, +perl-class-tiny, perl-class-unload, perl-class-xsaccessor, perl-common-sense, +perl-compress-raw-bzip2, perl-compress-raw-zlib, perl-config-any, +perl-config-autoconf, perl-config-general, perl-context-preserve, +perl-cpan-meta, perl-cpan-meta-check, perl-cpan-meta-requirements, +perl-cpan-meta-yaml, perl-cpanel-json-xs, perl-crypt-randpasswd, +perl-data-dump, perl-data-dumper-concise, perl-data-optlist, perl-data-page, +perl-data-stream-bulk, perl-data-tumbler, perl-data-visitor, perl-date-calc, +perl-date-calc-xs, perl-datetime, perl-datetime-event-ical, +perl-datetime-event-recurrence, perl-datetime-format-builder, +perl-datetime-format-flexible, perl-datetime-format-http, +perl-datetime-format-ical, perl-datetime-format-natural, +perl-datetime-format-strptime, perl-datetime-locale, perl-datetime-set, +perl-datetime-timezone, perl-datetimex-easy, perl-dbd-pg, perl-dbix-class, +perl-dbix-class-cursor-cached, perl-dbix-class-introspectablem2m, +perl-dbix-class-schema-loader, perl-devel-caller, perl-devel-checkbin, +perl-devel-globaldestruction, perl-devel-lexalias, perl-devel-overloadinfo, +perl-devel-partialdump, perl-devel-stacktrace, perl-devel-stacktrace-ashtml, +perl-devel-symdump, perl-digest-hmac, perl-digest-md5-file, +perl-dist-checkconflicts, perl-email-abstract, perl-email-address, +perl-email-date-format, perl-email-messageid, perl-email-mime, +perl-email-mime-contenttype, perl-email-mime-encodings, perl-email-sender, +perl-email-simple, perl-error, perl-eval-closure, perl-exception-class, +perl-exporter-tiny, perl-extutils-config, perl-extutils-helpers, +perl-extutils-installpaths, perl-file-changenotify, perl-file-copy-recursive, +perl-file-find-rule, perl-file-find-rule-perl, perl-file-homedir, +perl-file-remove, perl-file-sharedir, perl-file-sharedir-install, +perl-file-slurp, perl-file-temp, perl-gd, perl-gd-securityimage, +perl-getopt-long-descriptive, perl-hash-merge, perl-hash-multivalue, +perl-html-form, perl-html-lint, perl-html-tree, perl-http-body, +perl-http-cookiejar, perl-http-parser, perl-http-parser-xs, +perl-http-request-ascgi, perl-http-server-simple, perl-http-tiny, +perl-image-magick, perl-import-into, perl-inc-latest, perl-io-compress, +perl-io-interactive, perl-io-socket-ip, perl-io-stringy, perl-ipc-run, +perl-ipc-sharelite, perl-json, perl-json-any, perl-json-maybexs, perl-json-xs, +perl-lingua-en-findnumber, perl-lingua-en-inflect, +perl-lingua-en-inflect-number, perl-lingua-en-inflect-phrase, +perl-lingua-en-number-isordinal, perl-lingua-en-tagger, +perl-lingua-en-words2nums, perl-lingua-pt-stemmer, perl-lingua-stem, +perl-lingua-stem-fr, perl-lingua-stem-it, perl-lingua-stem-ru, +perl-lingua-stem-snowball-da, perl-list-allutils, perl-list-moreutils, +perl-lwp-protocol-https, perl-lwp-useragent-determined, +perl-memoize-expirelru, perl-mime-types, perl-module-build, +perl-module-build-tiny, perl-module-find, perl-module-implementation, +perl-module-install, perl-module-runtime, perl-module-runtime-conflicts, +perl-module-scandeps, perl-module-util, perl-moo, perl-moose, +perl-moosex-emulate-class-accessor-fast, perl-moosex-getopt, +perl-moosex-markasmethods, perl-moosex-methodattributes, perl-moosex-nonmoose, +perl-moosex-params-validate, perl-moosex-relatedclassroles, +perl-moosex-role-parameterized, perl-moosex-role-withoverloading, +perl-moosex-semiaffordanceaccessor, perl-moosex-strictconstructor, +perl-moosex-traits-pluggable, perl-moosex-types, perl-moosex-types-datetime, +perl-moosex-types-datetime-morecoercions, perl-moosex-types-loadableclass, +perl-moox-types-mooselike, perl-mro-compat, perl-namespace-autoclean, +perl-namespace-clean, perl-net-amazon-s3, perl-net-server, +perl-number-compare, perl-object-signature, perl-package-anon, +perl-package-deprecationmanager, perl-package-stash, perl-package-stash-xs, +perl-padwalker, perl-par-dist, perl-params-util, perl-params-validate, +perl-parent, perl-parse-cpan-meta, perl-path-class, perl-plack, +perl-plack-middleware-fixmissingbodyinredirect, +perl-plack-middleware-methodoverride, +perl-plack-middleware-removeredundantbody, perl-plack-middleware-reverseproxy, +perl-plack-test-externalserver, perl-pod-coverage, +perl-posix-strftime-compiler, perl-readonly, perl-role-tiny, perl-safe-isa, +perl-scalar-list-utils, perl-scope-guard, perl-set-infinite, perl-set-scalar, +perl-snowball-norwegian, perl-snowball-swedish, perl-spiffy, +perl-sql-abstract, perl-sql-splitstatement, perl-sql-tokenizer, +perl-stream-buffered, perl-strictures, perl-string-camelcase, +perl-string-rewriteprefix, perl-string-toidentifier-en, perl-sub-exporter, +perl-sub-exporter-progressive, perl-sub-identify, perl-sub-install, +perl-sub-name, perl-sub-uplevel, perl-svg, perl-sys-hostname-long, +perl-task-weaken, perl-template-timer, perl-template-toolkit, +perl-term-encoding, perl-term-progressbar, perl-term-progressbar-quiet, +perl-term-progressbar-simple, perl-term-readkey, perl-test-base, +perl-test-cleannamespaces, perl-test-differences, perl-test-directory, +perl-test-exception, perl-test-fatal, perl-test-harness, perl-test-leaktrace, +perl-test-longstring, perl-test-mockobject, perl-test-mocktime, +perl-test-most, perl-test-output, perl-test-pod, perl-test-pod-coverage, +perl-test-requires, perl-test-sharedfork, perl-test-tcp, perl-test-trap, +perl-test-utf8, perl-test-warn, perl-test-warnings, perl-test-without-module, +perl-test-writevariants, perl-test-www-mechanize, +perl-test-www-mechanize-catalyst, perl-test-www-mechanize-psgi, +perl-test-yaml, perl-text-aligner, perl-text-balanced, perl-text-csv, +perl-text-diff, perl-text-german, perl-text-glob, perl-text-simpletable, +perl-text-table, perl-text-unidecode, perl-throwable, perl-tie-ixhash, +perl-tie-toobject, perl-time-duration, perl-time-duration-parse, +perl-time-local, perl-time-mock, perl-timedate, perl-tree-simple, +perl-tree-simple-visitorfactory, perl-try-tiny, perl-types-serialiser, +perl-universal-can, perl-universal-isa, perl-uri-find, perl-uri-ws, +perl-variable-magic, perl-www-mechanize, perl-xml-libxml, +perl-xml-namespacesupport, perl-xml-sax, perl-xml-sax-base, perl-yaml, +perl-yaml-tiny, ploticus, polipo, portaudio, pumpa, python-apsw, +python-biopython, python-cssselect, python-dbus, python-decorator, +python-drmaa, python-h5py, python-lxml, python-netifaces, python-networkx, +python-pyxdg, python-pyyaml, python-requests, python-scikit-learn, +python-singledispatch, python-sphinx-rtd-theme, python-sympy, python-testlib, +python-tornado, python-urwid, python-waf, python2-apsw, +python2-backport-ssl-match-hostname, python2-biopython, python2-bx-python, +python2-cssselect, python2-cssutils, python2-dbus, python2-decorator, +python2-drmaa, python2-h5py, python2-lxml, python2-netifaces, +python2-networkx, python2-pbcore, python2-pil, python2-pybedtools, +python2-pycairo, python2-pyxdg, python2-pyyaml, python2-rdflib, python2-rsvg, +python2-scikit-learn, python2-singledispatch, python2-six, +python2-sphinx-rtd-theme, python2-sympy, python2-testlib, python2-tornado, +python2-urwid, python2-waf, python2-xlib, quvi, r, rdesktop, recode, rep-gtk, +rseqc, rsound, rubberband, ruby-hoe, rxvt-unicode, s2tc, sawfish, sbcl, seqan, +serd, serf, sfml, shogun, sloccount, smartmontools, snakemake, soil, solfege, +sord, soundtouch, soxr, sra-tools, sratom, srt2vtt, star, starman, stow, +subread, suil, suitesparse, swt, sysfsutils, sysfsutils, taskwarrior, tbb, +terminology, tesseract-ocr, texlive-bin, texlive-texmf, the-silver-searcher, +tidy, tig, timidity++, tocc, totem-pl-parser, tree, tuxguitar, tvtime, +twolame, txt2man, unqlite, upower, utf8proc, vamp, vapoursynth, vcftools, +vigra, wavpack, webkitgtk, webkitgtk, weex, wicd, wpa-supplicant-light, +wxwidgets, wxwidgets, xbindkeys, xcape, xdg-utils, xf86-input-libinput, +xf86-input-wacom, xf86-video-nouveau, xfce, xmp, xosd, xournal, xvid, zathura, +zathura-cb, zathura-djvu, zathura-pdf-poppler, zathura-ps, zeromq, +zita-alsa-pcmi, zita-convolver + +*** 189 package updates + +acpica-20150410, apl-1.5, apr-1.5.2, arb-2.3.0, at-spi2-atk-2.16.0, +at-spi2-core-2.16.0, atk-2.16.0, autogen-5.18.5, bison-3.0.4, boost-1.57.0, +cairo-1.14.2, ccrtp-2.1.2, check-0.9.14, clang-3.6.0, cmake-3.2.2, +complexity-1.2, cups-filters-1.0.68, curl-7.42.1, dbus-1.8.16, +dbus-glib-0.104, dejagnu-1.5.3, docbook-xml-4.4, docbook-xml-4.5, +e2fsck-static-1.42.12, e2fsprogs-1.42.12, ed-1.11, eigen-3.2.4, +elfutils-0.161, emacs-24.5, emacs-no-x-toolkit-24.5, exo-0.10.3, ffmpeg-2.6.2, +fish-2.1.2, flac-1.3.1, flint-2.4.5, fltk-1.3.3, freetype-2.5.5, garcon-0.4.0, +gcc-5.1.0, gcc-toolchain-5.1.0, gdb-7.9, geiser-0.7, glib-2.44.0, glibc-2.21, +glibc-2.21, glibc-stripped-tarball-2.21, glibmm-2.44.0, global-6.4, +gnome-desktop-3.16.0, gnome-icon-theme-3.12.0, gnome-themes-standard-3.16.0, +gnu-pw-mgr-1.3, gnubik-2.4.2, gnumach-headers-1.5, gnunet-0.10.1, +gnupg-1.4.19, gnupg-2.0.27, gnupg-2.1.4, gnutls-3.4.0, +gobject-introspection-1.44.0, gpgme-1.5.4, gsettings-desktop-schemas-3.16.0, +gst-plugins-base-1.4.5, gst-plugins-good-1.4.5, gstreamer-1.4.5, gtk+-3.16.2, +gtkmm-2.24.4, gtkmm-3.16.0, guile-ssh-0.7.2, guix-0.8.1, guix-0.8.1.fc34dee, +help2man-1.46.6, httpd-2.4.12, hurd-headers-0.6, icecat-31.6.0-gnu1, +icu4c-55.1, imagemagick-6.9.0-4, imlib2-1.4.7, inetutils-1.9.3, inkscape-0.91, +isc-dhcp-4.3.1, itstool-2.0.2, kbd-2.0.2, libgcrypt-1.6.3, libgpg-error-1.18, +libidn-1.30, libltdl-2.4.6, libmicrohttpd-0.9.40, libmikmod-3.3.7, +libotr-4.1.0, libsigc++-2.4.1, libtasn1-4.5, libtool-2.4.6, +libunistring-0.9.5, libuv-1.4.2, libvorbis-1.3.5, libxfce4ui-4.12.0, +libxfce4util-4.12.1, libxfont-1.5.1, lightning-2.1.0, linux-libre-4.0.2, +linux-libre-headers-3.14.37, llvm-3.6.0, lua-5.2.3, man-pages-3.82, +mesa-10.5.4, mig-1.5, minetest-0.4.12, moe-1.7, mpc-1.0.3, mpd-0.19.9, +mu-0.9.12, nano-2.4.1, ncmpcpp-0.6.2, nettle-3.1, nginx-1.8.0, node-0.12.2, +notmuch-0.19, nspr-4.10.8, nss-3.18, ntp-4.2.8p2, ocrad-0.25, octave-3.8.2, +openconnect-7.05, openjpeg-2.0.1, openjpeg-2.1.0, openldap-2.4.40, +openssh-6.8p1, openssl-1.0.2a, pangomm-2.36.0, parallel-20150422, +pari-gp-2.7.3, patch-2.7.5, perf-4.0.2, perl-libwww-6.13, perl-net-http-6.07, +perl-net-ssleay-1.68, perl-test-simple-1.001014, perl-uri-1.67, +pinentry-0.9.0, pius-2.0.11, podofo-0.9.3, poppler-0.32.0, postgresql-9.3.6, +pulseaudio-6.0, python-3.4.3, python-pillow-2.7.0, python-pygobject-3.16.1, +python-setuptools-12.1, python-wrapper-3.4.3, python2-dateutil-2.2, +python2-pillow-2.7.0, python2-pygobject-3.16.1, python2-setuptools-12.1, +qt-5.4.1, ruby-2.2.2, samba-3.6.25, scons-2.3.4, sdl2-2.0.3, sharutils-4.15.1, +sipwitch-1.9.7, slock-1.2, source-highlight-3.1.8, sqlite-3.8.9, +subversion-1.8.13, texinfo-5.2, thunar-1.6.6, thunar-volman-0.8.1, +tor-0.2.5.12, tumbler-0.1.31, tzdata-2015c, ucommon-6.3.1, vala-0.28.0, +valgrind-3.10.1, vlc-2.2.0, vte-0.40.0, wget-1.16.3, wine-1.7.40, +wpa-supplicant-2.4, xboard-4.8.0, xfce4-appfinder-4.12.0, xfce4-panel-4.12.0, +xfce4-session-4.12.0, xfce4-settings-4.12.0, xfconf-4.12.0, xfdesktop-4.12.0, +xfwm4-4.12.0, xorg-server-1.16.4, xterm-317 ** Programming interfaces -- cgit v1.2.3 From 04bdcdb6365e588aa8037a6c02d424b4eed6e2a9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 13 May 2015 23:49:33 +0200 Subject: gnu: bool: Synchronize synopsis and description with upstream. * gnu/packages/search.scm (bool): Synchronize synopsis & description with GNU. --- gnu/packages/search.scm | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm index 55ce45b30d..e7f8aae881 100644 --- a/gnu/packages/search.scm +++ b/gnu/packages/search.scm @@ -138,12 +138,15 @@ command line tool for interacting with libtocc.") "1frdmgrmb509fxbdpsxxw3lvvwv7xm1pavqrqgm4jg698iix6xfw")))) (build-system gnu-build-system) (home-page "https://www.gnu.org/software/bool") - (synopsis "Find files that match a boolean expression") + (synopsis "Finding text and HTML files that match boolean expressions") (description - "GNU Bool is a utility for finding files that match a boolean expression. -The boolean operators supported are AND, OR, and NOT. Also supported is the -NEAR operator for locating two expressions within a short distance from each -other.") + "GNU Bool is a utility to perform text searches on files using Boolean +expressions. For example, a search for \"hello AND world\" would return a +file containing the phrase \"Hello, world!\". It supports both AND and OR +statements, as well as the NEAR statement to search for the occurrence of +words in close proximity to each other. It handles context gracefully, +accounting for new lines and paragraph changes. It also has robust support +for parsing HTML files.") (license gpl3+))) ;;; search.scm ends here -- cgit v1.2.3 From 5875eb7325edf5f23490a4232c33ab71474d20f3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 14 May 2015 00:30:33 +0200 Subject: gnu: guix: Update to 0.8.2. * gnu/packages/package-management.scm (guix-0.8.1): Rename to... (guix-0.8.2): ... this. Update to 0.8.2. Adjust users. (guix): Set to GUIX-0.8.2. --- gnu/packages/package-management.scm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index b5ae3de36a..8d63908f96 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -52,17 +52,17 @@ arch "-linux" "/20131110/guile-2.0.9.tar.xz"))) -(define-public guix-0.8.1 +(define-public guix-0.8.2 (package (name "guix") - (version "0.8.1") + (version "0.8.2") (source (origin (method url-fetch) (uri (string-append "ftp://alpha.gnu.org/gnu/guix/guix-" version ".tar.gz")) (sha256 (base32 - "12h5ldj1yf0za6ladlr8h7nx2gqrv2dxcsiwyqayvrza93lijkf5")))) + "1a5gnkh17w7fgi5zy63ph64iqdvarkdqypkwgw2iifpqa6jq04zz")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list @@ -151,7 +151,7 @@ the Nix package manager.") ;; Note: use a short commit id; when using the long one, the limit on socket ;; file names is exceeded while running the tests. (let ((commit "fc34dee")) - (package (inherit guix-0.8.1) + (package (inherit guix-0.8.2) (version (string-append "0.8.1." commit)) (source (origin (method git-fetch) @@ -162,7 +162,7 @@ the Nix package manager.") (base32 "0nx60wwiar0s4bgwrm3nrskc54jig3vw7yzwxkwilc43cnlgpkja")))) (arguments - (substitute-keyword-arguments (package-arguments guix-0.8.1) + (substitute-keyword-arguments (package-arguments guix-0.8.2) ((#:phases phases) `(alist-cons-after 'unpack 'bootstrap @@ -180,9 +180,9 @@ the Nix package manager.") ("gettext" ,gnu-gettext) ("texinfo" ,texinfo) ("graphviz" ,graphviz) - ,@(package-native-inputs guix-0.8.1)))))) + ,@(package-native-inputs guix-0.8.2)))))) -(define-public guix guix-devel) +(define-public guix guix-0.8.2) (define-public nix (package -- cgit v1.2.3 From aa38fabacccc1be1f54dee243bf875f178ce53f8 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 14 May 2015 00:44:22 +0200 Subject: gnu: guix: Update development snapshot. * gnu/packages/package-management.scm (guix-devel): Update to 5875eb7. Change 'version' prefix to "0.8.2.". (guix): Set to GUIX-DEVEL. --- gnu/packages/package-management.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 8d63908f96..45de28eeff 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -150,9 +150,9 @@ the Nix package manager.") ;; ;; Note: use a short commit id; when using the long one, the limit on socket ;; file names is exceeded while running the tests. - (let ((commit "fc34dee")) + (let ((commit "5875eb7")) (package (inherit guix-0.8.2) - (version (string-append "0.8.1." commit)) + (version (string-append "0.8.2." commit)) (source (origin (method git-fetch) (uri (git-reference @@ -160,7 +160,7 @@ the Nix package manager.") (commit commit))) (sha256 (base32 - "0nx60wwiar0s4bgwrm3nrskc54jig3vw7yzwxkwilc43cnlgpkja")))) + "0qcq3g0b7fj2xxrdamilwz92502pxdf17j4cj047cxd8652aknjc")))) (arguments (substitute-keyword-arguments (package-arguments guix-0.8.2) ((#:phases phases) @@ -182,7 +182,7 @@ the Nix package manager.") ("graphviz" ,graphviz) ,@(package-native-inputs guix-0.8.2)))))) -(define-public guix guix-0.8.2) +(define-public guix guix-devel) (define-public nix (package -- cgit v1.2.3 From fd19fa55ebf798d7895d246448d8d33e9e57d13d Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 13 May 2015 00:59:45 -0400 Subject: gnu: pcre: Update to 8.37. * gnu/packages/pcre.scm (pcre): Update to 8.37. --- gnu/packages/pcre.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm index 3181ba7592..86d3ca3874 100644 --- a/gnu/packages/pcre.scm +++ b/gnu/packages/pcre.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Andreas Enge -;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2014, 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,14 +28,14 @@ (define-public pcre (package (name "pcre") - (version "8.36") + (version "8.37") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/pcre/pcre/" version "/pcre-" version ".tar.bz2")) (sha256 (base32 - "1fs5p1z67m9f4xnyil3s4lhgyld78f7m4d1yawpyhh0cvrbk90zg")))) + "17bqykp604p7376wj3q2nmjdhrb6v1ny8q08zdwi7qvc02l9wrsi")))) (build-system gnu-build-system) (inputs `(("bzip2" ,bzip2) ("readline" ,readline) -- cgit v1.2.3 From 5df4f48e95f418105228ed2c14529bfa76359bf3 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 13 May 2015 23:29:56 -0400 Subject: gnu: linux-libre: Update to 4.0.3. * gnu/packages/linux.scm (linux-libre): Update to 4.0.3. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 1ef473fbe4..32258ae489 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -200,7 +200,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." #f))) (define-public linux-libre - (let* ((version "4.0.2") + (let* ((version "4.0.3") (build-phase '(lambda* (#:key system inputs #:allow-other-keys #:rest args) ;; Apply the neat patch. @@ -273,7 +273,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." (uri (linux-libre-urls version)) (sha256 (base32 - "18iyp2hzzb00jy389prp0lmby0i32qlbxjn74r4msmfra9s0w8mp")))) + "111mr9c007yzq5pkn9j8nfy4w6rr94bs6krb8iinrlb9chnyixlj")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) ("bc" ,bc) -- cgit v1.2.3 From 3736a110bd60e2453dc51e405d36fed51d4cb9b2 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Thu, 14 May 2015 17:24:03 +0200 Subject: gnu: Add libcmis. * gnu/packages/libreoffice.scm (libcmis): New variable. Co-authored-by: John Darrington --- gnu/packages/libreoffice.scm | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 539600a12b..736da39919 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -26,10 +26,13 @@ #:use-module (gnu packages boost) #:use-module (gnu packages check) #:use-module (gnu packages compression) + #:use-module (gnu packages curl) + #:use-module (gnu packages cyrus-sasl) #:use-module (gnu packages doxygen) #:use-module (gnu packages ghostscript) #:use-module (gnu packages gperf) #:use-module (gnu packages icu4c) + #:use-module (gnu packages openssl) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) @@ -202,6 +205,47 @@ ZVR (simple compressed text format).") working with graphics in the WPG (WordPerfect Graphics) format.") (license (list mpl2.0 lgpl2.1+)))) ;dual licensed +(define-public libcmis + (package + (name "libcmis") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/" name "/" name "-" + version ".tar.gz")) + (sha256 (base32 + "1dprvk4fibylv24l7gr49gfqbkfgmxynvgssvdcycgpf7n8h4zm8")))) + (build-system gnu-build-system) + (native-inputs + `(("cppunit" ,cppunit) + ("pkg-config" ,pkg-config))) + (inputs + `(("boost" ,boost) + ("curl" ,curl) + ("cyrus-sasl" ,cyrus-sasl) + ("libxml2" ,libxml2) + ("openssl" ,openssl))) + (arguments + `(#:configure-flags + (list + ;; FIXME: Man pages generation requires docbook-to-man; reenable + ;; it once this is available. + "--without-man" + ;; avoid triggering configure errors by simple inclusion of + ;; boost headers + "--disable-werror" + ;; During configure, the boost headers are found, but linking + ;; fails without the following flag. + (string-append "--with-boost=" + (assoc-ref %build-inputs "boost"))))) + (home-page "http://sourceforge.net/projects/libcmis/") + (synopsis "CMIS client library") + (description "LibCMIS is a C++ client library for the CMIS interface. It +allows C++ applications to connect to any ECM behaving as a CMIS server such +as Alfresco or Nuxeo.") + (license (list mpl1.1 gpl2+ lgpl2.1+)))) ; triple license + (define-public libabw (package (name "libabw") -- cgit v1.2.3 From f6708fcdb2b6977e0a2a7449aa917dc373545455 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 14 May 2015 19:01:26 -0400 Subject: gnu: qemu: Update to 2.3.0; add fix for CVE-2015-3456. * gnu/packages/patches/qemu-CVE-2015-3456.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/qemu.scm (qemu-headless): Update to 2.3.0. Add patch. --- gnu-system.am | 1 + gnu/packages/patches/qemu-CVE-2015-3456.patch | 85 +++++++++++++++++++++++++++ gnu/packages/qemu.scm | 6 +- 3 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 gnu/packages/patches/qemu-CVE-2015-3456.patch diff --git a/gnu-system.am b/gnu-system.am index e25eae59fe..5ba48d15d2 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -536,6 +536,7 @@ dist_patch_DATA = \ gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \ gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch \ gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ + gnu/packages/patches/qemu-CVE-2015-3456.patch \ gnu/packages/patches/qt4-ldflags.patch \ gnu/packages/patches/qt4-tests.patch \ gnu/packages/patches/qt5-conflicting-typedefs.patch \ diff --git a/gnu/packages/patches/qemu-CVE-2015-3456.patch b/gnu/packages/patches/qemu-CVE-2015-3456.patch new file mode 100644 index 0000000000..9514f7c3e5 --- /dev/null +++ b/gnu/packages/patches/qemu-CVE-2015-3456.patch @@ -0,0 +1,85 @@ +From e907746266721f305d67bc0718795fedee2e824c Mon Sep 17 00:00:00 2001 +From: Petr Matousek +Date: Wed, 6 May 2015 09:48:59 +0200 +Subject: [PATCH] fdc: force the fifo access to be in bounds of the allocated + buffer + +During processing of certain commands such as FD_CMD_READ_ID and +FD_CMD_DRIVE_SPECIFICATION_COMMAND the fifo memory access could +get out of bounds leading to memory corruption with values coming +from the guest. + +Fix this by making sure that the index is always bounded by the +allocated memory. + +This is CVE-2015-3456. + +Signed-off-by: Petr Matousek +Reviewed-by: John Snow +Signed-off-by: John Snow +--- + hw/block/fdc.c | 17 +++++++++++------ + 1 file changed, 11 insertions(+), 6 deletions(-) + +diff --git a/hw/block/fdc.c b/hw/block/fdc.c +index f72a392..d8a8edd 100644 +--- a/hw/block/fdc.c ++++ b/hw/block/fdc.c +@@ -1497,7 +1497,7 @@ static uint32_t fdctrl_read_data(FDCtrl *fdctrl) + { + FDrive *cur_drv; + uint32_t retval = 0; +- int pos; ++ uint32_t pos; + + cur_drv = get_cur_drv(fdctrl); + fdctrl->dsr &= ~FD_DSR_PWRDOWN; +@@ -1506,8 +1506,8 @@ static uint32_t fdctrl_read_data(FDCtrl *fdctrl) + return 0; + } + pos = fdctrl->data_pos; ++ pos %= FD_SECTOR_LEN; + if (fdctrl->msr & FD_MSR_NONDMA) { +- pos %= FD_SECTOR_LEN; + if (pos == 0) { + if (fdctrl->data_pos != 0) + if (!fdctrl_seek_to_next_sect(fdctrl, cur_drv)) { +@@ -1852,10 +1852,13 @@ static void fdctrl_handle_option(FDCtrl *fdctrl, int direction) + static void fdctrl_handle_drive_specification_command(FDCtrl *fdctrl, int direction) + { + FDrive *cur_drv = get_cur_drv(fdctrl); ++ uint32_t pos; + +- if (fdctrl->fifo[fdctrl->data_pos - 1] & 0x80) { ++ pos = fdctrl->data_pos - 1; ++ pos %= FD_SECTOR_LEN; ++ if (fdctrl->fifo[pos] & 0x80) { + /* Command parameters done */ +- if (fdctrl->fifo[fdctrl->data_pos - 1] & 0x40) { ++ if (fdctrl->fifo[pos] & 0x40) { + fdctrl->fifo[0] = fdctrl->fifo[1]; + fdctrl->fifo[2] = 0; + fdctrl->fifo[3] = 0; +@@ -1955,7 +1958,7 @@ static uint8_t command_to_handler[256]; + static void fdctrl_write_data(FDCtrl *fdctrl, uint32_t value) + { + FDrive *cur_drv; +- int pos; ++ uint32_t pos; + + /* Reset mode */ + if (!(fdctrl->dor & FD_DOR_nRESET)) { +@@ -2004,7 +2007,9 @@ static void fdctrl_write_data(FDCtrl *fdctrl, uint32_t value) + } + + FLOPPY_DPRINTF("%s: %02x\n", __func__, value); +- fdctrl->fifo[fdctrl->data_pos++] = value; ++ pos = fdctrl->data_pos++; ++ pos %= FD_SECTOR_LEN; ++ fdctrl->fifo[pos] = value; + if (fdctrl->data_pos == fdctrl->data_len) { + /* We now have all parameters + * and will be able to treat the command +-- +2.2.1 + diff --git a/gnu/packages/qemu.scm b/gnu/packages/qemu.scm index 77aeecf40c..e9a2c08743 100644 --- a/gnu/packages/qemu.scm +++ b/gnu/packages/qemu.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -42,14 +43,15 @@ ;; This is QEMU without GUI support. (package (name "qemu-headless") - (version "2.2.0") + (version "2.3.0") (source (origin (method url-fetch) (uri (string-append "http://wiki.qemu-project.org/download/qemu-" version ".tar.bz2")) (sha256 (base32 - "1703c3scl5n07gmpilg7g2xzyxnr7jczxgx6nn4m8kv9gin9p35n")))) + "120m53c3p28qxmfzllicjzr8syjv6v4d9rsyrgkp7gnmcgvvgfmn")) + (patches (list (search-patch "qemu-CVE-2015-3456.patch"))))) (build-system gnu-build-system) (arguments '(#:phases (alist-replace -- cgit v1.2.3 From 7a4d05091ebe184d58f95e1aa38040b621f58818 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Fri, 15 May 2015 14:01:29 +0800 Subject: gnu: Add GNUjump. * gnu/packages/games.scm (gnujump): New variable. --- gnu/packages/games.scm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index afed704840..549214be21 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -879,3 +879,37 @@ bones. This game is based on the GPL version of the famous game TuxRacer.") (home-page "http://sourceforge.net/projects/extremetuxracer/") (license license:gpl2+))) + +(define-public gnujump + (package + (name "gnujump") + (version "1.0.8") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gnujump/gnujump-" + version ".tar.gz")) + (sha256 + (base32 + "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before + 'configure 'link-libm + (lambda _ (setenv "LIBS" "-lm")))))) + (inputs + `(("glu" ,glu) + ("mesa", mesa) + ("sdl" ,sdl) + ("sdl-image" ,sdl-image) + ("sdl-mixer" ,sdl-mixer))) + (home-page "http://gnujump.es.gnu.org/") + (synopsis + "Game of jumping to the next floor, trying not to fall") + (description + "GNUjump is a simple, yet addictive game in which you must jump from +platform to platform to avoid falling, while the platforms drop at faster rates +the higher you go. The game features multiplayer, unlimited FPS, smooth floor +falling, themeable graphics and sounds, and replays.") + (license license:gpl3+))) -- cgit v1.2.3 From ecf28847b2f79d13b351f10848e7716c4ebe7552 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 15 May 2015 13:51:47 +0200 Subject: gnu: openblas: Update to 0.2.14. * gnu/packages/maths.scm (openblas): Update to 0.2.14. --- gnu/packages/maths.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index db8293471a..f27903cc1a 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -1025,7 +1025,7 @@ constant parts of it.") (define-public openblas (package (name "openblas") - (version "0.2.13") + (version "0.2.14") (source (origin (method url-fetch) @@ -1034,7 +1034,7 @@ constant parts of it.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1asg5mix13ipxgj5h2yj2p0r8km1di5jbcjkn5gmhb37nx7qfv6k")))) + "0av3pd96j8rx5i65f652xv9wqfkaqn0w4ma1gvbyz73i6j2hi9db")))) (build-system gnu-build-system) (arguments '(#:tests? #f ;no "check" target -- cgit v1.2.3 From 6189fce5297c6e6a62b42f1611db519d5947cbde Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 15 May 2015 12:14:58 +0200 Subject: nls: Update 'da' translation. --- po/guix/da.po | 641 ++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 396 insertions(+), 245 deletions(-) diff --git a/po/guix/da.po b/po/guix/da.po index 3e0c84caf1..2274ebff57 100644 --- a/po/guix/da.po +++ b/po/guix/da.po @@ -7,10 +7,10 @@ # msgid "" msgstr "" -"Project-Id-Version: guix 0.8.1\n" +"Project-Id-Version: guix 0.8.2\n" "Report-Msgid-Bugs-To: ludo@gnu.org\n" -"POT-Creation-Date: 2015-01-26 23:51+0100\n" -"PO-Revision-Date: 2015-04-06 19:30+01:00\n" +"POT-Creation-Date: 2015-05-10 14:02+0200\n" +"PO-Revision-Date: 2015-05-14 19:30+01:00\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" "Language: da\n" @@ -34,40 +34,45 @@ msgstr "kunne ikke finde bootstraps binære »~a« for system »~a«" msgid "cannot access `~a': ~a~%" msgstr "kan ikke tilgå »~a«: ~a~%" -#: gnu/packages.scm:372 +#: gnu/packages.scm:382 #, scheme-format msgid "looking for the latest release of GNU ~a..." msgstr "kigger efter den seneste udgivelse af GNU ~a..." -#: gnu/packages.scm:379 +#: gnu/packages.scm:389 #, scheme-format msgid "~a: note: using ~a but ~a is available upstream~%" msgstr "~a: bemærk: bruger ~a men ~a er tilgængelig opstrøm~%" -#: gnu/packages.scm:401 guix/scripts/package.scm:306 +#: gnu/packages.scm:411 guix/scripts/package.scm:350 #, scheme-format msgid "ambiguous package specification `~a'~%" msgstr "tvetydig pakkespecifikation »~a«~%" -#: gnu/packages.scm:402 guix/scripts/package.scm:308 +#: gnu/packages.scm:412 guix/scripts/package.scm:352 #, scheme-format msgid "choosing ~a from ~a~%" msgstr "vælger ~a fra ~a~%" -#: gnu/packages.scm:408 +#: gnu/packages.scm:418 #, scheme-format msgid "~A: package not found for version ~a~%" msgstr "~A: pakke ikke fundet for version ~a~%" -#: gnu/packages.scm:410 +#: gnu/packages.scm:420 #, scheme-format msgid "~A: unknown package~%" msgstr "~A: ukendt pakke~%" -#: gnu/system.scm:716 +#: gnu/system.scm:811 msgid "system locale lacks a definition" msgstr "systemsprog mangler en definition" +#: gnu/services/dmd.scm:51 +#, scheme-format +msgid "service '~a' provided more than once" +msgstr "tjeneste »~a« tilbudt mere end en gang" + #: guix/scripts/build.scm:65 #, scheme-format msgid "failed to create GC root `~a': ~a~%" @@ -196,12 +201,22 @@ msgstr "" #: guix/scripts/build.scm:230 msgid "" "\n" +" --sources[=TYPE] build source derivations; TYPE may optionally be one\n" +" of \"package\", \"all\" (default), or \"transitive\"" +msgstr "" +"\n" +" --sources[=TYPE] bygningskildeafledninger; TYPE kan valgfrit være\n" +" »package«, »all« (standard) eller »transitive«" + +#: guix/scripts/build.scm:233 +msgid "" +"\n" " -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"" msgstr "" "\n" " -s, --system=SYSTEM forsøger at bygge for SYSTEM--f.eks., »i686-linux«" -#: guix/scripts/build.scm:232 +#: guix/scripts/build.scm:235 msgid "" "\n" " --target=TRIPLET cross-build for TRIPLET--e.g., \"armel-linux-gnu\"" @@ -209,7 +224,7 @@ msgstr "" "\n" " --target=TRIPLET krydsbyg for TRIPLET--f.eks., »armel-linux-gnu«" -#: guix/scripts/build.scm:234 +#: guix/scripts/build.scm:237 msgid "" "\n" " --with-source=SOURCE\n" @@ -219,7 +234,7 @@ msgstr "" " --with-source=KILDE\n" " brug KILDE når den tilsvarende pakke bygges" -#: guix/scripts/build.scm:237 +#: guix/scripts/build.scm:240 msgid "" "\n" " --no-grafts do not graft packages" @@ -227,7 +242,7 @@ msgstr "" "\n" " --no-grafts pod ikke pakker" -#: guix/scripts/build.scm:239 +#: guix/scripts/build.scm:242 msgid "" "\n" " -d, --derivations return the derivation paths of the given packages" @@ -235,7 +250,7 @@ msgstr "" "\n" " -d, --derivations returner de afledte stier for de givne pakker" -#: guix/scripts/build.scm:241 +#: guix/scripts/build.scm:244 msgid "" "\n" " -r, --root=FILE make FILE a symlink to the result, and register it\n" @@ -245,7 +260,7 @@ msgstr "" " -r, --root=FIL gør FIL til en symbolsk henvisning for resultatet, og\n" " registrer den som en affaldsindsamlerroot" -#: guix/scripts/build.scm:244 +#: guix/scripts/build.scm:247 msgid "" "\n" " --log-file return the log file names for the given derivations" @@ -253,11 +268,12 @@ msgstr "" "\n" " --log-file returner logfilnavnen for de givne afledninger" -#: guix/scripts/build.scm:249 guix/scripts/download.scm:53 -#: guix/scripts/package.scm:467 guix/scripts/gc.scm:58 -#: guix/scripts/hash.scm:55 guix/scripts/pull.scm:81 -#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:414 -#: guix/scripts/lint.scm:469 +#: guix/scripts/build.scm:252 guix/scripts/download.scm:53 +#: guix/scripts/package.scm:464 guix/scripts/gc.scm:58 +#: guix/scripts/hash.scm:55 guix/scripts/import.scm:90 +#: guix/scripts/pull.scm:81 guix/scripts/substitute.scm:682 +#: guix/scripts/system.scm:400 guix/scripts/lint.scm:534 +#: guix/scripts/publish.scm:56 msgid "" "\n" " -h, --help display this help and exit" @@ -265,11 +281,12 @@ msgstr "" "\n" " -h, --help vis denne hjælpetekst og afslut" -#: guix/scripts/build.scm:251 guix/scripts/download.scm:55 -#: guix/scripts/package.scm:469 guix/scripts/gc.scm:60 -#: guix/scripts/hash.scm:57 guix/scripts/pull.scm:83 -#: guix/scripts/substitute-binary.scm:568 guix/scripts/system.scm:416 -#: guix/scripts/lint.scm:473 +#: guix/scripts/build.scm:254 guix/scripts/download.scm:55 +#: guix/scripts/package.scm:466 guix/scripts/gc.scm:60 +#: guix/scripts/hash.scm:57 guix/scripts/import.scm:92 +#: guix/scripts/pull.scm:83 guix/scripts/substitute.scm:684 +#: guix/scripts/system.scm:402 guix/scripts/lint.scm:538 +#: guix/scripts/publish.scm:58 msgid "" "\n" " -V, --version display version information and exit" @@ -277,20 +294,21 @@ msgstr "" "\n" " -V, --version vis versioninformation og afslut" -#: guix/scripts/build.scm:383 +#: guix/scripts/build.scm:281 #, scheme-format -msgid "sources do not match any package:~{ ~a~}~%" -msgstr "kilder matcher ikke nogen pakke:~{ ~a~}~%" +msgid "" +"invalid argument: '~a' option argument: ~a, ~\n" +"must be one of 'package', 'all', or 'transitive'~%" +msgstr "" +"ugyldigt argument: »~a« tilvalgsargumentet: ~a, ~\n" +"skal være »package«, »all« eller »transitive«~%" -#: guix/scripts/build.scm:417 guix/scripts/download.scm:96 -#: guix/scripts/package.scm:694 guix/scripts/gc.scm:122 -#: guix/scripts/pull.scm:213 guix/scripts/system.scm:499 -#: guix/scripts/lint.scm:521 +#: guix/scripts/build.scm:404 #, scheme-format -msgid "~A: unrecognized option~%" -msgstr "~A: ikke genkendt tilvalg~%" +msgid "sources do not match any package:~{ ~a~}~%" +msgstr "kilder matcher ikke nogen pakke:~{ ~a~}~%" -#: guix/scripts/build.scm:445 +#: guix/scripts/build.scm:453 #, scheme-format msgid "no build log for '~a'~%" msgstr "ingen byggelog for »~a«~%" @@ -324,6 +342,13 @@ msgstr "" msgid "unsupported hash format: ~a~%" msgstr "ikke understøttet hash-format: ~a~%" +#: guix/scripts/download.scm:96 guix/scripts/gc.scm:122 +#: guix/scripts/pull.scm:217 guix/scripts/lint.scm:585 +#: guix/scripts/publish.scm:233 guix/ui.scm:829 +#, scheme-format +msgid "~A: unrecognized option~%" +msgstr "~A: ikke genkendt tilvalg~%" + #: guix/scripts/download.scm:106 #, scheme-format msgid "~a: failed to parse URI~%" @@ -334,42 +359,57 @@ msgstr "~a: kunne ikke fortolke URI~%" msgid "~a: download failed~%" msgstr "~a: overførsel mislykkede~%" -#: guix/scripts/package.scm:98 +#: guix/scripts/package.scm:108 #, scheme-format msgid "failed to build the empty profile~%" msgstr "kunne ikke bygge den tomme profil~%" -#: guix/scripts/package.scm:114 +#: guix/scripts/package.scm:124 #, scheme-format msgid "switching from generation ~a to ~a~%" msgstr "skifter fra generation ~a til ~a~%" -#: guix/scripts/package.scm:133 +#: guix/scripts/package.scm:143 #, scheme-format msgid "nothing to do: already at the empty profile~%" msgstr "intet at udføre: allerede en tom profil~%" -#: guix/scripts/package.scm:145 +#: guix/scripts/package.scm:155 #, scheme-format msgid "deleting ~a~%" msgstr "sletter ~a~%" -#: guix/scripts/package.scm:296 +#: guix/scripts/package.scm:268 +#, scheme-format +msgid "not removing generation ~a, which is current~%" +msgstr "fjerner ikke generation ~a, som er nuværende~%" + +#: guix/scripts/package.scm:275 +#, scheme-format +msgid "no matching generation~%" +msgstr "ingen matchende generation~%" + +#: guix/scripts/package.scm:278 guix/scripts/package.scm:917 +#, scheme-format +msgid "invalid syntax: ~a~%" +msgstr "ugyldig syntaks: ~a~%" + +#: guix/scripts/package.scm:340 #, scheme-format msgid "package `~a' lacks output `~a'~%" msgstr "pakke »~a« mangler uddata »~a«~%" -#: guix/scripts/package.scm:313 +#: guix/scripts/package.scm:357 #, scheme-format msgid "~a: package not found~%" msgstr "~a: pakken blev ikke fundet~%" -#: guix/scripts/package.scm:406 +#: guix/scripts/package.scm:401 #, scheme-format msgid "The following environment variable definitions may be needed:~%" msgstr "De følgende miljøvariabeldefinitioner kan være krævet:~%" -#: guix/scripts/package.scm:422 +#: guix/scripts/package.scm:417 msgid "" "Usage: guix package [OPTION]... PACKAGES...\n" "Install, remove, or upgrade PACKAGES in a single transaction.\n" @@ -377,7 +417,7 @@ msgstr "" "Brug: guix-pakke [TILVALG]... PAKKER...\n" "Installer, fjern eller opgrader PAKKER i en enkel transaktion.\n" -#: guix/scripts/package.scm:424 +#: guix/scripts/package.scm:419 msgid "" "\n" " -i, --install=PACKAGE install PACKAGE" @@ -385,7 +425,7 @@ msgstr "" "\n" " -i, --install=PAKKE installer PAKKE" -#: guix/scripts/package.scm:426 +#: guix/scripts/package.scm:421 msgid "" "\n" " -e, --install-from-expression=EXP\n" @@ -395,7 +435,7 @@ msgstr "" " -e, --install-from-expression=UDTRYK\n" " installer pakken UDTRYK evaluerer til" -#: guix/scripts/package.scm:429 +#: guix/scripts/package.scm:424 msgid "" "\n" " -r, --remove=PACKAGE remove PACKAGE" @@ -403,7 +443,7 @@ msgstr "" "\n" " -r, --remove=PAKKE fjern PAKKE" -#: guix/scripts/package.scm:431 +#: guix/scripts/package.scm:426 msgid "" "\n" " -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP" @@ -413,7 +453,15 @@ msgstr "" " opgrader alle de installerede pakker der matcher\n" " REGUDTRYK" -#: guix/scripts/package.scm:433 +#: guix/scripts/package.scm:428 +msgid "" +"\n" +" --do-not-upgrade[=REGEXP] do not upgrade any packages matching REGEXP" +msgstr "" +"\n" +" --do-not--upgrade[=REGUDTRYK] opgrader ikke pakker der matcher REGUDTRYK" + +#: guix/scripts/package.scm:430 msgid "" "\n" " --roll-back roll back to the previous generation" @@ -421,7 +469,7 @@ msgstr "" "\n" " --roll-back rul tilbage til den forrige generation" -#: guix/scripts/package.scm:435 +#: guix/scripts/package.scm:432 msgid "" "\n" " --search-paths display needed environment variable definitions" @@ -429,7 +477,7 @@ msgstr "" "\n" " --search-paths vis krævede miljøvariabeldefinitioner" -#: guix/scripts/package.scm:437 +#: guix/scripts/package.scm:434 msgid "" "\n" " -l, --list-generations[=PATTERN]\n" @@ -439,7 +487,7 @@ msgstr "" " -l, --list-generations[=MØNSTER]\n" " vis generationer der matcher MØNSTER" -#: guix/scripts/package.scm:440 +#: guix/scripts/package.scm:437 msgid "" "\n" " -d, --delete-generations[=PATTERN]\n" @@ -449,7 +497,7 @@ msgstr "" " -d, --delete-generations[=MØNSTER]\n" " slet generationer der matcher MØNSTER" -#: guix/scripts/package.scm:443 +#: guix/scripts/package.scm:440 msgid "" "\n" " -S, --switch-generation=PATTERN\n" @@ -459,7 +507,7 @@ msgstr "" " -S, --switch-generation=MØNSTER\n" " skift til et generationsmatchende MØNSTER" -#: guix/scripts/package.scm:446 +#: guix/scripts/package.scm:443 msgid "" "\n" " -p, --profile=PROFILE use PROFILE instead of the user's default profile" @@ -467,7 +515,7 @@ msgstr "" "\n" " -p, --profile=PROFIL brug PROFIL i stedet for brugerens standardprofil" -#: guix/scripts/package.scm:449 +#: guix/scripts/package.scm:446 msgid "" "\n" " --bootstrap use the bootstrap Guile to build the profile" @@ -475,7 +523,7 @@ msgstr "" "\n" " --bootstrap brug bootstrap Guile til at bygge profilen" -#: guix/scripts/package.scm:451 guix/scripts/pull.scm:74 +#: guix/scripts/package.scm:448 guix/scripts/pull.scm:74 msgid "" "\n" " --verbose produce verbose output" @@ -483,7 +531,7 @@ msgstr "" "\n" " --verbose lav uddybende uddata" -#: guix/scripts/package.scm:454 +#: guix/scripts/package.scm:451 msgid "" "\n" " -s, --search=REGEXP search in synopsis and description using REGEXP" @@ -491,7 +539,7 @@ msgstr "" "\n" " -s, --search=REGUDTRYK søg i synopsis og beskrivelse via REGUDTRYK" -#: guix/scripts/package.scm:456 +#: guix/scripts/package.scm:453 msgid "" "\n" " -I, --list-installed[=REGEXP]\n" @@ -501,7 +549,7 @@ msgstr "" " -I, --list-installed[=REGUDTRYK]\n" " vis installerede pakker der matcher REGUDTRYK" -#: guix/scripts/package.scm:459 +#: guix/scripts/package.scm:456 msgid "" "\n" " -A, --list-available[=REGEXP]\n" @@ -511,7 +559,7 @@ msgstr "" " -A, --list-available[=REGUDTRYK]\n" " vis tilgængelige pakker der matcher REGUDTRYK" -#: guix/scripts/package.scm:462 +#: guix/scripts/package.scm:459 msgid "" "\n" " --show=PACKAGE show details about PACKAGE" @@ -519,64 +567,59 @@ msgstr "" "\n" " --show=PACKAGE vis detaljer om PAKKE" -#: guix/scripts/package.scm:698 +#: guix/scripts/package.scm:730 #, scheme-format msgid "~A: extraneous argument~%" msgstr "~A: uvedkommende argument~%" -#: guix/scripts/package.scm:708 +#: guix/scripts/package.scm:738 #, scheme-format msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%" msgstr "Prøv »info '(guix) Invoking guix package« for yderligere information.~%" -#: guix/scripts/package.scm:730 +#: guix/scripts/package.scm:760 #, scheme-format msgid "error: while creating directory `~a': ~a~%" msgstr "fejl: under oprettelse af mappe »~a«: ~a~%" -#: guix/scripts/package.scm:734 +#: guix/scripts/package.scm:764 #, scheme-format msgid "Please create the `~a' directory, with you as the owner.~%" msgstr "Opret venligst mappen »~a«, med dig som ejer.~%" -#: guix/scripts/package.scm:741 +#: guix/scripts/package.scm:771 #, scheme-format msgid "error: directory `~a' is not owned by you~%" msgstr "fejl: mappen »~a« er ikke ejet af dig~%" -#: guix/scripts/package.scm:744 +#: guix/scripts/package.scm:774 #, scheme-format msgid "Please change the owner of `~a' to user ~s.~%" msgstr "Ændr venligst ejeren af »~a« til brugeren ~s.~%" -#: guix/scripts/package.scm:777 +#: guix/scripts/package.scm:804 #, scheme-format msgid "cannot switch to generation '~a'~%" msgstr "kan ikke skifte til generation »~a«~%" -#: guix/scripts/package.scm:809 guix/scripts/package.scm:910 -#, scheme-format -msgid "invalid syntax: ~a~%" -msgstr "ugyldig syntaks: ~a~%" - -#: guix/scripts/package.scm:846 +#: guix/scripts/package.scm:852 #, scheme-format msgid "nothing to be done~%" msgstr "intet at udføre~%" -#: guix/scripts/package.scm:861 +#: guix/scripts/package.scm:868 #, scheme-format msgid "~a package in profile~%" msgid_plural "~a packages in profile~%" msgstr[0] "~a pakke i profil~%" msgstr[1] "~a pakker i profil~%" -#: guix/scripts/package.scm:876 +#: guix/scripts/package.scm:883 #, scheme-format msgid "Generation ~a\t~a" msgstr "Generation ~a\t~a" -#: guix/scripts/package.scm:883 +#: guix/scripts/package.scm:890 #, scheme-format msgid "~a\t(current)~%" msgstr "~a\t(nuværende)~%" @@ -679,7 +722,7 @@ msgstr "" msgid "unrecognized option: ~a~%" msgstr "tilvalg blev ikke genkendt: ~a~%" -#: guix/scripts/hash.scm:134 guix/ui.scm:258 +#: guix/scripts/hash.scm:134 guix/ui.scm:318 #, scheme-format msgid "~a~%" msgstr "~a~%" @@ -689,6 +732,28 @@ msgstr "~a~%" msgid "wrong number of arguments~%" msgstr "forkert antal argumenter~%" +#: guix/scripts/import.scm:85 +msgid "" +"Usage: guix import IMPORTER ARGS ...\n" +"Run IMPORTER with ARGS.\n" +msgstr "" +"Brug: guix import IMPORTER ARG ...\n" +"Kør IMPORTER med ARG.\n" + +#: guix/scripts/import.scm:88 +msgid "IMPORTER must be one of the importers listed below:\n" +msgstr "IMPORTER skal være en af importørerne vist nedenfor:\n" + +#: guix/scripts/import.scm:101 +#, scheme-format +msgid "guix import: missing importer name~%" +msgstr "guix import: mangler importørnavn~%" + +#: guix/scripts/import.scm:112 +#, scheme-format +msgid "guix import: invalid importer~%" +msgstr "guix import: ugyldig importør~%" + #: guix/scripts/pull.scm:72 msgid "" "Usage: guix pull [OPTION]...\n" @@ -726,123 +791,123 @@ msgstr "udpakker »~a«...~%" msgid "failed to unpack source code" msgstr "kunne ikke udpakke kildekode" -#: guix/scripts/pull.scm:200 +#: guix/scripts/pull.scm:202 +msgid "Guix already up to date\n" +msgstr "Guix er allerede opdateret\n" + +#: guix/scripts/pull.scm:207 #, scheme-format msgid "updated ~a successfully deployed under `~a'~%" msgstr "opdaterede ~a der med succes blev udrullet undet »~a«~%" -#: guix/scripts/pull.scm:203 +#: guix/scripts/pull.scm:210 #, scheme-format msgid "failed to update Guix, check the build log~%" msgstr "kunne ikke opdatere Guix, kontroller byggeloggen~%" -#: guix/scripts/pull.scm:205 -msgid "Guix already up to date\n" -msgstr "Guix er allerede opdateret\n" - -#: guix/scripts/pull.scm:215 +#: guix/scripts/pull.scm:219 #, scheme-format msgid "~A: unexpected argument~%" msgstr "~A: uventet argument~%" -#: guix/scripts/pull.scm:224 +#: guix/scripts/pull.scm:228 msgid "failed to download up-to-date source, exiting\n" msgstr "kunne ikke hente opdateret kilde, afslutter\n" -#: guix/scripts/substitute-binary.scm:80 +#: guix/scripts/substitute.scm:81 #, scheme-format msgid "authentication and authorization of substitutes disabled!~%" msgstr "godkendelse og autorisation af substitutter er deaktiveret!~%" -#: guix/scripts/substitute-binary.scm:163 +#: guix/scripts/substitute.scm:157 #, scheme-format msgid "download from '~a' failed: ~a, ~s~%" msgstr "hent fra »~a« mislykkedes: ~a, ~s~%" -#: guix/scripts/substitute-binary.scm:178 +#: guix/scripts/substitute.scm:169 #, scheme-format msgid "while fetching ~a: server is somewhat slow~%" msgstr "under overførsel af ~a: server er noget langsom~%" -#: guix/scripts/substitute-binary.scm:180 +#: guix/scripts/substitute.scm:171 #, scheme-format msgid "try `--no-substitutes' if the problem persists~%" msgstr "prøv »--no-substitutes« hvis problemet fortsætter~%" -#: guix/scripts/substitute-binary.scm:221 +#: guix/scripts/substitute.scm:214 #, scheme-format -msgid "updating list of substitutes from '~a'...~%" -msgstr "opdaterer liste af substitutter fra »~a«...~%" +msgid "updating list of substitutes from '~a'...\r" +msgstr "opdaterer liste af substitutter fra »~a«...\r" -#: guix/scripts/substitute-binary.scm:253 +#: guix/scripts/substitute.scm:246 #, scheme-format msgid "signature version must be a number: ~s~%" msgstr "signaturversion skal være et nummer: ~s~%" -#: guix/scripts/substitute-binary.scm:257 +#: guix/scripts/substitute.scm:250 #, scheme-format msgid "unsupported signature version: ~a~%" msgstr "signaturversion er ikke understøttet: ~a~%" -#: guix/scripts/substitute-binary.scm:265 +#: guix/scripts/substitute.scm:258 #, scheme-format msgid "signature is not a valid s-expression: ~s~%" msgstr "signatur er ikke et gyldigt s-udtryk: ~s~%" -#: guix/scripts/substitute-binary.scm:269 +#: guix/scripts/substitute.scm:262 #, scheme-format msgid "invalid format of the signature field: ~a~%" msgstr "ugyldigt format for signaturfeltet: ~a~%" -#: guix/scripts/substitute-binary.scm:304 +#: guix/scripts/substitute.scm:297 #, scheme-format msgid "invalid signature for '~a'~%" msgstr "ugyldig signatur for »~a«~%" -#: guix/scripts/substitute-binary.scm:306 +#: guix/scripts/substitute.scm:299 #, scheme-format msgid "hash mismatch for '~a'~%" msgstr "hash mismatch for »~a«~%" -#: guix/scripts/substitute-binary.scm:308 +#: guix/scripts/substitute.scm:301 #, scheme-format msgid "'~a' is signed with an unauthorized key~%" msgstr "»~a« er underskrevet med en uautoriseret nøgle~%" -#: guix/scripts/substitute-binary.scm:310 +#: guix/scripts/substitute.scm:303 #, scheme-format msgid "signature on '~a' is corrupt~%" msgstr "signatur på »~a« er ødelagt~%" -#: guix/scripts/substitute-binary.scm:344 +#: guix/scripts/substitute.scm:341 #, scheme-format msgid "substitute at '~a' lacks a signature~%" msgstr "substitut på »~a« mangler en signatur~%" -#: guix/scripts/substitute-binary.scm:532 +#: guix/scripts/substitute.scm:504 #, scheme-format -msgid "Downloading, please wait...~%" -msgstr "Henter, vent venligst ...~%" +msgid "updating list of substitutes from '~a'... ~5,1f%" +msgstr "opdaterer liste af substitutter fra »~a«... ~5,1f%" -#: guix/scripts/substitute-binary.scm:534 +#: guix/scripts/substitute.scm:552 #, scheme-format -msgid "(Please consider upgrading Guile to get proper progress report.)~%" -msgstr "(Overvej venligst at opgradere Guile for at få korrekt statusrapport.)~%" +msgid "~s: unsupported server URI scheme~%" +msgstr "~s: ikke understøttet server-URI-skema~%" -#: guix/scripts/substitute-binary.scm:547 +#: guix/scripts/substitute.scm:663 #, scheme-format msgid "host name lookup error: ~a~%" msgstr "opslagsfejl for værtsnavn: ~a~%" -#: guix/scripts/substitute-binary.scm:556 +#: guix/scripts/substitute.scm:672 msgid "" -"Usage: guix substitute-binary [OPTION]...\n" +"Usage: guix substitute [OPTION]...\n" "Internal tool to substitute a pre-built binary to a local build.\n" msgstr "" -"Brug: guix substitute-binary [TILVALG]...\n" +"Brug: guix substitute [TILVALG] ...\n" "Internt værktøj til at erstatte en præbygget binær fil med en lokal bygning.\n" -#: guix/scripts/substitute-binary.scm:558 +#: guix/scripts/substitute.scm:674 msgid "" "\n" " --query report on the availability of substitutes for the\n" @@ -852,7 +917,7 @@ msgstr "" " --query rapport om tilgængeligheden for substitutter for\n" " lagerfilnavnene sendt til standardind" -#: guix/scripts/substitute-binary.scm:561 +#: guix/scripts/substitute.scm:677 msgid "" "\n" " --substitute STORE-FILE DESTINATION\n" @@ -864,21 +929,21 @@ msgstr "" " hent LAGER-FIL og lagr den som en Nar i filen\n" " DESTINATION" -#: guix/scripts/substitute-binary.scm:606 +#: guix/scripts/substitute.scm:712 msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n" msgstr "ACL for arkivimporter ser ikke ud til at være initialiseret, substitutter kan være utilgængelige\n" -#: guix/scripts/substitute-binary.scm:640 +#: guix/scripts/substitute.scm:750 #, scheme-format msgid "these substitute URLs will not be used:~{ ~a~}~%" msgstr "disse substitutadresser vil ikke blive brugt:~{ ~a~}~%" -#: guix/scripts/substitute-binary.scm:666 +#: guix/scripts/substitute.scm:776 #, scheme-format msgid "failed to look up host '~a' (~a), substituter disabled~%" msgstr "kunne ikke slå vært op »~a« (~a), substitutter deaktiveret~%" -#: guix/scripts/substitute-binary.scm:777 +#: guix/scripts/substitute.scm:883 #, scheme-format msgid "~a: unrecognized options~%" msgstr "~a: ikke genkendte tilvalg~%" @@ -903,7 +968,7 @@ msgstr "fejl: ikke autoriseret offentlig nøgle: ~a~%" msgid "error: corrupt signature data: ~a~%" msgstr "fejl: ødelagt signaturdata: ~a~%" -#: guix/scripts/authenticate.scm:126 +#: guix/scripts/authenticate.scm:120 msgid "" "Usage: guix authenticate OPTION...\n" "Sign or verify the signature on the given file. This tool is meant to\n" @@ -913,56 +978,41 @@ msgstr "" "Underskriv eller verificer signaturen på den givne fil. Dette værktøj skal\n" "bruges internt af »guix-daemon«.\n" -#: guix/scripts/authenticate.scm:132 +#: guix/scripts/authenticate.scm:126 msgid "wrong arguments" msgstr "forkerte argumenter" -#: guix/scripts/system.scm:75 -#, scheme-format -msgid "failed to open operating system file '~a': ~a~%" -msgstr "kunne ikke åbne operativsystemfil »~a«: ~a~%" - -#: guix/scripts/system.scm:79 -#, scheme-format -msgid "~a: error: ~a~%" -msgstr "~a: fejl: ~a~%" - -#: guix/scripts/system.scm:83 -#, scheme-format -msgid "failed to load operating system file '~a':~%" -msgstr "kunne ikke indlæse operativsystemfil »~a«:~%" - -#: guix/scripts/system.scm:120 +#: guix/scripts/system.scm:106 #, scheme-format msgid "failed to register '~a' under '~a'~%" msgstr "kunne ikke registrere »~a« under »~a«~%" -#: guix/scripts/system.scm:152 +#: guix/scripts/system.scm:138 #, scheme-format msgid "failed to install GRUB on device '~a'~%" msgstr "kunne ikke installere GRUB på enhed »~a«~%" -#: guix/scripts/system.scm:169 +#: guix/scripts/system.scm:155 #, scheme-format msgid "initializing the current root file system~%" msgstr "initialiserer det nuværende root-filsystem~%" -#: guix/scripts/system.scm:223 +#: guix/scripts/system.scm:209 #, scheme-format msgid "activating system...~%" msgstr "aktiverer system ...~%" -#: guix/scripts/system.scm:273 +#: guix/scripts/system.scm:259 #, scheme-format msgid "unrecognized boot parameters for '~a'~%" msgstr "ikke genkendte opstartsparametre for »~a«~%" -#: guix/scripts/system.scm:369 +#: guix/scripts/system.scm:355 #, scheme-format msgid "initializing operating system under '~a'...~%" msgstr "initialiserer operativsystem under »~a«...~%" -#: guix/scripts/system.scm:385 +#: guix/scripts/system.scm:371 msgid "" "Usage: guix system [OPTION] ACTION FILE\n" "Build the operating system declared in FILE according to ACTION.\n" @@ -970,35 +1020,35 @@ msgstr "" "Brug: guix system [TILVALG] HANDLING FIL\n" "Byg operativsystemet deklæret i FIL jævnfør HANDLING.\n" -#: guix/scripts/system.scm:388 +#: guix/scripts/system.scm:374 msgid "The valid values for ACTION are:\n" msgstr "De gyldige værdier for HANDLING er:\n" -#: guix/scripts/system.scm:389 +#: guix/scripts/system.scm:375 msgid " - 'reconfigure', switch to a new operating system configuration\n" msgstr " - »reconfigure«, skift til en ny operativsystemkonfiguration\n" -#: guix/scripts/system.scm:391 +#: guix/scripts/system.scm:377 msgid " - 'build', build the operating system without installing anything\n" msgstr " - »build«, byg operativsystemet uden at installere noget\n" -#: guix/scripts/system.scm:393 +#: guix/scripts/system.scm:379 msgid " - 'vm', build a virtual machine image that shares the host's store\n" msgstr " - »vm«, byg et virtuelt maskinaftryk som deler værtens lager\n" -#: guix/scripts/system.scm:395 +#: guix/scripts/system.scm:381 msgid " - 'vm-image', build a freestanding virtual machine image\n" msgstr " - »vm-image«, byg et fritstående virtuelt maskinaftryk\n" -#: guix/scripts/system.scm:397 +#: guix/scripts/system.scm:383 msgid " - 'disk-image', build a disk image, suitable for a USB stick\n" msgstr " - »disk-image«, byg et diskaftryk, egnet for et USB-drev\n" -#: guix/scripts/system.scm:399 +#: guix/scripts/system.scm:385 msgid " - 'init', initialize a root file system to run GNU.\n" msgstr " - »init«, initialiser et rootfilsystem til at køre GNU.\n" -#: guix/scripts/system.scm:403 +#: guix/scripts/system.scm:389 msgid "" "\n" " --image-size=SIZE for 'vm-image', produce an image of SIZE" @@ -1006,7 +1056,7 @@ msgstr "" "\n" " --image-size=STR for »vm-image«, lav et aftryk af STR" -#: guix/scripts/system.scm:405 +#: guix/scripts/system.scm:391 msgid "" "\n" " --no-grub for 'init', do not install GRUB" @@ -1014,7 +1064,7 @@ msgstr "" "\n" " --no-grub for »init«, installer ikke GRUB" -#: guix/scripts/system.scm:407 +#: guix/scripts/system.scm:393 msgid "" "\n" " --share=SPEC for 'vm', share host file system according to SPEC" @@ -1022,7 +1072,7 @@ msgstr "" "\n" " --share=SPEC for »vm«, del værtsfilsystem jævnfør SPEC" -#: guix/scripts/system.scm:409 +#: guix/scripts/system.scm:395 msgid "" "\n" " --expose=SPEC for 'vm', expose host file system according to SPEC" @@ -1030,7 +1080,7 @@ msgstr "" "\n" " --expose=SPEC for »vm«, fremvis værtsfilsystem jævnfør SPEC" -#: guix/scripts/system.scm:411 +#: guix/scripts/system.scm:397 msgid "" "\n" " --full-boot for 'vm', make a full boot sequence" @@ -1038,36 +1088,36 @@ msgstr "" "\n" " --full-boot for »vm«, lav en fuld opstartssekvens" -#: guix/scripts/system.scm:507 +#: guix/scripts/system.scm:484 #, scheme-format msgid "~a: unknown action~%" msgstr "~a: ukendt handling~%" -#: guix/scripts/system.scm:524 +#: guix/scripts/system.scm:499 #, scheme-format msgid "wrong number of arguments for action '~a'~%" msgstr "forkert antal argumenter for handling »~a«~%" -#: guix/scripts/system.scm:544 +#: guix/scripts/system.scm:522 #, scheme-format msgid "no configuration file specified~%" msgstr "ingen konfigurationsfil angivet~%" -#: guix/scripts/lint.scm:82 +#: guix/scripts/lint.scm:90 #, scheme-format msgid "Available checkers:~%" msgstr "Tilgængelige kontrolprogrammer:~%" -#: guix/scripts/lint.scm:102 +#: guix/scripts/lint.scm:110 msgid "description should not be empty" msgstr "beskrivelse skal være udfyldt" -#: guix/scripts/lint.scm:109 +#: guix/scripts/lint.scm:117 msgid "description should start with an upper-case letter or digit" msgstr "beskrivelse skal starte med et stort bogstav eller et tal" # arg, hvad foregår der her -#: guix/scripts/lint.scm:125 +#: guix/scripts/lint.scm:133 #, scheme-format msgid "" "sentences in description should be followed ~\n" @@ -1076,101 +1126,115 @@ msgstr "" "sætninger i beskrivelsen skal efterfølges ~\n" "af to mellemrum; mulig infraction~p ved ~{~a~^, ~}" -#: guix/scripts/lint.scm:146 +#: guix/scripts/lint.scm:154 msgid "pkg-config should probably be a native input" msgstr "pkg-config skal sandsynligvis være standarddata" -#: guix/scripts/lint.scm:161 +#: guix/scripts/lint.scm:169 msgid "synopsis should not be empty" msgstr "synopsis skal være udfyldt" -#: guix/scripts/lint.scm:169 +#: guix/scripts/lint.scm:177 msgid "no period allowed at the end of the synopsis" msgstr "ingen periode er tilladt i slutningen af synopsen" -#: guix/scripts/lint.scm:181 +#: guix/scripts/lint.scm:189 msgid "no article allowed at the beginning of the synopsis" msgstr "ingen artikel er tilladt i begyndelsen af synopsen" -#: guix/scripts/lint.scm:188 +#: guix/scripts/lint.scm:196 msgid "synopsis should be less than 80 characters long" msgstr "synopsis skal være mindre end 80 tegn lang" -#: guix/scripts/lint.scm:194 +#: guix/scripts/lint.scm:202 msgid "synopsis should start with an upper-case letter or digit" msgstr "synopsis skal starte med et stort bogstav eller et tal" -#: guix/scripts/lint.scm:201 +#: guix/scripts/lint.scm:209 msgid "synopsis should not start with the package name" msgstr "synopsis skal ikke starte med pakkenavnet" -#: guix/scripts/lint.scm:270 +#: guix/scripts/lint.scm:299 guix/scripts/lint.scm:310 #, scheme-format msgid "URI ~a not reachable: ~a (~s)" msgstr "URI ~a kan ikke nås: ~a (~s)" -#: guix/scripts/lint.scm:278 +#: guix/scripts/lint.scm:316 #, scheme-format msgid "URI ~a domain not found: ~a" msgstr "URI ~a domæne blev ikke fundet: ~a" -#: guix/scripts/lint.scm:286 +#: guix/scripts/lint.scm:324 #, scheme-format msgid "URI ~a unreachable: ~a" msgstr "URI ~a kan ikke nås: ~a" -#: guix/scripts/lint.scm:312 +#: guix/scripts/lint.scm:350 msgid "invalid value for home page" msgstr "ugyldig værdi for hjemmeside" -#: guix/scripts/lint.scm:315 +#: guix/scripts/lint.scm:353 #, scheme-format msgid "invalid home page URL: ~s" msgstr "ugyldig hjemmesideadresse: ~s" -#: guix/scripts/lint.scm:336 +#: guix/scripts/lint.scm:378 msgid "file names of patches should start with the package name" msgstr "filnavn for rettelser skal starte med pakkenavnet" -#: guix/scripts/lint.scm:374 +#: guix/scripts/lint.scm:416 #, scheme-format msgid "~a: ~a: proposed synopsis: ~s~%" msgstr "~a: ~a: foreslået synopsis: ~s~%" -#: guix/scripts/lint.scm:386 +#: guix/scripts/lint.scm:428 #, scheme-format msgid "~a: ~a: proposed description:~% \"~a\"~%" msgstr "~a: ~a: foreslået beskrivelse:~% »~a«~%" -#: guix/scripts/lint.scm:415 +#: guix/scripts/lint.scm:453 guix/scripts/lint.scm:457 +#, scheme-format +msgid "failed to create derivation: ~a" +msgstr "kunne ikke oprette afledning: ~a" + +#: guix/scripts/lint.scm:463 +#, scheme-format +msgid "failed to create derivation: ~s~%" +msgstr "kunne ikke oprette afledning: ~s~%" + +#: guix/scripts/lint.scm:476 msgid "Validate package descriptions" msgstr "Valider pakkebeskrivelser" -#: guix/scripts/lint.scm:419 +#: guix/scripts/lint.scm:480 msgid "Validate synopsis & description of GNU packages" msgstr "Valider synopsis og beskrivelse for GNU-pakker" -#: guix/scripts/lint.scm:423 +#: guix/scripts/lint.scm:484 msgid "Identify inputs that should be native inputs" msgstr "Identificer inddata som skal være standarddata" -#: guix/scripts/lint.scm:427 -msgid "Validate file names of patches" -msgstr "Valider filnavne for rettelser" +#: guix/scripts/lint.scm:488 +msgid "Validate file names and availability of patches" +msgstr "Valider filnavne og tilgængelighed for rettelser" -#: guix/scripts/lint.scm:431 +#: guix/scripts/lint.scm:492 msgid "Validate home-page URLs" msgstr "Valider hjemmesiders adresser" -#: guix/scripts/lint.scm:435 +#: guix/scripts/lint.scm:496 msgid "Validate source URLs" msgstr "Valider kildeadresser" -#: guix/scripts/lint.scm:439 +#: guix/scripts/lint.scm:500 +msgid "Report failure to compile a package to a derivation" +msgstr "Rapporter mislykket kompilering af en pakke til en afledning" + +#: guix/scripts/lint.scm:504 msgid "Validate package synopses" msgstr "Valider pakkesynopser" -#: guix/scripts/lint.scm:464 +#: guix/scripts/lint.scm:529 msgid "" "Usage: guix lint [OPTION]... [PACKAGE]...\n" "Run a set of checkers on the specified package; if none is specified, run the checkers on all packages.\n" @@ -1178,7 +1242,7 @@ msgstr "" "Brug: guix lint [TILVALG]... [PAKKE]...\n" "Kør et sæt af kontroller på den specificerede pakke; hvis ingen er specificeret, så kør kontrollerne på alle pakker.\n" -#: guix/scripts/lint.scm:466 +#: guix/scripts/lint.scm:531 msgid "" "\n" " -c, --checkers=CHECKER1,CHECKER2...\n" @@ -1188,7 +1252,7 @@ msgstr "" " -c, --checkers=KONTROL1,KONTROL2...\n" " kør kun de specificerede kontroller" -#: guix/scripts/lint.scm:471 +#: guix/scripts/lint.scm:536 msgid "" "\n" " -l, --list-checkers display the list of available lint checkers" @@ -1196,49 +1260,104 @@ msgstr "" "\n" " -l, --list-checkers vis listen med tilgængelige lint-kontroller" -#: guix/scripts/lint.scm:491 +#: guix/scripts/lint.scm:556 #, scheme-format msgid "~a: invalid checker~%" msgstr "~a: ugyldig kontrol~%" -#: guix/gnu-maintenance.scm:438 +#: guix/scripts/publish.scm:49 +#, scheme-format +msgid "" +"Usage: guix publish [OPTION]...\n" +"Publish ~a over HTTP.\n" +msgstr "" +"Brug: guix publish [TILVALG] ...\n" +"Udgiv ~a over HTTP.\n" + +#: guix/scripts/publish.scm:51 +msgid "" +"\n" +" -p, --port=PORT listen on PORT" +msgstr "" +"\n" +" -p, --port=PORT lyt på PORT" + +#: guix/scripts/publish.scm:53 +msgid "" +"\n" +" -r, --repl[=PORT] spawn REPL server on PORT" +msgstr "" +"\n" +" -r, --repl[=PORT] udsend REPL-server on PORT" + +#: guix/scripts/publish.scm:235 +#, scheme-format +msgid "~A: extraneuous argument~%" +msgstr "~A: uvedkommende argument~%" + +#: guix/scripts/publish.scm:239 +#, scheme-format +msgid "publishing ~a on port ~d~%" +msgstr "udgiver ~a på port ~d~%" + +#: guix/gnu-maintenance.scm:447 #, scheme-format msgid "signature verification failed for `~a'~%" msgstr "signaturverifikation mislykkedes for »~a«~%" -#: guix/gnu-maintenance.scm:440 +#: guix/gnu-maintenance.scm:449 #, scheme-format msgid "(could be because the public key is not in your keyring)~%" msgstr "(kunne være fordi den offentlige nøgle ikke er i din nøglering)~%" -#: guix/gnu-maintenance.scm:515 +#: guix/gnu-maintenance.scm:524 #, scheme-format msgid "~a: could not locate source file" msgstr "~a: kunne ikke lokalisere kildefil" -#: guix/gnu-maintenance.scm:520 +#: guix/gnu-maintenance.scm:529 #, scheme-format msgid "~a: ~a: no `version' field in source; skipping~%" msgstr "~a: ~a: intet »versionsfelt« i kilde; udelader~%" -#: guix/ui.scm:137 +#: guix/ui.scm:142 guix/ui.scm:159 +#, scheme-format +msgid "failed to load '~a': ~a~%" +msgstr "kunne ikke indlæse »~a«: ~a~%" + +#: guix/ui.scm:145 +#, scheme-format +msgid "~a: error: ~a~%" +msgstr "~a: fejl: ~a~%" + +#: guix/ui.scm:149 guix/ui.scm:165 +#, scheme-format +msgid "failed to load '~a':~%" +msgstr "kunne ikke indlæse »~a«:~%" + +#: guix/ui.scm:162 +#, scheme-format +msgid "~a: warning: ~a~%" +msgstr "~a: advarsel: ~a~%" + +#: guix/ui.scm:174 #, scheme-format msgid "failed to install locale: ~a~%" msgstr "kunne ikke installere sprog: ~a~%" -#: guix/ui.scm:156 +#: guix/ui.scm:193 msgid "" -"Copyright (C) 2014 the Guix authors\n" +"Copyright (C) 2015 the Guix authors\n" "License GPLv3+: GNU GPL version 3 or later \n" "This is free software: you are free to change and redistribute it.\n" "There is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -"Ophavsret 2014 Guix-forfatterne\n" +"Ophavsret 2015 Guix-forfatterne\n" "Licens GPLv3+: GNU GPL version 3 eller senere \n" "Dette er et frit program; du kan frit ændre og videredistribuere programmet.\n" "Der er INGEN GARANTI, inden for lovens rammer.\n" -#: guix/ui.scm:164 +#: guix/ui.scm:201 #, scheme-format msgid "" "\n" @@ -1247,7 +1366,7 @@ msgstr "" "\n" "Rapporter fejl til: ~a." -#: guix/ui.scm:166 +#: guix/ui.scm:203 #, scheme-format msgid "" "\n" @@ -1256,7 +1375,7 @@ msgstr "" "\n" "~a hjemmeside: <~a>" -#: guix/ui.scm:168 +#: guix/ui.scm:205 msgid "" "\n" "General help using GNU software: " @@ -1264,170 +1383,194 @@ msgstr "" "\n" "Generel hjælp til brugen af GNU-programmer: " -#: guix/ui.scm:175 +#: guix/ui.scm:227 #, scheme-format msgid "~a: invalid number~%" msgstr "~a: ugyldigt nummer~%" -#: guix/ui.scm:192 +#: guix/ui.scm:244 #, scheme-format msgid "invalid number: ~a~%" msgstr "ugyldigt nummer: ~a~%" -#: guix/ui.scm:215 +#: guix/ui.scm:267 #, scheme-format msgid "unknown unit: ~a~%" msgstr "ukendt enhed: ~a~%" -#: guix/ui.scm:226 +#: guix/ui.scm:278 #, scheme-format msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%" msgstr "~a:~a:~a: pakken »~a« har ugyldige inddata: ~s~%" -#: guix/ui.scm:233 +#: guix/ui.scm:285 #, scheme-format msgid "~a: ~a: build system `~a' does not support cross builds~%" msgstr "~a: ~a: byggesystem »~a« understøtter ikke krydsbygninger~%" -#: guix/ui.scm:238 +#: guix/ui.scm:290 #, scheme-format msgid "profile '~a' does not exist~%" msgstr "profilen »~a« findes ikke~%" -#: guix/ui.scm:241 +#: guix/ui.scm:293 #, scheme-format msgid "generation ~a of profile '~a' does not exist~%" msgstr "oprettelse ~a af profilen »~a« findes ikke~%" -#: guix/ui.scm:245 +#: guix/ui.scm:300 +#, scheme-format +msgid "corrupt input while restoring '~a' from ~s~%" +msgstr "ødelagte inddata under gendannelse af »~a« fra ~s~%" + +#: guix/ui.scm:302 +#, scheme-format +msgid "corrupt input while restoring archive from ~s~%" +msgstr "ødelagte inddata under gendannelse af arkiv fra ~s~%" + +#: guix/ui.scm:305 #, scheme-format msgid "failed to connect to `~a': ~a~%" msgstr "kunne ikke forbinde til »~a«: ~a~%" -#: guix/ui.scm:250 +#: guix/ui.scm:310 #, scheme-format msgid "build failed: ~a~%" msgstr "bygning mislykkedes: ~a~%" -#: guix/ui.scm:253 +#: guix/ui.scm:313 #, scheme-format msgid "reference to invalid output '~a' of derivation '~a'~%" msgstr "reference til ugyldige uddata »~a« for afledning »~a«~%" -#: guix/ui.scm:264 +#: guix/ui.scm:324 #, scheme-format msgid "~a: ~a~%" msgstr "~a: ~a~%" -#: guix/ui.scm:283 +#: guix/ui.scm:343 #, scheme-format msgid "failed to read expression ~s: ~s~%" msgstr "kunne ikke læse udtryk ~s: ~s~%" -#: guix/ui.scm:289 +#: guix/ui.scm:349 #, scheme-format msgid "failed to evaluate expression `~a': ~s~%" msgstr "kunne ikke evaluere udtryk »~a«: ~s~%" -#: guix/ui.scm:298 +#: guix/ui.scm:358 #, scheme-format msgid "expression ~s does not evaluate to a package~%" msgstr "udtryk ~s evaluerer ikke til en pakke~%" -#: guix/ui.scm:350 +#: guix/ui.scm:410 #, scheme-format msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following derivations would be built:~%~{ ~a~%~}~;~]" msgstr[0] "~:[Den følgende afledning ville blive bygget:~%~{ ~a~%~}~;~]" msgstr[1] "~:[De følgende afledninger ville blive bygget:~%~{ ~a~%~}~;~]" -#: guix/ui.scm:355 +#: guix/ui.scm:415 #, scheme-format msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following files would be downloaded:~%~{ ~a~%~}~;~]" msgstr[0] "~:[Den følgende fil ville blive hentet:~%~{ ~a~%~}~;~]" msgstr[1] "~:[De følgende filer ville blive hentet:~%~{ ~a~%~}~;~]" -#: guix/ui.scm:361 +#: guix/ui.scm:421 #, scheme-format msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following derivations will be built:~%~{ ~a~%~}~;~]" msgstr[0] "~:[Den følgende afledning vil blive bygget:~%~{ ~a~%~}~;~]" msgstr[1] "~:[De følgende afledninger vil blive bygget:~%~{ ~a~%~}~;~]" -#: guix/ui.scm:366 +#: guix/ui.scm:426 #, scheme-format msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following files will be downloaded:~%~{ ~a~%~}~;~]" msgstr[0] "~:[Den følgende fil vil blive hentet:~%~{ ~a~%~}~;~]" msgstr[1] "~:[De følgende filer vil blive hentet:~%~{ ~a~%~}~;~]" -#: guix/ui.scm:418 +#: guix/ui.scm:478 #, scheme-format msgid "The following package would be removed:~%~{~a~%~}~%" msgid_plural "The following packages would be removed:~%~{~a~%~}~%" msgstr[0] "Den følgende pakke ville blive fjernet:~%~{~a~%~}~%" msgstr[1] "De følgende pakker ville blive fjernet:~%~{~a~%~}~%" -#: guix/ui.scm:423 +#: guix/ui.scm:483 #, scheme-format msgid "The following package will be removed:~%~{~a~%~}~%" msgid_plural "The following packages will be removed:~%~{~a~%~}~%" msgstr[0] "Den følgende pakke vil blive fjernet:~%~{~a~%~}~%" msgstr[1] "De følgende pakker vil blive fjernet:~%~{~a~%~}~%" -#: guix/ui.scm:436 +#: guix/ui.scm:496 +#, scheme-format +msgid "The following package would be downgraded:~%~{~a~%~}~%" +msgid_plural "The following packages would be downgraded:~%~{~a~%~}~%" +msgstr[0] "Den følgende pakke ville blive nedgraderet:~%~{~a~%~}~%" +msgstr[1] "De følgende pakker ville blive nedgraderet:~%~{~a~%~}~%" + +#: guix/ui.scm:501 +#, scheme-format +msgid "The following package will be downgraded:~%~{~a~%~}~%" +msgid_plural "The following packages will be downgraded:~%~{~a~%~}~%" +msgstr[0] "Den følgende pakke vil blive nedgraderet:~%~{~a~%~}~%" +msgstr[1] "De følgende pakker vil blive nedgraderet:~%~{~a~%~}~%" + +#: guix/ui.scm:514 #, scheme-format msgid "The following package would be upgraded:~%~{~a~%~}~%" msgid_plural "The following packages would be upgraded:~%~{~a~%~}~%" msgstr[0] "Den følgende pakke ville blive opgraderet:~%~{~a~%~}~%" msgstr[1] "De følgende pakker ville blive opgraderet:~%~{~a~%~}~%" -#: guix/ui.scm:441 +#: guix/ui.scm:519 #, scheme-format msgid "The following package will be upgraded:~%~{~a~%~}~%" msgid_plural "The following packages will be upgraded:~%~{~a~%~}~%" msgstr[0] "Den følgende pakke vil blive opgraderet:~%~{~a~%~}~%" msgstr[1] "De følgende pakker vil blive opgraderet:~%~{~a~%~}~%" -#: guix/ui.scm:452 +#: guix/ui.scm:530 #, scheme-format msgid "The following package would be installed:~%~{~a~%~}~%" msgid_plural "The following packages would be installed:~%~{~a~%~}~%" msgstr[0] "Den følgende pakke ville blive installeret:~%~{~a~%~}~%" msgstr[1] "De følgende pakker ville blive installeret:~%~{~a~%~}~%" -#: guix/ui.scm:457 +#: guix/ui.scm:535 #, scheme-format msgid "The following package will be installed:~%~{~a~%~}~%" msgid_plural "The following packages will be installed:~%~{~a~%~}~%" msgstr[0] "Den følgende pakke vil blive installeret:~%~{~a~%~}~%" msgstr[1] "De følgende pakker vil blive installeret:~%~{~a~%~}~%" -#: guix/ui.scm:474 +#: guix/ui.scm:552 msgid "" msgstr "" -#: guix/ui.scm:500 +#: guix/ui.scm:578 #, scheme-format msgid "failed to create configuration directory `~a': ~a~%" msgstr "kunne ikke oprette konfiguratinsmappe »~a«: ~a~%" -#: guix/ui.scm:600 guix/ui.scm:614 +#: guix/ui.scm:680 guix/ui.scm:694 msgid "unknown" msgstr "ukendt" -#: guix/ui.scm:723 +#: guix/ui.scm:803 #, scheme-format msgid "invalid argument: ~a~%" msgstr "ugyldigt argument: ~a~%" -#: guix/ui.scm:732 +#: guix/ui.scm:842 #, scheme-format msgid "Try `guix --help' for more information.~%" msgstr "Prøv »guix --help« for yderligere information.~%" -#: guix/ui.scm:762 +#: guix/ui.scm:869 msgid "" "Usage: guix COMMAND ARGS...\n" "Run COMMAND with ARGS.\n" @@ -1435,41 +1578,31 @@ msgstr "" "Brug: guix KOMMANDO ARG...\n" "Kør KOMMANDO med ARG.\n" -#: guix/ui.scm:765 +#: guix/ui.scm:872 msgid "COMMAND must be one of the sub-commands listed below:\n" msgstr "KOMMANDO skal være en af underkommandoerne vist nedenfor:\n" -#: guix/ui.scm:785 +#: guix/ui.scm:892 #, scheme-format msgid "guix: ~a: command not found~%" msgstr "guix: ~a: kommando blev ikke fundet~%" -#: guix/ui.scm:803 +#: guix/ui.scm:910 #, scheme-format msgid "guix: missing command name~%" msgstr "guix: mangler kommandonavn~%" -#: guix/ui.scm:811 +#: guix/ui.scm:918 #, scheme-format msgid "guix: unrecognized option '~a'~%" msgstr "guix: ikke genkendt tilvalg »~a«~%" -#: guix/http-client.scm:217 -#, scheme-format -msgid "using Guile ~a, which does not support ~s encoding~%" -msgstr "bruger Guile ~a, som ikke understøtter ~s-kodning~%" - -#: guix/http-client.scm:220 -#, scheme-format -msgid "download failed; use a newer Guile~%" -msgstr "overførsel mislykkedes; brug en nyere Guile~%" - -#: guix/http-client.scm:232 +#: guix/http-client.scm:211 #, scheme-format msgid "following redirection to `~a'...~%" msgstr "følger omdirigering til »~a«...~%" -#: guix/http-client.scm:241 +#: guix/http-client.scm:220 msgid "download failed" msgstr "overførsel mislykkedes" @@ -1514,3 +1647,21 @@ msgstr "importeret fil mangler en signatur" #: guix/nar.scm:268 msgid "invalid inter-file archive mark" msgstr "ugyldig arkivmærke for mellemfil" + +#~ msgid "Downloading, please wait...~%" +#~ msgstr "Henter, vent venligst ...~%" + +#~ msgid "(Please consider upgrading Guile to get proper progress report.)~%" +#~ msgstr "(Overvej venligst at opgradere Guile for at få korrekt statusrapport.)~%" + +#~ msgid "failed to open operating system file '~a': ~a~%" +#~ msgstr "kunne ikke åbne operativsystemfil »~a«: ~a~%" + +#~ msgid "failed to load operating system file '~a':~%" +#~ msgstr "kunne ikke indlæse operativsystemfil »~a«:~%" + +#~ msgid "using Guile ~a, which does not support ~s encoding~%" +#~ msgstr "bruger Guile ~a, som ikke understøtter ~s-kodning~%" + +#~ msgid "download failed; use a newer Guile~%" +#~ msgstr "overførsel mislykkedes; brug en nyere Guile~%" -- cgit v1.2.3 From f6154eb59b3761f018887d1d53c8fee15927dd17 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 15 May 2015 15:06:18 +0200 Subject: gnu: m4: Disable tests when cross-compiling. Reported by Manolis Ragkousis at . * gnu/packages/m4.scm (m4)[arguments]: Change #:tests? condition. --- gnu/packages/m4.scm | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/gnu/packages/m4.scm b/gnu/packages/m4.scm index b3b3a00fde..d1ba928768 100644 --- a/gnu/packages/m4.scm +++ b/gnu/packages/m4.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013 Ludovic Courtès +;;; Copyright © 2012, 2013, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,11 +36,10 @@ "0w0da1chh12mczxa5lnwzjk9czi3dq6gnnndbpa6w4rj76b1yklf")))) (build-system gnu-build-system) (arguments - ;; XXX: Disable tests on those platforms with know issues. - `(#:tests? ,(not (member (%current-system) - '("x86_64-darwin" - "i686-cygwin" - "i686-sunos"))) + `(;; Explicitly disable tests when cross-compiling, otherwise 'make check' + ;; proceeds and fails, unsurprisingly. + #:tests? ,(not (%current-target-system)) + #:phases (alist-cons-before 'check 'pre-check (lambda* (#:key inputs #:allow-other-keys) -- cgit v1.2.3 From 12f8f9bb3e10d049d242bb005787c1d417f0404a Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 29 Apr 2015 15:04:09 +0200 Subject: gnu: Add python-scikit-image. * gnu/packages/python.scm (python-scikit-image, python2-scikit-image): New variables. --- gnu/packages/python.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 848a53d1d9..3b9298e6e2 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -2065,6 +2065,45 @@ mining and data analysis.") (alist-delete "python-scipy" (package-propagated-inputs scikit)))))))) +(define-public python-scikit-image + (package + (name "python-scikit-image") + (version "0.11.3") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/s/scikit-image/scikit-image-" + version ".tar.gz")) + (sha256 + (base32 "0jz416fqvpahqyffw8plmszzfj669w8wvf3y9clnr5lr6a7md3kn")))) + (build-system python-build-system) + (propagated-inputs + `(("python-matplotlib" ,python-matplotlib) + ("python-networkx" ,python-networkx) + ("python-numpy" ,python-numpy) + ("python-scipy" ,python-scipy) + ("python-six" ,python-six) + ("python-pillow" ,python-pillow))) + (native-inputs + `(("python-cython" ,python-cython) + ("python-setuptools" ,python-setuptools))) + (home-page "http://scikit-image.org/") + (synopsis "Image processing in Python") + (description + "scikit-image is a collection of algorithms for image processing.") + (license bsd-3))) + +(define-public python2-scikit-image + (let ((scikit-image (package-with-python2 python-scikit-image))) + (package (inherit scikit-image) + (native-inputs + `(("python2-mock" ,python2-mock) + ,@(package-native-inputs scikit-image))) + (propagated-inputs + `(("python2-pytz" ,python2-pytz) + ,@(package-propagated-inputs scikit-image)))))) + (define-public python-cython (package (name "python-cython") -- cgit v1.2.3 From d072efcb6d58b580dc94267526d35780ad8e0417 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 29 Apr 2015 15:14:56 +0200 Subject: gnu: Add python-pandas. * gnu/packages/python.scm (python-pandas, python2-pandas): New variables. --- gnu/packages/python.scm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 3b9298e6e2..f876ccfca8 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -628,6 +628,44 @@ datetime module, available in Python 2.3+.") "Parse human-readable date/time text") (license asl2.0))) +(define-public python-pandas + (package + (name "python-pandas") + (version "0.16.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/p/" + "pandas/pandas-" version ".tar.gz")) + (sha256 + (base32 "1wfrp8dx1zcsry6f09ndza6qm1yr7f163211f4l9vjlnhxpxw4s0")))) + (build-system python-build-system) + (arguments + `(;; Three tests fail: + ;; - test_read_google + ;; - test_read_yahoo + ;; - test_month_range_union_tz_dateutil + #:tests? #f)) + (propagated-inputs + `(("python-numpy" ,python-numpy) + ("python-pytz" ,python-pytz) + ("python-dateutil" ,python-dateutil-2))) + (native-inputs + `(("python-nose" ,python-nose) + ("python-setuptools" ,python-setuptools))) + (home-page "http://pandas.pydata.org") + (synopsis "Data structures for data analysis, time series, and statistics") + (description + "Pandas is a Python package providing fast, flexible, and expressive data +structures designed to make working with structured (tabular, +multidimensional, potentially heterogeneous) and time series data both easy +and intuitive. It aims to be the fundamental high-level building block for +doing practical, real world data analysis in Python.") + (license bsd-3))) + +(define-public python2-pandas + (package-with-python2 python-pandas)) + (define-public python-tzlocal (package (name "python-tzlocal") -- cgit v1.2.3 From 35de1fbd909d0365ed20fe91e2815a35a74cdabe Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 29 Apr 2015 15:19:38 +0200 Subject: gnu: Add python-seaborn. * gnu/packages/python.scm (python-seaborn, python2-seaborn): New variables. --- gnu/packages/python.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index f876ccfca8..e771e170d2 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -3523,6 +3523,41 @@ providing a clean and modern domain specific specification language (DSL) in Python style, together with a fast and comfortable execution environment.") (license license:expat))) +(define-public python-seaborn + (package + (name "python-seaborn") + (version "0.5.1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/s/seaborn/seaborn-" + version ".tar.gz")) + (sha256 + (base32 "1236abw18ijjglmv60q85ckqrvgf5qyy4zlq7nz5aqfg6q87z3wc")))) + (build-system python-build-system) + (propagated-inputs + `(("python-pandas" ,python-pandas) + ("python-matplotlib" ,python-matplotlib) + ("python-scipy" ,python-scipy))) + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (home-page "http://stanford.edu/~mwaskom/software/seaborn/") + (synopsis "Statistical data visualization") + (description + "Seaborn is a library for making attractive and informative statistical +graphics in Python. It is built on top of matplotlib and tightly integrated +with the PyData stack, including support for numpy and pandas data structures +and statistical routines from scipy and statsmodels.") + (license bsd-3))) + +(define-public python2-seaborn + (let ((seaborn (package-with-python2 python-seaborn))) + (package (inherit seaborn) + (propagated-inputs + `(("python2-pytz" ,python2-pytz) + ,@(package-propagated-inputs seaborn)))))) + (define-public python-sympy (package (name "python-sympy") -- cgit v1.2.3 From fefd841887affda863ba03ad8f933f423302ac8f Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Fri, 15 May 2015 10:59:44 +0200 Subject: gnu: busybox: Parameterize reference to /gnu/store. * gnu/packages/busybox.scm (busybox): Call %store-directory instead of referencing "/gnu/store" directly. --- gnu/packages/busybox.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/busybox.scm b/gnu/packages/busybox.scm index d200cd7ad5..13630b39dc 100644 --- a/gnu/packages/busybox.scm +++ b/gnu/packages/busybox.scm @@ -53,8 +53,9 @@ ;; There is no /usr/bin or /bin - replace it with /gnu/store (substitute* "testsuite/cpio.tests" - (("/usr/bin") "/gnu/store") - (("usr") "gnu")) + (("/usr/bin") (%store-directory)) + (("usr") (car (filter (negate string-null?) + (string-split (%store-directory) #\/))))) (substitute* "testsuite/date/date-works-1" (("/bin/date") (which "date"))) -- cgit v1.2.3 From 897e5d9960bf9e78767415a619a2eb4ad05667c4 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 15 May 2015 15:31:20 +0200 Subject: hydra: Increase USB image size. * build-aux/hydra/gnu-system.scm (qemu-jobs): Increase disk image size to 860 MiB, for x86_64. --- build-aux/hydra/gnu-system.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm index c612ff1f12..8d9b43c0b0 100644 --- a/build-aux/hydra/gnu-system.scm +++ b/build-aux/hydra/gnu-system.scm @@ -159,7 +159,7 @@ system.") (set-guile-for-build (default-guile)) (system-disk-image installation-os #:disk-image-size - (* 850 MiB)))))) + (* 860 MiB)))))) '())) (define (tarball-jobs store system) -- cgit v1.2.3 From 64572282b73f09564c423bccaaaa744c03088ca8 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 15 May 2015 21:38:48 -0400 Subject: gnu: gdb: Update to 7.9.1. * gnu/packages/gdb.scm (gdb): Update to 7.9.1. --- gnu/packages/gdb.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm index 018f564e67..9c0b3ea307 100644 --- a/gnu/packages/gdb.scm +++ b/gnu/packages/gdb.scm @@ -36,14 +36,14 @@ (define-public gdb (package (name "gdb") - (version "7.9") + (version "7.9.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gdb/gdb-" version ".tar.xz")) (sha256 (base32 - "14l3hhsy7fmpn2dk7ivc67gnbjdhkxlq90kxijpzfa35l58mcccv")))) + "0h5sfg4ndhb8q4fxbq0hdxfjp35n6ih96f6x8yvb418s84x5976d")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; FIXME "make check" fails on single-processor systems. -- cgit v1.2.3 From b7e71faaf73e8cb9acc562561fd0051090d041e0 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 16 May 2015 21:22:34 +0200 Subject: gnu: libwpd: Propagate input. * gnu/packages/libreoffice.scm (libwpd): Move librevenge from 'inputs' to 'propagated-inputs'. * gnu/packages/libreoffice.scm (libwpg)[inputs]: Drop librevenge. --- gnu/packages/libreoffice.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 736da39919..e285e5f897 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -135,9 +135,10 @@ spreadsheets and presentations.") (native-inputs `(("doxygen" ,doxygen) ("pkg-config" ,pkg-config))) + (propagated-inputs + `(("librevenge" ,librevenge))) ; in Requires field of .pkg (inputs - `(("librevenge" ,librevenge) - ("zlib" ,zlib))) + `(("zlib" ,zlib))) (home-page "http://libwpd.sourceforge.net/") (synopsis "Library for importing WordPerfect documents") (description "Libwpd is a C++ library designed to help process @@ -195,8 +196,7 @@ ZVR (simple compressed text format).") `(("doxygen" ,doxygen) ("pkg-config" ,pkg-config))) (inputs - `(("librevenge" ,librevenge) - ("libwpd" ,libwpd) + `(("libwpd" ,libwpd) ("perl" ,perl) ("zlib" ,zlib))) (home-page "http://libwpg.sourceforge.net/") -- cgit v1.2.3 From 933c390ca7ab50d28a29c8e92dc81988af7a84d1 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 16 May 2015 21:31:12 +0200 Subject: gnu: libe-book: Propagate inputs. * gnu/packages/libreoffice.scm (libe-book): Move icu4c, librevenge and libxml2 from 'inputs' to 'propagated-inputs'. --- gnu/packages/libreoffice.scm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index e285e5f897..fc0ca836fa 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -163,10 +163,12 @@ into other word processors.") `(("cppunit" ,cppunit) ("gperf" ,gperf) ("pkg-config" ,pkg-config))) - (inputs `(("boost" ,boost) - ("icu4c" ,icu4c) - ("librevenge" ,librevenge) - ("libxml2" ,libxml2))) + (propagated-inputs ; in Requires or Requires.private field of .pkg + `(("icu4c" ,icu4c) + ("librevenge" ,librevenge) + ("libxml2" ,libxml2))) + (inputs + `(("boost" ,boost))) (arguments ;; avoid triggering configure errors by simple inclusion of boost headers `(#:configure-flags '("--disable-werror"))) -- cgit v1.2.3 From 239c853c43fb3c6d3fa3bb9e38aafd8e800a1cdb Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 16 May 2015 21:34:14 +0200 Subject: gnu: libwpg: Propagate input. * gnu/packages/libreoffice.scm (libwpg): Move libwpg from 'inputs' to 'propagated-inputs'. --- gnu/packages/libreoffice.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index fc0ca836fa..dc0a365e63 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -197,9 +197,10 @@ ZVR (simple compressed text format).") (native-inputs `(("doxygen" ,doxygen) ("pkg-config" ,pkg-config))) + (propagated-inputs + `(("libwpd" ,libwpd))) ; in Requires field of .pkg (inputs - `(("libwpd" ,libwpd) - ("perl" ,perl) + `(("perl" ,perl) ("zlib" ,zlib))) (home-page "http://libwpg.sourceforge.net/") (synopsis "Library and tools for the WordPerfect Graphics format") -- cgit v1.2.3 From f678913cfe017da303a4f0ba04897b82f85010bd Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 16 May 2015 21:37:20 +0200 Subject: gnu: libcmis: Propagate inputs. * gnu/packages/libreoffice.scm (libcmis): Move curl and libxml2 from 'inputs' to 'propagated-inputs'. --- gnu/packages/libreoffice.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index dc0a365e63..23b1e2467c 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -223,11 +223,12 @@ working with graphics in the WPG (WordPerfect Graphics) format.") (native-inputs `(("cppunit" ,cppunit) ("pkg-config" ,pkg-config))) + (propagated-inputs ; in Requires field of .pkg + `(("curl" ,curl) + ("libxml2" ,libxml2))) (inputs `(("boost" ,boost) - ("curl" ,curl) ("cyrus-sasl" ,cyrus-sasl) - ("libxml2" ,libxml2) ("openssl" ,openssl))) (arguments `(#:configure-flags -- cgit v1.2.3 From 57080fea86027c085997b6e320f6777ee9edd495 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 16 May 2015 21:50:00 +0200 Subject: gnu: libabw: Propagate inputs. * gnu/packages/libreoffice.scm (libabw): Move librevenge and libxml2 from 'inputs' to 'propagated-inputs'. --- gnu/packages/libreoffice.scm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 23b1e2467c..5739757ce9 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -267,10 +267,11 @@ as Alfresco or Nuxeo.") ("gperf" ,gperf) ("perl" ,perl) ("pkg-config" ,pkg-config))) - (inputs - `(("boost" ,boost) - ("librevenge" ,librevenge) + (propagated-inputs ; in Requires or Requires.private field of .pkg + `(("librevenge" ,librevenge) ("libxml2" ,libxml2))) + (inputs + `(("boost" ,boost))) (arguments ;; avoid triggering configure errors by simple inclusion of boost headers `(#:configure-flags '("--disable-werror"))) -- cgit v1.2.3 From 269194c3c0ec86b9382b6abeeb0dbc35bd7ac2cc Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 16 May 2015 21:54:02 +0200 Subject: gnu: libcdr: Propagate inputs. * gnu/packages/libreoffice.scm (libcdr): Move icu4c, lcms, librevenge and zlib from 'inputs' to 'propagated-inputs'. --- gnu/packages/libreoffice.scm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 5739757ce9..18319b5d07 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -296,12 +296,13 @@ AbiWord documents.") (native-inputs `(("doxygen" ,doxygen) ("pkg-config" ,pkg-config))) - (inputs - `(("boost" ,boost) - ("icu4c" ,icu4c) + (propagated-inputs ; in Requires or Requires.private field of .pkg + `(("icu4c" ,icu4c) ("lcms" ,lcms) ("librevenge" ,librevenge) ("zlib" ,zlib))) + (inputs + `(("boost" ,boost))) (arguments ;; avoid triggering a build failure due to warnings `(#:configure-flags '("--disable-werror"))) -- cgit v1.2.3 From 480fe00270f9bb08794739aefb86efadc496b039 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 16 May 2015 21:57:18 +0200 Subject: gnu: libetonyek: Propagate inputs. * gnu/packages/libreoffice.scm (libetonyek): Move librevenge and libxml2 from 'inputs' to 'propagated-inputs'. --- gnu/packages/libreoffice.scm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 18319b5d07..46e9b0237a 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -329,10 +329,11 @@ CorelDRAW documents of all versions.") ("doxygen" ,doxygen) ("gperf" ,gperf) ("pkg-config" ,pkg-config))) - (inputs - `(("boost" ,boost) - ("librevenge" ,librevenge) + (propagated-inputs ; in Requires or Requires.private field of .pkg + `(("librevenge" ,librevenge) ("libxml2" ,libxml2))) + (inputs + `(("boost" ,boost))) (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libetonyek") (synopsis "Library for parsing the Apple Keynote format") (description "Libetonyek is a library that parses the file format of -- cgit v1.2.3 From c5b5800bb558eb3b99b065655b151b6fa2516469 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 16 May 2015 21:59:46 +0200 Subject: gnu: libfreehand: Propagate inputs. * gnu/packages/libreoffice.scm (libfreehand): Move librevenge and zlib from 'inputs' to 'propagated-inputs'. --- gnu/packages/libreoffice.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 46e9b0237a..b856fe7efb 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -376,7 +376,7 @@ library primarily intended for language guessing.") ("gperf" ,gperf) ("perl" ,perl) ("pkg-config" ,pkg-config))) - (inputs + (propagated-inputs ; in Requires or Requires.private field of .pkg `(("librevenge" ,librevenge) ("zlib" ,zlib))) (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libfreehand") -- cgit v1.2.3 From e39cc72376981eb0178e83ea32813cfba5fdb430 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 16 May 2015 22:01:25 +0200 Subject: gnu: libmspub: Propagate inputs. * gnu/packages/libreoffice.scm (libmspub): Move icu4c, librevenge and zlib from 'inputs' to 'propagated-inputs'. --- gnu/packages/libreoffice.scm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index b856fe7efb..ff5b1747d1 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -400,11 +400,12 @@ Aldus/Macromedia/Adobe FreeHand documents.") (native-inputs `(("doxygen" ,doxygen) ("pkg-config" ,pkg-config))) - (inputs - `(("boost" ,boost) - ("icu4c" ,icu4c) + (propagated-inputs ; in Requires or Requires.private field of .pkg + `(("icu4c" ,icu4c) ("librevenge" ,librevenge) ("zlib" ,zlib))) + (inputs + `(("boost" ,boost))) (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libmspub") (synopsis "Library for parsing the Microsoft Publisher format") (description "Libmspub is a library that parses the file format of -- cgit v1.2.3 From 86d648ea97a1207809ba006b5a3e89fb00055699 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 16 May 2015 22:04:04 +0200 Subject: gnu: libpagemaker: Propagate input. * gnu/packages/libreoffice.scm (libpagemaker): Move librevenge from 'inputs' to 'propagated-inputs'. --- gnu/packages/libreoffice.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index ff5b1747d1..4b81f59f1e 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -427,9 +427,10 @@ Microsoft Publisher documents of all versions.") (native-inputs `(("doxygen" ,doxygen) ("pkg-config" ,pkg-config))) + (native-inputs ; in Requires field of .pkg + `(("librevenge" ,librevenge))) (inputs `(("boost" ,boost) - ("librevenge" ,librevenge) ("zlib" ,zlib))) (arguments ;; avoid triggering a build failure due to warnings -- cgit v1.2.3 From a3be6b8bb00b30eb657b9b4b185977468d8b4bcf Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 16 May 2015 22:06:22 +0200 Subject: gnu: libvisio: Propagate inputs. * gnu/packages/libreoffice.scm (libvisio): Move icu4c, librevenge and libxml2 from 'inputs' to 'propagated-inputs'. --- gnu/packages/libreoffice.scm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 4b81f59f1e..2192259612 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -461,11 +461,12 @@ created by PageMaker version 6.x and 7.") ("gperf" ,gperf) ("perl" ,perl) ("pkg-config" ,pkg-config))) - (inputs - `(("boost" ,boost) - ("icu4c" ,icu4c) + (propagated-inputs ; in Requires or Requires.private field of .pkg + `(("icu4c" ,icu4c) ("librevenge" ,librevenge) ("libxml2" ,libxml2))) + (inputs + `(("boost" ,boost))) ;; FIXME: Not needed any more for newer version 0.1.1. (arguments ;; avoid triggering a build failure due to warnings -- cgit v1.2.3 From 3b5199b3d75b3b8303b4e4f4a138ead218ecd106 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 16 May 2015 22:08:32 +0200 Subject: gnu: libodfgen: Propagate input. * gnu/packages/libreoffice.scm (libodfgen): Move librevenge from 'inputs' to 'propagated-inputs'. --- gnu/packages/libreoffice.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 2192259612..a1c508cdaa 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -492,9 +492,10 @@ Microsoft Visio documents of all versions.") (native-inputs `(("doxygen" ,doxygen) ("pkg-config" ,pkg-config))) + (propagated-inputs ; in Requires field of .pkg + `(("librevenge" ,librevenge))) (inputs `(("boost" ,boost) - ("librevenge" ,librevenge) ("zlib" ,zlib))) (arguments ;; avoid triggering configure errors by simple inclusion of boost headers -- cgit v1.2.3 From b819182d072fcc9ba2936316a1e9fc064e503913 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 16 May 2015 22:13:41 +0200 Subject: gnu: libmwaw: Propagate input. * gnu/packages/libreoffice.scm (libmwaw): Move librevenge from 'inputs' to 'propagated-inputs'. --- gnu/packages/libreoffice.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index a1c508cdaa..e9f0d3975d 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -523,9 +523,10 @@ text documents, vector drawings, presentations and spreadsheets.") (native-inputs `(("doxygen" ,doxygen) ("pkg-config" ,pkg-config))) + (propagated-inputs ; in Requires field of .pkg + `(("librevenge" ,librevenge))) (inputs `(("boost" ,boost) - ("librevenge" ,librevenge) ("zlib" ,zlib))) (arguments ;; avoid triggering configure errors by simple inclusion of boost headers -- cgit v1.2.3 From baa941e69900709b59569f803432c20f17395ec4 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 16 May 2015 22:16:23 +0200 Subject: gnu: libwps: Propagate input. * gnu/packages/libreoffice.scm (libwps): Move librevenge from 'inputs' to 'propagated-inputs'. --- gnu/packages/libreoffice.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index e9f0d3975d..183e6dc54e 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -553,9 +553,10 @@ spreadsheet documents.") (native-inputs `(("doxygen" ,doxygen) ("pkg-config" ,pkg-config))) + (propagated-inputs ; in Requires field of .pkg + `(("librevenge" ,librevenge))) (inputs `(("boost" ,boost) - ("librevenge" ,librevenge) ("zlib" ,zlib))) (arguments ;; avoid triggering configure errors by simple inclusion of boost headers -- cgit v1.2.3 From aff75ddfc60b0940d4e2862f3d1b97c022b7baa8 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sun, 17 May 2015 09:49:08 +0200 Subject: gnu: calibre: Update to 2.28.0. * gnu/packages/ebook.scm (calibre): Update to 2.28.0. --- gnu/packages/ebook.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 0d41121f3b..f62456fe92 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -59,7 +59,7 @@ (define-public calibre (package (name "calibre") - (version "2.25.0") + (version "2.28.0") (source (origin (method url-fetch) @@ -68,7 +68,7 @@ version ".tar.xz")) (sha256 (base32 - "0h7cnwdd9phk4n5hl6xggkn7szvqsds5847mnk2wg2j2j1lzp2r0")) + "15sb74v0nlj45fhlnw1afll35l90cxw78s15fb2nx3fih7ahv3cf")) ;; Remove non-free or doubtful code, see ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html (modules '((guix build utils))) -- cgit v1.2.3 From 0390a5206381e3d54f27ae46533fa38283927a4d Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sun, 17 May 2015 10:04:37 +0200 Subject: gnu: redland: Propagate input. * gnu/packages/rdf.scm (redland): Move rasqal from 'inputs' to 'propagated-inputs'. * gnu/packages/rdf.scm (soprano): Drop input rasqal. * gnu/packages/audio.scm (ardour-3): Drop inputs rasqal and raptor2. Reported by John Darrington . --- gnu/packages/audio.scm | 3 +-- gnu/packages/rdf.scm | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index e15381b68a..e607d1a9a0 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Ricardo Wurmus ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer +;;; Copyright © 2015 Andreas Enge ;;; ;;; This file is part of GNU Guix. ;;; @@ -208,8 +209,6 @@ namespace ARDOUR { const char* revision = \"3.5-403-gec2cb31\" ; }")))) ("sratom" ,sratom) ("suil" ,suil) ("lilv" ,lilv) - ("rasqal" ,rasqal) - ("raptor2" ,raptor2) ("redland" ,redland) ("rubberband" ,rubberband) ("taglib" ,taglib) diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm index f26b021e50..cee7f42398 100644 --- a/gnu/packages/rdf.scm +++ b/gnu/packages/rdf.scm @@ -221,9 +221,10 @@ Turtle/N3 and read them in SPARQL XML, RDF/XML and Turtle/N3.") (native-inputs `(("perl" ,perl) ; needed for installation ("pkg-config" ,pkg-config))) + (propagated-inputs + `(("rasqal" ,rasqal))) ; in Requires.private field of .pc (inputs - `(("bdb" ,bdb) - ("rasqal" ,rasqal))) + `(("bdb" ,bdb))) (home-page "http://librdf.org/") (synopsis "RDF library") (description "The Redland RDF Library (librdf) provides the RDF API @@ -317,7 +318,6 @@ ideal (e.g. in LV2 implementations or embedded applications).") (inputs `(("clucene" ,clucene) ("qt" ,qt-4) - ("rasqal" ,rasqal) ("redland" ,redland))) (home-page "http://soprano.sourceforge.net/") (synopsis "RDF data library for Qt") -- cgit v1.2.3 From 493b6e28fb50c806852d02261d7af7f5ede914d4 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sun, 17 May 2015 11:01:25 +0200 Subject: gnu: libpagemaker: Rename duplicate 'native-inputs' field. * gnu/packages/libreoffice.scm (libpagemaker): Rename duplicate 'native-inputs' field to 'propagated-inputs'. Corrects commit 86d648e. --- gnu/packages/libreoffice.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 183e6dc54e..70f0e8eb79 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -427,7 +427,7 @@ Microsoft Publisher documents of all versions.") (native-inputs `(("doxygen" ,doxygen) ("pkg-config" ,pkg-config))) - (native-inputs ; in Requires field of .pkg + (propagated-inputs ; in Requires field of .pkg `(("librevenge" ,librevenge))) (inputs `(("boost" ,boost) -- cgit v1.2.3 From 034e0d50fcffec3373ba9516e8bc5702aa3bd385 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 16 May 2015 00:13:17 +0200 Subject: gnu: libusb: Update to 1.0.19. * gnu/packages/libusb.scm (libusb): Update to 1.0.19. [arguments]: New field --- gnu/packages/libusb.scm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm index 62eb753d24..dd8a2ff23b 100644 --- a/gnu/packages/libusb.scm +++ b/gnu/packages/libusb.scm @@ -24,12 +24,13 @@ #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (gnu packages gnupg) + #:use-module (gnu packages linux) #:use-module (gnu packages pkg-config)) (define-public libusb (package (name "libusb") - (version "1.0.9") + (version "1.0.19") (source (origin (method url-fetch) @@ -37,8 +38,14 @@ "libusb-" version "/libusb-" version ".tar.bz2")) (sha256 (base32 - "16sz34ix6hw2wwl3kqx6rf26fg210iryr68wc439dc065pffw879")))) + "0h38p9rxfpg9vkrbyb120i1diq57qcln82h5fr7hvy82c20jql3c")))) (build-system gnu-build-system) + + ;; XXX: Enabling udev is now recommended, but eudev indirectly depends on + ;; libusb. + (arguments `(#:configure-flags '("--disable-udev"))) + ;; (inputs `(("eudev" ,eudev))) + (home-page "http://www.libusb.org") (synopsis "User-space USB library") (description -- cgit v1.2.3 From fb9d7865348755d1f0465202330b63df5ee8abaa Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 16 May 2015 00:13:59 +0200 Subject: gnu: qemu: Add dependency on libusb. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Suggested by 白い熊@相撲道 . * gnu/packages/qemu.scm (qemu)[inputs]: Add LIBUSB. --- gnu/packages/qemu.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/packages/qemu.scm b/gnu/packages/qemu.scm index e9a2c08743..717310209e 100644 --- a/gnu/packages/qemu.scm +++ b/gnu/packages/qemu.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. @@ -34,6 +34,7 @@ #:use-module (gnu packages image) #:use-module (gnu packages attr) #:use-module (gnu packages linux) + #:use-module (gnu packages libusb) #:use-module (gnu packages xdisorg) #:use-module (gnu packages gl) #:use-module (gnu packages sdl) @@ -139,4 +140,5 @@ server and embedded PowerPC, and S390 guests.") (synopsis "Machine emulator and virtualizer") (inputs `(("sdl" ,sdl) ("mesa" ,mesa) + ("libusb" ,libusb) ;USB pass-through support ,@(package-inputs qemu-headless))))) -- cgit v1.2.3 From 2f910ef68c1852b32b9ef27535ddbaa7ede3401b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 17 May 2015 14:12:03 +0200 Subject: gnu: Add git-modes. * gnu/packages/emacs.scm (git-modes): New variable. --- gnu/packages/emacs.scm | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 8d3df368b1..a1366efe8f 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -230,6 +230,50 @@ for those who may want transient periods of unbalanced parentheses, such as when typing parentheses directly or commenting out code line by line.") (license license:gpl3+))) +(define-public git-modes + (package + (name "git-modes") + (version "1.0.0") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/magit/git-modes/archive/" + version ".tar.gz")) + (sha256 + (base32 + "1biiss75bswx4alk85k3g9p0a3q3sc9i74h4mnrxc2rsk2iwhws0")))) + (build-system gnu-build-system) + (arguments + `(#:modules ((guix build gnu-build-system) + (guix build emacs-utils) + (guix build utils)) + #:imported-modules (,@%gnu-build-system-modules + (guix build emacs-utils)) + + #:make-flags (list (string-append "PREFIX=" + (assoc-ref %outputs "out")) + ;; Don't put .el files in a 'git-modes' + ;; sub-directory. + (string-append "LISPDIR=" + (assoc-ref %outputs "out") + "/share/emacs/site-lisp")) + #:test-target "test" + #:phases (modify-phases %standard-phases + (delete 'configure) + (add-after 'install 'emacs-autoloads + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lisp (string-append + out "/share/emacs/site-lisp/"))) + (emacs-generate-autoloads ,name lisp))))))) + (native-inputs `(("emacs" ,emacs-no-x))) + (home-page "https://github.com/magit/git-modes") + (synopsis "Emacs major modes for Git configuration files") + (description + "This package provides Emacs major modes for editing various Git +configuration files, such as .gitattributes, .gitignore, and .git/config.") + (license license:gpl3+))) + (define-public magit (package (name "magit") -- cgit v1.2.3 From c466bfd1ac8a3843acd0ce77453bba04323c4a8b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 17 May 2015 12:22:49 +0200 Subject: gnu: magit: Use 'modify-phases'. * gnu/packages/emacs.scm (magit)[arguments]: Use 'modify-phases' instead of 'alist-cons-before' & co. --- gnu/packages/emacs.scm | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index a1366efe8f..5c6d3c16c6 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -298,28 +298,28 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.") (guix build emacs-utils)) #:tests? #f ; no check target #:phases - (alist-replace - 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "Makefile" - (("/usr/local") out) - (("/etc") (string-append out "/etc"))))) - (alist-cons-before - 'build 'patch-exec-paths - (lambda* (#:key inputs #:allow-other-keys) - (let ((git (assoc-ref inputs "git")) - (git:gui (assoc-ref inputs "git:gui"))) - (emacs-substitute-variables "magit.el" - ("magit-git-executable" (string-append git "/bin/git")) - ("magit-gitk-executable" (string-append git:gui "/bin/gitk"))))) - (alist-cons-after + (modify-phases %standard-phases + (replace + 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "Makefile" + (("/usr/local") out) + (("/etc") (string-append out "/etc")))))) + (add-before + 'build 'patch-exec-paths + (lambda* (#:key inputs #:allow-other-keys) + (let ((git (assoc-ref inputs "git")) + (git:gui (assoc-ref inputs "git:gui"))) + (emacs-substitute-variables "magit.el" + ("magit-git-executable" (string-append git "/bin/git")) + ("magit-gitk-executable" (string-append git:gui "/bin/gitk")))))) + (add-after 'install 'post-install (lambda* (#:key outputs #:allow-other-keys) (emacs-generate-autoloads ,name (string-append (assoc-ref outputs "out") - "/share/emacs/site-lisp/"))) - %standard-phases))))) + "/share/emacs/site-lisp/"))))))) (home-page "http://magit.github.io/") (synopsis "Emacs interface for the Git version control system") (description -- cgit v1.2.3 From 2c047b4a67553cf39a27f6ca1d1ee9c9e18ab9ca Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 17 May 2015 14:02:40 +0200 Subject: gnu: magit: Move Emacs to 'native-inputs'. * gnu/packages/emacs.scm (magit): Move EMACS-NO-X from 'inputs' to 'native-inputs'. --- gnu/packages/emacs.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 5c6d3c16c6..fda02b7867 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -286,9 +286,9 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.") (sha256 (base32 "1in48g5l5xdc9cf2apnpgx73mqlz2njrpi1w52dgql4qxv3kg6gr")))) (build-system gnu-build-system) - (native-inputs `(("texinfo" ,texinfo))) - (inputs `(("emacs" ,emacs-no-x) - ("git" ,git) + (native-inputs `(("texinfo" ,texinfo) + ("emacs" ,emacs-no-x))) + (inputs `(("git" ,git) ("git:gui" ,git "gui"))) (arguments `(#:modules ((guix build gnu-build-system) -- cgit v1.2.3 From 7e4871ba9c5dcc7bfb7d293100ec65bde4b0b91c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 17 May 2015 14:11:54 +0200 Subject: gnu: magit: Update to 1.4.1. * gnu/packages/emacs.scm (magit)[source, version]: Update to 1.4.1 [propagated-inputs]: New field. [arguments]: Add #:test-target. Add 'augment-load-path' phase. --- gnu/packages/emacs.scm | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index fda02b7867..f40e8443cf 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -277,26 +277,31 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.") (define-public magit (package (name "magit") - (version "1.2.1") + (version "1.4.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/magit/magit/releases/download/" version "/" name "-" version ".tar.gz")) (sha256 - (base32 "1in48g5l5xdc9cf2apnpgx73mqlz2njrpi1w52dgql4qxv3kg6gr")))) + (base32 + "0bbvz6cma5vj6qxx9v2m60zqkjwgwjrdf9kp04iacybvrcm8vcg7")))) (build-system gnu-build-system) (native-inputs `(("texinfo" ,texinfo) ("emacs" ,emacs-no-x))) (inputs `(("git" ,git) ("git:gui" ,git "gui"))) + (propagated-inputs `(("git-modes" ,git-modes))) (arguments `(#:modules ((guix build gnu-build-system) (guix build utils) (guix build emacs-utils)) #:imported-modules (,@%gnu-build-system-modules (guix build emacs-utils)) - #:tests? #f ; no check target + + #:test-target "test" + #:tests? #f ;'tests/magit-tests.el' is missing + #:phases (modify-phases %standard-phases (replace @@ -313,7 +318,16 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.") (git:gui (assoc-ref inputs "git:gui"))) (emacs-substitute-variables "magit.el" ("magit-git-executable" (string-append git "/bin/git")) - ("magit-gitk-executable" (string-append git:gui "/bin/gitk")))))) + ("magit-gitk-executable" (string-append git:gui + "/bin/gitk")))))) + (add-before + 'build 'augment-load-path + (lambda* (#:key inputs #:allow-other-keys) + ;; Allow git-commit-mode.el & co. to be found. + (let ((git-modes (assoc-ref inputs "git-modes"))) + (setenv "EMACSLOADPATH" + (string-append ":" git-modes "/share/emacs/site-lisp")) + #t))) (add-after 'install 'post-install (lambda* (#:key outputs #:allow-other-keys) -- cgit v1.2.3 From d41a8a07b2bad21e971702c863e1ba629c1f692d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 17 May 2015 21:25:09 +0200 Subject: gnu: magit: Install .el files directly under share/emacs/site-lisp. Fixes a regression introduced in 7e4871b. * gnu/packages/emacs.scm (magit)[arguments]: Add #:make-flags. --- gnu/packages/emacs.scm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index f40e8443cf..53676bd2da 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -302,6 +302,11 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.") #:test-target "test" #:tests? #f ;'tests/magit-tests.el' is missing + #:make-flags (list + ;; Don't put .el files in a sub-directory. + (string-append "lispdir=" (assoc-ref %outputs "out") + "/share/emacs/site-lisp")) + #:phases (modify-phases %standard-phases (replace -- cgit v1.2.3 From 8c3a5d7059a24e9c6d7bf14be296169cdcf06ad6 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 17 May 2015 22:53:11 +0200 Subject: doc: Suggest how to preserve /var and /root owner and permissions. Reported by Andreas Enge . * doc/guix.texi (Binary Installation): Suggest --skip-old-files when extracting the archive. --- doc/guix.texi | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index 049292ddff..7dd32c46c8 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -269,12 +269,18 @@ As @code{root}, run: @example # cd / -# tar xf guix-binary-@value{VERSION}.@var{system}.tar.xz +# tar --skip-old-files -xf \ + guix-binary-@value{VERSION}.@var{system}.tar.xz @end example This creates @file{/gnu/store} (@pxref{The Store}), @file{/var/guix}, and @file{/root/.guix-profile}. @file{/root/.guix-profile} is a ready-to-use profile for @code{root} where Guix is installed. +@c '--skip-old-files' does the right thing with tar 1.28. The manual +@c does not clearly document the behavior we describe here, though. +The @code{--skip-old-files} option allows you to make sure the owner and +permissions on @file{/var} and @file{/root} are preserved (@pxref{Option +Summary, @code{--skip-old-files},, tar, GNU tar: an archiver tool}). Do @emph{not} unpack the tarball on a working Guix system since that would overwrite its own essential files. -- cgit v1.2.3 From 152dd61ca4fcbd268a43ebe202917937ea1647a2 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 17 May 2015 23:18:54 +0200 Subject: doc: Document 'ifconfig eno1 up' before running 'dhclient'. Reported by Scott McDonough in . * doc/guix.texi (System Installation): Suggested setting the interface up before running 'dhclient'. --- doc/guix.texi | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 7dd32c46c8..8d8c412944 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3896,9 +3896,9 @@ To install the system, you would: @enumerate @item -Configure the network, by running @command{dhclient eno1} (to get an -automatically assigned IP address from the wired network interface -controller@footnote{ +Configure the network, by running @command{ifconfig eno1 up && dhclient +eno1} (to get an automatically assigned IP address from the wired +network interface controller@footnote{ @c http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-net_id.c#n20 The name @code{eno1} is for the first on-board Ethernet controller. The interface name for an Ethernet controller that is in the first slot of -- cgit v1.2.3 From 6944fdbdbd2339ee66f30e416806da9c7e8b6e01 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 17 May 2015 23:20:59 +0200 Subject: syscalls: Add 'set-network-interface-up'. * guix/build/syscalls.scm (set-network-interface-up): New procedure. --- guix/build/syscalls.scm | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm index b62a8cce64..5bc4595d08 100644 --- a/guix/build/syscalls.scm +++ b/guix/build/syscalls.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Ludovic Courtès +;;; Copyright © 2014, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -46,6 +46,7 @@ network-interface-address set-network-interface-flags set-network-interface-address + set-network-interface-up configure-network-interface)) ;;; Commentary: @@ -552,4 +553,17 @@ the same type as that returned by 'make-socket-address'." (lambda () (close-port sock))))) +(define* (set-network-interface-up name + #:key (family AF_INET)) + "Turn up the interface NAME." + (let ((sock (socket family SOCK_STREAM 0))) + (dynamic-wind + (const #t) + (lambda () + (let ((flags (network-interface-flags sock name))) + (set-network-interface-flags sock name + (logior flags IFF_UP)))) + (lambda () + (close-port sock))))) + ;;; syscalls.scm ends here -- cgit v1.2.3 From 9bb34f9c9232757f275f458bb2621fe976f8d8fd Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 17 May 2015 23:24:30 +0200 Subject: services: dhcp-client: Turn up the interfaces before calling 'dhclient'. Somehow, as of Linux 4.0.2, the interfaces are down by default, which prevents 'dhclient' from actually using them. * gnu/services/networking.scm (dhcp-client-service): Call 'set-network-interface-up' on each item of IFACES. --- gnu/services/networking.scm | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index 33ecf9ccd3..102202c853 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -165,20 +165,24 @@ Protocol (DHCP) client, on all the non-loopback network interfaces." (provision '(networking)) (start #~(lambda _ - (false-if-exception (delete-file #$pid-file)) - ;; When invoked without any arguments, 'dhclient' ;; discovers all non-loopback interfaces *that are ;; up*. However, the relevant interfaces are ;; typically down at this point. Thus we perform our ;; own interface discovery here. - (let* ((valid? (negate loopback-network-interface?)) - (ifaces (filter valid? - (all-network-interfaces))) - (pid (fork+exec-command - (cons* #$dhclient "-nw" - "-pf" #$pid-file - ifaces)))) + (define valid? + (negate loopback-network-interface?)) + (define ifaces + (filter valid? (all-network-interfaces))) + + ;; XXX: Make sure the interfaces are up so that + ;; 'dhclient' can actually send/receive over them. + (for-each set-network-interface-up ifaces) + + (false-if-exception (delete-file #$pid-file)) + (let ((pid (fork+exec-command + (cons* #$dhclient "-nw" + "-pf" #$pid-file ifaces)))) (and (zero? (cdr (waitpid pid))) (let loop () (catch 'system-error -- cgit v1.2.3 From d72d05f9ce5a6ac6152f1d5cf79f65928e4a5b75 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 17 May 2015 23:37:53 +0200 Subject: doc: Better suggestion for the /usr/local/bin/guix symlink. Suggested by Andreas Enge at . * doc/guix.texi (Binary Installation): Use the longer 'guix' file name. --- doc/guix.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index 8d8c412944..0697e99d69 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -300,7 +300,7 @@ for instance with: @example # mkdir -p /usr/local/bin # cd /usr/local/bin -# ln -s /root/.guix-profile/bin/guix +# ln -s /var/guix/profiles/per-user/root/guix-profile/bin/guix @end example @item -- cgit v1.2.3 From cfc149dc07a8577199d93fd967b9023c1badc2a0 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 18 May 2015 00:03:43 +0200 Subject: doc: Suggest the same build user and group names as on GuixSD. * doc/guix.texi (Build Environment Setup): Suggest the user and group names as used on GuixSD. (Binary Installation): Adjust accordingly. --- doc/guix.texi | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 0697e99d69..7c4aa10ac6 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -290,7 +290,7 @@ Create the group and user accounts for build users as explained below (@pxref{Build Environment Setup}), and run the daemon: @example -# /root/.guix-profile/bin/guix-daemon --build-users-group=guix-builder +# /root/.guix-profile/bin/guix-daemon --build-users-group=guixbuild @end example @item @@ -461,13 +461,13 @@ Bash syntax and the @code{shadow} commands): @c See http://lists.gnu.org/archive/html/bug-guix/2013-01/msg00239.html @c for why `-G' is needed. @example -# groupadd --system guix-builder -# for i in `seq 1 10`; +# groupadd --system guixbuild +# for i in `seq -w 1 10`; do - useradd -g guix-builder -G guix-builder \ - -d /var/empty -s `which nologin` \ - -c "Guix build user $i" --system \ - guix-builder$i; + useradd -g guixbuild -G guixbuild \ + -d /var/empty -s `which nologin` \ + -c "Guix build user $i" --system \ + guixbuilder$i; done @end example @@ -475,13 +475,13 @@ Bash syntax and the @code{shadow} commands): The @code{guix-daemon} program may then be run as @code{root} with: @example -# guix-daemon --build-users-group=guix-builder +# guix-daemon --build-users-group=guixbuild @end example @cindex chroot @noindent This way, the daemon starts build processes in a chroot, under one of -the @code{guix-builder} users. On GNU/Linux, by default, the chroot +the @code{guixbuilder} users. On GNU/Linux, by default, the chroot environment contains nothing but: @c Keep this list in sync with libstore/build.cc! ----------------------- @@ -643,7 +643,7 @@ garbage collector, querying the availability of a build result, etc. It is normally run as @code{root} like this: @example -# guix-daemon --build-users-group=guix-builder +# guix-daemon --build-users-group=guixbuild @end example @noindent -- cgit v1.2.3 From 175ced413cb1c31ec58e06a4c2de8a0ae53fdaeb Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 18 May 2015 00:12:39 +0200 Subject: install: Use the right user and group name for files in the binary tarball. Suggested by Andreas Enge at . * gnu/system/install.scm (self-contained-tarball): Pass --owner and --group to 'tar'. * doc/guix.texi (Binary Installation): Move group and account creation before extraction. Make "run the daemon" a separate step. --- doc/guix.texi | 9 +++++++-- gnu/system/install.scm | 7 ++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 7c4aa10ac6..bb0d39cb8f 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -264,6 +264,12 @@ verify the authenticity of the tarball against it!}, where @var{system} is @code{x86_64-linux} for an @code{x86_64} machine already running the kernel Linux, and so on. +@item +Create the group and user accounts for build users as explained below +(@pxref{Build Environment Setup}). Use the exact same names as given in +the example so that files extracted from the archive will have the right +ownership. + @item As @code{root}, run: @@ -286,8 +292,7 @@ Do @emph{not} unpack the tarball on a working Guix system since that would overwrite its own essential files. @item -Create the group and user accounts for build users as explained below -(@pxref{Build Environment Setup}), and run the daemon: +Run the daemon: @example # /root/.guix-profile/bin/guix-daemon --build-users-group=guixbuild diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 82793a6648..2ae7f27690 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -67,9 +67,14 @@ under /root/.guix-profile where GUIX is installed." #:closure "profile") ;; Create the tarball. Use GNU format so there's no file name - ;; length limitation. + ;; length limitation. Use the owner and group names given in the + ;; manual. + ;; XXX: /var and /root should rather be root-owned, but it doesn't + ;; make any difference in practice. (with-directory-excursion %root (zero? (system* "tar" "--xz" "--format=gnu" + "--owner=guixbuilder01" + "--group=guixbuild" "-cvf" #$output "."))))) (gexp->derivation "guix-tarball.tar.xz" build -- cgit v1.2.3 From 01dbc7e01a576bf388914dfe99fa473e87728462 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 18 May 2015 00:42:05 +0200 Subject: install: Files in the tarball are all root-owned. Fixes a thinko introduced in 175ced4. * gnu/system/install.scm (self-contained-tarball): Use "root:0" as the owner and group. * doc/guix.texi (Binary Installation): Revert 175ced4. --- doc/guix.texi | 6 ------ gnu/system/install.scm | 8 ++------ 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index bb0d39cb8f..604ffcf0fb 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -264,12 +264,6 @@ verify the authenticity of the tarball against it!}, where @var{system} is @code{x86_64-linux} for an @code{x86_64} machine already running the kernel Linux, and so on. -@item -Create the group and user accounts for build users as explained below -(@pxref{Build Environment Setup}). Use the exact same names as given in -the example so that files extracted from the archive will have the right -ownership. - @item As @code{root}, run: diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 2ae7f27690..799851c9d7 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -67,14 +67,10 @@ under /root/.guix-profile where GUIX is installed." #:closure "profile") ;; Create the tarball. Use GNU format so there's no file name - ;; length limitation. Use the owner and group names given in the - ;; manual. - ;; XXX: /var and /root should rather be root-owned, but it doesn't - ;; make any difference in practice. + ;; length limitation. (with-directory-excursion %root (zero? (system* "tar" "--xz" "--format=gnu" - "--owner=guixbuilder01" - "--group=guixbuild" + "--owner=root:0" "--group=root:0" "-cvf" #$output "."))))) (gexp->derivation "guix-tarball.tar.xz" build -- cgit v1.2.3 From 113c17a0c969e600023698ae3a34994a796d0046 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 18 May 2015 09:47:29 +0200 Subject: profiles: Gracefully deal with packages containing an etc/ symlink. This fixes a bug whereby 'guix package -i gcc-toolchain' would fail in 'build-profile'. This is because in 'gcc-toolchain', etc/ is a symlink, and so the 'scandir' call in 'unsymlink' would return #f instead of returning a list. Reported by Andreas Enge . * guix/build/profiles.scm (ensure-writable-directory)[unsymlink]: Append "/" to TARGET before calling 'scandir'. * tests/profiles.scm ("etc/profile when etc/ is a symlink"): New test. --- guix/build/profiles.scm | 4 +++- tests/profiles.scm | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/guix/build/profiles.scm b/guix/build/profiles.scm index 525d59b979..2becc6b9af 100644 --- a/guix/build/profiles.scm +++ b/guix/build/profiles.scm @@ -94,7 +94,9 @@ symlink (to a read-only directory in the store), then delete the symlink and instead make DIRECTORY a \"real\" directory containing symlinks." (define (unsymlink link) (let* ((target (readlink link)) - (files (scandir target + ;; TARGET might itself be a symlink, so append "/" to make sure + ;; 'scandir' enters it. + (files (scandir (string-append target "/") (negate (cut member <> '("." "..")))))) (delete-file link) (mkdir link) diff --git a/tests/profiles.scm b/tests/profiles.scm index ac7f28bf53..cc9a822cee 100644 --- a/tests/profiles.scm +++ b/tests/profiles.scm @@ -277,6 +277,34 @@ get-string-all) "foo!")))))) +(test-assertm "etc/profile when etc/ is a symlink" + ;; When etc/ is a symlink, the unsymlink code in 0.8.2 would fail + ;; gracelessly because 'scandir' would return #f. + (mlet* %store-monad + ((thing -> (dummy-package "dummy" + (build-system trivial-build-system) + (arguments + `(#:guile ,%bootstrap-guile + #:builder + (let ((out (assoc-ref %outputs "out"))) + (mkdir out) + (mkdir (string-append out "/foo")) + (symlink "foo" (string-append out "/etc")) + (call-with-output-file (string-append out "/etc/bar") + (lambda (port) + (display "foo!" port)))))))) + (entry -> (package->manifest-entry thing)) + (drv (profile-derivation (manifest (list entry)) + #:hooks '())) + (profile -> (derivation->output-path drv))) + (mbegin %store-monad + (built-derivations (list drv)) + (return (and (file-exists? (string-append profile "/etc/profile")) + (string=? (call-with-input-file + (string-append profile "/etc/bar") + get-string-all) + "foo!")))))) + (test-end "profiles") -- cgit v1.2.3 From 5a76830853b0b8f68a950499a5525a63f3cfec74 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 18 May 2015 16:28:26 -0400 Subject: gnu: linux-libre: Update to 4.0.4. * gnu/packages/linux.scm (linux-libre): Update to 4.0.4. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 32258ae489..b5f4b55c6b 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -200,7 +200,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." #f))) (define-public linux-libre - (let* ((version "4.0.3") + (let* ((version "4.0.4") (build-phase '(lambda* (#:key system inputs #:allow-other-keys #:rest args) ;; Apply the neat patch. @@ -273,7 +273,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." (uri (linux-libre-urls version)) (sha256 (base32 - "111mr9c007yzq5pkn9j8nfy4w6rr94bs6krb8iinrlb9chnyixlj")))) + "1czjhyczzaz1dvhy9lrlxlk6gf45wcw3rnpcmh697dxgf37clmzp")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) ("bc" ,bc) -- cgit v1.2.3 From 1b2b81773c6931f4d01c448f04d021093da27d62 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 18 May 2015 22:10:29 +0200 Subject: doc: Re-generate detailed node listing. * doc/guix.texi (Top): Update detailed node listing. --- doc/guix.texi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/guix.texi b/doc/guix.texi index 604ffcf0fb..6964a4ec18 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -82,6 +82,7 @@ package management tool written for the GNU system. Installation +* Binary Installation:: Getting Guix running in no time! * Requirements:: Software needed to build and run Guix. * Running the Test Suite:: Testing Guix. * Setting Up the Daemon:: Preparing the build daemon's environment. @@ -144,6 +145,7 @@ System Configuration * Locales:: Language and cultural convention settings. * Services:: Specifying system services. * Setuid Programs:: Programs running with root privileges. +* X.509 Certificates:: Authenticating HTTPS servers. * Name Service Switch:: Configuring libc's name service switch. * Initial RAM Disk:: Linux-Libre bootstrapping. * GRUB Configuration:: Configuring the boot loader. @@ -155,6 +157,8 @@ Services * Base Services:: Essential system services. * Networking Services:: Network setup, SSH daemon, etc. * X Window:: Graphical display. +* Desktop Services:: D-Bus and desktop services. +* Database Services:: SQL databases. * Various Services:: Other services. Packaging Guidelines -- cgit v1.2.3 From 6f450b87de18e6d41795848a8c3f4f6e749190c3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 18 May 2015 22:53:09 +0200 Subject: gnu: gcc-toolchain: Remove 'bin/sh' and 'bin/bash'. * gnu/packages/commencement.scm (gcc-toolchain)[arguments] <#:builder>: Delete 'bin/sh' and 'bin/bash'. --- gnu/packages/commencement.scm | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index da1b1ffd98..9611ff2620 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -756,16 +756,26 @@ COREUTILS-FINAL vs. COREUTILS, etc." '(#:modules ((guix build union)) #:builder (begin (use-modules (ice-9 match) + (srfi srfi-26) (guix build union)) - (match %build-inputs - (((names . directories) ...) - (union-build (assoc-ref %outputs "out") - directories))) + (let ((out (assoc-ref %outputs "out"))) - (union-build (assoc-ref %outputs "debug") - (list (assoc-ref %build-inputs - "libc-debug")))))) + (match %build-inputs + (((names . directories) ...) + (union-build out directories))) + + ;; Remove the 'sh' and 'bash' binaries that come with + ;; libc to avoid polluting the user's profile (these are + ;; statically-linked binaries with no locale support and + ;; so on.) + (for-each (lambda (file) + (delete-file (string-append out "/bin/" file))) + '("sh" "bash")) + + (union-build (assoc-ref %outputs "debug") + (list (assoc-ref %build-inputs + "libc-debug"))))))) (native-search-paths (package-native-search-paths gcc)) (search-paths (package-search-paths gcc)) -- cgit v1.2.3 From 187731a596f1a74ca4462fede51999c734aba578 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Mon, 18 May 2015 23:08:49 +0200 Subject: gnu: glu: Propagate input mesa. * gnu/packages/gl.scm (glu): Propagate input mesa. --- gnu/packages/gl.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index b760a5e8a6..2a6437c562 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Andreas Enge +;;; Copyright © 2013, 2015 Andreas Enge ;;; Copyright © 2013 Joshua Grant ;;; Copyright © 2014 David Thompson ;;; Copyright © 2014, 2015 Mark H Weaver @@ -54,7 +54,8 @@ (sha256 (base32 "0r72yyhj09x3krn3kn629jqbwyq50ji8w5ri2pn6zwrk35m4g1s3")))) (build-system gnu-build-system) - (inputs `(("mesa" ,mesa))) + (propagated-inputs + `(("mesa" ,mesa))) ; according to glu.pc (home-page "http://www.opengl.org/archives/resources/faq/technical/glu.htm") (synopsis "Mesa OpenGL Utility library") (description -- cgit v1.2.3 From e53fc0c8a33b1ea4f8503aca899da34ff9ebaa3c Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 19 May 2015 17:28:12 +0800 Subject: gnu: gstreamer: Add search patch specification for 'GST_PLUGIN_SYSTEM_PATH'. * gnu/packages/gstreamer.scm (gstreamer)[native-search-paths]: New field. --- gnu/packages/gstreamer.scm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index 03aecdfa53..24dc41b703 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -171,6 +171,10 @@ This package provides the core library and elements.") ;; for g-ir-scanner. (setenv "CC" "gcc")) %standard-phases))) + (native-search-paths + (list (search-path-specification + (variable "GST_PLUGIN_SYSTEM_PATH") + (files '("lib/gstreamer-1.0"))))) (home-page "http://gstreamer.freedesktop.org/") (synopsis "Plugins for the GStreamer multimedia library") -- cgit v1.2.3 From a88b8c5c985a87586159c0621974a1dfe5b9b92d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 19 May 2015 08:02:52 +0200 Subject: Revert "daemon: Fix possible use-after-free." This reverts commit 1303a4a4517260def862ce7fe97e6b28dd8005e1. --- nix/libstore/build.cc | 29 ++++++++++++++++++++++------- nix/libutil/util.cc | 20 ++++++-------------- nix/libutil/util.hh | 5 ----- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc index b3c994d6de..f38cd29940 100644 --- a/nix/libstore/build.cc +++ b/nix/libstore/build.cc @@ -401,6 +401,18 @@ static void commonChildInit(Pipe & logPipe) } +/* Convert a string list to an array of char pointers. Careful: the + string list should outlive the array. */ +const char * * strings2CharPtrs(const Strings & ss) +{ + const char * * arr = new const char * [ss.size() + 1]; + const char * * p = arr; + foreach (Strings::const_iterator, i, ss) *p++ = i->c_str(); + *p = 0; + return arr; +} + + /* Restore default handling of SIGPIPE, otherwise some programs will randomly say "Broken pipe". */ static void restoreSIGPIPE() @@ -2123,7 +2135,11 @@ void DerivationGoal::initChild() Strings envStrs; foreach (Environment::const_iterator, i, env) envStrs.push_back(rewriteHashes(i->first + "=" + i->second, rewritesToTmp)); - std::vector envArr = stringsToCharPtrs(envStrs); + const char * * envArr = strings2CharPtrs(envStrs); + + Path program = drv.builder.c_str(); + std::vector args; /* careful with c_str()! */ + string user; /* must be here for its c_str()! */ /* If we are running in `build-users' mode, then switch to the user we allocated above. Make sure that we drop all root @@ -2149,18 +2165,17 @@ void DerivationGoal::initChild() } /* Fill in the arguments. */ - Strings args; string builderBasename = baseNameOf(drv.builder); args.push_back(builderBasename.c_str()); foreach (Strings::iterator, i, drv.args) - args.push_back(rewriteHashes(*i, rewritesToTmp)); - std::vector argArr = stringsToCharPtrs(args); + args.push_back(rewriteHashes(*i, rewritesToTmp).c_str()); + args.push_back(0); restoreSIGPIPE(); /* Execute the program. This should not return. */ inSetup = false; - execve(drv.builder.c_str(), (char * *) &argArr[0], (char * *) &envArr[0]); + execve(program.c_str(), (char * *) &args[0], (char * *) envArr); throw SysError(format("executing `%1%'") % drv.builder); @@ -2763,7 +2778,7 @@ void SubstitutionGoal::tryToRun() args.push_back("--substitute"); args.push_back(storePath); args.push_back(destPath); - std::vector argArr = stringsToCharPtrs(args); + const char * * argArr = strings2CharPtrs(args); /* Fork the substitute program. */ pid = maybeVfork(); @@ -2781,7 +2796,7 @@ void SubstitutionGoal::tryToRun() if (dup2(outPipe.writeSide, STDOUT_FILENO) == -1) throw SysError("cannot dup output pipe into stdout"); - execv(sub.c_str(), (char * *) &argArr[0]); + execv(sub.c_str(), (char * *) argArr); throw SysError(format("executing `%1%'") % sub); diff --git a/nix/libutil/util.cc b/nix/libutil/util.cc index 024cea83d1..846674a29d 100644 --- a/nix/libutil/util.cc +++ b/nix/libutil/util.cc @@ -852,20 +852,16 @@ void killUser(uid_t uid) ////////////////////////////////////////////////////////////////////// -std::vector stringsToCharPtrs(const Strings & ss) -{ - std::vector res; - foreach (Strings::const_iterator, i, ss) - res.push_back(i->c_str()); - res.push_back(0); - return res; -} - - string runProgram(Path program, bool searchPath, const Strings & args) { checkInterrupt(); + std::vector cargs; /* careful with c_str()! */ + cargs.push_back(program.c_str()); + for (Strings::const_iterator i = args.begin(); i != args.end(); ++i) + cargs.push_back(i->c_str()); + cargs.push_back(0); + /* Create a pipe. */ Pipe pipe; pipe.create(); @@ -884,10 +880,6 @@ string runProgram(Path program, bool searchPath, const Strings & args) if (dup2(pipe.writeSide, STDOUT_FILENO) == -1) throw SysError("dupping stdout"); - Strings args_(args); - args_.push_front(program); - auto cargs = stringsToCharPtrs(args_); - if (searchPath) execvp(program.c_str(), (char * *) &cargs[0]); else diff --git a/nix/libutil/util.hh b/nix/libutil/util.hh index a70981877b..ce2d77c19a 100644 --- a/nix/libutil/util.hh +++ b/nix/libutil/util.hh @@ -257,11 +257,6 @@ void killUser(uid_t uid); string runProgram(Path program, bool searchPath = false, const Strings & args = Strings()); -/* Convert a list of strings to a null-terminated vector of char - *'s. The result must not be accessed beyond the lifetime of the - list of strings. */ -std::vector stringsToCharPtrs(const Strings & ss); - /* Close all file descriptors except stdin, stdout, stderr, and those listed in the given set. Good practice in child processes. */ void closeMostFDs(const set & exceptions); -- cgit v1.2.3 From 2bb04905f86f9c3f1d27557fbff8cbdc776560a3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 19 May 2015 08:07:26 +0200 Subject: Merge branch 'nix'. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * daemon.am (AM_CXXFLAGS): Change -std=c++0x to -std=c++11. (libstore_a_CPPFLAGS): Add -DDEFAULT_CHROOT_DIRS. (parse_opt): Use 'settings.get' instead of 'settings.dirsInChroot'. (main): Likewise. * tests/guix-archive.sh: Don't grep for the "importing ..." message since it is no longer produced. The nix/ part is a squashed commit of the following: commit 3bfa70b7963e12be346900e64ae45fa019850675 Author: Eelco Dolstra Date: Wed Dec 10 13:53:04 2014 +0100 Don't wait for PID -1 The pid field can be -1 if forking the substituter process failed. commit 5241aec531e9c9a4b2dd5e5b6ee3f07ff049d9a5 Author: Eelco Dolstra Date: Mon Nov 24 16:48:04 2014 +0100 Build derivations in a more predictable order Derivations are now built in order of derivation name, so a package named "aardvark" is built before "baboon". Fixes #399. commit 9f355738e106f4ca49bba7276e8d520a2fc2955d Author: Eelco Dolstra Date: Mon Nov 24 16:44:35 2014 +0100 Don't create unnecessary substitution goals for derivations commit 554eaf5e8c82ddd6a42e4301f6d3dd5419c04060 Author: Eelco Dolstra Date: Wed Nov 19 18:02:39 2014 +0100 Disable vacuuming the DB after garbage collection Especially in WAL mode on a highly loaded machine, this is not a good idea because it results in a WAL file of approximately the same size ad the database, which apparently cannot be deleted while anybody is accessing it. commit 4eb62b5230c29e2f6ab17352439521083846c259 Author: Eelco Dolstra Date: Wed Nov 19 17:09:27 2014 +0100 nix-daemon: Call exit(), not _exit() This was preventing destructors from running. In particular, it was preventing the deletion of the temproot file for each worker process. It may also have been responsible for the excessive WAL growth on Hydra (due to the SQLite database not being closed properly). Apparently broken by accident in 8e9140cfdef9dbd1eb61e4c75c91d452ab5e4a74. commit f160a30d5612506de41a8206a57eccee1cd85fb7 Author: Eelco Dolstra Date: Wed Nov 19 17:07:29 2014 +0100 Clean up temp roots in a more C++ way commit a64744477d95e6932ae0fefc7cc358b56b8c397f Author: Eelco Dolstra Date: Mon Nov 17 01:00:39 2014 +0100 Fix message commit b73de6e49b64d01974649a1e67a77113b768c2b1 Author: Eelco Dolstra Date: Fri Nov 14 14:16:20 2014 +0100 Don't use ADDR_LIMIT_3GB This gives 32-bit builds on x86_64-linux more memory. commit e0825bd36b43f3c1d408745a9c61f92fdaf7dace Author: Eelco Dolstra Date: Wed Nov 12 11:35:53 2014 +0100 Make ~DerivationGoal more reliable commit 86b9e6d4575e5c93f428b8563ae259f0f4014173 Author: Eelco Dolstra Date: Tue Nov 4 10:41:29 2014 +0100 nix-store --gc: Don't warn about missing manifests directory commit 1129a982c4e77ff465fd6102627477900af2f7f4 Author: Eelco Dolstra Date: Fri Oct 31 09:36:09 2014 +0100 Improve error message if the daemon worker fails to start commit bed17f40fce27e1a31f70957b1d0dd912b58700d Author: Shea Levy Date: Mon Oct 20 12:15:50 2014 -0400 Fix build on gcc < 4.7 commit ee8601cac4b353e551b238f546a0e7e8fcdcd3be Author: Eelco Dolstra Date: Tue Oct 14 10:51:19 2014 +0200 Improved error message when encountering unsupported file types Fixes #269. commit c2b65dd197a1b2e14d517b0b5ff307b149538917 Author: Eelco Dolstra Date: Fri Oct 3 22:37:51 2014 +0200 Remove some duplicate code commit c95742283595cb01b44ddc8e6ff5e9c1d66db444 Author: Eelco Dolstra Date: Fri Oct 3 16:53:28 2014 +0200 createDirs(): Handle ‘path’ being a symlink In particular, this fixes "nix-build -o /tmp/result" on Mac OS X (where /tmp is a symlink). commit 6092a48603ea7888f8a1f69db87835bc339c973a Author: Eelco Dolstra Date: Thu Sep 25 18:45:43 2014 +0200 nix-daemon: Close unnecessary fd commit e74390a16f74233283572661f64ed4f03ae1650d Author: Eelco Dolstra Date: Fri Sep 19 15:07:22 2014 +0200 Remove bogus comment commit e63c8aaa0511d1d0a5487c45dec9f8cbd66b4cc6 Author: Eelco Dolstra Date: Wed Sep 17 17:21:13 2014 +0200 On Linux, disable address space randomization commit 55939b1a4b34b904eedba90ac6c14efc6258f40d Author: Eelco Dolstra Date: Wed Sep 17 15:18:13 2014 +0200 Settings: Add bool get() commit 6621195e48f8e0cbbe6e19dbcde30bd8a7da0399 Author: Ludovic Courtès Date: Mon Sep 1 22:21:42 2014 +0200 Add an 'optimiseStore' remote procedure call. commit 3bb89c3a31b9cf6e056f3659389e2d2e7afd17fa Author: Eelco Dolstra Date: Thu Aug 28 18:57:13 2014 +0200 Add disallowedReferences / disallowedRequisites For the "stdenv accidentally referring to bootstrap-tools", it seems easier to specify the path that we don't want to depend on, e.g. disallowedRequisites = [ bootstrapTools ]; commit abd9d61e6201ddbde3305dd27c286e883e950bec Author: Gergely Risko Date: Wed Aug 27 16:46:02 2014 +0200 Introduce allowedRequisites feature commit 8c766e48d5c4741b63a4f24dc91138f587c04a5a Author: Joel Taylor Date: Thu Aug 21 14:06:49 2014 -0700 fix disappearing bash arguments commit d4e7c195fabf0f24c2ffbd4ca8f189489bbbf44d Author: Eelco Dolstra Date: Tue Aug 19 17:44:59 2014 +0200 Make hook shutdown more reliable commit ea837e470f70900481d00b0d1cd73e6855c4f70d Author: Eelco Dolstra Date: Mon Aug 18 11:35:50 2014 +0200 Doh commit 790271559cb8b36cd8fcdc533f41be88ec15ad08 Author: Eelco Dolstra Date: Sun Aug 17 19:11:50 2014 +0200 Reduce verbosity commit 3f6d4f63ec0d1d6cfc3233998b7dd9608b2f6ff3 Author: Eelco Dolstra Date: Sun Aug 17 19:09:03 2014 +0200 Propagate remote timeouts properly commit aa98ba506739b885b3ce0b392dade5e1e1bb07f7 Author: Eelco Dolstra Date: Wed Aug 13 17:44:41 2014 +0200 Use regular file GC roots if possible This makes hydra-eval-jobs create roots as regular files. See 1c208f2b7ef8ffb5e6d435d703dad83223a67bd6. commit 5fe5ff77800c2911c011f582d8dfa90c44d4a3a5 Author: Eelco Dolstra Date: Tue Aug 5 16:41:42 2014 +0200 Remove unnecessary call to addTempRoot() commit 1820845c44c8cbe1121e78d5f16e7778532477f6 Author: Eelco Dolstra Date: Tue Aug 5 10:19:57 2014 +0200 Doh commit e9070bf4226b225a0b42798b20ea3947abf58a6f Author: Eelco Dolstra Date: Mon Aug 4 18:13:14 2014 +0200 Move some options out of globals commit 31909515634d74e4c3d92be6186c5c48244582ae Author: Eelco Dolstra Date: Mon Aug 4 18:02:29 2014 +0200 Refactor commit f530ee6f356f4299ca343dde7f4c0742300ffa08 Author: Eelco Dolstra Date: Mon Aug 4 18:00:00 2014 +0200 Add option ‘build-extra-chroot-dirs’ This is useful for extending (rather than overriding) the default set of chroot paths. commit 75f746f018e34868b8057bed87c90d2cbe2c0b6c Author: Eelco Dolstra Date: Mon Aug 4 17:27:45 2014 +0200 Get rid of "killing " message for unused build hooks commit 42c6246f674ca2d5ea166d1ae676b7087ea1b0d8 Author: Eelco Dolstra Date: Fri Aug 1 19:38:21 2014 +0200 Remove ugly hack for detecting build environment setup errors commit b732ffd28ddf50d3150e4f276a0e8488e38eaacb Author: Eelco Dolstra Date: Fri Aug 1 19:29:03 2014 +0200 Call commonChildInit() before doing chroot init This ensures that daemon clients see error messages from the chroot setup. commit c51374c128cbe1f06acd95ba2d627a118a95aabf Author: Eelco Dolstra Date: Fri Aug 1 17:30:51 2014 +0200 Eliminate redundant copy commit 666c9b7108e460f0d3450015a3379bfeb3e3a497 Author: Eelco Dolstra Date: Fri Aug 1 17:20:25 2014 +0200 findRoots(): Prevent a call to lstat() This means that getting the roots from /nix/var/nix/.../hydra-roots doesn't need any I/O other than reading the directory. commit 82d463d9cacbf2a93b95ab5313567d593fd00d02 Author: Eelco Dolstra Date: Fri Aug 1 16:37:47 2014 +0200 Make readDirectory() return inode / file type commit a98fa2d9e2b06e2561330c5ef845ffaf131e95ac Author: Eelco Dolstra Date: Fri Aug 1 16:46:01 2014 +0200 Allow regular files as GC roots If a root is a regular file, then its name must denote a store path. For instance, the existence of the file /nix/var/nix/gcroots/per-user/eelco/hydra-roots/wzc3cy1wwwd6d0dgxpa77ijr1yp50s6v-libxml2-2.7.7 would cause /nix/store/wzc3cy1wwwd6d0dgxpa77ijr1yp50s6v-libxml2-2.7.7 to be a root. This is useful because it involves less I/O (no need for a readlink() call) and takes up less disk space (the symlink target typically takes up a full disk block, while directory entries are packed more efficiently). This is particularly important for hydra.nixos.org, which has hundreds of thousands of roots, and where reading the roots can take 25 minutes. commit 4ab4b0c109734bd6e265ca5f1b6415c31c03ab11 Author: Eelco Dolstra Date: Thu Jul 24 00:00:53 2014 +0200 Remove some dead code commit 1cffdf5847b065183c9aac86df3a9578020e6712 Author: Eelco Dolstra Date: Wed Jul 23 19:43:46 2014 +0200 nix-daemon: Less verbosity commit bb07dfe96f0d07aa18db385d3ec93b24b5568213 Author: Eelco Dolstra Date: Wed Jul 23 19:37:40 2014 +0200 nix-daemon: Simplify stderr handling commit 766481d606e4b1860307692d6a44723983662d45 Merge: c69944c fdee1ce Author: Ludovic Courtès Date: Mon May 11 17:04:26 2015 +0200 Merge commit 'fdee1ced43fb495d612a29e955141cdf6b9a95ba' into nix commit c69944c511b89d3fdbffe00353e27d1e1c5f670c Merge: a1dd396 8e9140c Author: Ludovic Courtès Date: Wed May 6 23:22:04 2015 +0200 Merge commit '8e9140cfdef9dbd1eb61e4c75c91d452ab5e4a74' into nix Conflicts: Makefile.config.in configure.ac dev-shell doc/manual/builtins.xml doc/manual/conf-file.xml doc/manual/local.mk doc/manual/nix-instantiate.xml doc/manual/nix-store.xml doc/manual/writing-nix-expressions.xml misc/emacs/nix-mode.el perl/lib/Nix/CopyClosure.pm release.nix scripts/nix-build.in scripts/nix-copy-closure.in src/download-via-ssh/download-via-ssh.cc src/libexpr/common-opts.cc src/libexpr/common-opts.hh src/libexpr/eval.cc src/libexpr/eval.hh src/libexpr/local.mk src/libexpr/nixexpr.cc src/libexpr/nixexpr.hh src/libexpr/parser.y src/libexpr/primops.cc src/libexpr/symbol-table.hh src/libmain/shared.cc src/libstore/local.mk src/nix-env/nix-env.cc src/nix-instantiate/nix-instantiate.cc src/nix-store/local.mk src/nix-store/nix-store.cc src/nix-store/serve-protocol.hh tests/lang.sh tests/lang/eval-okay-context.nix tests/lang/eval-okay-search-path.exp tests/lang/eval-okay-search-path.nix tests/local.mk tests/nix-copy-closure.nix commit a1dd396cc02922372314c35c8035a38bfeea08df Merge: 0a75126 8d5f472 Author: Ludovic Courtès Date: Sun Jan 4 23:01:14 2015 +0100 Merge commit '8d5f472f2c49c79a0d3ae2e506f4d4d76224b328' into nix Conflicts: .gitignore Makefile doc/manual/installation.xml doc/manual/introduction.xml doc/manual/local.mk doc/manual/manual.xml doc/manual/nix-collect-garbage.xml doc/manual/nix-env.xml doc/manual/nix-install-package.xml doc/manual/nix-store.xml doc/manual/quick-start.xml doc/manual/release-notes.xml local.mk misc/emacs/nix-mode.el mk/functions.mk mk/install.mk mk/lib.mk mk/libraries.mk mk/patterns.mk mk/programs.mk nix.spec.in release.nix scripts/install-nix-from-closure.sh scripts/nix-build.in src/libexpr/eval-inline.hh src/libexpr/eval.cc src/libexpr/eval.hh src/libexpr/get-drvs.cc src/libexpr/nixexpr.cc src/libexpr/nixexpr.hh src/libexpr/parser.y src/libexpr/primops.cc src/libstore/local.mk src/nix-daemon/local.mk src/nix-env/nix-env.cc src/nix-env/user-env.cc src/nix-instantiate/nix-instantiate.cc src/nix-store/nix-store.cc tests/init.sh tests/nix-copy-closure.nix tests/remote-builds.nix version commit 0a751260ae54bb37ae33e0f4fc3bcda2a4ea3ceb Author: Ludovic Courtès Date: Wed Dec 17 11:10:25 2014 +0100 nix: Adjust code for Guix. * nix/libstore/gc.cc (addAdditionalRoots): Refer to 'list-runtime-roots' instead of 'find-runtime-roots.pl'. * nix/libutil/hash.cc, nix/libutil/hash.hh: Change 'union Ctx' to 'struct Ctx', like 'nix/sync-with-upstream' did. * nix/AUTHORS: New file. * nix/COPYING: New file, from upstream Nix. * nix/libutil/md32_common.h, nix/libutil/md5.c, nix/libutil/md5.h, nix/libutil/sha1.c, nix/libutil/sha1.h, nix/libutil/sha256.c, nix/libutil/sha256.h: Remove. commit d4e18b05e0ab149265d3d09ae017d7337fc4176f Author: Ludovic Courtès Date: Wed Dec 17 10:44:19 2014 +0100 Keep only libstore, nix-daemon, and related stuff. commit fdee1ced43fb495d612a29e955141cdf6b9a95ba Author: Eelco Dolstra Date: Wed Jul 23 19:11:26 2014 +0200 startProcess: Make writing error messages from the child more robust commit 5989966ed3bd58cd362aed8cba6cd5c90b380a32 Author: Eelco Dolstra Date: Wed Jul 23 14:46:28 2014 +0200 Remove dead code commit ee3c5d7916b48d0c3b1cc08044e27209c14acfdc Author: Eelco Dolstra Date: Sat Jul 19 02:25:47 2014 +0200 Revert old useBuildHook behaviour commit 2e77bd70faee34cb2518529318a54b39f2d9143e Author: Eelco Dolstra Date: Fri Jul 18 12:54:30 2014 +0200 Better fix for strcasecmp on Darwin commit f609eec71a25a9bb8c32dd9620b7deb88633a22a Author: Eelco Dolstra Date: Fri Jul 18 00:01:06 2014 +0200 Bump commit 8ddffe7aac414756809f43732effb8951858243b Author: Eelco Dolstra Date: Thu Jul 17 23:57:17 2014 +0200 Ugly hack to fix building on old Darwin http://hydra.nixos.org/build/12580878 commit 049c0eb49c621ae50f49c8a06dc6c3a9839ef388 Author: Eelco Dolstra Date: Thu Jul 17 16:57:07 2014 +0200 nix-daemon: Add trusted-users and allowed-users options ‘trusted-users’ is a list of users and groups that have elevated rights, such as the ability to specify binary caches. It defaults to ‘root’. A typical value would be ‘@wheel’ to specify all users in the wheel group. ‘allowed-users’ is a list of users and groups that are allowed to connect to the daemon. It defaults to ‘*’. A typical value would be ‘@users’ to specify the ‘users’ group. commit 0c730887c4ec4a03fb854490e422c134a1bf8139 Author: Eelco Dolstra Date: Thu Jul 17 15:49:33 2014 +0200 nix-daemon: Show name of connecting user commit 77c972c898b325997fa2f527264a9706f1e414a5 Author: Eelco Dolstra Date: Thu Jul 17 15:41:11 2014 +0200 nix-daemon: Only print connection info if we have SO_PEERCRED commit 8f72e702a114458e92f644160950344a7bf7166a Author: Eelco Dolstra Date: Thu Jul 17 15:23:31 2014 +0200 nix-daemon: Fix compat with older clients commit 2304a7dd21639959dc4bcafa3e17374cc087cd0a Author: Eelco Dolstra Date: Wed Jul 16 16:32:26 2014 +0200 Get rid of a compiler warning commit 985f1595fe9f61095c7bc94b49be1179811ec630 Author: Eelco Dolstra Date: Wed Jul 16 16:30:50 2014 +0200 Be more strict about file names in NARs commit 276a40b31f631c188d6dcbdf603a738e1380ff74 Author: Eelco Dolstra Date: Wed Jul 16 16:02:05 2014 +0200 Handle case collisions on case-insensitive systems When running NixOps under Mac OS X, we need to be able to import store paths built on Linux into the local Nix store. However, HFS+ is usually case-insensitive, so if there are directories with file names that differ only in case, then importing will fail. The solution is to add a suffix ("~nix~case~hack~") to colliding files. For instance, if we have a directory containing xt_CONNMARK.h and xt_connmark.h, then the latter will be renamed to "xt_connmark.h~nix~case~hack~1". If a store path is dumped as a NAR, the suffixes are removed. Thus, importing and exporting via a case-insensitive Nix store is round-tripping. So when NixOps calls nix-copy-closure to copy the path to a Linux machine, you get the original file names back. Closes #119. commit bb65460feb265be4d938c7dc724a76ef41a8bfaf Author: Eelco Dolstra Date: Wed Jul 16 11:19:12 2014 +0200 Make dev-shell script work on Darwin commit de8be7c3e06b52c313e0b452b641ad5f90dca2fe Author: Eelco Dolstra Date: Wed Jul 16 11:16:54 2014 +0200 Install systemd and Upstart stuff only on Linux commit 048be62484537633e2523dd4d200619649ff860d Author: Shea Levy Date: Wed Jul 16 01:11:24 2014 -0400 Pass *_proxy vars to bootstrap fetchurl commit a2c85b2ef85a34bf8e5238c315a4ca73606f5ae6 Author: Eelco Dolstra Date: Wed Jul 16 11:09:01 2014 +0200 Manual: Typo commit 5bcb98271103c6c2ca3b993d8b1b0eb9eadcbc1c Author: Eelco Dolstra Date: Mon Jul 14 12:39:33 2014 +0200 Remove cruft commit fa13d3f4f3d8fb6dc3e3fc87ac5a2e26d8b32d84 Author: Eelco Dolstra Date: Mon Jul 14 12:19:27 2014 +0200 build-remote.pl: Fix building multiple output derivations We were importing paths without sorting them topologically, leading to "path is not valid" errors. See e.g. http://hydra.nixos.org/build/12451761 commit b2e0293f022123b11759dfd498d4eff72233d3f7 Author: Eelco Dolstra Date: Sat Jul 12 00:43:28 2014 +0200 build-remote.pl: Don't keep a shell process around commit a00a98548e994d1ea258e14793c7bcd8ea56cfdf Author: Eelco Dolstra Date: Sat Jul 12 00:09:43 2014 +0200 build-remote.pl: Fix build log commit 838138c5c4d21a207f3579c4f743698bd6dbb6b1 Author: Eelco Dolstra Date: Fri Jul 11 16:20:12 2014 +0200 Fix test commit a5c6347ff06ba09530fdf0e01828aaec89f6ceb6 Author: Eelco Dolstra Date: Fri Jul 11 16:02:19 2014 +0200 build-remote.pl: Use ‘nix-store --serve’ on the remote side This makes things more efficient (we don't need to use an SSH master connection, and we only start a single remote process) and gets rid of locking issues (the remote nix-store process will keep inputs and outputs locked as long as they're needed). It also makes it more or less secure to connect directly to the root account on the build machine, using a forced command (e.g. ‘command="nix-store --serve --write"’). This bypasses the Nix daemon and is therefore more efficient. Also, don't call nix-store to import the output paths. commit b8f24f253527e1cb071785c3b2d677ed2f734ab1 Author: Eelco Dolstra Date: Fri Jul 11 14:27:17 2014 +0200 Fix closure size display commit e196eecbe6552d5afed89ad480544c90cf959922 Author: Eelco Dolstra Date: Fri Jul 11 13:55:06 2014 +0200 Allow $NIX_BUILD_HOOK to be relative to Nix libexec directory commit d0eb970fb4d3b5c347506b77f9657fc5eb6229e2 Author: Eelco Dolstra Date: Thu Jul 10 21:48:21 2014 +0200 Fix broken Pid constructor commit edbfe2232e275a9e6c10cd8eb4dc36ca992af084 Author: Eelco Dolstra Date: Thu Jul 10 21:30:22 2014 +0200 Replace message "importing path <...>" with "exporting path <...>" This causes nix-copy-closure to show what it's doing before rather than after. commit 42d91b079c5d0b468663511e7b2a8e2f4048c475 Author: Eelco Dolstra Date: Thu Jul 10 21:14:34 2014 +0200 Fix use of sysread commit 7bb632b02464febd8806ef4bd3fa0ac107f52650 Author: Eelco Dolstra Date: Thu Jul 10 20:43:04 2014 +0200 nix-copy-closure -s: Do substitutions via ‘nix-store --serve’ This means we no longer need an SSH master connection, since we only execute a single command on the remote host. commit 7c3a5090bff4e9cfe70f1d89619563b55af13d89 Author: Eelco Dolstra Date: Thu Jul 10 17:44:18 2014 +0200 nix-copy-closure: Fix --dry-run commit 43b64f503844a66c344780a11289678a001572db Author: Eelco Dolstra Date: Thu Jul 10 17:32:21 2014 +0200 Remove tabs commit 8e9140cfdef9dbd1eb61e4c75c91d452ab5e4a74 Author: Eelco Dolstra Date: Thu Jul 10 16:50:51 2014 +0200 Refactoring: Move all fork handling into a higher-order function C++11 lambdas ftw. commit 1114c7bd57bcab16255d5db5e6f66ae8dece7b1e Author: Eelco Dolstra Date: Thu Jul 10 14:15:12 2014 +0200 nix-copy-closure: Restore compression and the progress viewer commit 7911e4c27a0020a61ace13cfdc44de4af02f315e Author: Eelco Dolstra Date: Mon Jun 23 09:15:35 2014 -0400 Remove maybeVfork commit 04170d06bf7d17f882c01d3ab98885e0f3e46d2f Author: Eelco Dolstra Date: Thu Jul 10 11:51:22 2014 +0200 nix-copy-closure: Fix race condition There is a long-standing race condition when copying a closure to a remote machine, particularly affecting build-remote.pl: the client first asks the remote machine which paths it already has, then copies over the missing paths. If the garbage collector kicks in on the remote machine between the first and second step, the already-present paths may be deleted. The missing paths may then refer to deleted paths, causing nix-copy-closure to fail. The client now performs both steps using a single remote Nix call (using ‘nix-store --serve’), locking all paths in the closure while querying. I changed the --serve protocol a bit (getting rid of QueryCommand), so this breaks the SSH substituter from older versions. But it was marked experimental anyway. Fixes #141. commit 2c3a8f787ba9da49feafdec4022534184e0a96a3 Author: Eelco Dolstra Date: Thu Jul 10 11:46:01 2014 +0200 Fix security hole in ‘nix-store --serve’ Since it didn't check that the path received from the client is a store path, the client could dump any path in the file system. commit 66dbc0fdeebf509c5d919e9c12b2645136d6deeb Author: Eelco Dolstra Date: Thu Jul 10 01:50:29 2014 +0200 Add a test for the SSH substituter commit 0e5d0c15430cf82861a1ae213cbccff065f71107 Author: Eelco Dolstra Date: Wed Jul 9 12:14:40 2014 +0200 Fix compilation error on some versions of GCC src/libexpr/primops.cc:42:8: error: looser throw specifier for 'virtual nix::InvalidPathError::~InvalidPathError()' src/libexpr/nixexpr.hh:12:1: error: overriding 'virtual nix::EvalError::~EvalError() noexcept (true)' http://hydra.nixos.org/build/12385750 commit beac05c206a801be6f83b4eaaffe75c30eeb7d37 Author: Eelco Dolstra Date: Tue Jul 8 20:41:25 2014 +0200 Don't build on Ubuntu 10.10 Its C++ compiler is too old. http://hydra.nixos.org/build/12385722 commit beaf3e90aff14664b98f2c7ab7387c9fa4354fd1 Author: Eelco Dolstra Date: Fri Jul 4 13:34:15 2014 +0200 Add builtin function ‘fromJSON’ Fixes #294. commit e82951fe23daa961ef18b0c5cc9ba1f5d8906186 Author: Eelco Dolstra Date: Thu Jul 3 12:36:58 2014 +0200 Manual: html -> xhtml commit e477f0e9385d7825f005b7e9a32cd3ad6ee27aab Author: Eelco Dolstra Date: Fri Jun 27 11:36:23 2014 +0200 Style fix commit 858b8f9760a81540b0a95068d96dc5c1628673c3 Author: Paul Colomiets Date: Tue Jun 24 00:30:22 2014 +0300 Add `--json` argument to `nix-instantiate` commit 8504e7d60488cb12dd2597734ebd1d3cadf5d153 Author: Eelco Dolstra Date: Fri Jun 27 11:20:16 2014 +0200 allow-arbitrary-code-during-evaluation -> allow-unsafe-native-code-during-evaluation commit d7be6d45d97e89653b77686bdb39b833afbcf6ca Merge: 9d0709e d62f46e Author: Eelco Dolstra Date: Fri Jun 27 11:18:54 2014 +0200 Merge branch 'shlevy-import-native' commit d62f46e500958bc97ae6837911e27c20a47cc181 Author: Shea Levy Date: Tue Jun 24 10:50:03 2014 -0400 Only add the importNative primop if the allow-arbitrary-code-during-evaluation option is true (default false) commit 5cd022d6c099c583c0494bdacd06f4eb32661135 Author: Shea Levy Date: Sun Jun 1 10:42:56 2014 -0400 Add importNative primop This can be used to import a dynamic shared object and return an arbitrary value, including new primops. This can be used both to test new primops without having to recompile nix every time, and to build specialized primops that probably don't belong upstream (e.g. a function that calls out to gpg to decrypt a nixops secret as-needed). The imported function should initialize the Value & as needed. A single import can define multiple values by creating an attrset or list, of course. An example initialization function might look like: extern "C" void initialize(nix::EvalState & state, nix::Value & v) { v.type = nix::tPrimOp; v.primOp = NEW nix::PrimOp(myFun, 1, state.symbols.create("myFun")); } Then `builtins.importNative ./example.so "initialize"` will evaluate to the primop defined in the myFun function. commit 9d0709e8c47082cec35d6412053eacfadae23bcd Author: Eelco Dolstra Date: Thu Jun 12 17:30:37 2014 +0200 Don't use member initialisers They're a little bit too recent (only supported since GCC 4.7). http://hydra.nixos.org/build/11851475 commit 48495f67ed893c4ee056099ae0ca5a2afacde93c Author: Eelco Dolstra Date: Thu Jun 12 13:15:35 2014 +0200 Fix bogus warnings about dumping large paths Also, yay for C++11 non-static initialisers. commit 0960d674d48808eaaa3475899f45cfd6c7c3e51d Author: Eelco Dolstra Date: Thu Jun 12 13:00:54 2014 +0200 Drop ImportError and FindError We're not catching these anywhere. commit 718f20da6d79466f91c49849bcf91a688aaa871e Author: Shea Levy Date: Fri May 30 15:43:31 2014 -0400 findFile: Realise the context of the path attributes commit a8fb575c98726f195d0cf5c7e6b7e51c75a0a9b3 Author: Shea Levy Date: Fri May 30 15:04:17 2014 -0400 Share code between scopedImport and import In addition to reducing duplication, this fixes both import from derivation and import of derivation for scopedImport commit 61c464f252271d3d6343e1bfa1e3b39d2c8473cd Author: Steve Purcell Date: Thu Jun 5 11:04:48 2014 +0100 Add autoloads, make code more concise & idiomatic - Use define-derived-mode to declare nix-mode - Use autoloads to ensure nix-mode is usable (and enabled) without needing `require` - Use set + make-local-variable instead of longer 2-step equivalent commit ee7fe64c0ac00f2be11604a2a6509eb86dc19f0a Author: Eelco Dolstra Date: Tue Jun 10 14:02:56 2014 +0200 == operator: Ignore string context There really is no case I can think of where taking the context into account is useful. Mostly it's just very inconvenient. commit b1beed97a0670befbfd5e105a81132e87e58ac37 Author: Eelco Dolstra Date: Tue Jun 10 13:45:50 2014 +0200 Report daemon OOM better When copying a large path causes the daemon to run out of memory, you now get: error: Nix daemon out of memory instead of: error: writing to file: Broken pipe commit 829af22759b8a99c3b44697365390a945f3acc04 Author: Eelco Dolstra Date: Tue Jun 10 13:30:09 2014 +0200 Print a warning when loading a large path into memory I.e. if you have a derivation with src = ./huge-directory; you'll get a warning that this is not a good idea. commit 3c6b8a521561f5341652ffe37b869d5ab457227b Author: Eelco Dolstra Date: Mon Jun 2 17:58:43 2014 +0200 nix-env -qa --json: Generate valid JSON even if there are invalid meta attrs commit ceed8192848760430c9c23659f9cb979aad1f9c3 Author: Eelco Dolstra Date: Thu May 29 19:04:27 2014 +0200 Fix test commit becc2b01678c5742b3fe6c379430606a5ef8e34d Author: Eelco Dolstra Date: Thu May 29 19:02:14 2014 +0200 Sort nixPath attributes commit 54a34119f349d531557af9e90d21d04d689ee817 Author: Eelco Dolstra Date: Mon May 26 17:53:17 2014 +0200 Use std::unordered_set commit a457d5ad4d7f6cd4f817581de1b4f70cdad9c617 Author: Aristid Breitkreuz Date: Sun May 4 14:26:41 2014 +0200 nix-build: --add-root also takes 1 parameter commit b1d39d476544644b2de8addb5ad3289fede2f95a Author: Sönke Hahn Date: Fri May 23 11:41:09 2014 +0800 dev-shell is a bash script, not sh 'type -p' does not work in e.g. dash commit 8ea9fd7aa6b2152f95724e504ac61c57d90b113c Author: Adam Szkoda Date: Sun May 25 10:54:54 2014 +0200 Rephrase @ operator description commit d8c061e044a07f7516d76df12bc6920f4f04e5ff Author: Eelco Dolstra Date: Mon May 26 17:14:28 2014 +0200 Remove ExprBuiltin It's slower than ExprVar since it doesn't compute a static displacement. Since we're not using the throw primop in the implementation of <...> anymore, it's also not really needed. commit 62a6eeb1f3da0a5954ad2da54c454eb7fc1c6e5d Author: Eelco Dolstra Date: Mon May 26 17:02:22 2014 +0200 Make the Nix search path declarative Nix search path lookups like are now desugared to ‘findFile nixPath ’, where ‘findFile’ is a new primop. Thus you can override the search path simply by saying let nixPath = [ { prefix = "nixpkgs"; path = "/my-nixpkgs"; } ]; in ... ... In conjunction with ‘scopedImport’ (commit c273c15cb13bb86420dda1e5341a4e19517532b5), the Nix search path can be propagated across imports, e.g. let overrides = { nixPath = [ ... ] ++ builtins.nixPath; import = fn: scopedImport overrides fn; scopedImport = attrs: fn: scopedImport (overrides // attrs) fn; builtins = builtins // overrides; }; in scopedImport overrides ./nixos commit 39d72640c2459dc2fa689bfe8b756ee193f7b98a Author: Eelco Dolstra Date: Mon May 26 16:50:36 2014 +0200 Ensure that -I flags get included in nixPath Also fixes #261. commit a8edf185a9e1677088c8c30acc9d281c8350bca7 Author: Eelco Dolstra Date: Mon May 26 14:55:47 2014 +0200 Add constant ‘nixPath’ It contains the Nix expression search path as a list of { prefix, path } sets, e.g. [ { path = "/nix/var/nix/profiles/per-user/root/channels/nixos"; prefix = ""; } { path = "/etc/nixos/configuration.nix"; prefix = "nixos-config"; } { path = "/home/eelco/Dev/nix/inst/share/nix/corepkgs"; prefix = "nix"; } ] commit c273c15cb13bb86420dda1e5341a4e19517532b5 Author: Eelco Dolstra Date: Mon May 26 13:46:11 2014 +0200 Add primop ‘scopedImport’ ‘scopedImport’ works like ‘import’, except that it takes a set of attributes to be added to the lexical scope of the expression, essentially extending or overriding the builtin variables. For instance, the expression scopedImport { x = 1; } ./foo.nix where foo.nix contains ‘x’, will evaluate to 1. This has a few applications: * It allows getting rid of function argument specifications in package expressions. For instance, a package expression like: { stdenv, fetchurl, libfoo }: stdenv.mkDerivation { ... buildInputs = [ libfoo ]; } can now we written as just stdenv.mkDerivation { ... buildInputs = [ libfoo ]; } and imported in all-packages.nix as: bar = scopedImport pkgs ./bar.nix; So whereas we once had dependencies listed in three places (buildInputs, the function, and the call site), they now only need to appear in one place. * It allows overriding builtin functions. For instance, to trace all calls to ‘map’: let overrides = { map = f: xs: builtins.trace "map called!" (map f xs); # Ensure that our override gets propagated by calls to # import/scopedImport. import = fn: scopedImport overrides fn; scopedImport = attrs: fn: scopedImport (overrides // attrs) fn; # Also update ‘builtins’. builtins = builtins // overrides; }; in scopedImport overrides ./bla.nix * Similarly, it allows extending the set of builtin functions. For instance, during Nixpkgs/NixOS evaluation, the Nixpkgs library functions could be added to the default scope. There is a downside: calls to scopedImport are not memoized, unlike import. So importing a file multiple times leads to multiple parsings / evaluations. It would be possible to construct the AST only once, but that would require careful handling of variables/environments. commit f0fdbd0897ce63c138ec663ed89a94709a8441a7 Author: Eelco Dolstra Date: Mon May 26 12:34:15 2014 +0200 Shut up some signedness warnings commit 0321ef9bb261958fe4d63210e9a9d3350737ef18 Author: Eelco Dolstra Date: Fri May 23 14:43:55 2014 +0200 Ugly hack to allow --argstr values starting with a dash Fixes #265. commit 3064a8215608eca391fcb9d492735a662f48242e Author: Eelco Dolstra Date: Thu May 22 11:38:50 2014 +0200 Disable parallel.sh test It breaks randomly: http://hydra.nixos.org/build/11152871 commit 9f9080e2c019f188ba679a7a89284d7eaf629710 Author: Eelco Dolstra Date: Wed May 21 17:19:36 2014 +0200 nix-store -l: Fetch build logs from the Internet If a build log is not available locally, then ‘nix-store -l’ will now try to download it from the servers listed in the ‘log-servers’ option in nix.conf. For instance, if you have: log-servers = http://hydra.nixos.org/log then it will try to get logs from http://hydra.nixos.org/log/. So you can do things like: $ nix-store -l $(which xterm) and get a log even if xterm wasn't built locally. commit eac5841970737b799c55ec78f6ace6d80762ff04 Author: Shea Levy Date: Thu May 15 11:30:46 2014 -0400 Provide a more useful error message when a dynamic attr lookup fails commit 8d5f472f2c49c79a0d3ae2e506f4d4d76224b328 Author: Eelco Dolstra Date: Thu May 15 11:37:44 2014 +0200 lvlInfo -> lvlTalkative commit 84813af5b938246d9a4a785dfb08b86383ef62ae Author: Eelco Dolstra Date: Thu May 15 11:33:46 2014 +0200 nix-store --optimise: Remove bogus statistics commit 690adeb03de039551c4d8b5b4e7dda21c9c8f9b9 Author: Eelco Dolstra Date: Thu May 15 11:19:16 2014 +0200 Remove tab commit a1b66f316e980b4b7e755de47604bdc30371b67e Merge: e384e7b 3b9ea84 Author: Eelco Dolstra Date: Thu May 15 11:18:29 2014 +0200 Merge branch 'master' of github.com:wmertens/nix commit 3b9ea8452f102595874826e349fa38f85c00aa39 Author: Wout Mertens Date: Thu May 15 09:02:22 2014 +0200 Shortcut store files before lstat readdir() already returns the inode numbers, so we don't need to call lstat to know if a file was already linked or not. commit d73ffc552f78e0d9048e3bcc1e84452d1e8d2ede Author: Wout Mertens Date: Wed May 14 22:52:10 2014 +0200 Use the inodes given by readdir directly commit e384e7b387c4745f30032ef431a06aa26cee73a5 Author: Eelco Dolstra Date: Wed May 14 22:25:25 2014 +0200 Remove redundant code commit e974f20c9811c3efe09cfca9bda7816f9091c0d5 Author: Wout Mertens Date: Tue May 13 23:10:06 2014 +0200 Preload linked hashes to speed up lookups By preloading all inodes in the /nix/store/.links directory, we can quickly determine of a hardlinked file was already linked to the hashed links. This is tolerant of removing the .links directory, it will simply recalculate all hashes in the store. commit 36662eb5629c31cfd1b8472c9b7eb136b3937a4d Author: Ricky Elrod Date: Sun May 11 18:57:53 2014 -0400 Prepare nix-mode to be uploaded to marmalade Signed-off-by: Ricky Elrod commit 95501c4deea1d945022df18475340232bc6980be Author: Eelco Dolstra Date: Tue May 13 12:54:28 2014 +0200 nix-instantiate --eval: Apply auto-arguments if the result is a function Fixes #254. commit a55e77ae10a76336728be6fbb0f0d7957422b56a Author: Charles Strahan Date: Mon May 12 14:31:16 2014 -0400 fix typo commit a84f503d863fd77de9b6ecf149399c2ca7642b75 Author: wmertens Date: Sat May 10 15:53:01 2014 +0200 Shortcut already-hardlinked files If an inode in the Nix store has more than 1 link, it probably means that it was linked into .links/ by us. If so, skip. There's a possibility that something else hardlinked the file, so it would be nice to be able to override this. Also, by looking at the number of hardlinks for each of the files in .links/, you can get deduplication numbers and space savings. commit aa9b1cf48e6482a74dcc19e6aef1d8236b57abe4 Author: Eelco Dolstra Date: Tue May 6 10:51:16 2014 +0200 Really fix the RPM builds http://hydra.nixos.org/build/10840199 commit 2c4affbaa88c8bfbee92093f0355b6e118fd5447 Author: Eelco Dolstra Date: Mon May 5 20:22:35 2014 +0200 Fix RPM build We don't install a nix.conf anymore. http://hydra.nixos.org/build/10826143 commit 93506e60d2f86079a6db260d376a92773900d0d3 Author: Rob Vermaas Date: Sat May 3 17:54:48 2014 +0200 Add ubuntu 14.04 commit 40250f23a0a301bb758e7f0f21fcd09b702e0e1e Author: Eelco Dolstra Date: Fri May 2 19:04:10 2014 +0200 Don't install Upstart job on Fedora Also, don't install a nix.conf anymore, it's not needed. http://hydra.nixos.org/build/10775854 commit 6dd10873961d45fd246b48ad82b7f05ad3d4d077 Author: Eelco Dolstra Date: Fri May 2 19:02:10 2014 +0200 Fix Debian tests These actually run as root in a VM, so they get confused. http://hydra.nixos.org/build/10775854 commit a8c31d501185c42de477a7e833af956d68e095c3 Author: Eelco Dolstra Date: Fri May 2 14:44:44 2014 +0200 Simplify multi-user installation instructions commit 696f960dee35889433adfa6c08a2dbfb6ea0724f Author: Eelco Dolstra Date: Fri May 2 14:31:15 2014 +0200 Set up directories and permissions for multi-user install automatically This automatically creates /nix/var/nix/profiles/per-user and sets the permissions/ownership on /nix/store to 1775 and root:nixbld. commit 20668b136329da92be7c63e7f7c4918968ff0015 Author: Eelco Dolstra Date: Fri May 2 13:14:10 2014 +0200 Install an Upstart service commit de4cdd0d47adc70a4db12397a42c18ee50b4e662 Author: Eelco Dolstra Date: Fri May 2 12:51:43 2014 +0200 Set build-max-jobs to the number of available cores by default More zero configuration. commit ada3e3fa15bc14aebb2bafd1240c15cf1fd99351 Author: Eelco Dolstra Date: Fri May 2 12:46:03 2014 +0200 When running as root, use build users by default This removes the need to have a nix.conf, and prevents people from accidentally running Nix builds as root. commit eeffdb74dcdbd64bcdc44cff4e587b59c4f807b5 Author: Charles Strahan Date: Sun Apr 27 14:07:50 2014 -0400 doc fix: swap 'import' and 'export' commit 31fe55bb8e599702ac79b24b2109199be50a85a1 Author: Eelco Dolstra Date: Fri Apr 25 14:55:13 2014 +0200 trunk -> master commit 700c678c2eed5e05c3e68d722c41c2b37d0a2f45 Author: Ricardo M. Correia Date: Fri Apr 11 17:10:20 2014 +0200 nix-env: Minor change to '--delete-generations Nd' semantics The option '--delete-generations Nd' deletes all generations older than N days. However, most likely the user does not want to delete the generation that was active N days ago. For example, say that you have these 3 generations: 1: <30 days ago> 2: <15 days ago> 3: <1 hour ago> If you do --delete-generations 7d (say, as part of a cron job), most likely you still want to keep generation 2, i.e. the generation that was active 7 days ago (and for most of the past 7 days, in fact). This patch fixes this issue. Note that this also affects 'nix-collect-garbage --delete-older-than Nd'. Thanks to @roconnor for noticing the issue! commit fb5d76b89e8b0084fb147d79af5481e09b889386 Author: Eelco Dolstra Date: Tue Apr 15 15:32:27 2014 +0200 Fix test evaluation commit a1917208c025e0a029cb33bbf3cf69e4d4128a39 Author: Eelco Dolstra Date: Fri Apr 11 15:11:28 2014 +0200 Bump date commit 742933116fd803afbf8c36dbc1eab51612d4bb55 Author: Eelco Dolstra Date: Fri Apr 11 11:15:24 2014 +0200 Bump version to 1.8 commit 924e19341a5ee488634bc9ce1ea9758ac496afc3 Author: Eelco Dolstra Date: Thu Apr 10 23:42:48 2014 +0200 Don't barf when installing as root commit b0a09a6f320d3a0ac186e87edb1c1782d8d168d5 Author: Eelco Dolstra Date: Wed Apr 9 14:52:43 2014 +0200 Add docbook icons to the distribution Grmbl... commit dfa2f77d2e1118f32771c2fceefd683435554b9d Author: Eelco Dolstra Date: Tue Apr 8 19:24:29 2014 +0200 If a .drv cannot be parsed, show its path Otherwise you just get ‘expected string `Derive(['’ which isn't very helpful. commit e0a947cde6d11b5182500f024719b04b8997189a Author: Eelco Dolstra Date: Tue Apr 8 16:28:39 2014 +0200 Simplify quick start section commit d23931f3a448fddc43d81f774fa83797729910e7 Author: Eelco Dolstra Date: Tue Apr 8 16:10:25 2014 +0200 Remove redundant stuff commit 48460057419ce651c9484a66d83e6b987b261d8c Author: Eelco Dolstra Date: Tue Apr 8 16:09:56 2014 +0200 Update installation instructions commit 2b6c8ef40121fdc418551e9b780bb909477c9a3c Author: Eelco Dolstra Date: Tue Apr 8 14:08:57 2014 +0200 nix-shell --pure: Keep the user's $PAGER commit 76cbf55a6d8953e393ba39896ccbb0948bac96d6 Author: Eelco Dolstra Date: Tue Apr 8 13:51:34 2014 +0200 Ensure that systemd units to into lib, not lib64 http://hydra.nixos.org/build/10170940 commit 89f923281335f695d4199e1fafaaeeb1729ba2d3 Author: Eelco Dolstra Date: Mon Apr 7 12:00:23 2014 +0200 Update release notes commit 84d6936371037559704337614c65007a8e61b5e1 Author: Eelco Dolstra Date: Mon Apr 7 11:18:54 2014 +0200 Install systemd units commit 8e5fbf4d730b9fcf39eddf5539a206cf19d2cdce Author: Eelco Dolstra Date: Fri Apr 4 22:52:14 2014 +0200 Show position info in attribute selection errors commit 4c5faad99408cdfc35a8b0923d1efdf288fd9990 Author: Eelco Dolstra Date: Fri Apr 4 22:43:52 2014 +0200 Show position info in Boolean operations commit bd9b1d97b42f307c8b595bb2de9b15bec1405b23 Author: Eelco Dolstra Date: Fri Apr 4 22:19:33 2014 +0200 Show position info in string concatenation / addition errors commit 8160f794e79a4a2a5269080b408d69fc93d7a305 Author: Eelco Dolstra Date: Fri Apr 4 21:53:47 2014 +0200 derivation: Don't require certain function arguments Turns out that in Nixpkgs, derivation is actually called without a ‘name’ argument in some places :-( commit a5fe73094016973a50741db0c5d51ca96c14147b Author: Eelco Dolstra Date: Fri Apr 4 21:14:11 2014 +0200 forceString: Show position info commit 27b44b8cf7072b09a1929ee44ba784b1c8d5211a Author: Eelco Dolstra Date: Fri Apr 4 19:11:40 2014 +0200 forceAttrs: Show position info commit 96b695ccab4a4c8c4ef7f14ac261df43dcc00743 Author: Eelco Dolstra Date: Fri Apr 4 19:05:36 2014 +0200 forceList: Show position info commit b62d36963c45ccaebb328fceaf0bb40f9c02a14b Author: Eelco Dolstra Date: Fri Apr 4 18:58:15 2014 +0200 forceInt: Show position info commit c28de6d96e7bfea834a44deac5217d4696fa8d86 Author: Eelco Dolstra Date: Fri Apr 4 18:51:01 2014 +0200 Pass position information to primop calls For example: error: `tail' called on an empty list, at /home/eelco/Dev/nixpkgs/pkgs/applications/misc/hello/ex-2/default.nix:13:7 commit 8b31ffd10de44871a3912184fedbeca57d8cf60f Author: Eelco Dolstra Date: Fri Apr 4 17:58:23 2014 +0200 Remove unnecessary quotes around file names commit b72c8d2e5b5bbdc218f7c00694027cdd75b6a584 Author: Eelco Dolstra Date: Fri Apr 4 17:53:52 2014 +0200 Include position info in function application This allows error messages like: error: the anonymous function at `/etc/nixos/configuration.nix:1:1' called without required argument `foo', at `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/lib/modules.nix:77:59' commit 3f8e1f56825f3ec2a9d99715609e362fe5e5a218 Author: Eelco Dolstra Date: Fri Apr 4 14:51:07 2014 +0200 Update release notes commit 1f19fdbd45d902a48fd8bacb25ef1a88020a0cc7 Author: Eelco Dolstra Date: Fri Apr 4 13:49:53 2014 +0200 Document that we require a C++11 compiler commit ae6b631dc48f4b923a6ed17b8d6e59524c4ea883 Author: Danny Wilson Date: Thu Apr 3 16:59:25 2014 +0200 Fix compile errors on Illumos commit daa16cca11304a0e91a188176959e2af28be1f57 Merge: f0de863 7191a73 Author: Eelco Dolstra Date: Thu Apr 3 17:37:14 2014 +0200 Sync with make-rules repo commit 7191a7394a3091ed2856508674f84f3a87eda5a6 Author: Eelco Dolstra Date: Thu Apr 3 17:35:16 2014 +0200 Support Illumos From https://github.com/NixOS/nix/pull/236 commit f0de86357c18e18eccd814c8bea3bfdaf10f75f5 Author: Eelco Dolstra Date: Thu Apr 3 15:24:02 2014 +0200 Tweak error message commit e7720aa10a1da63bb15a4587837d649268944943 Author: Ludovic Courtès Date: Wed Apr 2 23:41:11 2014 +0200 Make sure /dev/pts/ptmx is world-writable While running Python 3’s test suite, we noticed that on some systems /dev/pts/ptmx is created with permissions 0 (that’s the case with my Nixpkgs-originating 3.0.43 kernel, but someone with a Debian-originating 3.10-3 reported not having this problem.) There’s still the problem that people without CONFIG_DEVPTS_MULTIPLE_INSTANCES=y are screwed (as noted in build.cc), but I don’t see how we could work around it. commit ac6ceea7641d6c19c71079e22b03b4c1519c0c94 Author: Eelco Dolstra Date: Tue Apr 1 17:04:38 2014 +0200 Fix potential segfault The newEnv variable was accessed (via the dynamicEnv) pointer after it had gone out of scope. Fixes #234. commit 034b6f60626be014d00f68e02d8614ddf7ba44a0 Author: Ricardo M. Correia Date: Tue Mar 11 22:16:00 2014 +0100 nix-collect-garbage: Add --delete-older-than option commit 7ef7597f71b282265a9f79afe4608cd3b1bc4127 Author: Ricardo M. Correia Date: Tue Mar 11 21:47:21 2014 +0100 nix-env: Add support for --delete-generations 15d It will delete all generations older than the specified number of days. commit 59c90196850b6ac8c110e54c7f03d6417ed9bf61 Author: Maxim Ivanov Date: Sat Mar 29 11:43:11 2014 +0000 Fix nix-shell for derivation with multiple outputs If derivation declares multiple outputs and first (default) output if not "out", then "nix-instantiate" calls return path with output names appended after "!". Than suffix must be stripped before ant path checks are done. commit 1c2550a2ae826c422cf6d34f1c5c3e687474929d Author: Eelco Dolstra Date: Sun Mar 30 00:49:23 2014 +0100 boost::shared_ptr -> std::shared_ptr commit 9becaa041f4a597dc085e58ebe8f66a4f95d018e Author: Eelco Dolstra Date: Sat Mar 29 22:20:33 2014 +0100 Drop pointless #include commit acb8facbbc3ae0795987bd03a3dc2c17217d6172 Author: Eelco Dolstra Date: Sat Mar 29 22:14:11 2014 +0100 Fix potential segfault in waitForInput() Since the addition of build-max-log-size, a call to handleChildOutput() can result in cancellation of a goal. This invalidated the "j" iterator in the waitForInput() loop, even though it was still used afterwards. Likewise for the maxSilentTime handling. Probably fixes #231. At least it gets rid of the valgrind warnings. commit 90dc50b07c3939dda44fde79f696f64bf8f2f4d7 Author: Eelco Dolstra Date: Sat Mar 29 20:20:14 2014 +0100 restoreSIGPIPE(): Fill in sa_mask Issue #231. commit 49009573bc2eacd823d57433daf1f59dfe415065 Author: Eelco Dolstra Date: Fri Mar 28 16:59:26 2014 +0100 Don't interpret strings as format strings Ludo reported this error: unexpected Nix daemon error: boost::too_few_args: format-string refered to more arguments than were passed coming from this line: printMsg(lvlError, run.program + ": " + string(err, 0, p)); The problem here is that the string ends up implicitly converted to a Boost format() object, so % characters are treated specially. I always assumed (wrongly) that strings are converted to a format object that outputs the string as-is. Since this assumption appears in several places that may be hard to grep for, I've added some C++ type hackery to ensures that the right thing happens. So you don't have to worry about % in statements like printMsg(lvlError, "foo: " + s); or throw Error("foo: " + s); commit 24cb65efc3c34e24fc653779a4d42cf4f31c6737 Author: Ludovic Courtès Date: Fri Mar 21 13:54:53 2014 +0100 Make /dev/kvm optional The daemon now creates /dev deterministically (thanks!). However, it expects /dev/kvm to be present. The patch below restricts that requirement (1) to Linux-based systems, and (2) to systems where /dev/kvm already exists. I’m not sure about the way to handle (2). We could special-case /dev/kvm and create it (instead of bind-mounting it) in the chroot, so it’s always available; however, it wouldn’t help much since most likely, if /dev/kvm missing, then KVM support is missing. commit 3fc056927c962ec9778e94528f2f9ae316afca4e Author: Eelco Dolstra Date: Tue Mar 18 23:23:55 2014 +0100 Fix tabs commit 51800e06dec91282b81fc41e56d1e9325849d2c2 Author: Ludovic Courtès Date: Tue Mar 18 23:17:14 2014 +0100 Allow recovery from isValidPath RPCs with an invalid path Currently, clients cannot recover from an isValidPath RPC with an invalid path parameter because the daemon closes the connection when that happens. More precisely: 1. in performOp, wopIsValidPath case, ‘readStorePath’ raises an ‘Error’ exception; 2. that exception is caught by the handler in ‘processConnection’; 3. the handler determines errorAllowed == false, and thus exits after sending the message. This last part is fixed by calling ‘startWork’ early on, as in the patch below. The same reasoning could be applied to all the RPCs that take one or more store paths as inputs, but isValidPath is, by definition, likely to be passed invalid paths in the first place, so it’s important for this one to allow recovery. commit f93e97517e449cb1b3c7bdf8076812276b4cb2cd Author: Eelco Dolstra Date: Mon Mar 17 17:35:11 2014 +0100 Fix -j and other flags when using the daemon commit 77e2cc6c8ed1206c029218d3bc22575202a73b4c Author: Eelco Dolstra Date: Mon Mar 17 17:33:13 2014 +0100 nix-build: Fix --cores flag commit fb8d8f5428ec37a40656d64d9190fdc32b0c769b Author: Eelco Dolstra Date: Wed Mar 12 14:42:25 2014 +0100 Remove unnecessary null pointer checks Fixes #225. commit 006f24c7faf146d97742c1d7cc270ec107fa2e56 Author: Eelco Dolstra Date: Wed Mar 12 14:25:48 2014 +0100 Document nix-env -q --json commit d435e46daa98ffd268b6bb7221b0f3841f3a63ef Author: Eelco Dolstra Date: Wed Mar 12 14:15:37 2014 +0100 Generate release notes again commit e9934bb5ada1a974744c61479ca50c75c82e5836 Author: Eelco Dolstra Date: Wed Mar 12 13:58:06 2014 +0100 Update release notes for 1.7 commit 25386e5edc2d65c84ce824d2c964a5c029f4c30d Author: Eelco Dolstra Date: Tue Mar 11 17:31:13 2014 +0100 Fix passing meta attribute to buildenv.nix Since the meta attributes were not sorted, attribute lookup could fail, leading to package priorities and active flags not working correctly. Broken since 0f24400d90daf65cf20142a662f8245008437e2c. commit 92a848f674f371d675f461d2a7a6810d492dd4ea Author: Eelco Dolstra Date: Tue Mar 11 13:16:21 2014 +0100 Fix typos commit 2f2a20ed18535ba819225fabe9a4cf2f37d2edb1 Author: Shea Levy Date: Mon Mar 10 07:09:07 2014 -0400 Document null dynamic attrs commit 049a379ec6ca755bcc077fd0e8da186ff76b8679 Author: Shea Levy Date: Sun Mar 9 14:41:02 2014 -0400 The expr of AttrNames/DynamicAttrDefs is always an ExprConcatStrings commit 908e9ce259710037ae9824a3246143e46e27e867 Author: Shea Levy Date: Sun Mar 9 14:24:47 2014 -0400 If a dynamic attribute name evaluates to null, remove it from the set commit 2caab8166045135bb78fd93dc9778a4d25d9499f Author: Eelco Dolstra Date: Wed Mar 5 16:18:13 2014 +0100 Revert "Make ifs and asserts tail-recursive" This reverts commit 273322c7732093a354e86df82cf75d6604b8bce8. commit f7e077ad275a0f405b750e2b19fedbeadc6f8a15 Author: Eelco Dolstra Date: Wed Mar 5 11:11:24 2014 +0100 Install missing Boost headers http://hydra.nixos.org/build/9328376 commit d6a45f6bdbf7c71eda9e4ab1ab78b373be5422b9 Author: Eelco Dolstra Date: Mon Mar 3 15:29:58 2014 +0100 Don't set an absolute soname commit a3767628481eefc956eb9d9d70eda62930549205 Author: Eelco Dolstra Date: Mon Mar 3 15:19:04 2014 +0100 Add support for making relocatable packages using $ORIGIN commit 3a86888fd7da44782233adf9fde34b6605e015bd Author: Eelco Dolstra Date: Fri Feb 28 14:01:26 2014 +0100 Typo commit 4eac3b2471063a3726790368665df963e809fc4e Author: Eelco Dolstra Date: Fri Feb 28 12:13:20 2014 +0100 Add a variable GLOBAL_CXXFLAGS_PCH for use by precompiled headers You don't want to use GLOBAL_CXXFLAGS for passing flags like "-include-pch" (clang), because that means you cannot use GLOBAL_CXXFLAGS when generating the PCH. commit 4e7e498ff95b553227a26fc20549bd69995a0b08 Author: Eelco Dolstra Date: Fri Feb 28 12:01:42 2014 +0100 Add variable GLOBAL_COMMON_DEPS This is a list of dependencies on which all C/C++ object files depend. Primarily useful for global precompiled headers. commit 1017bd68ea9264afe8b9d672653ca8c6271611d5 Author: Eelco Dolstra Date: Thu Feb 27 23:25:03 2014 +0100 Set up a private /dev/pts in the chroot commit 3fd01b171a74d28dc8e48b9ee5f2d0e9a3915fb8 Author: Eelco Dolstra Date: Thu Feb 27 23:17:53 2014 +0100 Set up a minimal /dev in chroots Not bind-mounting the /dev from the host also solves the problem with /dev/shm being a symlink to something not in the chroot. commit c9f6232304558cbdafb14e13e316e539f5bed72e Author: Eelco Dolstra Date: Thu Feb 27 21:47:59 2014 +0100 Correctly detect infinite recursion in function application If we're evaluating some application ‘v = f x’, we can't store ‘f’ temporarily in ‘v’, because if ‘f x’ refers to ‘v’, it will get ‘f’ rather than an infinite recursion error. Unfortunately, this breaks the tail call optimisation introduced in c897bac54954373f63511702731fe2cb23c0c98e. Fixes #217. commit 29cde917fe6b8f2e669c8bf10b38f640045c83b8 Author: Eelco Dolstra Date: Thu Feb 27 13:31:33 2014 +0100 Fix deadlock in SubstitutionGoal We were relying on SubstitutionGoal's destructor releasing the lock, but if a goal is a top-level goal, the destructor won't run in a timely manner since its reference count won't drop to zero. So release it explicitly. Fixes #178. commit 7c7707638a446f91893cdc21b9e0638d2ebd42d3 Author: Eelco Dolstra Date: Wed Feb 26 22:41:29 2014 +0100 Doh commit 788097382743dccc2e6de02c0b0342c9bb693b37 Author: Eelco Dolstra Date: Wed Feb 26 19:12:31 2014 +0100 Test trace and addErrorContext commit 5ad263c26b5b9cc0ba067050e4a09b2491c9d40c Author: Eelco Dolstra Date: Wed Feb 26 19:08:44 2014 +0100 Test some more primops commit 3d0a9ec8258fc2a6ec6a73e249aa38fbd03207d8 Author: Eelco Dolstra Date: Wed Feb 26 18:59:01 2014 +0100 Test executables in NARs commit 91f25f0510db32d627bf5ed7d4067b90e37f2f86 Author: Eelco Dolstra Date: Wed Feb 26 18:55:18 2014 +0100 And another one commit 432328cc550cea6b6ab23b3eeca69dc2307c5c74 Author: Eelco Dolstra Date: Wed Feb 26 18:49:36 2014 +0100 Remove another unused function commit 509993e5983e333f5a50ee75d71c742590d304fb Author: Eelco Dolstra Date: Wed Feb 26 18:48:32 2014 +0100 Remove unused function commit d58ceae022ad887686e55068db7229f931eb96af Author: Eelco Dolstra Date: Wed Feb 26 18:45:26 2014 +0100 Test nix-env --switch-generation commit 7bbc68fdff0afe22a517b63f3ca37d9021a5799c Author: Eelco Dolstra Date: Wed Feb 26 18:42:19 2014 +0100 Test nix-env --set commit a0806389e909203d9c3c1c32a2cc95b50300da59 Author: Eelco Dolstra Date: Wed Feb 26 18:40:08 2014 +0100 Test the -b and -s flags of nix-store -q commit a9c4a987705b00a6d5e98e0ad7cc44c8bc96ba22 Author: Eelco Dolstra Date: Wed Feb 26 18:33:13 2014 +0100 Test ~/.nix-defexpr commit 045d3b2ed7aa7678779052a1d0accf53d47988b7 Author: Eelco Dolstra Date: Wed Feb 26 18:28:55 2014 +0100 Test nix-store --switch-profile and more daemon actions commit fac6f8aac0802be4481e7dab53d4875ca8b60ee0 Author: Eelco Dolstra Date: Wed Feb 26 18:00:46 2014 +0100 Test nix-store -q --roots commit 84143c4bd80b38a44443e06f1c8c33dc212ccef7 Author: Eelco Dolstra Date: Wed Feb 26 17:58:53 2014 +0100 Test nix-store -l commit 19437785ebf515aa0ac63541566d28267f63a333 Author: Eelco Dolstra Date: Wed Feb 26 17:53:51 2014 +0100 Test nix-store --optimise commit fdff3a7eae8a4d2f0e6eae992d3c3cf64e1a3ad3 Author: Eelco Dolstra Date: Wed Feb 26 17:47:54 2014 +0100 Add a test for nix-store --dump-db / --load-db commit 506d86394d463d862b212f2f203bdded98a8efab Author: Eelco Dolstra Date: Wed Feb 26 17:23:23 2014 +0100 Installer: Handle Darwin "cp -r" doesn't copy symlinks properly on Darwin, but "cp -R" does. Fixes #215. commit 6b9cd59a41f059bed393f512bf495be09c1d22f6 Author: Eelco Dolstra Date: Wed Feb 26 16:32:46 2014 +0100 nix-store -r: Respect --add-root for non-derivations Fixes #68. Fixes #117. commit 7f74513b4e5b632b4099702cf4fe2800de7b67f9 Author: Eelco Dolstra Date: Wed Feb 26 16:07:43 2014 +0100 Also provide an option for setting the curl connection timeout commit 00d761016a33ff9aa0ea162402d0d846dd1927cb Author: Eelco Dolstra Date: Wed Feb 26 15:58:37 2014 +0100 Respect $NIX_CONNECT_TIMEOUT properly We were 1) using CURLOPT_TIMEOUT instead of CURLOPT_CONNECTTIMEOUT; 2) not passing it to the curl child process. Issue #93. commit d761009e3ccdcdd7b150b26f7f35eecf8f2fb59c Author: Eelco Dolstra Date: Wed Feb 26 15:24:48 2014 +0100 Add ~/.nix-profile/sbin to $PATH Fixes #112. commit f14ef84a51e211b3924f59333d98d838ab500740 Author: Eelco Dolstra Date: Wed Feb 26 15:21:56 2014 +0100 Warn about missing -I paths Fixes #121. Note that we don't warn about missing $NIX_PATH entries because it's intended that some may be missing (cf. the default $NIX_PATH on NixOS, which includes paths like /etc/nixos/nixpkgs for backward compatibility). commit 733214144a7a910001c1c82683db780853bac9b1 Author: Shea Levy Date: Wed Jan 22 00:33:18 2014 +0000 Document dynamic attributes Signed-off-by: Shea Levy commit 42eb4afd7a38f3024a66da037d9f39859f7bd8f3 Author: Eelco Dolstra Date: Wed Feb 26 13:58:46 2014 +0100 Simplify getting use-ssh-substituter from untrusted users commit bf4a577a586d99b7bc4298ae662e312eb73815e2 Author: Eelco Dolstra Date: Wed Feb 26 13:48:23 2014 +0100 Fix broken patch commit 8a02fdc38ef5d02115d152a2d3e79ebd8a462e3e Author: Ian-Woo Kim Date: Fri Feb 14 14:44:01 2014 -0800 use USER environmental variable if getting user id by getpwuid is failed in perl scripts: download-from-binary-cache.pl and nix-channel commit dcaea042fc895667bf6f529471ff9f449629774c Author: Eelco Dolstra Date: Wed Feb 26 13:40:08 2014 +0100 Only start download-via-ssh if it's enabled commit df5de9dfd72f9dc3d57157d0496443732a517491 Author: Shea Levy Date: Wed Feb 19 07:05:15 2014 -0500 Add use-ssh-substituter setting. It defaults to false and can be overridden by RemoteStore. Untested currently, just quickly put this together commit 36b90e72d7e09b983acfa08f9016e8b3ece5199d Author: Eelco Dolstra Date: Wed Feb 19 17:08:01 2014 +0100 nix-shell: Add --packages flag This allows you to easily set up a build environment containing the specified packages from Nixpkgs. For example: $ nix-shell -p sqlite xorg.libX11 hello will start a shell in which the given packages are present. commit a897b583733aaf3ee7aa0efe495f9ea046567555 Author: Eelco Dolstra Date: Wed Feb 19 16:46:33 2014 +0100 nix-instantiate: Allow --dry-run as a synonym for --readonly-mode --dry-run is more consistent with nix-env and nix-store. commit e1cf40fa9537162efe0dc19dcea9ae7d043fde66 Author: Eelco Dolstra Date: Wed Feb 19 16:34:24 2014 +0100 nix-instantiate: Rename --eval-only to --eval, --parse-only to --parse commit c31836008e45460513188a3fbeda4416f9153a05 Author: Eelco Dolstra Date: Wed Feb 19 16:30:19 2014 +0100 nix-instantiate: Add a flag --expr / -E to read expressions from the command line This is basically a shortcut for ‘echo 'expr...' | nix-instantiate -’. Also supported by nix-build and nix-shell. commit e707a8a526698de2237e6ac89e2f1ce6dbc63269 Author: Eelco Dolstra Date: Wed Feb 19 15:32:19 2014 +0100 Move manpages around commit 73f74ebba09f8bceed46a11f7348b4c398bde6f3 Author: Eelco Dolstra Date: Wed Feb 19 15:01:04 2014 +0100 nix-shell: Don't leave a temporary directory in /tmp behind commit a7e70518b8d0cb9a72cb3733b563b49caf922966 Author: Shea Levy Date: Sat Feb 15 11:02:47 2014 -0500 lexer-tab.o and parser-tab.o require each other's headers commit 70a558e20250f7c865fd36c1c678192fe29d088f Author: Shea Levy Date: Sat Feb 15 10:56:11 2014 -0500 Update ignores commit 7bef965d6f191efb9c671f49fd187f4214db6120 Author: Eelco Dolstra Date: Tue Feb 18 13:35:35 2014 +0100 Make it work on GNU Make > 3.81 again commit 79f699edca26c035a8bcd68c7d5a13b4fbcbf3be Author: Eelco Dolstra Date: Tue Feb 18 12:57:32 2014 +0100 More GNU Make 3.81 compatibility commit 8129cf33d959db44344fbffc34a981cc27b29bfb Author: Eelco Dolstra Date: Tue Feb 18 10:46:30 2014 +0100 Slight simplification commit 1aa19b24b27c6bbf4d46cdd7f6d06b534dd67c19 Author: Eelco Dolstra Date: Tue Feb 18 01:01:14 2014 +0100 Add a flag ‘--check’ to verify build determinism The flag ‘--check’ to ‘nix-store -r’ or ‘nix-build’ will cause Nix to redo the build of a derivation whose output paths are already valid. If the new output differs from the original output, an error is printed. This makes it easier to test if a build is deterministic. (Obviously this cannot catch all sources of non-determinism, but it catches the most common one, namely the current time.) For example: $ nix-build '' -A patchelf ... $ nix-build '' -A patchelf --check error: derivation `/nix/store/1ipvxsdnbhl1rw6siz6x92s7sc8nwkkb-patchelf-0.6' may not be deterministic: hash mismatch in output `/nix/store/4pc1dmw5xkwmc6q3gdc9i5nbjl4dkjpp-patchelf-0.6.drv' The --check build fails if not all outputs are valid. Thus the first call to nix-build is necessary to ensure that all outputs are valid. The current outputs are left untouched: the new outputs are either put in a chroot or diverted to a different location in the store using hash rewriting. commit 4ec626a286afd4a9596357fc6d36aaf8bc07442a Author: Eelco Dolstra Date: Mon Feb 17 23:24:12 2014 +0100 Test nix-store --verify-path and --repair-path commit 99f14c25842a897a1a352a3b3be7c0362cb0313f Author: Eelco Dolstra Date: Mon Feb 17 23:10:40 2014 +0100 Don't build on Debian 6.0 Its linker is too old to understand --no-copy-dt-needed-entries. http://hydra.nixos.org/build/9113883 commit b6def5b542d35eaed5e8cbc6eaa9bbf644262686 Author: Eelco Dolstra Date: Mon Feb 17 23:09:48 2014 +0100 Make --repair work on Darwin Mac OS X doesn't allow renaming a read-only directory. http://hydra.nixos.org/build/9113895 commit dfbcb7c403363c21c1eab8082ffaade29bba9036 Author: Eelco Dolstra Date: Mon Feb 17 23:04:52 2014 +0100 Refactoring commit 71adb090f05532b2116e952b617048abd0a6081d Author: Eelco Dolstra Date: Mon Feb 17 22:58:21 2014 +0100 When using a build hook, only copy missing paths commit 69fe6c58faa91c3b8f844e1aafca26354ea14425 Author: Eelco Dolstra Date: Mon Feb 17 22:25:15 2014 +0100 Move some code around In particular, do replacing of valid paths during repair later. This prevents us from replacing a valid path after the build fails. commit 1da6ae4f9904f7e09166085a2cfed8887e0e86d4 Author: Eelco Dolstra Date: Mon Feb 17 14:48:50 2014 +0100 nix-store --gc --max-freed: Support a unit specifier E.g. "--max-freed 10G" means "free ten gigabytes". commit 00d30496ca32145f55891364ddcf3d4af87f05d5 Author: Eelco Dolstra Date: Mon Feb 17 14:15:56 2014 +0100 Heuristically detect if a build may have failed due to a full disk This will allow Hydra to detect that a build should not be marked as "permanently failed", allowing it to be retried later. commit e81d38c02b267eea93a91de3e8a00b185355d681 Author: Eelco Dolstra Date: Mon Feb 17 13:34:24 2014 +0100 nix-shell: Execute shellHook if it exists Since normal builds don't execute shellHook, this allows nix-shell specific customisation. Suggested by Domen. commit 832377bbd6ccd43895ac346131cafe4901f7996b Author: Eelco Dolstra Date: Mon Feb 17 12:22:50 2014 +0100 Add a test for repairing paths commit 581a160c11dd3de66d9cd1a6e01c0641909546ef Author: Eelco Dolstra Date: Fri Feb 14 20:12:04 2014 +0100 Add a function for looking up programs in $PATH commit a9d99ab55fdaa1c9dde87eaa8d289ecdb8cf9068 Author: Eelco Dolstra Date: Fri Feb 14 12:31:10 2014 +0100 download-via-ssh: Use readStorePath commit 4db572062ccf318a6524abb8da046592a570eb94 Author: Eelco Dolstra Date: Fri Feb 14 12:20:12 2014 +0100 download-via-ssh: Show where we're downloading from commit dba33d4018c07699b59f024ca61442c896579c64 Author: Eelco Dolstra Date: Fri Feb 14 11:48:42 2014 +0100 Minor style fixes commit 61fd494d760d667649fa48665f9aa75ba88a1eb6 Merge: f9fc6ac f67f527 Author: Eelco Dolstra Date: Fri Feb 14 11:42:47 2014 +0100 Merge remote-tracking branch 'shlevy/ssh-substituter' commit f67f52751f21b2fe70b5a7352053f130eb6f0f59 Author: Shea Levy Date: Wed Feb 12 07:33:07 2014 -0500 Indendation fix Signed-off-by: Shea Levy commit 62eb9eb76ddacc1aa97400bef9f25b6ca4c50c8c Author: Shea Levy Date: Wed Feb 12 07:27:45 2014 -0500 Remove relic of old code Signed-off-by: Shea Levy commit 7438f0bc2bc4b92bddf7159744ab2923e34b7457 Author: Shea Levy Date: Wed Feb 12 07:26:35 2014 -0500 error messages start in lowercase Signed-off-by: Shea Levy commit 2246aa77d291e07141f6a508e46730e2c28e1d84 Author: Shea Levy Date: Wed Feb 12 07:22:36 2014 -0500 Remove using declarations from download-via-ssh Signed-off-by: Shea Levy commit f9fc6acbf4eadd2d9018d3da14394fdfbddde5f6 Author: Eelco Dolstra Date: Wed Feb 12 10:53:22 2014 +0100 Document current meaning of preferLocalBuild Closes #208. commit a35c6eb4a2209716fe1d40cebad2b3adb5d05e0f Author: Eelco Dolstra Date: Tue Feb 11 14:15:57 2014 +0100 Support setting CFLAGS and CXXFLAGS for libraries/programs commit 1f841c9d50a100a3d40fec6260d36ec9ee309af3 Author: Eelco Dolstra Date: Mon Feb 10 17:42:36 2014 +0100 Force use of Bash "echo -n" doesn't work with /bin/sh on Darwin. commit 57386c9baee78e50eb0c4a901ca9e1c147dc9777 Author: Eelco Dolstra Date: Mon Feb 10 16:35:59 2014 +0100 Binary tarball: Automatically create /nix The tarball can now be unpacked anywhere. The installation script uses "sudo" to create /nix if it doesn't exist. It also fetches the nixpkgs-unstable channel. commit c89d6b9b63b629ff936a56855be5689523910c58 Author: Shea Levy Date: Mon Feb 10 07:43:13 2014 -0500 nix-store --serve: Use a versioned protocol Signed-off-by: Shea Levy commit 38c3beac1a8ac9ddf4fdbbcafd400dabcf195076 Author: Shea Levy Date: Mon Feb 10 06:52:48 2014 -0500 Move StoreApi::serve into opServe Signed-off-by: Shea Levy commit 16146031659eae475cd5933b8553b13d725ca436 Author: Shea Levy Date: Mon Feb 10 06:49:37 2014 -0500 Pass in params by const ref Signed-off-by: Shea Levy commit 78d979567fa304fa4445fe7403932d9d97183ebd Author: Shea Levy Date: Mon Feb 10 06:43:29 2014 -0500 Clarify comment Signed-off-by: Shea Levy commit c5839752b9d5099d4b5e7bcfc853581673e779f6 Author: Eelco Dolstra Date: Mon Feb 10 10:50:29 2014 +0100 Binary tarball: Automatically fetch the Nixpkgs channel commit b632153ebd1bf8d773872eb36f9ad335d2c89fab Author: Eelco Dolstra Date: Mon Feb 10 10:25:13 2014 +0100 nix-shell: Use shell.nix as the default expression if it exists commit 64e23d0a38f316a07cef0960d0ed74a450214283 Author: Shea Levy Date: Sat Feb 8 00:05:46 2014 -0500 Add download-via-ssh substituter This substituter connects to a remote host, runs nix-store --serve there, and then forwards substituter commands on to the remote host and sends their results to the calling program. The ssh-substituter-hosts option can be specified as a list of hosts to try. This is an initial implementation and, while it works, it has some limitations: * Only the first host is used * There is no caching of query results (all queries are sent to the remote machine) * There is no informative output (such as progress bars) * Some failure modes may cause unhelpful error messages * There is no concept of trusted-ssh-substituter-hosts Signed-off-by: Shea Levy commit 5671188eb2822b7392a6affa5ebe2f1eb8f521a0 Author: Shea Levy Date: Fri Feb 7 16:56:00 2014 -0500 nix-store --serve: Flush out after every loop Signed-off-by: Shea Levy commit 73874629ef59dc3b237a2c316179e722f971bb5e Author: Shea Levy Date: Fri Feb 7 16:17:52 2014 -0500 nix-store --serve: Use dump instead of export Also remove signing support Signed-off-by: Shea Levy commit 188f96500bc16891b22c684ad96122635667a8ff Author: Shea Levy Date: Fri Feb 7 15:29:32 2014 -0500 nix-store --serve: Don't fail if asked for info about non-valid path Signed-off-by: Shea Levy commit 94884475947ca8c44dda51d83f3c1fbfeff5ccc0 Author: Shea Levy Date: Fri Feb 7 14:07:31 2014 -0500 nix-store --serve: Don't loop forever nix-store --export takes a tmproot, which can only release by exiting. Substituters don't currently work in a way that could take advantage of the looping, anyway. Signed-off-by: Shea Levy commit 3a38d0f3565a02c034c29b264aceb0eb78dac005 Author: Shea Levy Date: Thu Feb 6 11:52:03 2014 -0500 Add the nix-store --serve command This is essentially the substituter API operating on the local store, which will be used by the ssh substituter. It runs in a loop rather than just taking one command so that in the future nix will be able to keep one connection open for multiple instances of the substituter. Signed-off-by: Shea Levy commit 84a8b5e9af2df4ed7f7860a6768daf83f72724ca Author: Shea Levy Date: Tue Feb 4 10:37:10 2014 -0500 nix-instantiate --eval-only --read-write-mode: Don't depend on ordering Signed-off-by: Shea Levy commit e4058fab64d82ddb7723142c7c595e80eeba0f3e Author: Shea Levy Date: Tue Feb 4 10:35:30 2014 -0500 Rename --no-readonly-mode --read-write-mode Signed-off-by: Shea Levy commit 0c3e8a616e8e243ee45c78491fe86f50230d82b9 Author: Shea Levy Date: Tue Feb 4 09:17:59 2014 -0500 nix-instantiate: Add a --no-readonly-mode flag This allows running nix-instantiate --eval-only without performing the evaluation in readonly mode, letting features like import from derivation and automatic substitution of builtins.storePath paths work. Signed-off-by: Shea Levy commit 0432bc52ea21bb7b60477965054362f7414c569f Author: Eelco Dolstra Date: Fri Feb 7 17:34:39 2014 +0100 Fix the RPM build commit 7fab23e237b36a7ca2df6f34eb5febe4c851db42 Author: Eelco Dolstra Date: Fri Feb 7 17:15:00 2014 +0100 Install header files commit 764d90597a2ef9f5f5a5041993b728e020fb08b0 Merge: 2a469ad a210c99 Author: Eelco Dolstra Date: Fri Feb 7 16:27:34 2014 +0100 Merge commit 'a210c995cdd9279ed4137ec5d2e4cc928cb36097' commit a210c995cdd9279ed4137ec5d2e4cc928cb36097 Author: Eelco Dolstra Date: Fri Feb 7 15:06:21 2014 +0100 Support DESTDIR commit 97f8e9bc76b08ac6d63c6419490f8fcc9670a58b Author: Eelco Dolstra Date: Thu Feb 6 19:06:08 2014 +0100 Remove dead code commit 2a469ad31da7cac5c4ecab6838c364956319821f Author: Eelco Dolstra Date: Thu Feb 6 14:21:14 2014 +0100 Set a maintainer address Issue #202. commit 1f94ec3924f132ae6d92b29631a59f9818ba4e31 Author: Eelco Dolstra Date: Thu Feb 6 13:54:44 2014 +0100 Clean up a test warning commit 20d059892819d2f06f4da8c1150c91e16df1f8cd Author: Eelco Dolstra Date: Thu Feb 6 13:51:57 2014 +0100 Drop dependency on ‘expr’ http://hydra.nixos.org/build/8715639 Not sure why this causes a failure now. commit 4161fce472a8875427e73776d0e8665ca49c1835 Author: Eelco Dolstra Date: Thu Feb 6 10:59:58 2014 +0100 Create the target directory of libraries and programs commit 80b691316c4b15e69c63c285b8ed6cc72fb95e93 Author: Eelco Dolstra Date: Tue Feb 4 11:08:41 2014 +0100 Fix version in nix.spec http://hydra.nixos.org/build/8715502 commit 4ee6001f95908578a1693c0fbf7b7fdc309b86c5 Author: Eelco Dolstra Date: Tue Feb 4 11:02:49 2014 +0100 GNU Make 3.81 compatibility 3.81 doesn't understand the ‘define foo =’ syntax, which was added in 3.82. So use ‘define foo’ instead. commit 0da82efa5d67ab1eb8b8cc066704d7f863451d5b Author: Eelco Dolstra Date: Tue Feb 4 11:02:49 2014 +0100 GNU Make 3.81 compatibility 3.81 doesn't understand the ‘define foo =’ syntax, which was added in 3.82. So use ‘define foo’ instead. commit 143224f7cd6f6667047a1683c1ede4e1f7816843 Author: Eelco Dolstra Date: Tue Feb 4 10:09:45 2014 +0100 Add nix.spec to the distribution commit d210cdc4355bb48786b474e41a8ed7f1a152626f Author: Eelco Dolstra Date: Mon Feb 3 22:36:07 2014 +0100 Fix assertion failure in ‘nix-store --load-db’ Namely: nix-store: derivations.cc:242: nix::Hash nix::hashDerivationModulo(nix::StoreAPI&, nix::Derivation): Assertion `store.isValidPath(i->first)' failed. This happened because of the derivation output correctness check being applied before the references of a derivation are valid. commit 73a775f3b757d105a9987c5e469d6a3e8f32024f Merge: d6582c0 8468806 Author: Eelco Dolstra Date: Mon Feb 3 19:57:02 2014 +0100 Merge commit '8468806552d6730abec6431c42b5b0e897c0222c' commit 8468806552d6730abec6431c42b5b0e897c0222c Author: Eelco Dolstra Date: Mon Feb 3 17:05:55 2014 +0100 Add a basic README commit d6582c04c169d7ac32820d855de92ca4e4969de3 Author: Eelco Dolstra Date: Sat Feb 1 16:57:38 2014 +0100 Give a friendly error message if the DB directory is not writable Previously we would say "error: setting synchronous mode: unable to open database file" which isn't very helpful. commit 2f9bb5c7e744ddca3fbe5576e520a3e80c106c55 Merge: c5ba081 6dca720 Author: Eelco Dolstra Date: Sat Feb 1 16:41:52 2014 +0100 Merge branch 'make' commit 6dca72006aa9b1cf2f226bb5b538e744fcab976f Author: Eelco Dolstra Date: Sat Feb 1 16:30:24 2014 +0100 Only run "git ls-files" when doing "make check" commit 2a97f7b039be4cd290076707e1b02d04d3b257b6 Author: Eelco Dolstra Date: Sat Feb 1 16:08:59 2014 +0100 Fix logging test commit 965218a62a195632fe754307e09d4d4abd286c82 Author: Eelco Dolstra Date: Sat Feb 1 16:08:51 2014 +0100 Remove obsolete file commit b6465ae5d3efb057b82f31e10112cc359b9afdfd Merge: 762ef46 28dc488 Author: Eelco Dolstra Date: Sat Feb 1 15:37:59 2014 +0100 Merge commit '28dc4883356a50f2805a3e3c819a541c44a4ff0a' into make commit 762ef464f843a0fe50e25ba07d11296b1540080e Author: Eelco Dolstra Date: Sat Feb 1 15:37:50 2014 +0100 Fix the nix-profile test commit 28dc4883356a50f2805a3e3c819a541c44a4ff0a Author: Eelco Dolstra Date: Sat Feb 1 15:33:27 2014 +0100 installcheck: Don't depend on install This is a hack to prevent "installcheck" from clobbering files fixed up by Nixpkgs' fixupPhase. commit 844d83352c23db4a3131ac2b11b9ed2af03cdfd6 Author: Eelco Dolstra Date: Sat Feb 1 15:18:48 2014 +0100 More "make dist" fixes commit 74ca70da3a6d2f110a9dccf15c46422b1b078e3f Merge: 6ef32bd 1eff3ad Author: Eelco Dolstra Date: Sat Feb 1 14:38:28 2014 +0100 Add 'mk/' from commit '1eff3ad37fdb9dcf9f8528fdacea0ebf0e79d545' git-subtree-dir: mk git-subtree-mainline: 6ef32bddc1f10034322966b3a5b85af7b9cdc4d8 git-subtree-split: 1eff3ad37fdb9dcf9f8528fdacea0ebf0e79d545 commit 6ef32bddc1f10034322966b3a5b85af7b9cdc4d8 Author: Eelco Dolstra Date: Sat Feb 1 14:28:31 2014 +0100 Fix "make dist" commit 1eff3ad37fdb9dcf9f8528fdacea0ebf0e79d545 Author: Eelco Dolstra Date: Sat Feb 1 14:36:44 2014 +0100 Add missing file commit 6f8aa145d43d0453d74e70d1d33cfa6e21fddf89 Author: Eelco Dolstra Date: Sat Feb 1 14:22:08 2014 +0100 Improve "make dist" commit 0c6d62cf27b3b22fa60bddad16ea8e8d062e4a99 Author: Eelco Dolstra Date: Sat Feb 1 12:26:38 2014 +0100 Remove Automakefiles commit 16e7d692092449263880ee795ec419cecbe22d24 Author: Eelco Dolstra Date: Sat Feb 1 12:23:14 2014 +0100 Update Makefile variable names commit ec1738589a3aa1dd59e476de09ae2721d51b3e6e Author: Eelco Dolstra Date: Sat Feb 1 12:20:06 2014 +0100 Make variable names more regular commit 35107038f7c726f5ef8d7ab014ad45c73970e65d Author: Eelco Dolstra Date: Sat Feb 1 11:47:34 2014 +0100 Support adding "make help" text commit f324b49ea19e606f84b89ecb499f0e961646cd50 Author: Eelco Dolstra Date: Sat Feb 1 11:31:25 2014 +0100 Change dependency file names from foo.dep to .foo.o.dep commit ac8c2ef1aa30c50b568883d2051335a66437694f Author: Eelco Dolstra Date: Sat Feb 1 11:30:21 2014 +0100 Build/install manual commit 4271927c5be2c5b87ca83682d1f2bd71d5ce4a66 Author: Eelco Dolstra Date: Fri Jan 31 15:33:12 2014 +0100 Add support for installing man-pages commit e0234dfddc8343a6bca80ba6e6e93d083ce51a85 Author: Eelco Dolstra Date: Thu Jan 30 12:11:06 2014 +0100 Rename Makefile -> local.mk commit 4a2ec9c6598aafb98e5495c2cf3a24e166668790 Author: Eelco Dolstra Date: Thu Jan 30 12:08:26 2014 +0100 Install nix-worker symlink commit c5ba08133370f98de722c978bda3b446721985de Author: Eelco Dolstra Date: Thu Jan 23 13:33:00 2014 +0100 nix-shell: Add --impure flag This is currently the default, but I might change that to --pure in the future. commit 79dee4283de798da8728dd8504cdc4ab5c9b9fe0 Author: Eelco Dolstra Date: Thu Jan 23 13:31:29 2014 +0100 nix-shell: Preserve the TZ variable of the user commit 7fdee6e13695a1e85b0b3f476a33a9e934af3f0b Author: Eelco Dolstra Date: Thu Jan 23 13:27:22 2014 +0100 nix-build: Refactor commit 5311b2b25084e53ff132df96d66ab06efead0853 Author: Eelco Dolstra Date: Thu Jan 23 10:49:53 2014 +0100 Clang doesn't know the "-z defs" flag commit 94f9c14d526abfe9b18045fc638e8f5a3a670210 Author: Eelco Dolstra Date: Tue Jan 21 18:29:55 2014 +0100 Fix some clang warnings commit a26307b28192e61bc06b5f5ef42f0fb51858d822 Author: Eelco Dolstra Date: Tue Jan 21 17:39:19 2014 +0100 Fix build commit 625ffd441d8c98331ee357f4900fa50dd9be05bc Author: Eelco Dolstra Date: Tue Jan 21 16:38:03 2014 +0100 Ugly hack to fix building with clang commit 68cde53c47e5447d2c91f5fe4521b5209af7b73e Author: Eelco Dolstra Date: Tue Jan 21 15:34:04 2014 +0100 Fix building against Bison 3.0.2 commit 81628a6ccc6ce496735b22492bee15c9ad46f072 Merge: b1db599 5ef8508 Author: Eelco Dolstra Date: Tue Jan 21 15:30:01 2014 +0100 Merge branch 'master' into make Conflicts: src/libexpr/eval.cc commit 5ef8508a92997dbd7f8aa501b64fd283fb1c7bb8 Author: Eelco Dolstra Date: Tue Jan 21 15:11:57 2014 +0100 Remove unused type commit c8fff6a77fb63dc8043a7a468feea37b41bfec06 Author: Eelco Dolstra Date: Tue Jan 21 15:09:59 2014 +0100 Fix evaluation commit 0e2ca268187e0a1c17f2ba58ce53f59682df2fc4 Author: Eelco Dolstra Date: Mon Jan 20 14:23:07 2014 +0100 nix.spec: Remove "make check" since it's a no-op commit 0f2f44bb0ff8aafc160d8b236201ce510ca0b876 Author: Eelco Dolstra Date: Mon Jan 20 14:22:59 2014 +0100 Build Fedora 20 RPMs commit bf0ad8aabca67b4faabe3a1ac3c57884ae9924f4 Author: Eelco Dolstra Date: Wed Jan 15 14:34:49 2014 +0100 nix-profile.sh: Add the Nixpkgs channel to $NIX_PATH commit f5e5793cd2f32bc0f0d072b38cda742830f40f25 Author: Shea Levy Date: Mon Jan 6 13:53:57 2014 -0500 Bare dynamic attrs: Match interpolation semantics Signed-off-by: Shea Levy commit f9913f4422d1317af3c6b5aff37ad18b78083eb5 Author: Shea Levy Date: Mon Jan 6 10:27:26 2014 -0500 Allow "bare" dynamic attrs Now, in addition to a."${b}".c, you can write a.${b}.c (applicable wherever dynamic attributes are valid). Signed-off-by: Shea Levy commit e640d671443e291b3ca5cc0575919d6fcf14a157 Author: Eelco Dolstra Date: Mon Jan 13 13:50:12 2014 +0100 Document nulls commit f1357059a441a588b9a2b78d3500d7068238b478 Author: Eelco Dolstra Date: Mon Jan 13 13:46:44 2014 +0100 nix-shell: Don't set NIX_INDENT_MAKE It generally is not useful in interactive environments (and messes up some non-ANSI-compliant terminals). commit ea59f39326c8e9dc42dfed4bcbf597fbce58797c Author: Eelco Dolstra Date: Mon Jan 13 13:42:29 2014 +0100 nix-shell: Set $IN_NIX_SHELL before evaluating commit ca73c0102fc68ece171d7cc062e464b4d418d07c Author: Eelco Dolstra Date: Fri Jan 10 22:31:38 2014 +0100 Nicer Make output E.g. CXX src/nix-log2xml/log2xml.o CC src/bsdiff-4.3/bsdiff.o GEN scripts/nix-channel LD src/libmain/libnixmain.so commit e991ab942b6ed1bc50a63afafe55ffe5cae8cbad Author: Eelco Dolstra Date: Thu Jan 9 22:14:34 2014 +0100 Add support for building shared libraries on Mac OS X commit b1db599dd05e86f65e73dc40584913e6e78c2bac Author: Eelco Dolstra Date: Thu Jan 9 22:10:35 2014 +0100 Generate schema.sql.hh commit cf918b889b2ff30d1532a62d00c21007d0cb25cd Author: Eelco Dolstra Date: Thu Jan 9 17:33:55 2014 +0100 Handle systems where "echo -n" doesn't work commit 70d8e8fdded9e21995fecc3ecc68e14cf4f53be7 Author: Eelco Dolstra Date: Thu Jan 9 16:57:38 2014 +0100 Declare template_files as a simply expanded variable commit 814a73227f9571d8fbd831fedced5e87cd9c926b Author: Eelco Dolstra Date: Thu Jan 9 16:54:01 2014 +0100 Remove duplicate elements from *_SOURCES This is useful when you do: foo_SOURCES := $(wildcard *.cc) foo.cc where foo.cc is a generated file. In this case, if foo.cc already exists, you get foo.cc twice in foo_SOURCES, leading to a link error. commit b4c684e0f9c6890e13f9a5cc90b5e379b3d1f75d Author: Eelco Dolstra Date: Thu Jan 9 16:53:47 2014 +0100 Update Makefiles commit 568b1b0a8a65cb255d6a7a33dfe2c15df3212103 Author: Eelco Dolstra Date: Thu Jan 9 16:15:16 2014 +0100 Remove mk subdirectory in preparation for "git subtree" commit 55c9a40613fefda6622aa9acd22cce4006fd1077 Author: Eelco Dolstra Date: Thu Jan 9 16:12:02 2014 +0100 Move stuff to top-level This makes it easier to use with "git subtree". commit f4013b6189af731af42f99684ed7721076a54a0d Author: Eelco Dolstra Date: Wed Jan 8 17:56:58 2014 +0100 Fix signed-binary-caches test commit ea38e39a203a96451b1d0469103b737de5a85105 Author: Eelco Dolstra Date: Wed Jan 8 17:56:30 2014 +0100 Test whether Nix correctly checks the hash of downloaded NARs commit 11cb4bfb257f18c906ef1d6f14ed450be8fa49fe Author: Eelco Dolstra Date: Wed Jan 8 17:32:40 2014 +0100 Fix checking of NAR hashes *headdesk* *headdesk* *headdesk* So since commit 22144afa8d9f8968da351618a1347072a93bd8aa, Nix hasn't actually checked whether the content of a downloaded NAR matches the hash specified in the manifest / NAR info file. Urghhh... commit 0fdf4da0e979f992db75cc17376e455ddc5a96d8 Author: Eelco Dolstra Date: Wed Jan 8 15:23:41 2014 +0100 Support cryptographically signed binary caches NAR info files in binary caches can now have a cryptographic signature that Nix will verify before using the corresponding NAR file. To create a private/public key pair for signing and verifying a binary cache, do: $ openssl genrsa -out ./cache-key.sec 2048 $ openssl rsa -in ./cache-key.sec -pubout > ./cache-key.pub You should also come up with a symbolic name for the key, such as "cache.example.org-1". This will be used by clients to look up the public key. (It's a good idea to number keys, in case you ever need to revoke/replace one.) To create a binary cache signed with the private key: $ nix-push --dest /path/to/binary-cache --key ./cache-key.sec --key-name cache.example.org-1 The public key (cache-key.pub) should be distributed to the clients. They should have a nix.conf should contain something like: signed-binary-caches = * binary-cache-public-key-cache.example.org-1 = /path/to/cache-key.pub If all works well, then if Nix fetches something from the signed binary cache, you will see a message like: *** Downloading ‘http://cache.example.org/nar/7dppcj5sc1nda7l54rjc0g5l1hamj09j-subversion-1.7.11’ (signed by ‘cache.example.org-1’) to ‘/nix/store/7dppcj5sc1nda7l54rjc0g5l1hamj09j-subversion-1.7.11’... On the other hand, if the signature is wrong, you get a message like NAR info file `http://cache.example.org/7dppcj5sc1nda7l54rjc0g5l1hamj09j.narinfo' has an invalid signature; ignoring Signatures are implemented as a single line appended to the NAR info file, which looks like this: Signature: 1;cache.example.org-1;HQ9Xzyanq9iV...muQ== Thus the signature has 3 fields: a version (currently "1"), the ID of key, and the base64-encoded signature of the SHA-256 hash of the contents of the NAR info file up to but not including the Signature line. Issue #75. commit 405434e084fa994cc957249db7787731e9311fa8 Author: Eelco Dolstra Date: Mon Jan 6 17:38:04 2014 +0100 Revert "nix-shell: Set $IN_NIX_SHELL before evaluation" This reverts commit 0c1198cf08576f16633b2344dc6513cefb567cfc. commit 7a61c88dbb517453f73c5b4ede4a4468e38cae32 Merge: 485f474 cd49fe4 Author: Eelco Dolstra Date: Mon Jan 6 15:46:18 2014 +0100 Merge branch 'dynamic-attrs-no-sugar' of github.com:shlevy/nix commit 485f4740ee3ba4228ba3345873eb530466a8f42d Author: Domen Kožar Date: Wed Jan 1 18:10:48 2014 +0100 wording commit fe23e28f12f5eedf387c974c73813f6de8320b21 Author: Eelco Dolstra Date: Mon Jan 6 11:34:05 2014 +0100 Disable FreeBSD tests for now The FreeBSD machines in the build farm are currently unreachable. commit 4252b5a645138e84fa8916dfc3f8d6af8e74fc28 Author: Eelco Dolstra Date: Mon Jan 6 11:32:22 2014 +0100 Disable the tail call test On i686-linux, GCC stubbornly refuses to do tail-call optimisation. Don't know why. http://hydra.nixos.org/build/7300170 commit cd49fe4f9b338242e1e404fd4dbb0a3ebc1c3a12 Author: Shea Levy Date: Tue Dec 31 23:56:26 2013 +0000 Don't use any syntactic sugar for dynamic attrs This doesn't change any functionality but moves some behavior out of the parser and into the evaluator in order to simplify the code. Signed-off-by: Shea Levy commit 6f3a51809a2603574a16573bd46b95e4ff5233bd Author: Shea Levy Date: Tue Dec 31 17:57:10 2013 -0500 Fold dynamic binds handling into addAttr Since addAttr has to iterate through the AttrPath we pass it, it makes more sense to just iterate through the AttrNames in addAttr instead. As an added bonus, this allows attrsets where two dynamic attribute paths have the same static leading part (see added test case for an example that failed previously). Signed-off-by: Shea Levy commit 18fefacf7df570444b332a8a0c2dc4f9d98d4344 Author: Shea Levy Date: Fri Sep 20 23:25:30 2013 -0400 Dynamic attrs This adds new syntax for attribute names: * attrs."${name}" => getAttr name attrs * attrs ? "${name}" => isAttrs attrs && hasAttr attrs name * attrs."${name}" or def => if attrs ? "${name}" then attrs."${name}" else def * { "${name}" = value; } => listToAttrs [{ inherit name value; }] Of course, it's a bit more complicated than that. The attribute chains can be arbitrarily long and contain combinations of static and dynamic parts (e.g. attrs."${foo}".bar."${baz}" or qux), which is relatively straightforward for the getAttrs/hasAttrs cases but is more complex for the listToAttrs case due to rules about duplicate attribute definitions. For attribute sets with dynamic attribute names, duplicate static attributes are detected at parse time while duplicate dynamic attributes are detected when the attribute set is forced. So, for example, { a = null; a.b = null; "${"c"}" = true; } will be a parse-time error, while { a = {}; "${"a"}".b = null; c = true; } will be an eval-time error (technically that case could theoretically be detected at parse time, but the general case would require full evaluation). Moreover, duplicate dynamic attributes are not allowed even in cases where they would be with static attributes ({ a.b.d = true; a.b.c = false; } is legal, but { a."${"b"}".d = true; a."${"b"}".c = false; } is not). This restriction might be relaxed in the future in cases where the static variant would not be an error, but it is not obvious that that is desirable. Finally, recursive attribute sets with dynamic attributes have the static attributes in scope but not the dynamic ones. So rec { a = true; "${"b"}" = a; } is equivalent to { a = true; b = true; } but rec { "${"a"}" = true; b = a; } would be an error or use a from the surrounding scope if it exists. Note that the getAttr, getAttr or default, and hasAttr are all implemented purely in the parser as syntactic sugar, while attribute sets with dynamic attribute names required changes to the AST to be implemented cleanly. This is an alternative solution to and closes #167 Signed-off-by: Shea Levy commit 136f2f7046dfed18fde0b5f9933ddfafc1518ef5 Author: Shea Levy Date: Fri Sep 13 16:55:33 2013 -0400 Add the ExprBuiltin Expr type to the AST Certain desugaring schemes may require the parser to use some builtin function to do some of the work (e.g. currently `throw` is used to lazily cause an error if a `<>`-style path is not in the search path) Unfortunately, these names are not reserved keywords, so an expression that uses such a syntactic sugar will not see the expected behavior (see tests/lang/eval-okay-redefine-builtin.nix for an example). This adds the ExprBuiltin AST type, which when evaluated uses the value from the rootmost variable scope (which of course is initialized internally and can't shadow any of the builtins). Signed-off-by: Shea Levy commit 5ba5993470a6ad532fc8e842084a574a88876b0a Author: Shea Levy Date: Mon Dec 30 07:58:14 2013 -0500 nix-shell --pure: Don't clear IN_NIX_SHELL Signed-off-by: Shea Levy commit b352fe2775d09993add893ebff8c0c4c8369182a Author: Eelco Dolstra Date: Fri Dec 20 14:18:24 2013 +0100 Revert "Scan /proc//cmdline for GC roots" This reverts commit 194e3374b89b8b2dec6296923877304bdb5c6ae2. Checking the command line for GC roots means that $ nix-store --delete $path will fail because $path is now a root because it's mentioned on the command line. commit 8931bf7168cbbc6a078bed6486b8081652663836 Author: Eelco Dolstra Date: Fri Dec 20 13:09:12 2013 +0000 Doh commit f1e5dedb611d39ecc600fccb4eba4b0de730c5fc Author: Petr Rockai Date: Sun Nov 24 21:22:23 2013 +0100 perl: Call loadConfFile() in doInit to avoid screwing sqlite journal mode. If the database is opened through perl bindings (and even though nix.conf has use-sqlite-wal set to false), the database is automatically converted into WAL mode. This makes the next nix process to access the database convert it back to "truncate". If the database is still open at the time in wal mode by the perl program, this fails and crashes the nix doing the wal -> truncate conversion. commit 7d203faff6d74d839324cd082236381d20444d8e Author: Eelco Dolstra Date: Fri Dec 20 13:56:42 2013 +0100 nix-env --set-flag: Barf if a selector doesn't match any installed package Fixes #184. commit 194e3374b89b8b2dec6296923877304bdb5c6ae2 Author: Eelco Dolstra Date: Fri Dec 20 13:31:31 2013 +0100 Scan /proc//cmdline for GC roots commit 769f66216504cd882ac7b6bdfa0dd1ff26f3efe5 Author: Eelco Dolstra Date: Fri Dec 20 12:19:10 2013 +0000 nix-shell: Don't warn about the lack of a GC root commit 0c1198cf08576f16633b2344dc6513cefb567cfc Author: Eelco Dolstra Date: Fri Dec 20 13:11:41 2013 +0100 nix-shell: Set $IN_NIX_SHELL before evaluation This has some hacky applications. commit 65a64522403f353880a501b02aca10fb96ea1c26 Author: Eelco Dolstra Date: Fri Dec 20 13:10:14 2013 +0100 nix-shell: Handle --option correctly Fixes #181. commit 259086de841d155f7951c2cc50f799a4631aa512 Author: Eelco Dolstra Date: Wed Dec 18 16:40:48 2013 +0100 Add support for building JARs from Java sources commit 99ed25accfd968003d3b0d294720828a1348ce47 Author: Eelco Dolstra Date: Wed Dec 18 15:01:14 2013 +0100 Add a function for doing recursive wildcard searches Source: http://blog.jgc.org/2011/07/gnu-make-recursive-wildcard-function.html commit 7b0d8fb23d9c71f1efb119c1f267124349c82742 Author: Eelco Dolstra Date: Tue Dec 17 18:16:04 2013 +0100 nix-shell --pure: Keep $TERM commit 088552b319d8f5896e6cfd6a8e449b4239696ea2 Author: Eelco Dolstra Date: Tue Dec 17 12:13:48 2013 +0100 Set default installation paths commit e81b82a2cf0c7e460d02c554c597a6cf9a144e8e Author: Eelco Dolstra Date: Mon Dec 16 16:51:05 2013 +0100 make dryclean: Sort names commit a630635d7f0e63a865ddd3b0a3cf2d44c603c0e5 Author: Eelco Dolstra Date: Mon Dec 16 16:49:41 2013 +0100 No longer interpret $(..._SOURCES) relative to $(..._DIR) commit 4da804651378b612313c8fb71688f71a4717a26e Author: Eelco Dolstra Date: Thu Dec 12 11:39:58 2013 +0100 Don't include all *.dep files commit 034bbcafafdbec0b2c4d29b1d5018bec20120e77 Author: Eelco Dolstra Date: Thu Dec 12 11:27:47 2013 +0100 Add 'make help' commit 45131da736f21975e5b6d03f508b49f10621a30e Author: Eelco Dolstra Date: Thu Dec 12 11:24:03 2013 +0100 Get rid of whitespace in $(d) commit c34f3c5ba4f353d67ec4a88a32c3aa688347aa4d Author: Eelco Dolstra Date: Thu Dec 12 11:22:57 2013 +0100 Handle *.cpp extension commit dfcc64f556295481bfea0b68cab11604ec131189 Author: Eelco Dolstra Date: Thu Dec 12 11:22:25 2013 +0100 Only provide 'make dist' if PACKAGE_NAME is set commit 3560f52cc427a4eb368815ae7dd9badffba84f3f Author: Eelco Dolstra Date: Thu Dec 12 11:22:08 2013 +0100 dryclean: Show what actual files would be deleted commit 49a385096e08b42277b7105d5d8d1e0e62b6b7a4 Author: Eelco Dolstra Date: Tue Dec 10 15:54:34 2013 +0100 Initial commit (imported from the Nix repo) commit e36229d27f9ab508e0abf1892f3e8c263d2f8c58 Author: Shea Levy Date: Thu Dec 5 12:07:05 2013 -0500 Bump language version for new storePath feature This will allow e.g. channel expressions to use builtins.storePath IFF it is safe to do so without knowing if the path is valid yet. Signed-off-by: Shea Levy commit 22d665019a3770148929b7504c73bcdbe025ec12 Author: Shea Levy Date: Thu Dec 5 11:51:54 2013 -0500 builtins.storePath: Try to substitute the path if it is not yet valid Signed-off-by: Shea Levy commit a6add93d734279db8503951ac6466c275b3c8e4e Author: Eelco Dolstra Date: Tue Dec 10 13:13:59 2013 +0100 Garbage collector: Release locks on temporary root files This allows processes waiting for such locks to proceed during the trash deletion phase of the garbage collector. commit c5b8fe315162440c1d808bc0a684a412d78bfa76 Author: Eelco Dolstra Date: Thu Dec 5 14:31:57 2013 -0500 Print a trace message if a build fails due to the platform being unknown commit bf8b66adcfdc04f2f0f0a482c66dd419a355cad6 Author: Eelco Dolstra Date: Wed Dec 4 13:41:32 2013 -0500 Add missing file commit f3cf0436b520918e061bf91efef3bb19b99bf726 Author: Eelco Dolstra Date: Mon Dec 2 20:21:31 2013 +0000 Install bsdiff and bspatch in $(libexecdir)/nix commit 0202ce6b94f287f70a6723473c73a4c7f135dae4 Author: Eelco Dolstra Date: Mon Nov 25 18:47:03 2013 +0100 Add support for ‘make installcheck’ commit 9285f0aa2b44427afef7c50f0efae8f74307a7a5 Author: Eelco Dolstra Date: Mon Nov 25 16:38:33 2013 +0000 Add a Makefile for the Perl stuff commit 8f08046606c147004642a7569f78bc61ab450419 Author: Eelco Dolstra Date: Mon Nov 25 15:51:22 2013 +0000 Expand configure variables before writing config.status This way, we can use config.status for generating scripts/* (without ending up with lines like "#! /usr/bin/perl -I${libexecdir}/..."). commit 7ce0e05ad875657a0fec10e192454b837146e190 Author: Eelco Dolstra Date: Mon Nov 25 15:25:13 2013 +0000 Rename Makefile.new -> Makefile commit 962551a071da87589a97a2f40d72b87d6e6ba9e2 Author: Eelco Dolstra Date: Mon Nov 25 15:05:56 2013 +0000 Add a Makefile for the scripts directory commit 1a1d8b073a1d770c8de4f8eb274387b209b32782 Author: Eelco Dolstra Date: Mon Nov 25 11:39:21 2013 +0000 Add a Makefile for bsdiff commit 784feb68392ec4a0bdd45bf0d37f08c3eb1b61ac Author: Eelco Dolstra Date: Mon Nov 25 11:29:13 2013 +0000 Let ‘make clean’ delete instantiated template files commit cac06ed0a4b63bab62ba7629584db602222131f2 Author: Eelco Dolstra Date: Mon Nov 25 11:26:51 2013 +0000 Remove obsolete setting of $CC_FOR_BUILD commit b225ccb65455b24141cffd6706b6fba8a4838525 Author: Eelco Dolstra Date: Mon Nov 25 11:26:02 2013 +0000 Add config.guess, config.sub and install-sh Autoreconf doesn't install these if you're not using Automake. commit 0c504a756cbcf58f0fc4b1a9083d372e1dbb50ac Author: Eelco Dolstra Date: Mon Nov 25 11:18:41 2013 +0000 Don't install Libtool commit 2cc591c7b55a1d3e8f667871b0ddf216d81d6b47 Author: Eelco Dolstra Date: Mon Nov 25 10:56:14 2013 +0000 Don't instantiate Automake makefiles commit 79b7c596a994dd426807281c3c34d8cb6bc12e5f Author: Eelco Dolstra Date: Mon Nov 25 10:17:37 2013 +0000 Use create-dir for installing dynamic libraries commit ed0a8dd71ad58d16c24d714ab2b9419285d1ffc0 Author: Eelco Dolstra Date: Mon Nov 25 10:16:07 2013 +0000 Add a function for instantiating Autoconf *.in files commit f980755766e7cd74c0c959eaa2a6d4655980e2ea Author: Eelco Dolstra Date: Mon Nov 25 09:50:35 2013 +0000 Split Makefile.lib into several *.mk files commit e9b6397d2f902eb4f5bf0fd513013d92af074cfc Author: Eelco Dolstra Date: Mon Nov 25 09:17:02 2013 +0000 Add a rule for creating directories The tricky thing here is that if you have a directory as a prerequisite, you need to declare it as a "order-only prerequisite" ("dir/prog: stuff | dir"), otherwise the target will be rebuilt every time because the timestamp on the directory keeps changing. commit 4315acb8c0a40703b17f837ab82e9a691b5c14ab Author: Eelco Dolstra Date: Mon Nov 25 08:55:19 2013 +0000 Add a generic rule for installing files commit c7547cff1951aec5e36580a8497dd13020dfc8d3 Author: Eelco Dolstra Date: Sat Nov 23 23:56:23 2013 +0000 Install into $(libdir) instead of $(pkglibdir) We don't need $(pkglibdir) anymore, since the libraries themselves have a "nix" prefix now. commit 2bd0fcc9663211cc480f61dc9e05f43ac9ecca69 Author: Eelco Dolstra Date: Sat Nov 23 23:53:41 2013 +0000 Use libnix as a prefix for all Nix libraries In particular "libutil" was always a problem because it collides with Glibc's libutil. Even if we install into $(libdir)/nix, the linker sometimes got confused (e.g. if a program links against libstore but not libutil, then ld would report undefined symbols in libstore because it was looking at Glibc's libutil). commit f267ff16b4527ca6c083014b93b4568d89221f49 Author: Eelco Dolstra Date: Sat Nov 23 23:49:34 2013 +0000 Allow libraries to set an actual name different from the symbolic name commit abb5bd66dee7afe9560b3a132da42b71d4801274 Author: Eelco Dolstra Date: Sat Nov 23 23:42:50 2013 +0000 Add Makefile for nix-log2xml commit 07c87a8e9ef7bd42995230700169c6a18cf26313 Author: Eelco Dolstra Date: Sun Nov 24 00:15:25 2013 +0100 Consistent naming commit c1f3a1a89b717e73c2a8c2315067c495e246457c Author: Eelco Dolstra Date: Sun Nov 24 00:10:00 2013 +0100 Disallow undefined symbols in dynamic libraries by default This encourages that each library declares its own dependencies properly. commit 5a1114ecdbbd115ec8aeb1a98326d793ff3e8058 Author: Eelco Dolstra Date: Sat Nov 23 20:19:36 2013 +0000 Drop the dependency on libgc in libmain Instead, libexpr now depends on libgc. This means commands like nix-store that don't do any evaluation no longer require libgc. commit 06a8ac96e79547c092debfe3b93d78bcb862edc2 Author: Eelco Dolstra Date: Sat Nov 23 20:15:57 2013 +0000 Initialise Boehm GC only once commit 90dfb37f147941e5edf262c27e269cdfd1e8dcfb Author: Eelco Dolstra Date: Sat Nov 23 20:11:02 2013 +0000 Allow (dynamic) libraries to depend on other libraries commit 14772783e66a6e67726872926834c0e9f7210e6d Author: Eelco Dolstra Date: Sat Nov 23 20:32:20 2013 +0100 Support installation of dynamically linked programs Here we need to re-link programs so that their RPATH refers to the installed libraries. commit 611868a90904ac233d8476682a4618fdd8c78c50 Author: Eelco Dolstra Date: Sat Nov 23 17:04:27 2013 +0000 Implement basic ‘make install’ commit d1b3ca0b4a57f48f94a555c97f6a555c3a1f3639 Author: Eelco Dolstra Date: Sat Nov 23 17:20:15 2013 +0100 Improve building dynamic libraries They now get a correct RPATH. commit 6dd74b48f8d587fcc215e9f4721eacace7f8f462 Author: Eelco Dolstra Date: Fri Nov 22 20:56:58 2013 +0000 Support building dynamic libraries commit 9b11a8bfbcfd9e6f40ae8b573d4de492a23b91b9 Author: Eelco Dolstra Date: Fri Nov 22 20:05:00 2013 +0000 Fix building without Boehm GC commit 812b5a30ecc9d8f78b54644b37c5c2c4375555bc Author: Eelco Dolstra Date: Fri Nov 22 19:51:18 2013 +0000 Add a Makefile variable for enabling debug info commit ea2f7df5fac0b319b82a4a33ba8b992737fa8c56 Author: Eelco Dolstra Date: Fri Nov 22 20:38:30 2013 +0100 Introduce variables GLOBAL_CFLAGS and GLOBAL_CXXFLAGS There are flags that must be set, so they shouldn't be overriden by the user's CFLAGS or CXXFLAGS. commit 6b5f89f2cf954cae1623a6cd3a8f7eb78e19e85b Author: Eelco Dolstra Date: Fri Nov 22 19:30:24 2013 +0000 Drop the dependency on Automake commit 754c05ed6c3b88f8180ae8686e030b5b02b23d43 Author: Eelco Dolstra Date: Fri Nov 22 16:45:52 2013 +0000 Rename $(here) to $(d) for brevity, and remove trailing slash commit 9a14d5e2f3a0b6ab626b9d22256df8bcc1c585a3 Author: Eelco Dolstra Date: Fri Nov 22 16:59:09 2013 +0100 Automatically regenerate Makefile.config And move some stuff around. commit ffdc85fc8afba0828bd1f300fdb4f68de99d7000 Author: Eelco Dolstra Date: Fri Nov 22 15:47:47 2013 +0000 Respect configure flags commit 62e35cc3a893e3bc4ed1fe2a37ba67af9859b4cb Author: Eelco Dolstra Date: Fri Nov 22 16:42:25 2013 +0100 Add ‘make dist’ support commit eff6c4b791ad0a8b9a8499fcbcc2add7154d4dca Author: Eelco Dolstra Date: Fri Nov 22 15:41:48 2013 +0000 Add missing #include commit e0a108b203b40f81df4cb0f1e433476cd8a37491 Author: Eelco Dolstra Date: Fri Nov 22 15:25:10 2013 +0000 Remove unnecessary line commit eaf903f993094af27958b9935635710ffbf42bf6 Author: Eelco Dolstra Date: Fri Nov 22 16:24:41 2013 +0100 Clean more aggressively commit 1474ecfe426ef69bbb376df82fd0c48e7dedf606 Author: Eelco Dolstra Date: Fri Nov 22 16:22:31 2013 +0100 Generate the parser and the lexer commit bc96c4518e4430f0cd996b2c77fe8e08d7694efa Author: Eelco Dolstra Date: Fri Nov 22 15:10:33 2013 +0000 Automatically emit make rules for header files commit b8e9efc476abc248a17c9e9cd117f3d53e4a7f63 Author: Eelco Dolstra Date: Fri Nov 22 15:54:18 2013 +0100 New non-recursive, plain Make-based build system commit 709cbe4e76e7b0f1b8abddbeb7714e194f6f8a02 Author: Eelco Dolstra Date: Fri Nov 22 10:00:43 2013 +0000 Include for memset This should fix building on Illumos. commit d4a76ff0e45a609b3a878bc0ccf4ff95ff3e9ecb Author: Eelco Dolstra Date: Tue Nov 19 14:45:19 2013 +0100 Bump version number commit 30b986908eed5d8fd6a2b21da98878f2a0bf19c0 Author: Eelco Dolstra Date: Tue Nov 19 14:29:39 2013 +0100 Check meta values and warn about bad ones commit 0f24400d90daf65cf20142a662f8245008437e2c Author: Eelco Dolstra Date: Tue Nov 19 14:09:03 2013 +0100 Generalise meta attributes commit 990126cde03428509191bed132f38050034d342e Author: Eelco Dolstra Date: Tue Nov 19 12:08:03 2013 +0000 Shorter error message commit af94a70ba6bb9ba2eac328133b2a97d405867f68 Author: Eelco Dolstra Date: Tue Nov 19 11:18:13 2013 +0100 Drop support for user environment manifests in ATerm format commit 245e26408fc0954974a1b30991af6d97c1d1e2ce Author: Eelco Dolstra Date: Tue Nov 19 00:41:45 2013 +0100 nix-env -q: Add a --json flag commit 5fea98111b3cd9b94ed1ebe89953a7757d6d3a69 Author: Eelco Dolstra Date: Tue Nov 19 00:33:06 2013 +0100 Refactor JSON output commit 77c13cdf566ffedc70d8860571afae8a6d43b552 Author: Eelco Dolstra Date: Tue Nov 19 00:03:11 2013 +0100 Add a toJSON primop commit 285df765b91588e39d6f35a32e30b84c3cb5be75 Author: Eelco Dolstra Date: Mon Nov 18 22:22:35 2013 +0100 Add a primop unsafeGetAttrPos to return the position of an attribute commit fc33fd86b7727365caab44c05a90d5b52209131b Author: Eelco Dolstra Date: Mon Nov 18 20:14:54 2013 +0100 Add a symbol __curPos that expands to the current source location I.e. an attribute set { file = ; line = ; column = ; }. commit 90b5e692846d9b7a951155c5ed4fc7cf72b08e31 Author: Eelco Dolstra Date: Mon Nov 18 10:21:12 2013 +0000 Support quoted attribute names in -A This is requires if you have attribute names with dots in them. So you can now say: $ nix-instantiate '' -A 'config.systemd.units."postgresql.service".text' --eval-only Fixes #151. commit a478e8a7bb8c24da0ac91b7100bd0e422035c62f Author: Eelco Dolstra Date: Thu Nov 14 11:57:37 2013 +0100 Remove nix-setuid-helper AFAIK, nobody uses it, it's not maintained, and it has no tests. commit 89e6781cc5885cbf6284a51c0403dded62ce8bc0 Author: Eelco Dolstra Date: Tue Nov 12 12:51:59 2013 +0100 Make function calls show up in stack traces again Note that adding --show-trace prevents functions calls from being tail-recursive, so an expression that evaluates without --show-trace may fail with a stack overflow if --show-trace is given. commit 2bcb384e95500ff197fd4888c659ccf0034cf214 Author: Eelco Dolstra Date: Tue Nov 12 11:31:50 2013 +0000 Add a test to check that tail calls run in bounded stack space commit c897bac54954373f63511702731fe2cb23c0c98e Author: Eelco Dolstra Date: Thu Nov 7 17:04:36 2013 +0000 Make function calls tail-recursive commit 273322c7732093a354e86df82cf75d6604b8bce8 Author: Eelco Dolstra Date: Thu Nov 7 14:33:35 2013 +0100 Make ifs and asserts tail-recursive The local Value object prevented g++ from making a tail call. Not clear why. In any case, not using a temporary makes g++ do the tail call. commit 4badd7ed17b4628d3a8d96e21c900aa91004daaf Author: Eelco Dolstra Date: Thu Nov 7 12:44:14 2013 +0000 Get rid of an intermediary on the stack commit 8d6418d46e5f8a2f31417ba363efd2785c49b2eb Author: Eelco Dolstra Date: Mon Oct 28 22:51:12 2013 +0100 Fix building without a garbage collector http://hydra.nixos.org/build/6695350 commit dec2f195022bcc14f217aa20c1e05e4b7fe9e917 Author: Eelco Dolstra Date: Mon Oct 28 18:50:58 2013 +0100 Fix a segfault in genericClosure It kept temporary data in STL containers that were not scanned by Boehm GC, so Nix programs using genericClosure could randomly crash if the garbage collector kicked in at a bad time. Also make it a bit more efficient by copying points to values rather than values. commit 61231449332154170eafc2b80c10328ba736f31e Author: Eelco Dolstra Date: Mon Oct 28 11:56:37 2013 +0000 Drop Cygwin and Solaris builds commit 1dacd427cd2d149fe46e0cb43ca45bb9344de2f7 Author: Eelco Dolstra Date: Mon Oct 28 11:56:21 2013 +0000 Update release notes, set version for 1.6.1 release commit ea6bf0c21fc08ea269514fa9788f8f05fcc54fb5 Author: Eelco Dolstra Date: Mon Oct 28 07:34:44 2013 +0100 Slightly optimize listToAttrs commit 36e67ff16bc6a4cb96466f58616a95a25250274d Author: Eelco Dolstra Date: Thu Oct 24 22:06:39 2013 +0200 Undocument obsolete form of "let" commit fba17a9043527aad89dbf53d3458ca14a86a421c Author: Eelco Dolstra Date: Thu Oct 24 22:05:58 2013 +0200 Doc fix commit 2d9bb56e554b17488c0f8984f34c026a66cdce67 Author: Eelco Dolstra Date: Thu Oct 24 19:10:38 2013 +0200 Fix segfault on Darwin Ever since SQLite in Nixpkgs was updated to 3.8.0.2, Nix has randomly segfaulted on Darwin: http://hydra.nixos.org/build/6175515 http://hydra.nixos.org/build/6611038 It turns out that this is because the binary cache substituter somehow ends up loading two versions of SQLite: the one in Nixpkgs and the other from /usr/lib/libsqlite3.dylib. It's not exactly clear why the latter is loaded, but it appears to be because WWW::Curl indirectly loads /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation, which in turn seems to load /usr/lib/libsqlite3.dylib. This leads to a segfault when Perl exits: #0 0x00000001010375f4 in sqlite3_finalize () #1 0x000000010125806e in sqlite_st_destroy () #2 0x000000010124bc30 in XS_DBD__SQLite__st_DESTROY () #3 0x00000001001c8155 in XS_DBI_dispatch () ... #14 0x0000000100023224 in perl_destruct () #15 0x0000000100000d6a in main () ... The workaround is to explicitly load DBD::SQLite before WWW::Curl. commit 5bc41d78ffcd2952eaddb20ef129f48e94d60cb0 Author: Eelco Dolstra Date: Thu Oct 24 16:41:04 2013 +0200 Rename "attribute sets" to "sets" We don't have any other kind of sets so calling them attribute sets is unnecessarily verbose. commit 9e4bb2045548e2166102f4a8eedf43741e1a6a98 Author: Eelco Dolstra Date: Thu Oct 24 16:02:08 2013 +0200 Manual: Fix broken URLs Fixes #172. commit dc341811d6bfb2a33601fe22f11db0a97956f97e Author: Eelco Dolstra Date: Thu Oct 24 15:54:23 2013 +0200 Add rpm_fedora19i386 to the release-critical builds commit 69befd33a9e3600c125803694fbac96053f943b0 Author: Eelco Dolstra Date: Thu Oct 24 03:08:34 2013 +0200 Remove unnecessary call to forceStringNoCtx commit a5684e09d34deb5c380c736ce520c030eb14bfc6 Author: Eelco Dolstra Date: Thu Oct 24 02:56:00 2013 +0200 Document typeOf commit 411a3461dca6b26f1a1a6b0c7f1f322f1d8df506 Author: Eelco Dolstra Date: Thu Oct 24 02:51:28 2013 +0200 Add a test of the type primops commit 05d02f798f65bf18e8ca71f3d23bfdf9df63fb7c Author: Eelco Dolstra Date: Thu Oct 24 02:49:13 2013 +0200 Add a typeOf primop We already have some primops for determining the type of a value, such as isString, but they're incomplete: for instance, there is no isPath. Rather than adding more isBla functions, the generic typeOf function returns a string representing the type of the argument (e.g. "int"). commit 6da92d96aec29ab09cf909ac6a270bc2753cd34a Author: Eelco Dolstra Date: Thu Oct 24 02:22:24 2013 +0200 Document NIX_SHOW_STATS and NIX_COUNT_CALLS commit 543d8a5942f503f5e49eecbf7e4e7a039472e9ea Author: Eelco Dolstra Date: Thu Oct 24 02:20:54 2013 +0200 Don't require NIX_SHOW_STATS for NIX_COUNT_CALLS commit fe95650487d189bae2be198fe2cbbb0cb6c3788f Author: Eelco Dolstra Date: Wed Oct 23 11:16:46 2013 +0000 Memoize evalFile() lookups under both the original and resolved name Previously we only used the resolved name, causing repeated resolution (e.g. /dir to /dir/default.nix). commit 3139481822b770a5ad1f81f447ef31ed5446bc72 Author: Eelco Dolstra Date: Wed Oct 23 11:52:25 2013 +0200 Add an aggregate job Also, build for Ubuntu 13.10 and Fedora 19. commit c0861838432ea9d8e5ea5750aadfbc59ebd6f3b4 Author: Eelco Dolstra Date: Tue Oct 22 11:39:10 2013 +0200 For auto roots, show the intermediate link I.e. "nix-store -q --roots" will now show (for example) /home/eelco/Dev/nixpkgs/result rather than /nix/var/nix/gcroots/auto/53222qsppi12s2hkap8dm2lg8xhhyk6v commit 4f4a14453ae8dbfc24a1e580aa695165e9d81f0a Author: Eelco Dolstra Date: Fri Oct 18 14:51:25 2013 +0200 Don't set $PS1 in non-interactive shells Shouldn't really matter, but you never know. commit 4ea034a5c56a60ae0ceedf18a066c428a963c836 Author: Shea Levy Date: Thu Oct 17 11:07:34 2013 -0400 nix-shell: Play nicely with non-interactive shells nix-shell with the --command flag might be used non-interactively, but if bash starts non-interactively (i.e. with stdin or stderr not a terminal), it won't source the script given in --rcfile. However, in that case it *will* source the script found in $BASH_ENV, so we can use that instead. Also, don't source ~/.bashrc in a non-interactive shell (detectable by checking the PS1 env var) Signed-off-by: Shea Levy commit 792fd51f41212b0bf1d8a121a4f228a92fec3906 Author: Eelco Dolstra Date: Thu Oct 17 11:53:40 2013 +0200 Fold two stack trace messages in derivations Combined with the previous changes, stack traces involving derivations are now much less verbose, since something like while evaluating the builtin function `getAttr': while evaluating the builtin function `derivationStrict': while instantiating the derivation named `gtk+-2.24.20' at `/home/eelco/Dev/nixpkgs/pkgs/development/libraries/gtk+/2.x.nix:11:3': while evaluating the derivation attribute `propagatedNativeBuildInputs' at `/home/eelco/Dev/nixpkgs/pkgs/stdenv/generic/default.nix:78:17': while evaluating the attribute `outPath' at `/nix/store/212ngf4ph63mp6p1np2bapkfikpakfv7-nix-1.6/share/nix/corepkgs/derivation.nix:18:9': ... now reads while evaluating the attribute `propagatedNativeBuildInputs' of the derivation `gtk+-2.24.20' at `/home/eelco/Dev/nixpkgs/pkgs/development/libraries/gtk+/2.x.nix:11:3': ... commit f440558acc76c2939cf5f0744c6669279b6351a0 Author: Eelco Dolstra Date: Thu Oct 17 11:47:38 2013 +0200 Don't show in stack traces Messages like while evaluating the attribute `outPath' at `/nix/store/212ngf4ph63mp6p1np2bapkfikpakfv7-nix-1.6/share/nix/corepkgs/derivation.nix:18:9': are redundant, because Nix already shows that it's evaluating a derivation: while instantiating the derivation named `firefox-24.0' at `/home/eelco/Dev/nixpkgs/pkgs/applications/networking/browsers/firefox/default.nix:131:5': while evaluating the derivation attribute `nativeBuildInputs' at `/home/eelco/Dev/nixpkgs/pkgs/stdenv/generic/default.nix:76:17': commit bb659bad8116d380271e5103e3bb5c8a6056ee58 Author: Eelco Dolstra Date: Thu Oct 17 11:40:20 2013 +0200 Nix 1.6.1 release notes commit f6a8e7f4c2897c131afe0beed199dc406b0f052a Author: Eelco Dolstra Date: Thu Oct 17 11:18:37 2013 +0200 Fix test commit b08f4b0da98d0a2534626c01cbb0c3c3eb4713a1 Author: Eelco Dolstra Date: Thu Oct 17 01:12:43 2013 +0200 Test string semantics a bit more commit d7625b5c2d6d9fd23708057957172c0446ffdabc Author: goblin Date: Sun Sep 22 13:36:23 2013 +0100 two typos commit b8034e5581ef40cc043da35ed01280b166da81ca Author: Eelco Dolstra Date: Thu Oct 17 00:57:24 2013 +0200 Ensure proper type checking/coercion of "${expr}" Now we only rewrite "${expr}" to expr if expr is a string literal. commit 9d8a80375d2d0581b53d270eb4d543fa0d3f0190 Author: Eelco Dolstra Date: Thu Oct 17 00:45:16 2013 +0200 Add a test for type correctness of antiquotes Antiquotes should evaluate to strings or paths. This is usually checked, except in the case where the antiquote makes up the entire string, as in "${expr}". This is optimised to expr, which discards the runtime type checks / coercions. commit d6a7aa8f4827f97856ed55226426c355e1d1b4d1 Author: Eelco Dolstra Date: Thu Oct 17 00:39:59 2013 +0200 Revert the behaviour of antiquoted paths to pre-Nix 1.6 Commit 159e621d1a9c4391b53f3d822109c36931934698 accidentally changed the behaviour of antiquoted paths, e.g. "${/foo}/bar" used to evaluate to "/nix/store/-foo/bar" (where /foo gets copied to the store), but in Nix 1.6 it evaluates to "/foo/bar". This is inconsistent, since " ${/foo}/bar" evaluates to " /nix/store/-foo/bar". So revert to the old behaviour. commit b8571d68c4f2c0b4b0b8f3d7c7ef09668aab140f Author: Eelco Dolstra Date: Wed Oct 16 23:28:10 2013 +0200 Add a regression test for correct path antiquotation behavior This broke in Nix 1.6. commit a737f51fd96be2866a33eb67732e034bcc65a659 Author: Eelco Dolstra Date: Wed Oct 16 15:58:20 2013 +0200 Retry all SQLite operations To deal with SQLITE_PROTOCOL, we also need to retry read-only operations. commit ff02f5336cd0cff0e97fbcf3c54b5b23827702d6 Author: Eelco Dolstra Date: Wed Oct 16 14:51:20 2013 +0200 Fix a race in registerFailedPath() Registering the path as failed can fail if another process does the same thing after the call to hasPathFailed(). This is extremely unlikely though. commit 4bd52825734face53df2ab00052d2457d31c3c68 Author: Eelco Dolstra Date: Wed Oct 16 14:46:35 2013 +0200 Convenience macros for retrying a SQLite transaction commit bce14d0f61801f0f1c3080970619e2ca11683a4e Author: Eelco Dolstra Date: Wed Oct 16 14:36:53 2013 +0200 Don't wrap read-only queries in a transaction There is no risk of getting an inconsistent result here: if the ID returned by queryValidPathId() is deleted from the database concurrently, subsequent queries involving that ID will simply fail (since IDs are never reused). commit 7cdefdbe732c209e13f234eb71022791909a5518 Author: Eelco Dolstra Date: Wed Oct 16 14:27:36 2013 +0200 Print a distinct warning for SQLITE_PROTOCOL commit d05bf044441dbf8e000036d545df9689bdec0b72 Author: Eelco Dolstra Date: Wed Oct 16 14:03:22 2013 +0200 Treat SQLITE_PROTOCOL as SQLITE_BUSY In the Hydra build farm we fairly regularly get SQLITE_PROTOCOL errors (e.g., "querying path in database: locking protocol"). The docs for this error code say that it "is returned if some other process is messing with file locks and has violated the file locking protocol that SQLite uses on its rollback journal files." However, the SQLite source code reveals that this error can also occur under high load: if( cnt>5 ){ int nDelay = 1; /* Pause time in microseconds */ if( cnt>100 ){ VVA_ONLY( pWal->lockError = 1; ) return SQLITE_PROTOCOL; } if( cnt>=10 ) nDelay = (cnt-9)*238; /* Max delay 21ms. Total delay 996ms */ sqlite3OsSleep(pWal->pVfs, nDelay); } i.e. if certain locks cannot be not acquired, SQLite will retry a number of times before giving up and returing SQLITE_PROTOCOL. The comments say: Circumstances that cause a RETRY should only last for the briefest instances of time. No I/O or other system calls are done while the locks are held, so the locks should not be held for very long. But if we are unlucky, another process that is holding a lock might get paged out or take a page-fault that is time-consuming to resolve, during the few nanoseconds that it is holding the lock. In that case, it might take longer than normal for the lock to free. ... The total delay time before giving up is less than 1 second. On a heavily loaded machine like lucifer (the main Hydra server), which often has dozens of processes waiting for I/O, it seems to me that a page fault could easily take more than a second to resolve. So, let's treat SQLITE_PROTOCOL as SQLITE_BUSY and retry the transaction. Issue NixOS/hydra#14. commit c1994fecf9f9ea129f6164db92ad242e392d987c Author: Eelco Dolstra Date: Mon Oct 14 15:20:45 2013 +0200 nix-shell: Fix bash completion Nixpkgs's stdenv setup script sets the "nullglob" option, but doing so breaks Bash completion on NixOS (when ‘programs.bash.enableCompletion’ is set) and on Ubuntu. So clear that flag afterwards. Of course, this may break stdenv functions in subtle ways... commit 672c3acc7109a84abeae3d28dc907132f2bad953 Author: Eelco Dolstra Date: Fri Oct 11 10:57:23 2013 +0200 Adjust to the NixOS/Nixpkgs merge commit 7bdb85453d16106ebf4d4af106720d917e221ad9 Author: Eelco Dolstra Date: Tue Oct 8 15:34:57 2013 +0200 printStats(): Print the size of the symbol table in bytes commit 9deb822180fb80638559fe3c45c6a77a2b56ff40 Author: Eelco Dolstra Date: Tue Oct 8 15:19:59 2013 +0200 Deduplicate filenames in Pos This saves ~4 MiB of RAM for NixOS system instantiation, and ~18 MiB for "nix-env -qa". commit b1e3b1a4ac8c276f503713f6002c3b42efef2ae8 Author: Eelco Dolstra Date: Tue Oct 8 14:45:36 2013 +0200 Treat undefined variable errors consistently Previously, a undefined variable inside a "with" caused an EvalError (which can be caught), while outside, it caused a ParseError (which cannot be caught). Now both cause an UndefinedVarError (which cannot be caught). commit 6b47de580ffe6101863a1054d9d47f9cbe691214 Author: Eelco Dolstra Date: Tue Oct 8 14:40:51 2013 +0200 Show the exact position of undefined variables In particular, undefined variable errors in a "with" previously didn't show *any* position information, so this should help a lot in those cases. commit a5e0f64db3f7355e320ecda478b84f238bf8869c Author: Eelco Dolstra Date: Tue Oct 8 12:30:23 2013 +0000 Remove some unused functions commit 221a2daf34234c426fec8058f24b1093b2a61ba8 Author: Eelco Dolstra Date: Tue Oct 8 14:24:53 2013 +0200 Merge VarRef into ExprVar commit 176c666f36afee12f5cbd1f9615cf21d781fdbde Author: Eelco Dolstra Date: Sat Oct 5 21:29:48 2013 +0000 Don't show calls to primops in stack traces Since they don't have location information, they just give you crap like: while evaluating the builtin function `getAttr': while evaluating the builtin function `derivationStrict': ... commit c945f015de2149233c1e4fa1628f05567f3657ba Author: Eelco Dolstra Date: Wed Oct 2 15:24:45 2013 +0200 Fix segfault in nix-repl / hydra-eval-jobs If a "with" attribute set fails to evaluate, we have to make sure its Env record remains unchanged. Otherwise, repeated evaluation gives a segfault: nix-repl> :a with 0; { a = x; b = x; } Added 2 variables. nix-repl> a error: value is an integer while an attribute set was expected nix-repl> b Segmentation fault commit 28e0742966e962f2672f5731ea3612f223bf3283 Author: Eelco Dolstra Date: Wed Oct 2 14:34:36 2013 +0200 Report OOM errors better commit a5fb4b5b7c1688c9b095bc1c278c17c20844302a Author: Eelco Dolstra Date: Wed Oct 2 14:22:49 2013 +0200 Fix typo commit faaae44f2e8bc5f8863de80a2585fec8f51d144d Author: Eelco Dolstra Date: Wed Sep 18 14:04:03 2013 +0200 build-remote.pl: Don't use substituters on the remote It's kinda pointless to check substituters on the remote side, since we just checked them locally. commit f53574ebd60e5a22dbaae7e2bec97f5993670c20 Author: Eelco Dolstra Date: Tue Sep 17 12:06:59 2013 +0000 RestoreSink: Slightly reduce the number of concurrent FDs commit d5529f5b85d4f093c6c051c060eb6feef9f8f76f Author: Eelco Dolstra Date: Tue Sep 10 17:47:39 2013 +0200 Version was called 1.6, not 1.6.0 commit b072fc04a79c181af04fb1a07e221cb73f97cf48 Author: Eelco Dolstra Date: Tue Sep 10 17:41:49 2013 +0200 Bump version number commit fecad91b67ee3523a6d8c0ea16ab71925ab6ab6e Author: Eelco Dolstra Date: Tue Sep 10 11:21:30 2013 +0200 Update release notes commit 0220da3e10e76fd1ef46915493c0f5ed65482fa8 Author: Eelco Dolstra Date: Fri Sep 6 17:20:19 2013 +0200 Remove stray debug line commit 936f9d45baf474358346666ed9ad7f56960bb455 Author: Eelco Dolstra Date: Fri Sep 6 16:36:56 2013 +0200 Don't apply the CPU affinity hack to nix-shell (and other Perl programs) As discovered by Todd Veldhuizen, the shell started by nix-shell has its affinity set to a single CPU. This is because nix-shell connects to the Nix daemon, which causes the affinity hack to be applied. So we turn this off for Perl programs. commit 4b83830d0c742b69b59c698a42948eaa6d214c1d Author: Domen Kožar Date: Tue Sep 3 11:42:55 2013 +0200 typo commit 5904262640199599122fcf563e7d1c7c3f3f3128 Author: Eelco Dolstra Date: Fri Sep 6 14:58:05 2013 +0200 nix-shell: Support a .drv as argument Fixes #161. commit 2c1ecf8e81f8ea5a9fa228aa22a57a6ba0a0e4df Author: Eelco Dolstra Date: Tue Sep 3 21:15:47 2013 +0200 nix-env -i: Add a flag ‘--remove-all’ / ‘-r’ This is equivalent to running ‘nix-env -e '*'’ first, except that it happens in a single transaction. Thus, ‘nix-env -i pkgs...’ replaces the profile with the specified set of packages. The main motivation is to support declarative package management (similar to environment.systemPackages in NixOS). That is, if you have a specification ‘profile.nix’ like this: with import {}; [ thunderbird geeqie ... ] then after any change to ‘profile.nix’, you can run: $ nix-env -f profile.nix -ir to update the profile to match the specification. (Without the ‘-r’ flag, if you remove a package from ‘profile.nix’, it won't be removed from the actual profile.) Suggested by @zefhemel. commit 88c07341a6bf99f923cb3d6487b72afc025b7746 Author: Eelco Dolstra Date: Tue Sep 3 15:56:33 2013 +0200 nix-env: Use wildcard match by default That is, you don't need to pass '*' anymore, so nix-env -qa is equivalent to nix-env -qa '*' commit 07a08bddf001271b4b7eff2a119c395f40119966 Author: Eelco Dolstra Date: Tue Sep 3 15:45:32 2013 +0200 nix-env: Load files in ~/.nix-defexpr on demand So if you do "nix-env -qa -A nixos", then other channels won't be parsed/evaluated at all. commit c57ed84e286047a9f3c103cf689ae04381c23dad Author: Eelco Dolstra Date: Tue Sep 3 15:25:51 2013 +0200 Check for name collisions in the input Nix expressions commit ef4f5ba85e487f567115d60e3cb4b53d81af6ea1 Author: Eelco Dolstra Date: Tue Sep 3 13:17:51 2013 +0000 Work on Values instead of Exprs This prevents some duplicate evaluation in nix-env and nix-instantiate. Also, when traversing ~/.nix-defexpr, only read regular files with the extension .nix. Previously it was reading files like .../channels/binary-caches/. The only reason this didn't cause problems is pure luck (namely, shadows an actual Nix expression, the binary-caches files happen to be syntactically valid Nix expressions, and we iterate over the directory contents in just the right order). commit 06bb2d95b4d8232ef0cd0059d2609d2211d0e3e6 Author: Eelco Dolstra Date: Tue Sep 3 11:04:21 2013 +0000 Reformat commit 6f809194d7448c4ad50174bed9ba2419e2114352 Author: Eelco Dolstra Date: Tue Sep 3 12:56:33 2013 +0200 Get rid of the parse tree cache Since we already cache files in normal form (fileEvalCache), caching parse trees is redundant. Note that getting rid of this cache doesn't actually save much memory at the moment, because parse trees are currently not freed / GC'ed. commit 57d18df7d0005cf822368d9f1d0c33396c6b9f9f Author: Eelco Dolstra Date: Mon Sep 2 18:34:04 2013 +0200 Add some support code for nix-repl commit 92077b4547b473bb4ea7b38077299e8fba75ca62 Author: Eelco Dolstra Date: Mon Sep 2 16:39:17 2013 +0200 Get rid of a signedness warning commit 33972629d76b1b1059de5b89ce68ef37dce45cbd Author: Eelco Dolstra Date: Mon Sep 2 16:29:15 2013 +0200 Fix whitespace commit ac1b75413821c9ebaf317fb3fe1c695599e93818 Author: Eelco Dolstra Date: Mon Sep 2 13:32:51 2013 +0200 Lower xz compression level Fixes #84. commit c28dfc030587cb5a4ccdc71e5f55e708a9aa901d Author: Eelco Dolstra Date: Mon Sep 2 13:23:07 2013 +0200 Manual: Make '' a bit clearer Issue #162. commit e9b92169a5a9d187e32d0ce15ca785eb9f8dce56 Author: Eelco Dolstra Date: Mon Sep 2 13:19:34 2013 +0200 Fix manual error Reported by Matija Šuklje. Fixes #163. commit ecd830b3b9e189d0b41cfeadc993c17d5858a79b Author: Eelco Dolstra Date: Mon Sep 2 13:11:36 2013 +0200 Update the release notes commit 6ec8dab06abd08f3239c10b98d34a268cd0657cb Author: Eelco Dolstra Date: Mon Sep 2 12:44:30 2013 +0200 Adda test for build-max-log-size commit b29d3f4aee9fa91f4ea1019d09bf63bc81b9f830 Author: Eelco Dolstra Date: Mon Sep 2 12:01:04 2013 +0200 Only show trace messages when tracing is enabled commit efe428946431c6c670151c949884fa8c1fa31794 Author: Eelco Dolstra Date: Mon Sep 2 11:58:18 2013 +0200 Add an option to limit the log output of builders This is mostly useful for Hydra to deal with builders that get stuck in an infinite loop writing data to stdout/stderr. commit afc6c1bad63e27d68adf49e673f8aafd36495a8a Author: Shea Levy Date: Mon Jul 15 17:10:18 2013 -0400 Simplify inherited attribute handling This reduces the difference between inherited and non-inherited attribute handling to the choice of which env to use (in recs and lets) by setting the AttrDef::e to a new ExprVar in the parser rather than carrying a separate AttrDef::v VarRef member. As an added bonus, this allows inherited attributes that inherit from a with to delay forcing evaluation of the with's attributes. Signed-off-by: Shea Levy commit 6cd6ce56083d0077485896a761520812d039bf10 Author: Ivan Kozik Date: Fri Aug 16 20:18:38 2013 +0000 Fix nix-shell command commit 34bb806f747d5edc16119e38e2ac44e6b236ac12 Author: Ivan Kozik Date: Sat Aug 10 21:36:16 2013 +0000 Fix typos, especially those that end up in the Nix manual commit c6c024ca6f587dab991589ad6fdf010b9f0e6d62 Author: Gergely Risko Date: Thu Aug 22 17:57:39 2013 +0200 Fix personality switching from x86_64 to i686 On Linux, Nix can build i686 packages even on x86_64 systems. It's not enough to recognize this situation by settings.thisSystem, we also have to consult uname(). E.g. we can be running on a i686 Debian with an amd64 kernel. In that situation settings.thisSystem is i686-linux, but we still need to change personality to i686 to make builds consistent. commit 03eaef3d7a614872af309d1bfa5133845123720f Author: Eelco Dolstra Date: Fri Aug 23 10:12:20 2013 +0200 Manual: Don't use actual hashes of Nix dependencies These cause an unnecessary runtime dependency :-) commit b3110a15e9ab898e14721655030e7f0f7e2ea6c5 Author: Eelco Dolstra Date: Wed Aug 21 12:52:44 2013 +0200 Fix corrupt PNG Libpng used to accept this, but no longer does. commit 25a108bb9c5eb1999e1699d4e0727de1cbce30c7 Author: Eelco Dolstra Date: Mon Aug 19 13:22:56 2013 +0200 Hack to clean up tests/test-tmp commit d308aeaf53b7324af98dfa949a747526c241ef30 Author: Eelco Dolstra Date: Mon Aug 19 12:35:03 2013 +0200 Store Nix integers as longs So on 64-bit systems, integers are now 64-bit. Fixes #158. commit 297b762513ad416582c0850095506f802ff5b1bb Author: Eelco Dolstra Date: Mon Aug 19 11:41:15 2013 +0200 Turn on -Wall commit 46222bbc43fa4d7b44a466bf7be435ea1a4d6fc0 Author: Eelco Dolstra Date: Wed Aug 14 22:32:49 2013 +0200 Typo commit 58204a3c39614297e71a21a7633ea8293e8304ee Author: Shea Levy Date: Wed Aug 14 15:35:13 2013 -0400 corepkgs/nar.nix: Prefer local builds nar.nix's builder depends on coreutils and nix itself being in $PATH. Unfortunately, there's no good way to ensure that these packages exist in the same place on the remote machine: The local machine may have nix installed in /usr, and the remote machine in /usr/local, but the generated nar.sh builder will refer to /usr and thus fail on the remote machine. This ensures that nar.sh is run on the same machine that instantiates it. Signed-off-by: Shea Levy commit 3fb7ae0586958a2404db41b8cf6ec4fe88f2f674 Author: Eelco Dolstra Date: Wed Aug 7 15:44:19 2013 +0000 Respect MINSIGSTKSZ when allocating an alternative stack http://hydra.nixos.org/build/5663577 commit 161a2ccf7af60acf8d04ba5d92f0116f6be19fba Author: Eelco Dolstra Date: Wed Aug 7 17:26:41 2013 +0200 Fix build on non-Linux http://hydra.nixos.org/build/5662914 commit a583a2bc59a4ee2b067e5520f6c5bc0c61852c32 Author: Eelco Dolstra Date: Wed Aug 7 11:51:55 2013 +0000 Run the daemon worker on the same CPU as the client On a system with multiple CPUs, running Nix operations through the daemon is significantly slower than "direct" mode: $ NIX_REMOTE= nix-instantiate '' -A system real 0m0.974s user 0m0.875s sys 0m0.088s $ NIX_REMOTE=daemon nix-instantiate '' -A system real 0m2.118s user 0m1.463s sys 0m0.218s The main reason seems to be that the client and the worker get moved to a different CPU after every call to the worker. This patch adds a hack to lock them to the same CPU. With this, the overhead of going through the daemon is very small: $ NIX_REMOTE=daemon nix-instantiate '' -A system real 0m1.074s user 0m0.809s sys 0m0.098s commit 263d6682224f516aed74286453c5e2e097a38aa6 Author: Eelco Dolstra Date: Tue Aug 6 14:21:46 2013 +0200 Set the default GCC optimisation level to -O3 commit fd7d979c79759e5db68e4b62b3550a3906f67d40 Author: Eelco Dolstra Date: Tue Aug 6 14:15:11 2013 +0200 Remove obsolete reference to ATerms commit 46ffcce0c355ee16075b4ba216bc0aea054143aa Author: Eelco Dolstra Date: Fri Aug 2 18:29:23 2013 +0000 In the profiler output, show function names (if available) commit 8e74c0bfd1b61b175f04a7e0a8f0a3d9db809f1a Author: Eelco Dolstra Date: Fri Aug 2 18:53:02 2013 +0200 Let the ordering operators also work on strings E.g. ‘"foo" < "bar"’ now works. commit 3d77b28eacc940356e94c36017fb2d9f1a1b7ec2 Author: Eelco Dolstra Date: Fri Aug 2 18:39:40 2013 +0200 Add comparison operators ‘<’, ‘<=’, ‘>’ and ‘>=’ commit 47701677e88230abf7d9106c55f46aa660643ce7 Author: Eelco Dolstra Date: Fri Aug 2 16:03:02 2013 +0000 Add integer ‘-’, ‘*’ and ‘/’ operators commit 5d147e125cea69e9a3b12f0ef64c64f42985c65e Author: Eelco Dolstra Date: Fri Aug 2 17:35:59 2013 +0200 Add a unary integer negation operator This allows saying "-1" instead of "builtins.sub 0 1". commit 159e621d1a9c4391b53f3d822109c36931934698 Author: Eelco Dolstra Date: Fri Aug 2 15:21:17 2013 +0000 Overload the ‘+’ operator to support integer addition commit 511455965e1a17db3653147a4ac0d284a37915be Author: Eelco Dolstra Date: Wed Jul 31 13:17:50 2013 +0200 nix-shell: Don't disable Automake dependency tracking Nixpkgs' stdenv disables dependency tracking by default. That makes sense for one-time builds, but in an interactive environment we expect repeated "make" invocations to do the right thing. commit 7df4ef983e96f604fa84abe4aeb54dcb00a72add Author: Eelco Dolstra Date: Wed Jul 31 13:12:35 2013 +0200 Test the delayed with a bit more commit 0a470fc3453f56a0a242d8f467b8079fe0040ff7 Author: Eelco Dolstra Date: Wed Jul 31 12:44:21 2013 +0200 Make Env smaller Commit 20866a7031ca823055a221653b77986faa167329 added a ‘withAttrs’ field to Env, which is annoying because it makes every Env structure bigger and we allocate millions of them. E.g. NixOS evaluation took 18 MiB more. So this commit squeezes ‘withAttrs’ into values[0]. Probably should use a union... commit 8ae6d55db15bb0777e3d707afb994f6fcbcc6a65 Author: Eelco Dolstra Date: Wed Jul 31 12:11:14 2013 +0200 Don't use NULL commit e068f49f7dc59788cf356acfc77db614db6b28f0 Author: Shea Levy Date: Tue Jul 16 08:43:54 2013 -0400 Avoid thunks when a fromWith var can be looked up without evaluation Signed-off-by: Shea Levy commit 20866a7031ca823055a221653b77986faa167329 Author: Shea Levy Date: Mon Jul 15 15:53:14 2013 -0400 Delay evaulation of `with` attrs until a variable lookup needs them Evaluation of attribute sets is strict in the attribute names, which means immediate evaluation of `with` attribute sets rules out some potentially interesting use cases (e.g. where the attribute names of one set depend in some way on another but we want to bring those names into scope for some values in the second set). The major example of this is overridable self-referential package sets (e.g. all-packages.nix). With immediate `with` evaluation, the only options for such sets are to either make them non-recursive and explicitly use the name of the overridden set in non-overridden one every time you want to reference another package, or make the set recursive and use the `__overrides` hack. As shown in the test case that comes with this commit, though, delayed `with` evaluation allows a nicer third alternative. Signed-off-by: Shea Levy commit 70e68e0ec604124bb248ea4d064307bbf96e7932 Author: Eelco Dolstra Date: Tue Jul 30 23:25:37 2013 +0200 Detect stack overflows Previously, if the Nix evaluator gets a stack overflow due to a deep or infinite recursion in the Nix expression, the user gets an unhelpful message ("Segmentation fault") that doesn't indicate that the problem is in the user's code rather than Nix itself. Now it prints: error: stack overflow (possible infinite recursion) This only works on x86_64-linux and i686-linux. Fixes #35. commit e87d1a63bdef0ae08f2d94d67fd8daa8fbb63fb4 Author: Shea Levy Date: Mon Mar 18 11:13:53 2013 -0400 killUser: Don't let the child kill itself on Apple The kill(2) in Apple's libc follows POSIX semantics, which means that kill(-1, SIGKILL) will kill the calling process too. Since nix has no way to distinguish between the process successfully killing everything and the process being killed by a rogue builder in that case, it can't safely conclude that killUser was successful. Luckily, the actual kill syscall takes a parameter that determines whether POSIX semantics are followed, so we can call that syscall directly and avoid the issue on Apple. Signed-off-by: Shea Levy commit 7cf539c728b8f2a4478c0384d3174842e1e0cced Author: Florian Friesdorf Date: Mon Feb 20 04:09:46 2012 +0100 buildenv: remove special treatment of python files buildPythonPackage does not leave easy_install.pth and site.py anymore. A python package that leaves these files is broken. An exception to this is setuptoolsSite which packages setuptools' site.py. To include it into a buildenv, this patch is even needed, not just cosmetic. commit 7b09e9f2c49aba7ced0e7fbac3994f6686b6a303 Author: Eelco Dolstra Date: Fri Jul 19 16:51:31 2013 +0200 Add hacking notes plus a script for running nix-shell commit 15e5ac80393f3b0a1be264e8cdaa8f048375b27d Author: Eelco Dolstra Date: Fri Jul 19 14:32:05 2013 +0200 nix-shell: Set $IN_NIX_SHELL This allows scripts to distinguish between a real build and a Nix shell. commit 48858ad5cabd03976330dff3d7aaa3d949ca09d6 Author: Eelco Dolstra Date: Fri Jul 19 14:06:58 2013 +0200 nix-shell: Set some environment variables also set by build.cc Setting $NIX_STORE causes the purity checks in gcc/ld-wrapper to kick in, so that's why we unset $NIX_ENFORCE_PURITY. commit 2bc5de86357fddcc52e2ce0c1b432a9509dea27e Author: Eelco Dolstra Date: Fri Jul 19 12:02:44 2013 +0200 Rename ‘nix-build --run-env’ to ‘nix-shell’ commit dc5f2e7da607bdf50bf710cbe0b5f6ff32980e19 Author: Eelco Dolstra Date: Fri Jul 19 11:23:32 2013 +0200 nix-build --run-env: Add a ‘--pure’ flag This causes the environment to be (almost) cleared, thus giving a shell that more closely resembled the actual Nix derivation. commit a4921b8ceb5bde3fbd1ae25ea4b367199796eded Author: Eelco Dolstra Date: Thu Jul 18 12:52:16 2013 +0200 Revert "build-remote.pl: Enforce timeouts locally" This reverts commit 69b8f9980f39c14a59365a188b300a34d625a2cd. The timeout should be enforced remotely. Otherwise, if the garbage collector is running either locally or remotely, if will block the build or closure copying for some time. If the garbage collector takes too long, the build may time out, which is not what we want. Also, on heavily loaded systems, copying large paths to and from the remote machine can take a long time, also potentially resulting in a timeout. commit 16591eb3cccf86da8cd3f20c56e2dd847576ff5e Author: Shea Levy Date: Fri Jul 12 09:35:33 2013 -0400 Allow bind-mounting regular files into the chroot mount(2) with MS_BIND allows mounting a regular file on top of a regular file, so there's no reason to only bind directories. This allows finer control over just which files are and aren't included in the chroot without having to build symlink trees or the like. Signed-off-by: Shea Levy commit c3f5413e806a22d3e664416649687e331b14f8b9 Author: Eelco Dolstra Date: Fri Jul 12 14:06:05 2013 +0200 Fix syntax error in unpack-channel commit aeb810b01e17d040f9592681ee271f15874dce50 Author: Eelco Dolstra Date: Fri Jul 12 14:01:25 2013 +0200 Garbage collector: Don't follow symlinks arbitrarily Only indirect roots (symlinks to symlinks to the Nix store) are now supported. commit 25a00cae5bf702b9e844b05923a9c59de9df6788 Author: Gergely Risko Date: Tue May 14 15:10:14 2013 +0200 Add gzip support for channel unpacking commit 620d57f036be5a8b8fa04ee1a2aa2329e652e0f0 Author: Domen Kožar Date: Sat Jun 29 15:18:05 2013 +0200 doc: typo commit 6fcc2906194cbbc49a1e8d1862465e891b67d573 Author: Eelco Dolstra Date: Thu Jul 11 17:16:45 2013 +0200 build-remote.pl: Move "building ..." message to a better place commit ed09d0c0a436a412893ffe817c842827abbec6ed Author: Eelco Dolstra Date: Thu Jul 11 14:40:29 2013 +0200 nix-build --run-env: Always use Bash Fixes #113. Fixes #131. commit 656390062a9b612df3238f9e6a0d5ce89c3de21c Author: Eelco Dolstra Date: Thu Jul 11 14:32:22 2013 +0200 nix-build --run-env: Source $stdenv/setup in the interactive shell This ensures that not just environment variables are set, but also shell functions such as unpackPhase, configurePhase and so on. commit 212e96f39c5120ef33b363647a58ebfd61fb3f5e Author: Ludovic Courtès Date: Fri Jul 5 22:21:04 2013 +0200 Leave `HAVE_HUP_NOTIFICATION' undefined on GNU/Hurd. commit b584a42e3db8302095e786b4a12894d073fd75cf Author: Eelco Dolstra Date: Wed Jul 3 18:35:59 2013 +0200 Manual: auto-optimise-store is disabled by default commit 5116214343ecce70a3cb7037f223313314a0a614 Author: Eelco Dolstra Date: Mon Jul 1 21:02:36 2013 +0200 Add support for uncompressed NARs in binary caches Issue NixOS/hydra#102. commit 798671163254d9766f711f4e8101bc72bcf4bd5c Author: Eelco Dolstra Date: Mon Jul 1 13:30:28 2013 +0200 copy-from-other-stores.pl: Respect $NIX_BIN_DIR commit 1917d750a0363f678a93c80c5a4e48e7493b1786 Author: Eelco Dolstra Date: Mon Jul 1 13:29:59 2013 +0200 copy-from-other-stores.pl: Report downloaded size as 0 commit 7ccd9464077180f633e65c15906bdda707077e8c Author: Eelco Dolstra Date: Thu Jun 20 20:05:03 2013 +0200 Don't set $preferLocalBuild and $requiredSystemFeatures in builders With C++ std::map, doing a comparison like ‘map["foo"] == ...’ has the side-effect of adding a mapping from "foo" to the empty string if "foo" doesn't exist in the map. So we ended up setting some environment variables by accident. commit 5558652709f27e8a887580b77b93c705659d7a4b Author: Eelco Dolstra Date: Thu Jun 20 19:26:31 2013 +0200 Don't substitute derivations that have preferLocalBuild set In particular this means that "trivial" derivations such as writeText are not substituted, reducing the number of GET requests to the binary cache by about 200 on a typical NixOS configuration. commit 1906cce6fcea88d07b55c0b9734da39675e17a4d Author: Eelco Dolstra Date: Thu Jun 20 14:01:33 2013 +0000 Increase SQLite's auto-checkpoint interval Common operations like instantiating a NixOS system config no longer fitted in 8192 pages, leading to more fsyncs. So increase this limit. commit 9b11165aec8639b021527978603423826b6b9cc3 Author: Eelco Dolstra Date: Thu Jun 20 12:01:33 2013 +0200 Disable the copy-from-other-stores substituter This substituter basically cannot work reliably since we switched to SQLite, since SQLite databases may need write access to open them even just for reading (and in WAL mode they always do). commit 22144afa8d9f8968da351618a1347072a93bd8aa Author: Eelco Dolstra Date: Thu Jun 20 11:55:15 2013 +0200 Don't keep "disabled" substituters running For instance, it's pointless to keep copy-from-other-stores running if there are no other stores, or download-using-manifests if there are no manifests. This also speeds things up because we don't send queries to those substituters. commit 2b29e4b8529ec9f4d6904a5142266c02d1b24c99 Author: Eelco Dolstra Date: Mon Jun 17 15:39:45 2013 +0200 Bump version commit 6016bcd30ec32e2dfb92e197319ddbdbc4f520be Author: Eelco Dolstra Date: Mon Jun 17 11:47:38 2013 +0200 Update release notes for Nix 1.5.3 commit 1b6ee8f4c7e74f75e1f49b43cf22be7730b30649 Author: Eelco Dolstra Date: Thu Jun 13 17:29:56 2013 +0200 Allow hard links between the outputs of a derivation commit cd49ee08970f0fa44053fb12cdf29668e8131a51 Author: Eelco Dolstra Date: Thu Jun 13 17:12:24 2013 +0200 Fix a security bug in hash rewriting Before calling dumpPath(), we have to make sure the files are owned by the build user. Otherwise, the build could contain a hard link to (say) /etc/shadow, which would then be read by the daemon and rewritten as a world-readable file. This only affects systems that don't have hard link restrictions enabled. commit 1e2c7c04b1125fb63fae733fc27abb86743b8224 Author: Eelco Dolstra Date: Thu Jun 13 17:12:06 2013 +0200 Fix assertion failure in canonicalisePathMetaData() after hash rewriting The assertion in canonicalisePathMetaData() failed because the ownership of the path already changed due to the hash rewriting. The solution is not to check the ownership of rewritten paths. Issue #122. commit 6cc2a8f8ed7cb53e49bfbd08f462af062da18ce7 Author: Eelco Dolstra Date: Thu Jun 13 16:43:20 2013 +0200 computeFSClosure: Only process the missing/corrupt paths Issue #122. commit bfee9a25815d6f3b90e48ccf5aa4fc055005450a Author: Eelco Dolstra Date: Thu Jun 13 14:51:11 2013 +0200 Typo commit f9ff67e9487a0085ad6536016791242364ce70d9 Author: Eelco Dolstra Date: Thu Jun 13 14:46:07 2013 +0200 In repair mode, update the hash of rebuilt paths Otherwise subsequent invocations of "--repair" will keep rebuilding the path. This only happens if the path content differs between builds (e.g. due to timestamps). commit 6b05f688ee6849b89e7fb0d3fb7b678f316039e7 Author: Eelco Dolstra Date: Wed Jun 12 12:10:26 2013 +0200 nix-daemon: Trust options like binary-caches when the client is root Fixes #127. commit 5c06e5297d3e8660abfa238b7244d958237e54e8 Author: Eelco Dolstra Date: Fri Jun 7 16:21:48 2013 +0200 download-from-binary-cache.pl: Respect $NIX_CONNECT_TIMEOUT commit 24a356bf71e8c75bc7dbf9b4a619552b4ebe873c Author: Eelco Dolstra Date: Fri Jun 7 15:35:54 2013 +0200 Replace $NIX_DEBUG_SUBST with an option ‘debug-subst’ Thus passing ‘--option debug-subst 1’ allows daemon users to turn on debug info and see what the substituter is doing. commit 24e063efdcdc42e6ea4ad0c49595ce60e834f3ab Author: Eelco Dolstra Date: Fri Jun 7 15:33:44 2013 +0200 download-from-binary-cache.pl: Show if we're waiting for a URL Previously, if a binary cache is hanging/unreachable/slow, download-from-binary-cache.pl would also hang without any indication to the user. Now, if fetching a URL takes more than 5 seconds, it will print a message to that effect. commit ca70fba0bff82465a14ca0d29266b609851a6547 Author: Eelco Dolstra Date: Fri Jun 7 15:10:23 2013 +0200 Remove obsolete EOF checks commit 5959c591a0a6000b6de14eaec37e8139e36dfe0a Author: Eelco Dolstra Date: Fri Jun 7 15:02:14 2013 +0200 Process stderr from substituters while doing have/info queries commit c5f9d0d08058bca4af0d22e8d46a7d84627c0aae Author: Eelco Dolstra Date: Fri Jun 7 14:00:23 2013 +0200 Buffer reads from the substituter This greatly reduces the number of system calls. commit 75e12b8e666aa0b689f6b654d37c84be912ff6d4 Author: Eelco Dolstra Date: Wed Jun 5 16:17:06 2013 +0200 download-from-binary-cache.pl: Fix race condition Fixes the error "DBD::SQLite::db do failed: column url is not unique". commit f0576d67756fedca0010d20aaed2e9cffd24a108 Author: Eelco Dolstra Date: Wed Jun 5 13:36:43 2013 +0200 Update the default binary cache URL to cache.nixos.org commit ff08306746e88e708612cdc6d2dac84bd76f1106 Author: Eelco Dolstra Date: Tue Jun 4 15:20:37 2013 +0200 download-from-binary-cache.pl: Treat a 403 error as a 404 Amazon S3 returns HTTP status code 403 if a file doesn't exist and the user has no permission to list the contents of the bucket. So treat it as 404 (meaning it's cached in the NARExistence table). commit bc2e43f3c826eea5b92a4f255eee59c3bb253cbc Author: Eelco Dolstra Date: Wed May 29 18:18:59 2013 +0200 build-remote.pl: Remove meaningless signing when importing the output paths The "$UID != 0" makes no sense: if the local side has write access to the Nix store (which is always the case) then it doesn't matter if we're root - we can import unsigned paths either way. commit 039d5a023f2fd0d28438ca1a9493237c95cc05e1 Author: Eelco Dolstra Date: Wed May 29 12:36:56 2013 +0200 .bashrc -> .profile commit b09b87321c058f691fcf64babe56620277b68e63 Author: Eelco Dolstra Date: Thu May 23 14:55:36 2013 -0400 nix-store --export: Export paths in topologically sorted order Fixes #118. commit 107505e13ac83850fe01ef3e1a35e5bb2ab1ef52 Author: Eelco Dolstra Date: Thu May 23 14:39:58 2013 -0400 build-remote.pl: Copy all outputs in one operation commit 72d8209548f2ba16e41a2faa850ab9af3616453d Author: Eelco Dolstra Date: Thu May 23 14:04:46 2013 -0400 build-remote.pl: Indicate if remote machine is refusing builds Fixes #120. commit 18a48d80a0686ba81959057e8becc6272acd6c46 Author: Eelco Dolstra Date: Thu May 16 19:08:02 2013 +0200 Show function names in error messages Functions in Nix are anonymous, but if they're assigned to a variable/attribute, we can use the variable/attribute name in error messages, e.g. while evaluating `concatMapStrings' at `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/strings.nix:18:25': ... commit 1b3a03f1610b714adca41637ccd85a8157e236ab Author: Eelco Dolstra Date: Thu May 16 17:56:14 2013 +0200 Show which function argument was unexpected Fixes #116. commit 229567293c4e0f31bc8c79f69b2ff25f8f6e5147 Author: Eelco Dolstra Date: Thu May 16 17:48:19 2013 +0200 Shut up a compiler warning commit a4cb62ac25931b269a9827beb1d1274b48c44f7c Author: Eelco Dolstra Date: Wed May 15 15:47:05 2013 +0200 download-from-binary-cache.pl: Get rid of an uninitialized value warning Reported by Pablo Costa. commit 31a551a60fb8c8cc8f1887f764d88c121ac1a3cf Author: Eelco Dolstra Date: Mon May 13 23:50:31 2013 +0200 Bump version commit 6e85d1b5ba824d5a9eeb7ea3d065d1b8cc07e465 Author: Eelco Dolstra Date: Mon May 13 16:52:08 2013 +0200 Bump release date commit 3a0cc43ac89ae8f778764c9f5e27b361e4986913 Author: Eelco Dolstra Date: Fri May 10 02:38:05 2013 +0200 build-remote.pl: Properly close the SSH connection between attempts commit be0b9dda31ab42bb2e077751fc75abbc945e407f Author: Eelco Dolstra Date: Fri May 10 02:32:13 2013 +0200 build-remote.pl: Pass /dev/null as SSH's stdin Otherwise it will set the parent's stdin to non-blocking mode, causing the subsequent read of the set of inputs/outputs to fail randomly. That's insane. commit 78206f06ecb2f5d6dba85b5f709251030e966f1c Author: Eelco Dolstra Date: Fri May 10 01:09:46 2013 +0200 build-remote.pl: Allow a machine to refuse a build Before selecting a machine, build-remote.pl will try to run the command "nix-builds-inhibited" on the machine. If this command exists and returns a 0 exit code, then the machine won't be used. It's up to the user to provide this command, but it would typically be a script that checks whether there is enough disk space and whether the load is not too high. commit 2ee9da9e22ecaad1cc5ad0f940e7b079a9e62cfa Author: Eelco Dolstra Date: Fri May 10 00:24:33 2013 +0200 In trace messages, don't print the output path This doesn't work if there is no output named "out". Hydra didn't use it anyway. commit 6eba05613a2b794fead0cc9ef45eea036c5c5ea9 Author: Eelco Dolstra Date: Thu May 9 18:39:04 2013 +0200 Communicate build timeouts to Hydra commit 7a03cbf09dc5ecf16a1036fc83ace0e0ccec5626 Author: Eelco Dolstra Date: Thu May 9 17:30:07 2013 +0200 build-remote.pl: Create one process fewer on the remote side commit 69b8f9980f39c14a59365a188b300a34d625a2cd Author: Eelco Dolstra Date: Thu May 9 17:17:17 2013 +0200 build-remote.pl: Enforce timeouts locally Don't pass --timeout / --max-silent-time to the remote builder. Instead, let the local Nix process terminate the build if it exceeds a timeout. The remote builder will be killed as a side-effect. This gives better error reporting (since the timeout message from the remote side wasn't properly propagated) and handles non-Nix problems like SSH hangs. commit e93acab85298cf3433d1938828e7772e8faa55dc Author: Eelco Dolstra Date: Wed May 8 14:41:35 2013 +0200 Build Fedora 18 RPMs commit 806970349b494e03ecf531383874ee472810c07b Author: Eelco Dolstra Date: Tue May 7 15:46:25 2013 +0200 Update release date commit ea019e9a269ae35fdf8861485fe16e622f8293f6 Author: Eelco Dolstra Date: Tue May 7 15:37:28 2013 +0200 Add option ‘extra-binary-caches’ This allows providing additional binary caches, useful in scripts like Hydra's build reproduction scripts, in particular because untrusted caches are ignored. commit cc837e24586eec62d07e0cb078e02caa6ee42171 Author: Eelco Dolstra Date: Tue May 7 11:21:30 2013 +0200 Build Debian 7.0 debs commit 28034bfa49b258089d5e8d36e89677836acb8eab Author: Eelco Dolstra Date: Fri May 3 14:14:46 2013 +0200 Build Ubuntu 13.04 debs commit 93f4fa8a15ce6d4ff6b14843a712990ca0f23dc5 Author: Eelco Dolstra Date: Fri May 3 11:28:32 2013 +0200 Update release notes commit c51b6a893ca6fcce86b40c4852cfa7f0ce3065fd Author: Eelco Dolstra Date: Fri May 3 11:12:11 2013 +0200 nix-copy-closure: Show a proper error message if no host name is given commit e6c44d166a63abe95a02382386246acea8757951 Author: Lluís Batlle i Rossell Date: Wed May 1 22:44:37 2013 +0400 Fixing the pv position regarding compression Problem noticed by niksnut. commit 7391533ea57268a7f0aab433dad41b905e156be6 Author: Lluís Batlle i Rossell Date: Thu Apr 11 19:54:38 2013 +0200 Fixing the pv reference; I didn't mean to change it commit 5cc2fc46ecd4ad38a42591943fc29d412ad5cfc4 Author: Lluís Batlle i Rossell Date: Thu Apr 11 19:52:21 2013 +0200 Adding ETA support to the --show-progress in nix-copy-closure Based on https://github.com/NixOS/nix/pull/6 from shlevy commit 3628b61ce0aaff43daf37d086697c7c3f9c8ef13 Author: Eelco Dolstra Date: Wed May 1 13:31:33 2013 +0200 Nix 1.5.2 release notes commit 470553bd0572c4010407acb4e410b45a521e5f11 Author: Eelco Dolstra Date: Wed May 1 13:21:39 2013 +0200 Don't let stderr writes in substituters cause a deadlock commit 4ddd077bfa9ad497e795a7f60d7734daf62117c1 Author: Eelco Dolstra Date: Fri Apr 26 12:15:54 2013 +0200 find-runtime-roots.pl: Don't hardcode /nix/store commit 0374d9443732c184ab054a926058b9c5b973198f Author: Eelco Dolstra Date: Fri Apr 26 12:07:25 2013 +0200 addAdditionalRoots(): Check each path only once commit 00f698eb8b93c9de50ebbadb946c5bf188e8fa98 Author: Eelco Dolstra Date: Fri Apr 26 12:06:39 2013 +0200 find-runtime-roots.pl: Search process environments for roots For instance, this prevents paths from being deleted that are in use by a "nix-build --run-env" session. commit 938092a21341b69604e9da6294fe76c13d6a1c07 Author: Eelco Dolstra Date: Fri Apr 26 11:44:19 2013 +0200 find-runtime-roots.pl: Use Nix::Utils::readFile commit 772b70952f7583cfbd6363b30f926d7ad164175c Author: Eelco Dolstra Date: Tue Apr 23 18:04:59 2013 +0200 Fix --timeout I'm not sure if it has ever worked correctly. The line "lastWait = after;" seems to mean that the timer was reset every time a build produced log output. Note that the timeout is now per build, as documented ("the maximum number of seconds that a builder can run"). commit f9974f856ec8aff848b157da7dbe0415ec50ab8f Author: Eelco Dolstra Date: Tue Apr 23 17:16:29 2013 +0200 Show that --timeout doesn't work if the build produces log output commit 6955d41f2be32c3bb857703c3e006e24d787d540 Author: Eelco Dolstra Date: Tue Apr 23 17:16:01 2013 +0200 nix-build: Respect --timeout commit 934cf2d1f4c46ecd6afd30cfb14aa55a6bf3d790 Author: Eelco Dolstra Date: Tue Apr 23 16:59:06 2013 +0200 Nix daemon: respect build timeout from the client commit 08d96ffad094f4b686a2ad8f2a41a6b046b0f81b Author: Eelco Dolstra Date: Tue Apr 23 12:45:01 2013 +0200 Fix --fallback with the binary cache substituter Reported by Peter Simons. commit a9b4e26b5c3ce6259526fe038c771b9325d3e99e Author: Eelco Dolstra Date: Tue Apr 23 12:44:01 2013 +0200 Test whether --fallback works if NARS have disappeared from the binary cache commit c642441beb504278819e43914516b5eda30f2c15 Author: Eelco Dolstra Date: Tue Apr 23 12:43:28 2013 +0200 Test NAR info caching commit 05420e788315f04212fe936313b3ff7b580a206c Author: Eelco Dolstra Date: Tue Apr 9 17:57:48 2013 +0200 Manual: Add a missing step to the build instructions Reported by Johan Grande. commit 258897c265a6d6575f1669a896ab6f5ab92337c3 Author: Eelco Dolstra Date: Thu Apr 4 11:16:26 2013 +0200 Complain if /homeless-shelter exists commit 239841787bfbf499256c0bb9358f058a8243d60a Author: Eelco Dolstra Date: Mon Mar 25 21:59:11 2013 +0100 Fix evaluation of the VM tests commit cc63db1dd5c37aead3e3d2e20e2d2f548cc24830 Author: Shea Levy Date: Thu Mar 7 22:53:49 2013 -0500 makeStoreWritable: Ask forgiveness, not permission It is surprisingly impossible to check if a mountpoint is a bind mount on Linux, and in my previous commit I forgot to check if /nix/store was even a mountpoint at all. statvfs.f_flag is not populated with MS_BIND (and even if it were, my check was wrong in the previous commit). Luckily, the semantics of mount with MS_REMOUNT | MS_BIND make both checks unnecessary: if /nix/store is not a mountpoint, then mount will fail with EINVAL, and if /nix/store is not a bind-mount, then it will not be made writable. Thus, if /nix/store is not a mountpoint, we fail immediately (since we don't know how to make it writable), and if /nix/store IS a mountpoint but not a bind-mount, we fail at first write (see below for why we can't check and fail immediately). Note that, due to what is IMO buggy behavior in Linux, calling mount with MS_REMOUNT | MS_BIND on a non-bind readonly mount makes the mountpoint appear writable in two places: In the sixth (but not the 10th!) column of mountinfo, and in the f_flags member of struct statfs. All other syscalls behave as if the mount point were still readonly (at least for Linux 3.9-rc1, but I don't think this has changed recently or is expected to soon). My preferred semantics would be for MS_REMOUNT | MS_BIND to fail on a non-bind mount, as it doesn't make sense to remount a non bind-mount as a bind mount. commit 2c9cf5074642459b37f19a2d4c6bc0233248d3a4 Author: Shea Levy Date: Thu Mar 7 19:39:55 2013 -0500 makeStoreWritable: Use statvfs instead of /proc/self/mountinfo to find out if /nix/store is a read-only bind mount /nix/store could be a read-only bind mount even if it is / in its own filesystem, so checking the 4th field in mountinfo is insufficient. Signed-off-by: Shea Levy commit c3fc60d9369fc802b33f75d2d9cd6ef22b916112 Author: Eelco Dolstra Date: Mon Mar 18 21:49:42 2013 +0100 Fix evaluation commit f72ed360250fd04138358463b5d1965d81160e0d Author: Eelco Dolstra Date: Fri Mar 15 14:21:05 2013 +0100 Bump version number commit 78d777ca15a5212bef7d6674adf0ed1abadce883 Author: Eelco Dolstra Date: Fri Mar 15 13:18:49 2013 +0100 Remove the "system" jobset input commit a68ebf8e376a2f712cb7b00442e66c0c416026b4 Author: Eelco Dolstra Date: Thu Mar 14 18:33:15 2013 +0100 Require Bison 2.6 commit 804709706c56c207f1eb9033f98b213216672269 Author: Eelco Dolstra Date: Thu Mar 14 18:31:08 2013 +0100 Fix building against Bison 2.6 commit c56bc3d81cdcc09daf331b253a42cd155a9bd5f2 Author: Eelco Dolstra Date: Thu Mar 14 17:21:13 2013 +0100 Make sure that thunks are restored properly if an exception occurs Fixes Hydra bug #67. commit 4b07476848f7738c07a5b0894ad7a848ee2e9c9d Author: Eelco Dolstra Date: Fri Mar 8 01:27:04 2013 +0100 Prevent config.h from being clobbered commit bdd4646338da296fdf3a8f9dc3cf5aff1dafa163 Author: Eelco Dolstra Date: Fri Mar 8 01:24:59 2013 +0100 Revert "Prevent config.h from being clobbered" This reverts commit 28bba8c44f484eae38e8a15dcec73cfa999156f6. commit e73d9e948887621906363a35c980538294898a02 Author: Eelco Dolstra Date: Fri Mar 8 00:27:32 2013 +0100 Fix annoying Perl 5.16 warnings I.e. Subroutine Nix::Store::isValidPath redefined at /nix/store/clfzsf6gi7qh5i9c0vks1ifjam47rijn-perl-5.16.2/lib/perl5/5.16.2/XSLoader.pm line 92. and so on. commit 28bba8c44f484eae38e8a15dcec73cfa999156f6 Author: Eelco Dolstra Date: Thu Mar 7 23:55:55 2013 +0100 Prevent config.h from being clobbered commit 8057a192e3254c936fa0bcb5715e09600a28e8f8 Author: Eelco Dolstra Date: Thu Feb 28 19:55:09 2013 +0100 Handle systems without lutimes() or lchown() commit 9fa1bee575886b76c3a23af37f9f3ce2ce52733c Author: Eelco Dolstra Date: Thu Feb 28 19:36:02 2013 +0100 Update release notes Also use a point release version number as suggested by several people. commit f45c731cd7740cfd479d8704de16ee49e51fe06e Author: Eelco Dolstra Date: Thu Feb 28 14:51:08 2013 +0100 Handle symlinks properly Now it's really brown paper bag time... commit 88936411bcdd344d04e3a9ae0cd5389650551784 Author: Eelco Dolstra Date: Thu Feb 28 13:03:53 2013 +0100 Bump version number commit 0111ba98ea0a91965ebb215b408ee1c10286a245 Author: Eelco Dolstra Date: Wed Feb 27 17:18:41 2013 +0100 Handle hard links to other files in the output commit b008674e4616cd2596d8b02273deb52f8bcb7d6c Author: Eelco Dolstra Date: Wed Feb 27 16:35:46 2013 +0100 Refactoring: Split off the non-recursive canonicalisePathMetaData() Also, change the file mode before changing the owner. This prevents a slight time window in which a setuid binary would be setuid root. commit 826dc0d07d3b1ea6669f4ba42f73d1d29fe49642 Author: Eelco Dolstra Date: Tue Feb 26 14:32:48 2013 +0100 Remove outdated file commit 97c6009c47d687fecbc0e49df421546b64a4c94b Author: Eelco Dolstra Date: Tue Feb 26 14:32:14 2013 +0100 Bump version number commit ca9c02dff1449ff4c05ce86200ef73c2ff2883ab Author: Eelco Dolstra Date: Tue Feb 26 13:23:09 2013 +0100 Update release notes commit 5526a282b5b44e9296e61e07d7d2626a79141ac4 Author: Eelco Dolstra Date: Tue Feb 26 02:30:19 2013 +0100 Security: Don't allow builders to change permissions on files they don't own It turns out that in multi-user Nix, a builder may be able to do ln /etc/shadow $out/foo Afterwards, canonicalisePathMetaData() will be applied to $out/foo, causing /etc/shadow's mode to be set to 444 (readable by everybody but writable by nobody). That's obviously Very Bad. Fortunately, this fails in NixOS's default configuration because /nix/store is a bind mount, so "ln" will fail with "Invalid cross-device link". It also fails if hard-link restrictions are enabled, so a workaround is: echo 1 > /proc/sys/fs/protected_hardlinks The solution is to check that all files in $out are owned by the build user. This means that innocuous operations like "ln ${pkgs.foo}/some-file $out/" are now rejected, but that already failed in chroot builds anyway. commit dadf7a5b46f08b59c7e15a40937a9039ef273d63 Author: Eelco Dolstra Date: Tue Feb 19 16:56:31 2013 +0100 build-remote: Use the --quiet flag ‘--option verbosity 0’ doesn't actually do anything. commit 3e067ac11c1621f989011432f619652a9c20e6f4 Author: Ludovic Courtès Date: Mon Feb 18 23:05:40 2013 +0100 Add `Settings::nixDaemonSocketFile'. commit 5ea138dc4b9822095723b75bc2962e3d899f5437 Author: Ludovic Courtès Date: Mon Feb 18 23:05:39 2013 +0100 Enable chroot support on old glibc versions. commit 79a3ba7fa3cd23b31ea43007899ed79f181d4faf Author: Eelco Dolstra Date: Fri Feb 8 20:02:58 2013 +0100 Document ‘hashString’ commit 5f18cd2e84bb4d7405f7dbcc8b6554365556a3a1 Author: Eelco Dolstra Date: Fri Feb 8 19:49:24 2013 +0100 Make "${./path} ..." evaluate to a string, not a path Wacky string coercion semantics caused expressions like exec = "${./my-script} params..."; to evaluate to a path (‘/path/my-script params’), because anti-quotations are desuged to string concatenation: exec = ./my-script + " params..."; By constrast, adding a space at the start would yield a string as expected: exec = " ${./my-script} params..."; Now the first example also evaluates to a string. commit 52172607cfc33867c0cdb526bef99c315e98baa2 Author: Eelco Dolstra Date: Fri Feb 8 19:36:23 2013 +0100 Rename "hash" to "hashString" and handle SHA-1 commit 01a5ea9914b3933e63a88184861900615be76e12 Author: Marc Weber Date: Thu Feb 7 00:03:46 2013 +0100 experimental/hash adding primop function calculating hash of a string Signed-off-by: Marc Weber commit 8add116acd050bdcca84b8a092420566a6e6692c Author: Eelco Dolstra Date: Tue Feb 5 16:02:57 2013 +0100 Nix::Store::derivationFromPath: Return derivation outputs commit d6143801fdba7354180d8a56ae86f7825178dff2 Author: Eelco Dolstra Date: Wed Jan 30 18:49:19 2013 +0100 Support the colonies commit 9842077cb2bd968e0b14502609cf41741e170d33 Author: Eelco Dolstra Date: Thu Jan 24 13:00:44 2013 +0100 Improve -I description Issue #88. commit 5e9c3da41282970d5a496d1327de69cc1274d353 Author: Eelco Dolstra Date: Wed Jan 23 16:45:10 2013 +0100 Only warn about SQLite being busy once No need to get annoying. commit 99ed558a93216288e50b11132f2a00a74cc6bb7f Author: Eelco Dolstra Date: Tue Jan 22 22:07:25 2013 +0100 Correctly handle missing logs commit 1943b60ad820730a74d1dffcdddac396d0c1cb00 Author: Eelco Dolstra Date: Mon Jan 21 22:36:23 2013 +0100 Fix the VM tests commit 96fbbbde55d6f226fc49299ed753761edfb6ad77 Author: Eelco Dolstra Date: Mon Jan 21 22:26:25 2013 +0100 build-remote.pl: Don't keep build logs on the build slave commit d6fd6d8aff06740f6c2595d13482d9183c11d243 Author: Shea Levy Date: Fri Jan 18 19:59:23 2013 -0500 corepkgs/fetchurl: Enable making the downloaded file executable commit 536c85ea49c16a2ecd5a1ba169975b296cd6158c Author: Eelco Dolstra Date: Thu Jan 17 15:37:52 2013 +0100 Store build logs in /nix/var/log/nix/drvs/ ...where is the first two characters of the derivation. Otherwise /nix/var/log/nix/drvs may become so large that we run into all sorts of weird filesystem limits/inefficiences. For instance, ext3/ext4 filesystems will barf with "ext4_dx_add_entry:1551: Directory index full!" once you hit a few million files. commit 66fa9e6a4d7cf4c0a32d33adfc464f84c492f6d1 Author: Eelco Dolstra Date: Mon Jan 7 14:48:44 2013 +0100 Bump version number to 1.4 commit e42df686f309c5cd08a8653207e79e9caae37b67 Author: Eelco Dolstra Date: Sat Jan 5 00:13:29 2013 +0100 Delete a left-over trash directory before doing a GC commit 92926be2fe15b25759e8e3e129a093798f8c37b6 Author: Eelco Dolstra Date: Fri Jan 4 15:17:19 2013 +0100 Fix "0 store paths deleted" message commit b424d29d1b2fb99c654f1cffe6cd57b298c0ab33 Author: Eelco Dolstra Date: Thu Jan 3 13:29:17 2013 +0100 Open the database after removing immutable bits commit 3007f5737734856b58768f83edefe8574f373333 Author: Eelco Dolstra Date: Thu Jan 3 13:00:46 2013 +0100 Remove tabs commit def5160b614a59a0aa96fe2252e3daa00146e061 Author: Eelco Dolstra Date: Thu Jan 3 12:59:23 2013 +0100 Clear any immutable bits in the Nix store Doing this once makes subsequent operations like garbage collecting more efficient since we don't have to call makeMutable() first. commit 0a4e90395c3286a246b816575351b9f2016976ba Author: Eelco Dolstra Date: Wed Jan 2 23:52:15 2013 +0100 Urgggh http://hydra.nixos.org/build/3661100 commit f12492c66dc5c71c22ce2eb1788dacd86b1dfb1f Author: Eelco Dolstra Date: Wed Jan 2 22:36:08 2013 +0100 Manual: Fix "nix-store --export" example commit aebea2e489a21af260e7a654b0313efe042fbf9d Author: Eelco Dolstra Date: Wed Jan 2 22:16:37 2013 +0100 Reinstate the http://nixos.org/binary-cache default for the binary-caches setting commit 649bb60617e5413a87625a0c23e5ebd4f6229703 Author: Eelco Dolstra Date: Wed Jan 2 22:12:19 2013 +0100 Use sysconfdir=/etc commit 42d6f640c13e292593d4141b8bae0a2da4ee6ef8 Author: Eelco Dolstra Date: Wed Jan 2 12:59:49 2013 +0100 Update release notes commit 299141ecbd08bae17013226dbeae71e842b4fdd7 Author: Eelco Dolstra Date: Wed Jan 2 12:38:28 2013 +0100 If a substitute closure is incomplete, build dependencies, then retry the substituter Issue #77. commit 1b3a78a4597c6c1d94fc51aa0520252aab21a2c8 Author: Eelco Dolstra Date: Wed Jan 2 12:00:26 2013 +0100 Automatically fall back if the references of a substitute are not substitutable Fixes #77. commit 82248abd8f2967f72b965c0ba7774815068c4962 Author: Eelco Dolstra Date: Wed Jan 2 11:45:23 2013 +0100 Add a test for incomplete closures in the binary cache Issue #77. commit 12f9129f60651793e319171236e006aecfdc34be Author: Eelco Dolstra Date: Sat Dec 29 23:21:46 2012 +0100 nix-build: Support talking to old daemons Fixes #76. commit b7629778efcfeb9ea876616feb869457cd2bf071 Author: Eelco Dolstra Date: Sat Dec 29 23:04:02 2012 +0100 Allow mounting a path in a different location in the chroot Fixes #24. commit 68dcbb187e540034e85b5b77d1b37cec1759a587 Author: Eelco Dolstra Date: Fri Dec 21 15:00:07 2012 +0100 download-from-binary-cache: Use the channels of the calling user rather than root This should make live easier for single-user (non-daemon) installations. Note that when the daemon is used, the "calling user" is root so we're not using any untrusted caches. commit 5ee7d8fbab71b9eef94f1eecd38de511d00f6149 Author: Eelco Dolstra Date: Fri Dec 21 00:18:59 2012 +0100 Typo fix commit 2754a07eadfa3fe263f83830c701748bbd4c0420 Author: Eelco Dolstra Date: Thu Dec 20 18:41:44 2012 +0100 nix-store -q --roots: Respect the gc-keep-outputs/gc-keep-derivations settings So if a path is not garbage solely because it's reachable from a root due to the gc-keep-outputs or gc-keep-derivations settings, ‘nix-store -q --roots’ now shows that root. commit 06f62defe640517267a6a16dd222076c822f3123 Author: Eelco Dolstra Date: Thu Dec 20 17:32:15 2012 +0100 Yet another rewrite of the garbage collector But this time it's *obviously* correct! No more segfaults due to infinite recursions for sure, etc. Also, move directories to /nix/store/trash instead of renaming them to /nix/store/bla-gc-. Then we can just delete /nix/store/trash at the end. commit 9c29a2ed35d884cda182cea74aee2a7ee614de93 Author: Eelco Dolstra Date: Thu Dec 20 12:22:13 2012 +0100 Give a better error message if writeFile fails due to permission issues commit e775d4d84fe4b90464b00d560ceb79665301d79b Author: Eelco Dolstra Date: Wed Dec 19 15:33:09 2012 +0100 If gc-keep-derivations is set, only keep the actual deriver This prevents zillions of derivations from being kept, and fixes an infinite recursion in the garbage collector (due to an obscure cycle that can occur with fixed-output derivations). commit fbf0b2fa45c883f1f5e0c8f5397fcf62a4df9207 Author: Eelco Dolstra Date: Wed Dec 19 11:47:42 2012 +0100 Kill the build hook rather than shutting it down cleanly Waiting for the hook to shut down cleanly sometimes seems to lead to hangs. commit 228ea7c2f988523d2c168f97975ab0e85f412e78 Author: Eelco Dolstra Date: Tue Dec 18 20:43:47 2012 +0100 Revert brain fart This reverts commit cc511fd65b7b6de9e87e72fb4bed16fc7efeb8b7. commit cc511fd65b7b6de9e87e72fb4bed16fc7efeb8b7 Author: Eelco Dolstra Date: Tue Dec 18 18:50:05 2012 +0100 Check for potential infinite select() loops when building commit a9045c727fab1cdcc530bc18e651334cf892d62c Author: Stuart Pernsteiner Date: Wed Dec 12 21:13:26 2012 -0800 fix use-after-free bug in mkString(Value&, Symbol&) commit 9fa12fc2015c9cbc34bcf9d83e7396ba5dbc81a9 Author: Eelco Dolstra Date: Wed Dec 12 16:01:46 2012 +0100 Allow setting the profile location using $NIX_PROFILE Fixes #69. commit 3ad53e43c8ca35cc581ebc3dd880c11892c8e016 Author: Eelco Dolstra Date: Tue Dec 11 16:50:21 2012 +0100 Debian package: Add dependency on libwww-curl-perl Fixes issue #70. commit 772778c0eced8f8d63bfe6b1e9801ad6aada65bf Author: Eelco Dolstra Date: Tue Dec 11 11:49:42 2012 +0100 On SQLITE_BUSY, wait a random amount of time If all contending processes wait a fixed amount of time (100 ms), there is a good probability that they'll just collide again. commit e087bfef5f36f309b1c8d01bfe297e4cf4decb34 Author: Eelco Dolstra Date: Fri Dec 7 13:14:04 2012 +0100 Bump version number commit a6ce6d9e7cc0b95b8fc45ebf011ec10cc8eb0ff4 Author: Eelco Dolstra Date: Thu Dec 6 16:55:57 2012 +0100 Fix manual generation Grmbl. commit 8cc19ed0892137a77d95250ffe1e5bc29ff2ebaf Author: Eelco Dolstra Date: Thu Dec 6 11:43:34 2012 +0100 Set a long SQLite timeout in the binary cache substituter commit 52edef34950354ecccbe8e1bf3f1aced3872b5c0 Author: Eelco Dolstra Date: Wed Dec 5 23:25:40 2012 +0100 Fix RPM build http://hydra.nixos.org/build/3436627 commit 8d100dbef1f2aeb90b73d659e0c9691be182d9ac Author: Eelco Dolstra Date: Wed Dec 5 12:18:07 2012 +0100 Add a dependency on xz-utils commit 5c487761c4df2aafd2f7d0f33f15adcc3dd45a82 Author: Eelco Dolstra Date: Wed Dec 5 12:17:12 2012 +0100 Add a dependency on xz commit 3631dc6b2f8424018982f1b8a1c44e3d2f9e356e Author: Eelco Dolstra Date: Wed Dec 5 12:15:06 2012 +0100 Typo commit aa61bc74729e1b96f6f345ff65fa6bd5de03df91 Author: Eelco Dolstra Date: Wed Dec 5 12:05:43 2012 +0100 Fix RPM build http://hydra.nixos.org/build/3436511 commit 0f96966a44d76e0b625c0b17d02cc53b5233245d Author: Eelco Dolstra Date: Wed Dec 5 11:03:06 2012 +0100 Add release date commit 566afa1e9c804dd4a893960f30325a38c81a4c51 Author: Eelco Dolstra Date: Wed Dec 5 11:02:44 2012 +0100 Support xz compression of nixexprs.tar in channels commit 444b03a36fc038f030241d3d006d13ba2ae12e6b Author: Eelco Dolstra Date: Wed Dec 5 10:23:53 2012 +0100 Produce an xz-compressed tarball Footnote: doing "make dist-gzip dist-xz" doesn't work with Automake; you have to do "make dist-gzip; dist-xz". That's because the dist-* targets delete the temporary distdir at the end. commit d5a01d0f9dfda5a47461ab81e381a7035881b3ef Author: Eelco Dolstra Date: Wed Dec 5 09:54:41 2012 +0100 Build Debs for Ubuntu 12.10 commit a7b4aaa2c342437b14b82f216613759acc1208d5 Author: Eelco Dolstra Date: Tue Dec 4 17:41:51 2012 +0100 Updated release notes commit 3100b29fc51b46c76f6aca1fffc62881ca10de64 Author: Eelco Dolstra Date: Tue Dec 4 17:22:20 2012 +0100 Tiny optimisation in the filter primop commit 094a08f8396c913b6023ae2bf1c6615470e7cc45 Author: Eelco Dolstra Date: Tue Dec 4 17:15:32 2012 +0100 Document new primops commit 4387d19359780a03c8e60bf7b0687668c9ed88ca Author: Florian Friesdorf Date: Tue Dec 4 16:32:38 2012 +0100 nix-channel --update needs bzip2 commit 24d5875514ac4344643988077060e792252d135c Author: Eelco Dolstra Date: Tue Dec 4 16:03:56 2012 +0100 Document multiple output support commit b215b23e9ee481dff55f8f0acf1232f608e5babb Author: Eelco Dolstra Date: Tue Dec 4 14:47:50 2012 +0100 Test priorities commit 56d29dcd62ff5ff65b24da335a5119179c191806 Author: Eelco Dolstra Date: Tue Dec 4 14:45:32 2012 +0100 buildenv.pl: Create symlinks in priority order This reduces unnecessary symlink/unlink steps. commit 2d5e8e267b58f531f00b043c9e3dbaefad62a4a1 Author: Eelco Dolstra Date: Tue Dec 4 14:30:34 2012 +0100 Add a test for ‘nix-env --set-flag active ...’ commit 5ad89398d12bf8bc83426036dedc2c601ff8f795 Author: Eelco Dolstra Date: Tue Dec 4 14:20:36 2012 +0100 nix-env: Install all outputs of a derivation If you explicitly install a package, presumably you want all of it. So symlink all outputs in the user environment. commit 21c2d8d102add45b8eda61c084aa072f8861a0ff Author: Eelco Dolstra Date: Mon Dec 3 21:02:06 2012 +0100 Test the ‘--prebuilt-only’ flag commit d62fc71b851295b4c5692ec5fa362a06172e66ae Author: Eelco Dolstra Date: Mon Dec 3 21:01:41 2012 +0100 Fix the ‘--prebuilt-only’ flag commit 4bb4d5479a8a2c2ed04bd65312ce1bfb6d2c0b13 Author: Eelco Dolstra Date: Mon Dec 3 18:19:49 2012 +0100 Whitespace commit 8eed07cda4c193bfcdd6ac4345ac6fb54aee0269 Author: Eelco Dolstra Date: Wed Nov 28 13:49:44 2012 +0100 nix-env -q --out-path: Support multiple outputs We now print all output paths of a package, e.g. openssl-1.0.0i bin=/nix/store/gq2mvh0wb9l90djvsagln3aqywqmr6vl-openssl-1.0.0i-bin;man=/nix/store/7zwf5r5hsdarl3n86dasvb4chm2xzw9n-openssl-1.0.0i-man;/nix/store/cj7xvk7fjp9q887359j75pw3pzjfmqf1-openssl-1.0.0i or (in XML mode) commit 6c98e6a5dec2bcbc25ddeb2c279aa4a0b274bd6a Author: Eelco Dolstra Date: Tue Nov 27 15:01:32 2012 +0100 Optionally ignore null-valued derivation attributes This allows adding attributes like attr = if stdenv.system == "bla" then something else null; without changing the resulting derivation on non- platforms. We once considered adding a special "ignore" value for this purpose, but using null seems more elegant. commit 8b8ee53bc73769bb25d967ba259dabc9b23e2e6f Author: Eelco Dolstra Date: Tue Nov 27 13:29:55 2012 +0100 Add builtin constants ‘langVersion’ and ‘nixVersion’ The integer constant ‘langVersion’ denotes the current language version. It gets increased every time a language feature is added/changed/removed. It's currently 1. The string constant ‘nixVersion’ contains the current Nix version, e.g. "1.2pre2980_9de6bc5". commit 5943f41b8bd95b8559cb6768bb0a1151f6bee68d Author: Eelco Dolstra Date: Mon Nov 26 18:25:12 2012 +0100 queryMissing(): Handle partially valid derivations commit 08964d7328f09a703467e4045e34023837a4cc01 Author: Eelco Dolstra Date: Mon Nov 26 17:57:14 2012 +0100 Undo accidental debug change commit 69c88f5028b4b2d5d2500dc4f631d77ac1d2c5fd Author: Eelco Dolstra Date: Mon Nov 26 17:46:45 2012 +0100 Fix the multiple-outputs test commit 408a7bfac1f4282ff6647696dfbc7988eed3a2ca Author: Eelco Dolstra Date: Mon Nov 26 17:39:09 2012 +0100 nix-instantiate: Fix read-only evaluation commit 8d8d47abd2a66898aa5d8999fcd75b29991e529d Author: Eelco Dolstra Date: Mon Nov 26 17:15:09 2012 +0100 Only substitute wanted outputs of a derivation If a derivation has multiple outputs, then we only want to download those outputs that are actuallty needed. So if we do "nix-build -A openssl.man", then only the "man" output should be downloaded. Likewise if another package depends on ${openssl.man}. The tricky part is that different derivations can depend on different outputs of a given derivation, so we may need to restart the corresponding derivation goal if that happens. commit 46a369ad9558939bc2c6ee588df483ca503bbb5a Author: Eelco Dolstra Date: Mon Nov 26 15:39:10 2012 +0100 Make "nix-build -A ." do the right thing For example, given a derivation with outputs "out", "man" and "bin": $ nix-build -A pkg produces ./result pointing to the "out" output; $ nix-build -A pkg.man produces ./result-man pointing to the "man" output; $ nix-build -A pkg.all produces ./result, ./result-man and ./result-bin; $ nix-build -A pkg.all -A pkg2 produces ./result, ./result-man, ./result-bin and ./result-2. commit a3d6585c5a1006d4f9ebd2163d06f86ab71a4a3e Author: Eelco Dolstra Date: Fri Nov 23 16:20:16 2012 +0100 nix-copy-closure: Add flag ‘--use-substitutes’ commit 9de6bc5d05027363f968c20e53e8c3d5aa34f8b4 Author: Eelco Dolstra Date: Tue Nov 20 00:27:25 2012 +0100 nix-store -r: Add ‘--ignore-unknown’ flag This flag causes paths that do not have a known substitute to be quietly ignored. This is mostly useful for Charon, allowing it to speed up deployment by letting a machine use substitutes for all substitutable paths, instead of uploading them. The latter is frequently faster, e.g. if the target machine has a fast Internet connection while the source machine is on a slow ADSL line. commit bf3725da2a1e4e91fc34b5faeb55bb3c02f68674 Author: Eelco Dolstra Date: Mon Nov 19 23:51:56 2012 +0100 nix-store -r: Don't quietly ignore missing paths commit 17dc306aa32c48dcde6bfc12ad5e4b48f6b88974 Author: Eelco Dolstra Date: Thu Nov 15 23:04:34 2012 +0100 Revert "prim_toPath: Actually make the string a path" This reverts commit 2980d1fba97069805c3649c5d99d0356bce6c303. It causes a regression in NixOS evaluation: string `/nix/store/ya3s5gmj3b28170fpbjhgsk8wzymkpa1-pommed-1.39/etc/pommed.conf' cannot refer to other paths commit f794465ca8bd2a8d41ee3b6928db5fb1479dc96d Author: Eelco Dolstra Date: Thu Nov 15 19:35:18 2012 +0100 Disable use of vfork() vfork() is just too weird. For instance, in this build: http://hydra.nixos.org/build/3330487 the value fromHook.writeSide becomes corrupted in the parent, even though the child only reads from it. At -O0 the problem goes away. Probably the child is overriding some spilled temporary variable. If I get bored I may implement using posix_spawn() instead. commit 8541d27fce95f1f6a4a6c89bcbc09503ff7ea092 Author: Eelco Dolstra Date: Thu Nov 15 15:01:02 2012 +0100 Don't use std::cerr in a few places Slightly scared of using std::cerr in a vforked process... commit 3acc8adcad4066329913cf9ad4e1ccc535f73032 Author: Eelco Dolstra Date: Thu Nov 15 13:55:02 2012 +0100 Add some debug code commit ea89df2b76811505239b508a570ac9c0ea591038 Author: Eelco Dolstra Date: Fri Nov 9 18:00:33 2012 +0100 Use vfork() instead of fork() if available Hopefully this reduces the chance of hitting ‘unable to fork: Cannot allocate memory’ errors. vfork() is used for everything except starting builders. commit 48c19c4633b1443015531ee3032b16b29b0a92f9 Author: Eelco Dolstra Date: Fri Nov 9 17:59:41 2012 +0100 Remove definition of non-existant function commit 198dbe7fa1807f7464ef7c15c3fd0d230f7b844e Author: Eelco Dolstra Date: Fri Nov 9 16:58:51 2012 +0100 Remove some redundant close() calls They are unnecessary because we set the close-on-exec flag. commit 10dcee99ed62a775c05f34aa70449945d537e1a2 Author: Eelco Dolstra Date: Fri Nov 9 16:42:10 2012 +0100 Remove the quickExit function commit 4c9e3fa6412f736ce422f8deb0ba825999b66b0a Author: Eelco Dolstra Date: Fri Nov 9 16:35:42 2012 +0100 Remove a Darwin hack that should no longer be needed commit 182e15b66135a83d60d662a9e480831018572073 Author: Eelco Dolstra Date: Fri Nov 9 16:30:15 2012 +0100 Manual: Don't use a store path in our closure http://hydra.nixos.org/build/3313227 commit 88164325fac228e8e27fdea27776416d67a85dd6 Author: Eelco Dolstra Date: Fri Nov 9 15:09:31 2012 +0100 Fix a segfault when auto-calling a "a@{...}" function Since the called function can return its argument attribute set (e.g. "a"), the latter should not be allocated on the stack. Reported by Shea. commit f581ce0b0cb86670db2b806f98ac0ec368b8cdc1 Author: Eelco Dolstra Date: Fri Nov 9 14:58:10 2012 +0100 Don't start copy-from-other-stores if $NIX_OTHER_STORES is unset Slight optimisation. commit 91ef4d9a81827177963bcf7708af3a46217fd0e9 Author: Eelco Dolstra Date: Fri Nov 9 14:43:47 2012 +0100 Remove unnecessary call to closeMostFDs() We have close-on-exec on all FDs now, and there is no security risk in passing open FDs to substituters anyway. commit a9a8baaccbe1c8291d0cfd42fe3c87377b105381 Author: Eelco Dolstra Date: Fri Nov 9 13:33:35 2012 +0100 Use a shorter Nixpkgs channel URL commit c31ebc50aaaf011f020b7314baa9921aae1050a6 Author: Eelco Dolstra Date: Fri Nov 9 13:33:24 2012 +0100 Update release notes commit e28b683324388f33b89ee40d7a7e25dcd8f98109 Author: Eelco Dolstra Date: Tue Nov 6 17:55:53 2012 +0100 download-from-binary-cache: Try next cache if downloading a NAR fails commit bbc107ef1e850d73dbe9a21c567b34f5939570c6 Author: Eelco Dolstra Date: Tue Nov 6 17:45:20 2012 +0100 Process binary caches in order of priority Binary caches can now specify a priority in their nix-cache-info file. The binary cache substituter checks caches in order of priority. This is to ensure that fast, static caches like nixos.org/binary-cache are processed before slow, dynamic caches like hydra.nixos.org. commit 3a95e1a17cd2755f00c26eb16ffd066bc6aa1a8d Author: Eelco Dolstra Date: Tue Nov 6 15:49:53 2012 +0100 Update nix-push manpage and document the binary cache format commit 82951e5582ae7927cb90320accb989214ce07142 Author: Eelco Dolstra Date: Tue Nov 6 13:53:53 2012 +0100 nix-push: Handle pushing a symlink commit 620e92e880f8a011c5f465ea4fee2abf857d4ab2 Author: Eelco Dolstra Date: Tue Nov 6 13:44:59 2012 +0100 Add an option ‘use-binary-caches’ This allows disabling the use of binary caches, e.g. $ nix-build ... --option use-binary-caches false Note that $ nix-build ... --option binary-caches '' does not disable all binary caches, since the caches defined by channels will still be used. commit df27db712df658dc9b7548b55fd65a15515d4d85 Author: Eelco Dolstra Date: Tue Nov 6 13:43:46 2012 +0100 Fix "Not an ARRAY reference" error It's a mystery why this error is not triggered in the build farm (e.g. http://hydra.nixos.org/build/3265602). Ah well. commit d0fc615af658cb83e858b3c3c5e0d4c6c539ad66 Author: Shea Levy Date: Mon Nov 5 23:00:21 2012 -0500 canonicalizePathMetaData: Fall-back to utimes if lutimes fails due to ENOSYS commit 4c34d384e68ce7e2c949a7588d80bbe7d5a96440 Author: Eelco Dolstra Date: Tue Oct 23 18:05:50 2012 +0200 If hashes do not match, print them in base-32 for SHA-1/SHA-256 Fixes #57. commit a28b4445a4eb8108dfc028083d3939d5f3a42685 Author: Eelco Dolstra Date: Tue Oct 23 18:04:00 2012 +0200 nix-prefetch-url: Improve option handling commit 2980d1fba97069805c3649c5d99d0356bce6c303 Author: Shea Levy Date: Tue Aug 28 22:12:05 2012 -0400 prim_toPath: Actually make the string a path commit dde6486eabbabf83e2d7aa65cde8eadfee108bdd Author: Eelco Dolstra Date: Thu Oct 18 10:36:16 2012 -0400 nix-push: Add a flag ‘--manifest-path’ to write the manifest to another directory commit c8daeba30328c83328b632f8f45920d85d7d1968 Author: Eelco Dolstra Date: Wed Oct 17 17:01:23 2012 -0400 nix-push: Add ‘--link’ flag If ‘--link’ is given, nix-push will create hard links to the NAR files in the store, rather than copying them. This is faster and requires less disk space. However, it doesn't work if the store is on a different file system. commit 167e36a5c3127da63d120d9fdaf5e046b829f287 Author: Eelco Dolstra Date: Wed Oct 17 16:45:04 2012 -0400 nix-push: Only generate and copy a NAR if it doesn't already exist This prevents unnecessary and slow rebuilds of NARs that already exist in the binary cache. commit ac238d619c2469ea89b8707ae340d3f19c77eadf Author: Eelco Dolstra Date: Fri Oct 12 10:21:04 2012 -0400 Typo Reported by Shea. commit 600daf972f9157d358841f76b3292b667c97666f Author: Eelco Dolstra Date: Thu Oct 11 14:21:22 2012 -0400 download-from-binary-cache: Remove duplicate entries in trustedURLs commit e34518205533a90e9664d7ab3888818e669e11cd Author: Eelco Dolstra Date: Thu Oct 11 14:03:06 2012 -0400 Shorten the names of temporary build directories commit ecedd9c50c50bb42accf27394193bb7ef80c75b0 Author: Mats Erik Andersson Date: Wed Oct 10 11:10:28 2012 +0200 Out-of-tree building of perl modules. commit 70f75be199d8db959d313dc40111893fba56415f Author: Eelco Dolstra Date: Thu Oct 4 15:22:25 2012 -0400 getDerivation(): Don't always quietly ignore assertion failure Ignoring assertion failures makes some sense for nix-env -qa, but not for nix-instantiate/nix-build or hydra-eval-jobs. commit ad328bea15e2708e5aa784c33ba8bfbc86d02e0d Author: Eelco Dolstra Date: Thu Oct 4 14:07:36 2012 -0400 XML writer: flush after newlines This is useful for hydra-eval-jobs. commit bfaa5635de8ed83085dfeb265227cc25a32ce07c Author: Eelco Dolstra Date: Thu Oct 4 13:37:30 2012 -0400 Manual: Don't use a store path that actually exists http://hydra.nixos.org/build/3124130 commit 904f50412cdd0b7d0ef4933e7a5b652a9454d644 Author: Eelco Dolstra Date: Thu Oct 4 10:20:23 2012 -0400 nix-store --verify: Continue on errors commit 90b8a34f821610a867b3a60d91c8e86267864be2 Author: Eelco Dolstra Date: Thu Oct 4 09:46:10 2012 -0400 Fix regular expression http://hydra.nixos.org/build/3123177 commit d1de83693821c0cc46810e835509a89b46311d4a Author: Eelco Dolstra Date: Wed Oct 3 21:01:03 2012 -0400 Fix the tarball build commit f766e146f484a10e0bfd3f29b1ba59cc38007b63 Author: Eelco Dolstra Date: Wed Oct 3 18:01:35 2012 -0400 Fix the test commit e35d6f78dc797150451f5134833afa0ecdf4a241 Author: Eelco Dolstra Date: Wed Oct 3 17:57:20 2012 -0400 Rename nix-worker to nix-daemon commit 522ecab9b83902de5a3010b50b9532e376cbba4c Author: Eelco Dolstra Date: Wed Oct 3 17:30:45 2012 -0400 Drop support for running nix-worker in "slave" mode AFAIK nobody uses this, setuid binaries are evil, and there is no good reason why people can't just run the daemon. commit 7586095504f238a35937426aa870cb6d2a7b2862 Author: Eelco Dolstra Date: Wed Oct 3 16:54:40 2012 -0400 Remove bin2c commit a562d544d8520a0f113ad1a348e28ea00f27b693 Author: Eelco Dolstra Date: Wed Oct 3 16:37:06 2012 -0400 When ‘--help’ is given, just run ‘man’ to show the manual page I.e. do what git does. I'm too lazy to keep the builtin help text up to date :-) Also add ‘--help’ to various commands that lacked it (e.g. nix-collect-garbage). commit 9c41c66c5b877dbb529f6147b28384a57a591895 Author: Eelco Dolstra Date: Wed Oct 3 15:53:25 2012 -0400 Document ‘--repair’ commit 2bbc4a214ee998816921cefb2d69f30d5f277d12 Author: Eelco Dolstra Date: Wed Oct 3 15:35:42 2012 -0400 nix-env: Support ‘--repair’ flag commit 2e90a5a2a7646f4ab36202d6a149518ccb6f750e Author: Eelco Dolstra Date: Wed Oct 3 15:14:02 2012 -0400 nix-build: Support ‘--repair’ flag commit 0a7084567fc4e7d077863075a7ea1bb82d843341 Author: Eelco Dolstra Date: Wed Oct 3 15:09:18 2012 -0400 Add a ‘--repair’ flag to nix-instantiate This allows repairing corrupted derivations and other source files. commit a807edfae8428bf426ee6ae849a7a24d74d39202 Author: Eelco Dolstra Date: Wed Oct 3 11:20:16 2012 -0400 Handle repairing paths that are in build-chroot-dirs commit a3f205b24954c7f0983a937b0b9b3d64c22a2fa7 Author: Eelco Dolstra Date: Wed Oct 3 10:38:09 2012 -0400 When repairing a derivation, check and repair the entire output closure If we find a corrupted path in the output closure, we rebuild the derivation that produced that particular path. commit 2001895f3d2668549feb60a182aa624a7b6292eb Author: Eelco Dolstra Date: Tue Oct 2 17:13:46 2012 -0400 Add a --repair flag to ‘nix-store -r’ to repair derivation outputs With this flag, if any valid derivation output is missing or corrupt, it will be recreated by using a substitute if available, or by rebuilding the derivation. The latter may use hash rewriting if chroots are not available. commit cf46f194445c9abc0398dae908295dff794fee98 Author: Eelco Dolstra Date: Tue Oct 2 16:00:09 2012 -0400 nix-store -r: Get rid of an unnecessary call to buildPaths/ensurePaths commit 8e3a7bd71253f02eb1a9fbb996166727b1283887 Author: Eelco Dolstra Date: Tue Oct 2 15:04:59 2012 -0400 nix-store --verify: Add an option ‘--repair’ to repair all missing/corrupt paths Also, return a non-zero exit code if errors remain after verifying/repairing. commit 9958bd6992e2b3e7bacb493a372d17d5a5b95d90 Author: Eelco Dolstra Date: Tue Oct 2 14:08:59 2012 -0400 Add operation ‘nix-store --repair-path’ This operation allows fixing corrupted or accidentally deleted store paths by redownloading them using substituters, if available. Since the corrupted path cannot be replaced atomically, there is a very small time window (one system call) during which neither the old (corrupted) nor the new (repaired) contents are available. So repairing should be used with some care on critical packages like Glibc. commit e666e1156fba936dce93ccfa2486f67369a97129 Author: Eelco Dolstra Date: Fri Sep 28 21:39:30 2012 -0400 Handle octal escapes in /proc/self/mountinfo commit f406288cc7cf648001a40b0a96cb97c31347cc5a Author: Eelco Dolstra Date: Fri Sep 28 21:26:36 2012 -0400 Print a more descriptive error message if setting up the build environment fails commit 95c74eae269b2b9e4bc514581b5caa1d80b54acc Author: Eelco Dolstra Date: Thu Sep 27 15:43:08 2012 -0400 Allow dashes in identifiers In Nixpkgs, the attribute in all-packages.nix corresponding to a package is usually equal to the package name. However, this doesn't work if the package contains a dash, which is fairly common. The convention is to replace the dash with an underscore (e.g. "dbus-lib" becomes "dbus_glib"), but that's annoying. So now dashes are valid in variable / attribute names, allowing you to write: dbus-glib = callPackage ../development/libraries/dbus-glib { }; and buildInputs = [ dbus-glib ]; Since we don't have a negation or subtraction operation in Nix, this is unambiguous. commit f46612be96a70a188cd48462ac94089d3e95a36b Author: Eelco Dolstra Date: Tue Sep 25 16:30:37 2012 -0400 Add "on Linux" qualifier commit d534f137f0b0bf6b8559731edcfc1e50bd15a427 Author: Eelco Dolstra Date: Tue Sep 25 16:30:08 2012 -0400 Make the store writable before creating /nix/store/.links commit 0f358ca5b6f1357e295020c3ed89fe877e809fd9 Author: Eelco Dolstra Date: Tue Sep 25 16:11:58 2012 -0400 Document that Nix requires GNU Make Fixes #44. commit cb6651e878b3f2d97ac5e2318d679957904105ef Author: Eelco Dolstra Date: Tue Sep 25 16:04:50 2012 -0400 Update release notes commit e464b0247d9dd2c53770a851956dd34f82b7c9a6 Merge: 28bf183 b9c2b4d Author: Eelco Dolstra Date: Tue Sep 25 15:38:00 2012 -0400 Merge branch 'readonly-store' commit 28bf183d2d2f775e653efe4cee98d7359ce65455 Author: Eelco Dolstra Date: Tue Sep 25 13:00:19 2012 -0400 Include for off_t Reported by "gio" on IRC. commit c1f91570b39caa3cf8a533aa517e3812a8bb8dc3 Author: Eelco Dolstra Date: Fri Sep 21 15:02:33 2012 -0400 Style fix commit 20582e9ae3c6eb14212a285489c1a573117d046c Author: Eelco Dolstra Date: Wed Sep 19 17:33:42 2012 -0400 Support xz compression in the download-using-manifests substituter commit b9c2b4d5b4cd5d52a950e6dd90eb2e2e79891fa0 Author: Eelco Dolstra Date: Wed Sep 19 16:17:54 2012 -0400 Remove setting of the immutable bit Using the immutable bit is problematic, especially in conjunction with store optimisation. For instance, if the garbage collector deletes a file, it has to clear its immutable bit, but if the file has additional hard links, we can't set the bit afterwards because we don't know the remaining paths. So now that we support having the entire Nix store as a read-only mount, we may as well drop the immutable bit. Unfortunately, we have to keep the code to clear the immutable bit for backwards compatibility. commit b9124a5c336fd231adaa548cf5be311731847848 Author: Eelco Dolstra Date: Wed Sep 19 15:45:29 2012 -0400 Support having /nix/store as a read-only bind mount It turns out that the immutable bit doesn't work all that well. A better way is to make the entire Nix store a read-only bind mount, i.e. by doing $ mount --bind /nix/store /nix/store $ mount -o remount,ro,bind /nix/store (This would typically done in an early boot script, before anything from /nix/store is used.) Since Nix needs to be able to write to the Nix store, it now detects if /nix/store is a read-only bind mount and then makes it writable in a private mount namespace. commit 76e88871b21c47c0216e160a5fb926f763ba64fe Author: Eelco Dolstra Date: Wed Sep 19 15:43:23 2012 -0400 Templatise tokenizeString() commit 00092b2d356293a7af9d4d8125a689f90c461591 Author: Eelco Dolstra Date: Tue Sep 18 10:11:42 2012 -0400 Keep build directory if not all expected outputs were produced Fixes issue #123 in Nixpkgs. commit b67466576531959ca298fcfce4f0bf379515f8e5 Author: Eelco Dolstra Date: Fri Sep 14 10:18:27 2012 -0400 Test whether GNU tar understands --warning=no-timestamp http://hydra.nixos.org/build/3031618 commit 09eb23090022fed689c6db6c485d7cc973e2b79e Author: Eelco Dolstra Date: Fri Sep 14 09:39:48 2012 -0400 Fix test http://hydra.nixos.org/build/3031382 commit 983220bcd46e89ee4d2ce0417eb514cd6c062f2d Author: Eelco Dolstra Date: Thu Sep 13 18:09:20 2012 -0400 nix-collect-garbage: Support --dry-run commit 9fd9dedf12bb64e02b35e9231173f9ebae5e1492 Author: Eelco Dolstra Date: Thu Sep 13 18:05:04 2012 -0400 nix-env --delete-generations: Support --dry-run flag Fixes #43. commit 1bda006b748ffec371096af56a8fbf7125658f71 Author: Eelco Dolstra Date: Thu Sep 13 17:58:14 2012 -0400 Add a test for nix-profile.sh commit aac14222f52b15c9f4eea90359e9df09fb301739 Author: Eelco Dolstra Date: Thu Sep 13 17:48:19 2012 -0400 nix-profile.sh: Revert to single-user version Commit 6a214f3e06fa1c5f0a4d40e555f14d87691af297 copied most of the Nix shell initialisation code from NixOS to nix-profile.sh; however, that code assumes a multi-user install and is Linux-specific (e.g. it calls the "stat" command). So go back to the simple single-user version. Fixes #49. commit 54fe8e0773870631724b7325553f84637bb3e05a Author: Eelco Dolstra Date: Thu Sep 13 17:23:12 2012 -0400 Remove double Fedora release suffix commit 47ae3ce2ca1dc93e2539a04c690c18f4747c8e8d Author: Eelco Dolstra Date: Thu Sep 13 16:39:16 2012 -0400 Put a time-to-live on negative binary cache lookups Negative lookups are purged from the DB after a day, at most once per day. However, for non-"have" lookups (e.g. all except "nix-env -qas"), negative lookups are ignored after one hour. This is to ensure that you don't have to wait a day for an operation like "nix-env -i" to start using new binaries in the cache. Should probably make this configurable. commit e03a8a1c923365ca24ea63ac43d3e09f7f9fb3d8 Author: Eelco Dolstra Date: Thu Sep 13 14:58:56 2012 -0400 Doh commit 8fbe96cb3154d5db11b15728ad037bed28f08aa9 Author: Eelco Dolstra Date: Thu Sep 13 14:46:37 2012 -0400 RemoteStore::connectToDaemon(): Set close-on-exec flag This ensures that "nix-build --run-env" doesn't keep a connection to the worker open, preventing it from exiting. commit e6e495649cc1f324cd0a66cfaf3c4bdf21522e63 Author: Eelco Dolstra Date: Thu Sep 13 14:33:41 2012 -0400 Vacuum the SQLite DB after running the garbage collector commit 2923b55f9d67bda340053a27e08f7bcddc025f7c Author: Eelco Dolstra Date: Thu Sep 13 13:08:27 2012 -0400 Delete paths in a component in topologically sorted order The outputs of a derivation can refer to each other (even though they cannot have cycles), so they have to be deleted in the right order. http://hydra.nixos.org/build/3026118 commit 31114ec3a5ce08ccf9526f62316f1cc60c8b399a Author: Eelco Dolstra Date: Thu Sep 13 12:54:23 2012 -0400 Fix the store optimisation test http://hydra.nixos.org/build/3026118 commit c845c0ccad9a835a69c63c2eadd71d7845dca111 Author: Eelco Dolstra Date: Thu Sep 13 12:11:40 2012 -0400 nix-channel: Add option to force fetching of manifests commit b14717ab9003452fda7afe0f9627673b9f331569 Author: Eelco Dolstra Date: Thu Sep 13 11:35:46 2012 -0400 Delete manifests in "nix-channel --remove" or when a binary cache is available commit 6c4ac299173e3b9772c96bef1e6463b22dcd0227 Author: Eelco Dolstra Date: Thu Sep 13 10:28:20 2012 -0400 Disable auto store optimisation for now I've seen operations like "nix-store --import" take much longer on one system. So default to off until I've investigated this a bit further. commit e56f71edafce9c60fd5e0c3ed93771b7d911d334 Author: Eelco Dolstra Date: Thu Sep 13 10:06:24 2012 -0400 In startBuilder(), only print the new paths we're building commit 4fca02077c4cdea13d32b4665e817460f6502726 Author: Eelco Dolstra Date: Wed Sep 12 18:49:35 2012 -0400 Handle gc-keep-outputs and gc-keep-derivations both enabled If the options gc-keep-outputs and gc-keep-derivations are both enabled, you can get a cycle in the liveness graph. There was a hack to handle this, but it didn't work with multiple-output derivations, causing the garbage collector to fail with errors like ‘error: cannot delete path `...' because it is in use by `...'’. The garbage collector now handles strongly connected components in the liveness graph as a unit and decides whether to delete all or none of the paths in an SCC. commit 479e9172b3583cedcada90ed193cab156cdc56b5 Author: Eelco Dolstra Date: Wed Sep 12 12:15:47 2012 -0400 Build hook: Pass the timeout to the remote builder Note that this will only work if the client has a very recent Nix version (post 15e1b2c223494ecb5efefc3ea0e3b926a6b1d7dc), otherwise the --option flag will just be ignored. Fixes #50. commit 4ba47205c687772cf73a490eac3a489931d4913b Author: Eelco Dolstra Date: Wed Sep 12 11:29:10 2012 -0400 Fix test failure on Darwin Apparently our DBD::SQLite links against /usr/lib/libsqlite3.dylib, which is an old version that doesn't respect foreign key constraints. So manifests/cache.sqlite doesn't get updated properly when a manifest disappears. We should fix our DBD::SQLite, but in the meantime this will fix the test. http://hydra.nixos.org/build/3017959 commit 6762424e2471e3e4f9ba9b6bb883d08911d352fb Author: Eelco Dolstra Date: Wed Sep 12 10:41:17 2012 -0400 Compatibility fix for WWW::Curl < 4.14 Older versions of WWW::Curl don't support scalar references for CURLOPT_WRITEDATA directly. http://hydra.nixos.org/build/3017188 commit d4c3b6327ff88273462cec57b0e2805d333c386e Author: Eelco Dolstra Date: Tue Sep 11 19:14:15 2012 -0400 Don't put results symlinks in the tests directory commit 1f7901ec3b66fa80203bbac2cd6852eda389ba18 Author: Eelco Dolstra Date: Tue Sep 11 19:10:11 2012 -0400 Test hash rewriting commit 5e2ffd0b8a857da3239015d28f3a8b803566aecc Author: Eelco Dolstra Date: Tue Sep 11 19:09:01 2012 -0400 Fix "non-zero padding" error Probably it's not a good idea to pass a temporary object to StringSource. commit 8cf672091eb93fea5496aca2655436413f4d3c66 Author: Eelco Dolstra Date: Tue Sep 11 18:39:22 2012 -0400 Support building a derivation if some outputs are already valid (non-chroot case) This uses scary hash rewriting. Fixes #21. commit 9dbda2b3fe98014687ae5cbbf16866ca6cf34f64 Author: Eelco Dolstra Date: Tue Sep 11 17:05:35 2012 -0400 Remove debug line commit a2785b739169832f09285c81695c90a3aac3f731 Author: Eelco Dolstra Date: Tue Sep 11 16:59:59 2012 -0400 Support building a derivation if some outputs are already valid This handles the chroot and build hook cases, which are easy. Supporting the non-chroot-build case will require more work (hash rewriting!). Issue #21. commit 295027f533bb5a754bfc62f934c88b43e9c100a6 Author: Eelco Dolstra Date: Tue Sep 11 14:45:42 2012 -0400 Include config.h before any other header "config.h" must be included first, because otherwise the compiler might not see the right value of _FILE_OFFSET_BITS. We've had this before; see 705868a8a96a10f70e629433cfffc2d5cd2703eb. In this case, GCC would compute a different address for ‘settings.useSubstitutes’ in misc.cc because of the off_t in ‘settings’. Reverts 3854fc9b42d16b810f62b64194b699033b03aaf1. http://hydra.nixos.org/build/3016700 commit d3004c78d9816431224f7ac0416c5bfea0cc22cd Author: Eelco Dolstra Date: Tue Sep 11 13:07:22 2012 -0400 Don't use -warning=no-timestamp unless we have GNU tar http://hydra.nixos.org/build/2998485 commit 360056e174db2171c47e065ae1e5f58ccee0236f Author: Shea Levy Date: Sun Aug 26 14:48:47 2012 -0400 Document importing from a directory in the import documentation commit f7b650d234dffd72b2c70ee25d9e333d433feba6 Author: Eelco Dolstra Date: Tue Aug 28 11:47:26 2012 -0400 Make "nix-instantiate -" interruptible commit 15e1b2c223494ecb5efefc3ea0e3b926a6b1d7dc Merge: a9e6752 9e2fc69 Author: Eelco Dolstra Date: Mon Aug 27 14:34:51 2012 -0400 Merge branch 'no-manifests' commit 9e2fc6951ca049b15149a2c4b75d2f5bff7f07e1 Author: Eelco Dolstra Date: Mon Aug 27 14:20:14 2012 -0400 Disable the binary cache substituter by default for now commit cfd968dd94f35c5ef781be9bda883d8818fc1d6e Author: Eelco Dolstra Date: Mon Aug 27 14:17:13 2012 -0400 Fix stupid type error in calling std::max commit f3077fd88d6ec8f05a5471687f23589e34dfeaeb Author: Eelco Dolstra Date: Mon Aug 27 13:45:53 2012 -0400 Add libwww-curl-perl to the Debian/Ubuntu images commit cc8641815b018315ee444c58dd4bc6bfc38c7d0f Author: Eelco Dolstra Date: Mon Aug 27 11:47:49 2012 -0400 Add WWW::Curl to the RPM dependencies commit 2688fb73f1e0bd96003a82c89ac8de12eca2b49f Author: Eelco Dolstra Date: Mon Aug 27 11:47:04 2012 -0400 Add perl-WWW-Curl to the RPM image commit 8207359227740bfb2fe77cf843a81aa878fd39aa Author: Eelco Dolstra Date: Mon Aug 27 11:28:48 2012 -0400 Whitespace commit 8b8fe6139e05f990b9d2a35652fd9bdb79189f90 Author: Eelco Dolstra Date: Mon Aug 27 11:28:34 2012 -0400 Drop dependency on List::MoreUtils commit babe54bf97091441353f2219e7846afd0e0d9f16 Author: Eelco Dolstra Date: Mon Aug 27 11:11:30 2012 -0400 Add missing file commit e94806d03098f1d6e654542500bbea1eaa0ec60b Merge: 9c2deca a9e6752 Author: Eelco Dolstra Date: Mon Aug 27 11:09:07 2012 -0400 Merge branch 'master' into no-manifests commit a9e6752bbd888ab8fbc1cda6e4d539b2858c4cef Author: Eelco Dolstra Date: Fri Aug 24 16:58:11 2012 -0400 Include the output name in the GC root link Output names are now appended to resulting GC symlinks, e.g. by nix-build. For backwards compatibility, if the output is named "out", nothing is appended. E.g. doing "nix-build -A foo" on a derivation that produces outputs "out", "bin" and "dev" will produce symlinks "./result", "./result-bin" and "./result-dev", respectively. commit 4aa1e5c55484ac02d28883292ee5c5806f5e4664 Author: Eelco Dolstra Date: Wed Aug 22 10:58:24 2012 -0400 Receive reserveSpace before calling startWork() Otherwise we can get a SIGPOLL. Reported by Ludovic. commit d950cfe70b2b70e938ece672dbccedfd4413c295 Author: Eelco Dolstra Date: Mon Aug 20 15:55:49 2012 -0400 Check if MS_PRIVATE is defined http://hydra.nixos.org/build/2955671 commit 56e30e161cd309addb5aa95ba02a8d3371846228 Author: Eelco Dolstra Date: Mon Aug 20 15:27:30 2012 -0400 In the chroot, make all mounted filesystems private This is required on systemd, which mounts filesystems as "shared" subtrees. Changes to shared trees in a private mount namespace are propagated to the outside world, which is bad. commit f0eab0636b73a4f16b7639d30956d9072d5573cb Author: Eelco Dolstra Date: Mon Aug 20 15:27:00 2012 -0400 Don't bind-mount /proc since we mount our own commit 862c4c5ec509e05815d99fb4b80558974148b8c5 Author: Eelco Dolstra Date: Sun Aug 19 16:32:42 2012 -0400 Fix 1755 permission on temporary directories left behind by ‘-K’ commit 767101824af1fe41b6e50791b21112c6a8d7457f Author: Eelco Dolstra Date: Mon Aug 13 15:10:29 2012 -0400 Avoid concatenating lists of one string commit e5c589d271c62f57cd2e7eb7d9841f67d8845ff4 Author: Eelco Dolstra Date: Mon Aug 13 15:02:09 2012 -0400 Don't allocate empty lists This saves about 4 MB when evaluating a NixOS system configuration. commit 3e89ef597ce00dbf82a937aad9efab3c9c7b6dcf Author: Eelco Dolstra Date: Mon Aug 13 14:58:54 2012 -0400 Optimise concatenating a list to an empty list More precisely, in concatLists, if all lists except one are empty, then just return the non-empty list. This reduces the number of list element allocations by 32% when evaluating a NixOS system configuration. commit 9c2d63084bd4f6a04210cd52b4fce054d248bc6b Author: Eelco Dolstra Date: Mon Aug 13 13:46:42 2012 -0400 Add a primop ‘elemAt’ to get an element from a list commit 198d0338be7c105b6dbd707f98e0c223a8358240 Author: Eelco Dolstra Date: Mon Aug 13 01:53:10 2012 -0400 Add a primop ‘concatLists’ This can serve as a generic efficient list builder. For instance, the function ‘catAttrs’ in Nixpkgs can be rewritten from attr: l: fold (s: l: if hasAttr attr s then [(getAttr attr s)] ++ l else l) [] l to attr: l: builtins.concatLists (map (s: if hasAttr attr s then [(getAttr attr s)] else []) l) Statistics before: time elapsed: 1.08683 size of a value: 24 environments allocated: 1384376 (35809568 bytes) list elements: 6946783 (55574264 bytes) list concatenations: 37434 values allocated: 1760440 (42250560 bytes) attribute sets allocated: 392040 right-biased unions: 186334 values copied in right-biased unions: 591137 symbols in symbol table: 18273 number of thunks: 1297673 number of thunks avoided: 1380759 number of attr lookups: 430802 number of primop calls: 628912 number of function calls: 1333544 Statistics after (including new catAttrs): time elapsed: 0.959854 size of a value: 24 environments allocated: 1010198 (26829296 bytes) list elements: 1984878 (15879024 bytes) list concatenations: 30488 values allocated: 1589760 (38154240 bytes) attribute sets allocated: 392040 right-biased unions: 186334 values copied in right-biased unions: 591137 symbols in symbol table: 18274 number of thunks: 1040925 number of thunks avoided: 1038428 number of attr lookups: 438419 number of primop calls: 474844 number of function calls: 959366 commit b9e5b908ed29bfb6cd82837f9f57293c1f63e999 Author: Eelco Dolstra Date: Mon Aug 13 01:05:35 2012 -0400 Provide an efficient implementation of ‘elem’ The one in Nixpkgs is O(n^2), this one is O(n). Big reduction in the number of list allocations. Statistics before (on a NixOS system config): time elapsed: 1.17982 size of a value: 24 environments allocated: 1543334 (39624560 bytes) list elements: 9612638 (76901104 bytes) list concatenations: 37434 values allocated: 1854933 (44518392 bytes) attribute sets allocated: 392040 right-biased unions: 186334 values copied in right-biased unions: 591137 symbols in symbol table: 18272 number of thunks: 1392467 number of thunks avoided: 1507311 number of attr lookups: 430801 number of primop calls: 691600 number of function calls: 1492502 Statistics after: time elapsed: 1.08683 size of a value: 24 environments allocated: 1384376 (35809568 bytes) list elements: 6946783 (55574264 bytes) list concatenations: 37434 values allocated: 1760440 (42250560 bytes) attribute sets allocated: 392040 right-biased unions: 186334 values copied in right-biased unions: 591137 symbols in symbol table: 18273 number of thunks: 1297673 number of thunks avoided: 1380759 number of attr lookups: 430802 number of primop calls: 628912 number of function calls: 1333544 commit 4ccd48ce2478cbe1263605838969f89d5b745f0a Author: Eelco Dolstra Date: Mon Aug 13 00:28:08 2012 -0400 Add a "filter" primop Evaluation of a NixOS configuration spends quite a lot of time in the "filter" function in Nixpkgs. As implemented in Nixpkgs, this is a O(n^2) operation, so it's a good candidate for providing a more efficient (i.e. primop) implementation. Using it gives a ~10% speed increase and a significant reduction in the number of evaluations. Statistics before (on a NixOS system config): time elapsed: 1.3258 size of a value: 24 environments allocated: 1980939 (50127080 bytes) list elements: 14679308 (117434464 bytes) list concatenations: 50828 values allocated: 2098938 (50374512 bytes) attribute sets allocated: 392040 right-biased unions: 186334 values copied in right-biased unions: 591137 symbols in symbol table: 18271 number of thunks: 1645752 number of thunks avoided: 1921196 number of attr lookups: 430798 number of primop calls: 838807 number of function calls: 1930107 Statistics after: time elapsed: 1.17982 size of a value: 24 environments allocated: 1543334 (39624560 bytes) list elements: 9612638 (76901104 bytes) list concatenations: 37434 values allocated: 1854933 (44518392 bytes) attribute sets allocated: 392040 right-biased unions: 186334 values copied in right-biased unions: 591137 symbols in symbol table: 18272 number of thunks: 1392467 number of thunks avoided: 1507311 number of attr lookups: 430801 number of primop calls: 691600 number of function calls: 1492502 commit 62f72eb9e1a4421a9d4ea3e06f467e49869c0e51 Author: Eelco Dolstra Date: Sun Aug 12 23:41:48 2012 -0400 Add some more evaluations stats commit e82767910c649f160d6701e47f606f3b8dde4b29 Author: Eelco Dolstra Date: Sun Aug 12 23:29:28 2012 -0400 Add some basic profiling support to the evaluator Setting the environment variable NIX_COUNT_CALLS to 1 enables some basic profiling in the evaluator. It will count calls to functions and primops as well as evaluations of attributes. For example, to see where evaluation of a NixOS configuration spends its time: $ NIX_SHOW_STATS=1 NIX_COUNT_CALLS=1 ./src/nix-instantiate/nix-instantiate '' -A system --readonly-mode ... calls to 39 primops: 239532 head 233962 tail 191252 hasAttr ... calls to 1595 functions: 224157 `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/lists.nix:17:19' 221767 `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/lists.nix:17:14' 221767 `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/lists.nix:17:10' ... evaluations of 7088 attributes: 167377 undefined position 132459 `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/attrsets.nix:119:41' 47322 `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/attrsets.nix:13:21' ... commit 325d1cfebf6c8ad391dc318f984feb3e5731aa5a Author: Eelco Dolstra Date: Tue Aug 7 16:22:54 2012 -0400 Don't warn about maximum link count exceeded on 0-byte files commit d025142f529731f05868f5397f5617011963c8b4 Author: Eelco Dolstra Date: Sun Aug 5 21:45:27 2012 -0400 Handle amount of disk space saved by hard linking being negative Fixes bogus messages like "currently hard linking saves 17592186044416.00 MiB". commit b6c989b80198badf5f694340c07abc282365aaec Author: Eelco Dolstra Date: Sun Aug 5 21:41:44 2012 -0400 Fix race condition when two processes create a hard link to a file in .links This is a problem because one process may set the immutable bit before the second process has created its link. Addressed random Hydra failures such as: error: cannot rename `/nix/store/.tmp-link-17397-1804289383' to `/nix/store/rsvzm574rlfip3830ac7kmaa028bzl6h-nixos-0.1pre-git/upstart-interface-version': Operation not permitted commit 108e14bb189fd0fb291d3494f9f3915070a7052e Author: Eelco Dolstra Date: Sun Aug 5 18:17:55 2012 -0400 Fix race condition when two processes create the same link in /nix/store/.links commit 6763084ae53fc0228d50ab94bbbced89c1b14f1c Author: Eelco Dolstra Date: Wed Aug 1 22:43:03 2012 -0400 Count bytes freed deleting unused links commit 01d56c1eeca497de247413a64a544605c53d9d41 Author: Eelco Dolstra Date: Wed Aug 1 22:34:46 2012 -0400 Drop the block count in the garbage collector commit 967d066d8e452e59507ebae7585d6f34a4edf687 Author: Eelco Dolstra Date: Wed Aug 1 19:14:30 2012 -0400 nix-store --gc: Make ‘--max-freed 0’ do the right thing That is, delete almost nothing (it will still remove unused links from /nix/store/.links). commit 1df702d34733e69599a6ae21cb366348a2534b7d Author: Eelco Dolstra Date: Wed Aug 1 19:01:50 2012 -0400 removeUnusedLinks(): Print stats on disk space saved by hard linking commit 9c2decaa1935ae4bf99a9b723d4eab188f8f88ef Merge: 5170c56 234ce61 Author: Eelco Dolstra Date: Wed Aug 1 18:03:49 2012 -0400 Merge branch 'master' into no-manifests commit 5170c5691aac1bd6abc69be65cf880316e11fe24 Author: Eelco Dolstra Date: Wed Aug 1 17:56:11 2012 -0400 nix-channel: Use binary caches advertised by channels Channels can now advertise a binary cache by creating a file /binary-cache-url. The channel unpacker puts these in its "binary-caches" subdirectory. Thus, the URLS of the binary caches for the channels added by root appear in /nix/var/nix/profiles/per-user/eelco/channels/binary-caches/*. The binary cache substituter reads these and adds them to the list of binary caches. commit 79bba3782c275f03954cc9fc03f92aff487db953 Author: Eelco Dolstra Date: Wed Aug 1 17:21:47 2012 -0400 Doh commit ca94b383718f2dc5f4f14ed6eddd8d04ac9d3fc2 Author: Eelco Dolstra Date: Wed Aug 1 16:43:36 2012 -0400 nix-env: Ignore manifest.nix when recursing into ~/.nix-defexpr Channels are implemented using a profile now, and profiles contain a manifest.nix file. This should be ignored to prevent bogus packages from showing up in nix-env. commit 46f852cda013b818f113c7905f020131a44f2340 Author: Eelco Dolstra Date: Wed Aug 1 16:42:51 2012 -0400 Use a GNU tar flag to shut up warnings about implausibly old timestamp commit afa7e0187815d89c8af93fa9c1081bf67ab0f10e Author: Eelco Dolstra Date: Wed Aug 1 16:34:17 2012 -0400 Inline unpack-channel.sh commit 234ce610e0671410cb8a9ce4d8725e55472e8d47 Author: Eelco Dolstra Date: Wed Aug 1 16:09:47 2012 -0400 Doh commit 7b10562370919947c9df748a165587ec5fc6c2ea Author: Eelco Dolstra Date: Wed Aug 1 16:06:49 2012 -0400 Make ‘nix-store --optimise’ interruptible commit 8a25d787d7f05d612521bd489510aa23d4ef2177 Author: Eelco Dolstra Date: Wed Aug 1 11:33:15 2012 -0400 download-from-binary-cache: Remove duplicate URLs commit c770a2422a47526d5eb336af6af4292df68dad2b Author: Eelco Dolstra Date: Wed Aug 1 11:19:24 2012 -0400 Report substituter errors to clients of the Nix daemon commit 4d1b64f118cf6ebcbf530bea4a3c531704d7d6ba Author: Eelco Dolstra Date: Tue Jul 31 18:56:22 2012 -0400 Allow daemon users to override ‘binary-caches’ For security reasons, daemon users can only specify caches that appear in the ‘binary-caches’ and ‘trusted-binary-caches’ options in nix.conf. commit eb7849e3a281511a59abf72ae5c3133f903bbaab Author: Eelco Dolstra Date: Tue Jul 31 18:50:32 2012 -0400 Prevent an injection attack in passing untrusted options to substituters commit 90d9c58d4dabb370849cd523fb9ee471e8140b76 Author: Eelco Dolstra Date: Tue Jul 31 18:19:44 2012 -0400 Pass all --option flags to the daemon commit 89a8207029e7f6d5cfe3ab972c49ea46f5b9a784 Author: Eelco Dolstra Date: Tue Jul 31 17:56:02 2012 -0400 Add an option ‘build-fallback’ (equivalent to the --fallback flag) commit 157170059df39933d358d087d88f8b5bc4d5fde6 Author: Eelco Dolstra Date: Mon Jul 30 22:29:42 2012 -0400 Manual: Remove reference to non-existent -I option commit 97421eb5ecde86b75441094fda017b12b5eca2a6 Author: Eelco Dolstra Date: Mon Jul 30 19:55:41 2012 -0400 Refactor settings processing Put all Nix configuration flags in a Settings object. commit d50d7a287416da2086b0b24f9d998eabb24c1734 Author: Eelco Dolstra Date: Mon Jul 30 17:13:25 2012 -0400 Whitespace commit 9cd63d224468af87baf74228acc162873c649493 Author: Eelco Dolstra Date: Mon Jul 30 17:09:36 2012 -0400 Do some validation of URLs commit f3eb29c6530e990b18e9f04390f6fa7bfbc58078 Author: Eelco Dolstra Date: Mon Jul 30 17:09:13 2012 -0400 Fix the test commit 9de6d10d112665ba1c6d807dd3950ed4c43a4404 Author: Eelco Dolstra Date: Mon Jul 30 16:39:31 2012 -0400 Get rid of $NIX_BINARY_CACHES You can use ‘--option binary-caches URLs’ instead. commit ab42bf1dab026d10b74e857a76feff475ae8a162 Author: Eelco Dolstra Date: Mon Jul 30 16:11:02 2012 -0400 nix-install-package: Support binary caches The .nixpkg file format is extended to optionally include the URL of a binary cache, which will be used in preference to the manifest URL (which can be set to a non-existent value). commit d059bf48e4bd4d1f50593dbe60953de8b2d395c7 Author: Eelco Dolstra Date: Mon Jul 30 16:09:54 2012 -0400 Pass configuration settings to the substituters Previously substituters could read nix.conf themselves, but this didn't take --option flags into account. commit f9613da18033d0a9835bc57ac2142aca754983cf Author: Eelco Dolstra Date: Mon Jul 30 15:43:37 2012 -0400 Remove unused variables commit 6183cf2f197edd079a0134ccb8d320bab083a624 Author: Eelco Dolstra Date: Mon Jul 30 15:42:18 2012 -0400 Fix whitespace commit f15083c10afaebb8f2a0e7fbc95dd4cc5208c992 Author: Eelco Dolstra Date: Sun Jul 29 14:37:40 2012 -0400 Document the --option flag Pointed out by Daniel Santa Cruz on IRC. commit 66a3ac6a56cfa70e2ffeb911c1286ba84c2fa048 Author: Eelco Dolstra Date: Fri Jul 27 18:16:05 2012 -0400 Allow a binary cache to declare that it doesn't support "nix-env -qas" Querying all substitutable paths via "nix-env -qas" is potentially hard on a server, since it involves sending thousands of HEAD requests. So a binary cache must now have a meta-info file named "nix-cache-info" that specifies whether the server wants this. It also specifies the store prefix so that we don't send useless queries to a binary cache for a different store prefix. commit 6ecf4f13f6a71701f77018a852db2bd4bde0bb67 Author: Eelco Dolstra Date: Fri Jul 27 14:33:01 2012 -0400 Use "set -x" in the tests to see where a test fails commit e6ab52cdd1df207c7a007a9cba665ee8a031d94a Author: Eelco Dolstra Date: Fri Jul 27 14:15:03 2012 -0400 Test "nix-env -qas" with the binary cache substituter commit 73acb8b836affe5dfade9dd6e3339ad2f9191add Author: Eelco Dolstra Date: Fri Jul 27 12:16:02 2012 -0400 Let build.cc verify the expected hash of a substituter's output Since SubstitutionGoal::finished() in build.cc computes the hash anyway, we can prevent the inefficiency of computing the hash twice by letting the substituter tell Nix about the expected hash, which can then verify it. commit fbf59d95f66012349fdcd2b60f34b9efb32e6319 Author: Eelco Dolstra Date: Fri Jul 27 10:56:33 2012 -0400 Remove more tabs commit 3a8f841612f08b9be11cc5346fa3c025413282d6 Author: Eelco Dolstra Date: Fri Jul 27 10:47:36 2012 -0400 download-using-manifests: Don't use nix-prefetch-url Instead call curl directly and pipe it into ‘nix-store --restore’. This saves I/O and prevents creating garbage in the Nix store. commit b4ea83249b40dd910daa6a8ee32f13e023e9c858 Author: Eelco Dolstra Date: Fri Jul 27 09:59:18 2012 -0400 Remove trailing whitespace / tabs commit 7f8e805c8ef2d7728648553de6b762964730a09a Author: Eelco Dolstra Date: Fri Jul 27 09:57:42 2012 -0400 download-from-binary-cache: Only use the default cache for /nix/store commit 67c6f3eded7dcb7c79243ed41f177c960f2b6aad Author: Eelco Dolstra Date: Thu Jul 26 18:28:12 2012 -0400 nix-push: Support generating a manifest again This makes all the tests succeed. Woohoo! commit 50395b71a90314abfcc39d8343dbaa8e9aa199a6 Author: Eelco Dolstra Date: Thu Jul 26 17:36:07 2012 -0400 Fix the substituter tests commit e3ce54cceedb9a3144c4eccfbafd63ed765d8913 Author: Eelco Dolstra Date: Thu Jul 26 17:13:38 2012 -0400 nix-push: Remove the upload feature commit 609586a16de90f8964b9c494aad3c1526feb514f Author: Eelco Dolstra Date: Thu Jul 26 17:13:14 2012 -0400 Add a test for the binary cache substituter commit 7861260a5ff33689b1b8f7a89489f5d5e5e4dfcb Author: Eelco Dolstra Date: Thu Jul 26 17:12:42 2012 -0400 Clear NIX_STORE when running the tests commit 7892ad15ab4b6db0eee619a1fdd14fed129db252 Author: Eelco Dolstra Date: Thu Jul 26 17:11:11 2012 -0400 download-from-binary-cache: Support file:// The file:// URI schema requires checking for errors in a more general way. Also, don't cache file:// lookups. commit dbce685e91c513341dedf8c1a916ef4c62f5650a Author: Eelco Dolstra Date: Thu Jul 26 17:10:28 2012 -0400 Add some .gitignore entries commit 8c7910083976e255300efa797030448f5a1cb864 Merge: aa115e2 3a4623a Author: Eelco Dolstra Date: Thu Jul 26 15:14:33 2012 -0400 Merge branch 'master' into no-manifests commit 3a4623afbbc1bff85bde33167d36e8c5a4a3df0d Author: Eelco Dolstra Date: Thu Jul 26 15:04:40 2012 -0400 Set permissions on temporary build directories to 0700 Fixes #39. commit 2605f4f4e6a367df67bf8b33b252c350313699c9 Author: Eelco Dolstra Date: Wed Jul 25 17:06:09 2012 -0400 nix-profile.sh: Don't set NIX_REMOTE on single user installations Commit 6a214f3e06fa1c5f0a4d40e555f14d87691af297 reused the NixOS environment initialisation for nix-profile.sh, but this is inappropriate on systems that don't have multi-user support enabled. commit 477b0fbeca62bf1957bc0aad26f1a844ebd22231 Author: Eelco Dolstra Date: Wed Jul 25 16:56:56 2012 -0400 Subscribe to the Nixpkgs rather than NixOS channel commit f5954e2d940c3a41a6ed0cad45660e254eb381a3 Author: Shea Levy Date: Tue Jul 24 12:05:27 2012 -0400 prim_import: When importing .drvs, allocate the intermediate attrset on the heap just in case it escapes the stack frame. commit 1ef2d5765be35c3d3c13a2aea8748166f576ec8b Author: Shea Levy Date: Mon Jul 23 13:45:51 2012 -0400 Turn tests back on commit b1112bbef195bc8397c4e88aa8544537a6d84731 Author: Shea Levy Date: Mon Jul 23 13:41:28 2012 -0400 import: If the path is a valid .drv file, parse it and generate a derivation attrset. The generated attrset has drvPath and outPath with the right string context, type 'derivation', outputName with the right name, all with a list of outputs, and an attribute for each output. I see three uses for this (though certainly there may be more): * Using derivations generated by something besides nix-instantiate (e.g. guix) * Allowing packages provided by channels to be used in nix expressions. If a channel installed a valid deriver for each package it provides into the store, then those could be imported and used as dependencies or installed in environment.systemPackages, for example. * Enable hydra to be consistent in how it treats inputs that are outputs of another build. Right now, if an input is passed as an argument to the job, it is passed as a derivation, but if it is accessed via NIX_PATH (i.e. through the <> syntax), then it is a path that can be imported. This is problematic because the build being depended upon may have been built with non-obvious arguments passed to its jobset file. With this feature, hydra can just set the name of that input to the path to its drv file in NIX_PATH commit 566a30c0072690900d4d55679a2981758d6fb888 Author: Shea Levy Date: Mon Jul 23 12:51:04 2012 -0400 Disable tests temporarily commit e98c029717016dfa3e5c618c9fc46da9b2142dcc Author: Eelco Dolstra Date: Mon Jul 23 18:42:18 2012 -0400 Handle platforms that don't support linking to a symlink E.g. Darwin doesn't allow this. commit fd63c8bfcd75624e7fbba8899365095400534e01 Author: Eelco Dolstra Date: Mon Jul 23 18:06:37 2012 -0400 Unlink the right file commit 0f65793f94bd89c973482ac949be1e96e876762b Author: Eelco Dolstra Date: Mon Jul 23 17:40:23 2012 -0400 Add a test for Nix store optimisation commit 680ab6f83def2b636200204542ca352631a46f85 Author: Eelco Dolstra Date: Mon Jul 23 15:48:30 2012 -0400 Garbage collect unused links in /nix/store/.links Incremental optimisation requires creating links in /nix/store/.links to all files in the store. However, this means that if we delete a store path, no files are actually deleted because links in /nix/store/.links still exists. So we need to check /nix/store/.links for files with a link count of 1 and delete them. commit 619310571002fc74e428824bd603604d1055b61b Author: Eelco Dolstra Date: Mon Jul 23 15:02:52 2012 -0400 Automatically optimise the Nix store when a new path is added Auto-optimisation is enabled by default. It can be turned off by setting auto-optimise-store to false in nix.conf. commit 564fb7d9fa80d06397a88d69f26439727cb922c5 Author: Eelco Dolstra Date: Mon Jul 23 12:08:34 2012 -0400 optimiseStore(): Use a content-addressed file store in /nix/store/.links optimiseStore() now creates persistent, content-addressed hard links in /nix/store/.links. For instance, if it encounters a file P with hash H, it will create a hard link P' = /nix/store/.link/ to P if P' doesn't already exist; if P' exist, then P is replaced by a hard link to P'. This is better than the previous in-memory map, because it had the tendency to unnecessarily replace hard links with a hard link to whatever happened to be the first file with a given hash it encountered. It also allows on-the-fly, incremental optimisation. commit ed59bf7a181bb382dea7dd72da52bf91f60deb8d Author: Eelco Dolstra Date: Mon Jul 23 17:11:12 2012 -0400 nix-build: Support the ‘-’ argument to build an expression from stdin commit 6852289c46cdfceb07b459cd1028722ffb124ca6 Author: Eelco Dolstra Date: Mon Jul 23 16:52:25 2012 -0400 Use lutimes() if available to canonicalise the timestamp of symlinks Also use utimes() instead of utime() if lutimes() is not available. commit 1832ab71dbb6b24965eb5a873a56a7231da7af4e Author: Eelco Dolstra Date: Wed Jul 18 17:17:23 2012 -0400 Bump version commit 98193bb440561875d2829f9dd542e38972dbcf63 Author: Eelco Dolstra Date: Wed Jul 18 16:50:56 2012 -0400 Remove RPM builds that don't evaluate commit b7fd2c28224a69476434d69b5d9da3d150c07226 Author: Eelco Dolstra Date: Wed Jul 18 14:59:03 2012 -0400 Use "#pragma once" to prevent repeated header file inclusion commit 58337e0e6122a97061dcf803954f72469f67afca Author: Eelco Dolstra Date: Wed Jul 18 11:51:27 2012 -0400 Set release date commit aa115e22df1c80e8878237a9e704d7d70783a243 Author: Eelco Dolstra Date: Wed Jul 18 11:01:17 2012 -0400 download-from-binary-cache: Print correct URL commit fe241ece2932492866693d268d02a7912e766ac7 Merge: a6f3485 ccc52ad Author: Eelco Dolstra Date: Wed Jul 18 10:47:59 2012 -0400 Merge branch 'master' into no-manifests commit ccc52adfb2121ade510d35dc9b91193af9fa731e Author: Eelco Dolstra Date: Tue Jul 17 18:55:39 2012 -0400 Add function queryPathFromHashPart() To implement binary caches efficiently, Hydra needs to be able to map the hash part of a store path (e.g. "gbg...zr7") to the full store path (e.g. "/nix/store/gbg...kzr7-subversion-1.7.5"). (The binary cache mechanism uses hash parts as a key for looking up store paths to ensure privacy.) However, doing a search in the Nix store for /nix/store/* is expensive since it requires reading the entire directory. queryPathFromHashPart() prevents this by doing a cheap database lookup. commit 220818f758d2facc194f567f35ca677ef79393bd Author: Eelco Dolstra Date: Tue Jul 17 16:55:45 2012 -0400 queryPathInfo(): return hash in base-32 if desired Cherry-picked from the no-manifests branch. commit a6f348599c94d8a5f7b41c7d8e43658dc6407be7 Author: Eelco Dolstra Date: Tue Jul 17 16:19:40 2012 -0400 Print some debug output commit 3a9fdf2747bc7436fc3c1fd5f9accd5675d4295e Author: Eelco Dolstra Date: Tue Jul 17 15:55:30 2012 -0400 Return an exit code of 100 for cached failed builds Exit code 100 should be returned for all permanent failures. This includes cached failures. Fixes #34. commit 1217204c81b0b6f02df99adfc8414a181299535c Author: Eelco Dolstra Date: Tue Jul 17 14:07:52 2012 -0400 Remove dead code commit 51d71ad3d7527596dc22d6dd9e9e70f2cd9faea9 Author: Eelco Dolstra Date: Tue Jul 17 11:49:47 2012 -0400 Manual: Don't claim we support Cygwin commit 6c01fb4d68a80f63c692492bb91c1aa2e17b5a8f Author: Eelco Dolstra Date: Tue Jul 17 10:06:20 2012 -0400 Update Nix 1.1 release notes commit 53b24f351852498c52377c2f011617af04bc76fa Author: Eelco Dolstra Date: Tue Jul 17 09:40:12 2012 -0400 Allow disabling log compression commit a7a43adb79393084a27589bc929e5a22877ba944 Author: Eelco Dolstra Date: Thu Jul 12 18:25:01 2012 -0400 builtins.storePath: resolve symlinks Needed for Charon/Hydra interaction. commit 04559a0d45ad02fc760b09132cca0d875af035e5 Merge: e4d6bcb eae8024 Author: Eelco Dolstra Date: Wed Jul 11 18:53:27 2012 -0400 Merge branch 'master' of github.com:NixOS/nix into no-manifests commit e4d6bcb6cdc34d204ccf49e137dd5070f664c523 Author: Eelco Dolstra Date: Wed Jul 11 18:52:23 2012 -0400 Update release notes commit f2bdc87595376efb2d05a8555b0686922a298929 Author: Eelco Dolstra Date: Wed Jul 11 18:52:09 2012 -0400 Update the other substituters commit 15c15da482eb30f95f4dab04b582a45edc10815b Author: Eelco Dolstra Date: Wed Jul 11 18:07:41 2012 -0400 Add some missing --version switches commit d287b62b6432ce3155e963c6471edf79ec70439a Author: Eelco Dolstra Date: Wed Jul 11 18:05:30 2012 -0400 Set the User-Agent header to "Nix/" commit b74d92755d1ca6a1538f292dcb5a906f66af7b51 Author: Eelco Dolstra Date: Wed Jul 11 17:53:20 2012 -0400 download-from-binary-cache: Use HEAD requests if possible In "nix-env -qas", we don't need the substitute info, we just need to know if it exists. This can be done using a HTTP HEAD request, which saves bandwidth. Note however that curl currently has a bug that prevents it from reusing HTTP connections if HEAD requests return a 404: https://sourceforge.net/tracker/?func=detail&aid=3542731&group_id=976&atid=100976 Without the patch attached to the issue, using HEAD is actually quite a bit slower than GET. commit 09a6321aeb7393cdb4b5af62d2e4106d83124fdf Author: Eelco Dolstra Date: Wed Jul 11 17:52:18 2012 -0400 Replace hasSubstitutes() with querySubstitutablePaths() querySubstitutablePaths() takes a set of paths, so this greatly reduces daemon <-> client latency. commit 58ef4d9a95584fb89ebcf6222fbac6e698aa6b0b Author: Eelco Dolstra Date: Wed Jul 11 11:08:47 2012 -0400 Add a function queryValidPaths() queryValidPaths() combines multiple calls to isValidPath() in one. This matters when using the Nix daemon because it reduces latency. For instance, on "nix-env -qas \*" it reduces execution time from 5.7s to 4.7s (which is indistinguishable from the non-daemon case). commit 667d5f1936616dc829f9f92f8e5d5141ba5285a7 Author: Eelco Dolstra Date: Wed Jul 11 10:49:04 2012 -0400 Rename queryValidPaths() to queryAllValidPaths() commit eb3036da87659fe7cf384c2362e7f7b8b67189a1 Author: Eelco Dolstra Date: Wed Jul 11 10:43:24 2012 -0400 Implement querySubstitutablePathInfos() in the daemon Also removed querySubstitutablePathInfo(). commit 6586414bc70c8373faefd49afc5172881f3aad53 Author: Eelco Dolstra Date: Wed Jul 11 10:14:06 2012 -0400 nix-env: Determine which paths have substitutes in parallel commit 5ee8944155f21a0ab5a100a184163d7bd0e72679 Author: Eelco Dolstra Date: Wed Jul 11 10:13:16 2012 -0400 Cleanup commit eae802459d7639a69baec555264f394adad043c0 Author: Eelco Dolstra Date: Mon Jul 9 15:49:20 2012 -0400 Pass --insecure to curl so that https works commit 2dd3117c2723ff08c6226b71d569bcea50d58ad1 Author: Eelco Dolstra Date: Mon Jul 9 15:48:55 2012 -0400 Inline fetchurl.sh commit 51f9f9924bcd0c30b45e370fc69dc43e6621ef61 Author: Eelco Dolstra Date: Mon Jul 9 15:41:43 2012 -0400 Add a test for the fetchurl function commit 035aa114037857b51968e62a1176f4086e2477ec Author: Shea Levy Date: Sun Jul 8 11:14:57 2012 -0400 Remove obsolete comment commit a2865f6b3d2af5593a100cba5c86ba62a1330bdb Author: Shea Levy Date: Sun Jul 8 11:11:02 2012 -0400 corepkgs/fetchurl: Build locally and outside of the chroot commit 53f52c2111bcf339bdaab703a263fd2c001da51c Author: Shea Levy Date: Sun Jul 8 11:04:11 2012 -0400 corepkgs/fetchurl: the 'system' argument can be optional commit 543bf742c9391bc49f59c52adb042bbd3c5e2364 Author: Shea Levy Date: Sun Jul 8 10:55:35 2012 -0400 corepkgs: distribute fetchurl files commit f863673a903d17566be8a03bcf8655d9912428bd Author: Shea Levy Date: Sun Jul 8 10:33:40 2012 -0400 corepkgs/fetchurl: Call the shell directly instead of using the shebang commit a994eb92a4e0d8744b244cd421c855d76831bdc0 Author: Shea Levy Date: Sun Jul 8 10:32:12 2012 -0400 corepkgs/fetchurl.sh: Use config.nix's curl commit 9d94a28bed39d0e9bcb3532cdac1a254a44efa97 Author: Shea Levy Date: Sun Jul 8 10:29:18 2012 -0400 The fetchurl builder is now fetchurl.sh commit fd2630e1f739c12b4a1f01159e1230d9fb7fb997 Author: Shea Levy Date: Sun Jul 8 10:26:50 2012 -0400 Remove old fetchurl makefile commit 6450f5699fa824934b92ca7ba1d345c36e9c009a Author: Shea Levy Date: Sun Jul 8 10:25:58 2012 -0400 Move fetchurl files out of their subdirectory commit 40c01ec4671c09a6ceb61ef201dad48156000075 Author: Shea Levy Date: Sun Jul 8 10:22:26 2012 -0400 corepkgs/config.nix.in: We'll need curl commit c4df7472676cac9bf5243ee8bc7cd0017f91a28d Author: Shea Levy Date: Sun Jul 8 10:19:17 2012 -0400 Resurrect old corepkgs fetchurl commit 27f0c34390d6680a843e2d4fad527dc672ed35c6 Author: Eelco Dolstra Date: Mon Jul 9 13:16:09 2012 -0400 Really fix RPM builds commit ae72be1b8bf65e6b52bc0c9d534e55a79ca6712b Author: Eelco Dolstra Date: Mon Jul 9 13:11:37 2012 -0400 Add WWW::Curl as a dependency commit a560124cdf43a08733d85336f7c8172fea1cfc5a Author: Eelco Dolstra Date: Mon Jul 9 11:58:12 2012 -0400 Fix RPM builds http://hydra.nixos.org/build/2784908 commit 087dee6e1b673b1e49f7c49fa0f05eb651bb5e94 Author: Eelco Dolstra Date: Mon Jul 9 11:56:55 2012 -0400 Get rid of nix.conf.example No need to duplicate the nix.conf manpage. commit 5755a5c354c8b622fae14a32b9f8f6f901fb9529 Author: Eelco Dolstra Date: Mon Jul 9 11:33:38 2012 -0400 Install a nix.conf manpage commit 099125435fc5ada63365a94ca153c711e706e225 Author: Eelco Dolstra Date: Mon Jul 9 10:57:28 2012 -0400 download-from-binary-cache: add nix.conf options commit 98a423b75aa9061f0164c316f9d2481ce6d5e2f1 Author: Eelco Dolstra Date: Mon Jul 9 09:59:34 2012 -0400 prim_import(): prefetch substitute info in parallel using queryMissing() commit 425cc612ad4835d29bce081a67ad161d06063b51 Author: Eelco Dolstra Date: Sun Jul 8 18:39:24 2012 -0400 build.cc: Don't use hasSubstitute() Instead make a single call to querySubstitutablePathInfo() per derivation output. This is faster and prevents having to implement the "have" function in the binary cache substituter. commit 400e556b34ff0563f34b191de5f632dc4377f0cd Author: Eelco Dolstra Date: Sun Jul 8 18:39:07 2012 -0400 Cleanup commit 11800e61983677f92fd5a08f51beb9036f947d6e Author: Eelco Dolstra Date: Fri Jul 6 19:08:20 2012 -0400 download-from-binary-cache: parallelise fetching of NAR info files Getting substitute information using the binary cache substituter has non-trivial latency overhead. A package or NixOS system configuration can have hundreds of dependencies, and in the worst case (when the local info cache is empty) we have to do a separate HTTP request for each of these. If the ping time to the server is t, getting N info files will take tN seconds; e.g., with a ping time of 0.1s to nixos.org, sequentially downloading 1000 info files (a typical NixOS config) will take at least 100 seconds. To fix this problem, the binary cache substituter can now perform requests in parallel. This required changing the substituter interface to support a function querySubstitutablePathInfos() that queries multiple paths at the same time, and rewriting queryMissing() to take advantage of parallelism. (Due to local caching, parallelising queryMissing() is sufficient for most use cases, since it's almost always called before building a derivation and thus fills the local info cache.) For example, parallelism speeds up querying all 1056 paths in a particular NixOS system configuration from 116s to 2.6s. It works so well because the eccentricity of the top-level derivation in the dependency graph is only 9. So we only need 10 round-trips (when using an unlimited number of parallel connections) to get everything. Currently we do a maximum of 150 parallel connections to the server. Thus it's important that the binary cache server (e.g. nixos.org) has a high connection limit. Alternatively we could use HTTP pipelining, but WWW::Curl doesn't support it and libcurl has a hard-coded limit of 5 requests per pipeline. commit cd94665f38fbadde38d5d8ae5c9c14dff9aea0ac Author: Eelco Dolstra Date: Fri Jul 6 00:30:40 2012 -0400 download-from-binary-cache: use WWW::Curl Using WWW::Curl rather than running an external curl process for every NAR info file halves the time it takes to get info thanks to libcurl's support for persistent HTTP connections. (We save a roundtrip per file.) But the real gain will come from using parallel and/or pipelined requests. commit ae60643c15a2eab2cf53230aa7c5fbc8af3430d1 Author: Eelco Dolstra Date: Tue Jul 3 18:54:46 2012 -0400 download-from-binary-cache: do negative NAR info caching I.e. if a NAR info file does *not* exist, we record it in the cache DB so that we don't retry it later. commit 89380c03e99dc5ae8a4dcf9edb4f14483bd2f5fc Author: Eelco Dolstra Date: Tue Jul 3 18:35:39 2012 -0400 download-from-binary-cache: in queries, preferred cached info commit 2a8e5c8b11d23f3d56cc7548e21f47325a736b79 Author: Eelco Dolstra Date: Tue Jul 3 17:47:01 2012 -0400 download-from-binary-cache: strip trailing / from URLs commit d694c599e2b9eee71ade8cc4befb46ed911f4a10 Author: Eelco Dolstra Date: Tue Jul 3 17:29:33 2012 -0400 download-from-binary-cache: cache binary cache info in a SQLite DB commit 8319b1ab9f1e79ad32871dae602a59df5874d1a9 Author: Eelco Dolstra Date: Mon Jul 2 18:53:04 2012 -0400 download-from-binary-cache: Verify NAR hashes commit cf49472d601a3d9d34ba92def1eca9a2d2c7c391 Author: Eelco Dolstra Date: Mon Jul 2 18:05:57 2012 -0400 nix-push: Always generate base-32 hashes commit 6ec7460af1103a23e4d331e0c8a56283350175c5 Author: Eelco Dolstra Date: Mon Jul 2 12:42:58 2012 -0400 Binary caches: use a better key Use the hash part of the store path as a key rather than a hash of the store path. This is enough to get the desired privacy property. commit 6b1e671ac6cc0376474dd8c1403582ae1db01576 Author: Eelco Dolstra Date: Sun Jul 1 21:57:25 2012 -0400 Fix xz compression commit 440adfbdd1c99fdf7929db66b64ccf4dcd9097e3 Author: Eelco Dolstra Date: Sun Jul 1 21:55:36 2012 -0400 Add an environment variable $NIX_BINARY_CACHES specifying URLs of binary caches commit f4190c38bac1efdbfec9b1ff9c524808d23fe1cc Author: Eelco Dolstra Date: Sun Jul 1 18:46:38 2012 -0400 Allow both bzip2 and xz compression commit 000132cbd1624a681a8114a117de07a56a7eed4e Author: Eelco Dolstra Date: Fri Jun 29 18:30:28 2012 -0400 nix-push: Don't pollute the current directory with result symlink commit 37f70984645b4fc5e6ed9f30a858ba6fbf402441 Author: Eelco Dolstra Date: Fri Jun 29 18:28:52 2012 -0400 First attempt at the manifest-less substituter commit 91b8814f0d275bbb6c7de9546e5e8cb784dad10b Author: Eelco Dolstra Date: Fri Jun 29 17:16:00 2012 -0400 Doh commit 4911a10a4e51102a21a5d123a852c75d2ec92dbc Author: Eelco Dolstra Date: Fri Jun 29 14:26:31 2012 -0400 Use XZ compression in binary caches XZ compresses significantly better than bzip2. Here are the compression ratios and execution times (using 4 cores in parallel) on my /var/run/current-system (3.1 GiB): bzip2: total compressed size 849.56 MiB, 30.8% [2m08] xz -6: total compressed size 641.84 MiB, 23.4% [6m53] xz -7: total compressed size 621.82 MiB, 22.6% [7m19] xz -8: total compressed size 599.33 MiB, 21.8% [7m18] xz -9: total compressed size 588.18 MiB, 21.4% [7m40] Note that compression takes much longer. More importantly, however, decompression is much faster: bzip2: 1m47.274s xz -6: 0m55.446s xz -7: 0m54.119s xz -8: 0m52.388s xz -9: 0m51.842s The only downside to using -9 is that decompression takes a fair amount (~65 MB) of memory. commit 49cd7387ad6546571ca31a41f208091b482defaa Author: Eelco Dolstra Date: Thu Jun 28 17:19:32 2012 -0400 nix-push: create a manifest-less binary cache Manifests are a huge pain, since users need to run nix-pull directly or indirectly to obtain them. They tend to be large and lag behind the available binaries; also, the downloaded manifests in /nix/var/nix/manifest need to be in sync with the Nixpkgs sources. So we want to get rid of them. The idea of manifest-free operation works as follows. Nix is configured with a set of URIs of binary caches, e.g. http://nixos.org/binary-cache Whenever Nix needs a store path X, it checks each binary cache for the existence of a file /.narinfo, e.g. http://nixos.org/binary-cache/bi1gh9...ia17.narinfo The .narinfo file contains the necessary information about the store path that was formerly kept in the manifest, i.e., (relative) URI of the compressed NAR, references, size, hash, etc. For example: StorePath: /nix/store/xqp4l88cr9bxv01jinkz861mnc9p7qfi-neon-0.29.6 URL: 1bjxbg52l32wj8ww47sw9f4qz0r8n5vs71l93lcbgk2506v3cpfd.nar.bz2 CompressedHash: sha256:1bjxbg52l32wj8ww47sw9f4qz0r8n5vs71l93lcbgk2506v3cpfd CompressedSize: 202542 NarHash: sha256:1af26536781e6134ab84201b33408759fc59b36cc5530f57c0663f67b588e15f NarSize: 700440 References: 043zrsanirjh8nbc5vqpjn93hhrf107f-bash-4.2-p24 cj7a81wsm1ijwwpkks3725661h3263p5-glibc-2.13 ... Deriver: 4idz1bgi58h3pazxr3akrw4fsr6zrf3r-neon-0.29.6.drv System: x86_64-linux Nix then knows that it needs to download http://nixos.org/binary-cache/1bjxbg52l32wj8ww47sw9f4qz0r8n5vs71l93lcbgk2506v3cpfd.nar.bz2 to substitute the store path. Note that the store directory is omitted from the References and Deriver fields to save space, and that the URL can be relative to the binary cache prefix. This patch just makes nix-push create binary caches in this format. The next step is to make a substituter that supports them. commit 1aba0bf0fa831ffee628ae50730eade5b19a544f Author: Eelco Dolstra Date: Wed Jun 27 16:58:15 2012 -0400 nix-store -r: do substitutions in parallel I.e. when multiple non-derivation arguments are passed to ‘nix-store -r’ to be substituted, do them in parallel. commit 42f5a2fc297f841d982f07062c653b27557a3cd5 Author: Eelco Dolstra Date: Wed Jun 27 09:52:27 2012 -0400 Mount an empty /dev/shm tmpfs in the chroot This ensures that whatever the builder writes in /dev/shm is automatically cleaned up. commit 3ee208516fbdd302b178d68a20dd44517a276a96 Author: Eelco Dolstra Date: Wed Jun 27 09:52:06 2012 -0400 Check the return code of the clone() call commit 1db38ae81bd91d781ece9c0cfb995e743e68e951 Author: Eelco Dolstra Date: Mon Jun 25 15:45:16 2012 -0400 When using chroots, use a private PID namespace In a private PID namespace, processes have PIDs that are separate from the rest of the system. The initial child gets PID 1. Processes in the chroot cannot see processes outside of the chroot. This improves isolation between builds. However, processes on the outside can see processes in the chroot and send signals to them (if they have appropriate rights). Since the builder gets PID 1, it serves as the reaper for zombies in the chroot. This might turn out to be a problem. In that case we'll need to have a small PID 1 process that sits in a loop calling wait(). commit 5489086456ca13b2e884edecf7505235d214a594 Author: Eelco Dolstra Date: Mon Jun 25 14:12:17 2012 -0400 Use a private UTS namespace to provide a deterministic host/domain name to builders In chroot builds, set the host name to "localhost" and the domain name to "(none)" (the latter being the kernel's default). This improves determinism a bit further. P.S. I have to idea what UTS stands for. commit 8da6772ed48e2ee7082071b31c7afeb800195cdb Author: Eelco Dolstra Date: Sat Jun 23 14:59:13 2012 -0400 Update release notes commit 723a68c8262ec337e290e51265820ae90fe3ad18 Author: Eelco Dolstra Date: Sat Jun 23 00:57:14 2012 -0400 Improve error message commit 7ffa523fd15fcd9ab1a0ad85db860f467869946a Author: Eelco Dolstra Date: Sat Jun 23 00:51:40 2012 -0400 In chroot builds, use a private SysV IPC namespace This improves isolation a bit further, and it's just one extra flag in the unshare() call. P.S. It would be very cool to use CLONE_NEWPID (to put the builder in a private PID namespace) as well, but that's slightly more risky since having a builder start as PID 1 may cause problems. commit df716c98d203ab64cdf05f9c17fdae565b7daa1c Author: Eelco Dolstra Date: Sat Jun 23 00:28:35 2012 -0400 In chroot builds, use a private network namespace On Linux it's possible to run a process in its own network namespace, meaning that it gets its own set of network interfaces, disjunct from the rest of the system. We use this to completely remove network access to chroot builds, except that they get a private loopback interface. This means that: - Builders cannot connect to the outside network or to other processes on the same machine, except processes within the same build. - Vice versa, other processes cannot connect to processes in a chroot build, and open ports/connections do not show up in "netstat". - If two concurrent builders try to listen on the same port (e.g. as part of a test), they no longer conflict with each other. This was inspired by the "PrivateNetwork" flag in systemd. commit 2f3f413e91620d2314be59870f4bd67292f7d2de Author: Eelco Dolstra Date: Mon Jun 18 23:01:46 2012 -0400 Support socket-based, on-demand activation of the Nix daemon with systemd Systemd can start the Nix daemon on demand when the Nix daemon socket is first accessed. This is signalled through the LISTEN_FDS environment variable, so all we need to do is check for that and then use file descriptor 3 as the listen socket instead of creating one ourselves. commit 02fb6323e06502e410dd5d5f8fe10589a7c938d4 Author: Eelco Dolstra Date: Thu May 31 09:50:58 2012 -0400 Add Emacs to the disk image commit 221626e7155c184d34c1e43ade92462b45c3992f Author: Michel Alexandre Salim Date: Wed May 30 08:31:59 2012 +0700 fixes to nix-worker systemd service descriptor: - remove commented-out lines - register the file for distribution in Makefile.am commit a7ed1f67ee5dbbdbe45e15e6461b5f7c886747d8 Author: Michel Alexandre Salim Date: Sun May 27 17:34:49 2012 +0700 On systems with SystemD, install the service descriptor for nix-worker, and enable and start it commit 892234630594ea87a1b9bc945077c82c419af6d3 Author: Michel Alexandre Salim Date: Sun May 27 17:04:16 2012 +0700 Major spec update: - Fix license field - Split into subpackages - Update build dependencies - Configure users and groups for multi-user mode - Fix installation location of Perl modules commit 6a214f3e06fa1c5f0a4d40e555f14d87691af297 Author: Michel Alexandre Salim Date: Sun May 27 16:34:57 2012 +0700 Update nix profile: - incorporate NixOS's configuration so that nix is usable by normal users - install as a data file, not a program file commit d0308073c35799cce98bc853eba64f3922fadcfd Author: Michel Alexandre Salim Date: Thu May 17 12:04:56 2012 +0800 - only enable deprecated spec sections when building on systems with older RPM versions - move tests to dedicated %check section - use standard build macros commit e545a7f9a881d9857360713d0d3b0edc54781875 Author: Michel Alexandre Salim Date: Thu May 17 11:56:29 2012 +0800 - replace %define with %global commit f5398d374beac34983bb639891ba3f1f50528c72 Author: Eelco Dolstra Date: Wed May 30 10:12:29 2012 -0400 Compress build logs on the fly using bzip2 commit 881beb170d324f392a53168e6a76e2c5cfd24789 Author: Eelco Dolstra Date: Wed May 30 00:00:02 2012 -0400 "nix-store -l": support compressed logs commit 4bc4da331aae13be8a39e768524a854597addd8a Author: Eelco Dolstra Date: Tue May 29 22:59:12 2012 -0400 Reserve some disk space for the garbage collector We can't open a SQLite database if the disk is full. Since this prevents the garbage collector from running when it's most needed, we reserve some dummy space that we can free just before doing a garbage collection. This actually revives some old code from the Berkeley DB days. Fixes #27. commit 2c26985835cf82ed5d2979c3a400f72f6aeba32f Author: Eelco Dolstra Date: Tue May 29 16:42:05 2012 -0400 Add option ‘build-keep-log’ to enable/disable writing of build logs Fixes #26. commit 8058dab26e90db54708d4c698db843dd703ecbb2 Author: Eelco Dolstra Date: Thu May 24 12:04:07 2012 -0400 Clean up the installation section; document the generic binary tarballs commit 0301525e6cc7443b5cba2ccf4ef3f18b2b4beedb Author: Eelco Dolstra Date: Tue May 22 19:40:40 2012 -0400 Fix owner/group in tar invocation commit 6814b1dfa1efee2b801f13ec428c72b7245880ee Author: Eelco Dolstra Date: Tue May 22 18:36:54 2012 -0400 Generate binary tarballs for installing Nix For several platforms we don't currently have "native" Nix packages (e.g. Mac OS X and FreeBSD). This provides the next best thing: a tarball containing the closure of Nix, plus a simple script "nix-finish-install" that initialises the Nix database, registers the paths in the closure as valid, and runs "nix-env -i /path/to/nix" to initialise the user profile. The tarball must be unpacked in the root directory. It creates /nix/store/... and /usr/bin/nix-finish-install. Typical installation is as follows: $ cd / $ tar xvf /path/to/nix-1.1pre1234_abcdef-x86_64-linux.tar.bz2 $ nix-finish-install (if necessary add ~/.nix-profile/etc/profile.d/nix.sh to the shell login scripts) After this, /usr/bin/nix-finish-install can be deleted, if desired. The downside to the binary tarball is that it's pretty big (~55 MiB for x86_64-linux). commit 591aab7e2166f1c7208cccdda7ce50c3c362f12b Author: Eelco Dolstra Date: Tue May 22 14:00:08 2012 -0400 Remove $FONTCONFIG_FILE hack from nix-profile.sh It's no longer needed because Nixpkgs' fontconfig uses /etc/fonts/fonts.conf as a default, just like other distributions. commit e071f87dc5476983c557cf6185fbdeab0c4c67c5 Author: Eelco Dolstra Date: Mon May 21 09:37:49 2012 -0400 Add an experimental nix-make file To use it, just do (e.g.) "nix-build build.nix -A nix_env". commit cac9eb39fe36ab28519f0b59d880fbcdc705ba95 Author: Eelco Dolstra Date: Sat May 12 00:07:08 2012 -0400 Bump version number commit dfc6a43b72e9f38dc58866c5a9e5900d0d0b66b4 Author: Eelco Dolstra Date: Fri May 11 23:30:47 2012 -0400 Fix the install check commit 587b408210ee3707df78c78cca9d6082e44e0233 Author: Eelco Dolstra Date: Fri May 11 17:40:58 2012 -0400 Set release date commit 8a08813d6c92e583d9ed6ccaffc80effe0dc9669 Author: Eelco Dolstra Date: Fri May 11 17:39:06 2012 -0400 Manual updates commit 2b00e6990c7b6f7177bce76126c6c992f3f7a93e Author: Eelco Dolstra Date: Fri May 11 16:21:21 2012 -0400 CSS tweaks commit 58d1de08d9ec4ce1bfbfb65b0b74700f066af7d0 Author: Eelco Dolstra Date: Fri May 11 09:41:39 2012 -0400 Use perl.libPrefix to (hopefully) fix the Cygwin build http://hydra.nixos.org/build/2602599 commit 37fa47908bff2495755410c96891623d60735464 Author: Eelco Dolstra Date: Thu May 10 22:12:20 2012 -0400 Build Ubuntu 12.04 packages commit 4d383f57f42af2c9316fa82ea61cb8a109c3f680 Author: Eelco Dolstra Date: Thu May 10 19:29:36 2012 -0400 Document "nix-build --run-env" commit 4f7bab7db1d0447e41f858633cddba1dcb2c9ea2 Author: Eelco Dolstra Date: Thu May 10 19:03:23 2012 -0400 Support building with the Perl XS bindings disabled Since the Perl bindings require shared libraries, this is required on platforms such as Cygwin where we do a static build. commit 6a7b24a3f25548fe2b083555cd2117dd66557ab0 Author: Eelco Dolstra Date: Thu May 10 18:09:45 2012 -0400 Document "nix-store --add" commit cda1fd8ec86553f2a76366ec56c3fa21788fc189 Author: Eelco Dolstra Date: Thu May 10 16:56:36 2012 -0400 Remove an obsolete hack commit 663c06e8cd7d44443b0495b13f2bb08e2cfab889 Author: Eelco Dolstra Date: Wed May 9 22:14:36 2012 -0400 Disable building in chroot for Nix's corepkgs The dependencies of the corepkgs are not necessarily in the chroot (or in the Nix store), so don't build them in a chroot. commit cb1248d2082ff8292e2516f124feea4427cf150a Author: Eelco Dolstra Date: Wed May 9 19:06:39 2012 -0400 Document some nix-store subcommands commit 7a213ffc6912794d2cc4374bb9bf2c1f59a384a3 Author: Eelco Dolstra Date: Wed May 9 19:06:13 2012 -0400 Document $NIX_PATH / -I commit a58efdb69b0c018322bb773ce14dc33cb252b165 Author: Eelco Dolstra Date: Wed May 9 19:05:30 2012 -0400 Update the release notes commit 0c4c8f7a9d09c497d95771c894a5cc3d4276609b Author: Eelco Dolstra Date: Tue May 8 15:43:54 2012 -0400 Remove obsolete files (moved to release tree) commit afa7b8a479e48c5642a796563a615314c0261a1a Author: Eelco Dolstra Date: Mon May 7 17:55:56 2012 -0400 nix-channel --update: allow updating only the specified channels commit 147f10157fef48dcf3e32511e10f5ee00026b757 Author: Eelco Dolstra Date: Mon May 7 17:23:26 2012 -0400 Now *really* prevent accumulation of old manifests commit 464089365e2c72c83e5a8edb5611e537c4898501 Author: Eelco Dolstra Date: Fri May 4 21:40:56 2012 -0400 Fix some 32-bit builds Perl on some 32-bit systems needs -D_FILE_OFFSET_BITS=64. See also commit 02f1363e19b7df7cccc3523805bbf4fafe429529. commit c6acb219f9312ee3c8e1ac83d2b490401f8b9a9d Author: Eelco Dolstra Date: Fri May 4 18:50:34 2012 -0400 Drop the Perl-specific CFLAGS This fixes the Darwin build (http://hydra.nixos.org/build/2517380). Hopefully it doesn't break other builds. commit 56c82f3d9dec34eeaa124c61b20af4ae67f827a2 Author: Eelco Dolstra Date: Fri May 4 17:45:21 2012 -0400 Don't build for old Debian/Ubuntu releases that don't have a sufficiently new SQLite commit 373e875ac2e403f1f790fbd9d2323e581a8aae21 Author: Eelco Dolstra Date: Fri May 4 17:25:25 2012 -0400 Don't build for old Fedora releases that don't have a sufficiently new SQLite commit d03a295192f8d7b7ced98d5bbab91a8aa9b0ca4d Author: Eelco Dolstra Date: Fri May 4 17:21:43 2012 -0400 Require SQLite >= 3.6.19 Nix needs SQLite's foreign key constraint feature, which was introduced in 3.6.19. Without it, the database won't be cleaned up correctly when paths are deleted. See e.g. http://hydra.nixos.org/build/2494142. commit e060c99447a445bbf1c527b8c712e3bf809ee694 Author: Eelco Dolstra Date: Tue May 1 16:35:18 2012 -0400 Use mkpath instead of make_path Perl <= 5.10 doesn't have make_path. See e.g. http://hydra.nixos.org/build/2493981. commit e19fb7ebedabf5109379b80c5e42e89fa4437276 Author: Eelco Dolstra Date: Tue May 1 16:31:56 2012 -0400 Do "make installcheck" for RPM builds commit e145ac30e32c3f2d4491c195daccdc15c722a005 Author: Eelco Dolstra Date: Tue May 1 15:48:17 2012 -0400 Do "make installcheck" for Debian builds commit db5b86ef13026d7f034527005ab231ddc2b7d2c1 Author: Eelco Dolstra Date: Mon Apr 30 19:15:34 2012 -0400 * Add an option ‘build-use-substitutes’, which can be set to ‘false’ to disable use of substitutes; i.e., force building from source. Fixes Nix/221. commit 59a26360c75f1cf5fe65fce5e3703df0b6645140 Author: Eelco Dolstra Date: Mon Apr 30 17:22:45 2012 -0400 Support mandatory system features in the build hook Mandatory features are features that MUST be present in a derivation's requiredSystemFeatures attribute. One application is performance testing, where we have a dedicated machine to run performance tests (and nothing else). Then we would add the label "perf" to the machine's mandatory features and to the performance testing derivations. commit 82ae0e688c21794bea583f9b48bb3639f7e2601a Author: Eelco Dolstra Date: Mon Apr 30 16:49:00 2012 -0400 Update the documentation of build-remote.pl commit 46cdc6ad51376e2f31ce806ee38e697d00a6e5cb Author: Eelco Dolstra Date: Mon Apr 30 10:58:04 2012 -0400 Handle EPERM when creating a hard link for the chroot There is a race condition when doing parallel builds with chroots and the immutable bit enabled. One process may call makeImmutable() before the other has called link(), in which case link() will fail with EPERM. We could retry or wrap the operation in a lock, but since this condition is rare and I'm lazy, we just use the existing copy fallback. Fixes #9. commit c722193a91cb32f2696d655cf6301cf5ccfae6ce Author: Eelco Dolstra Date: Thu Apr 26 16:52:08 2012 +0200 Don't use the build hook for unpacking channels commit 6de5d534164d95b0c004cd4b2ed9bf97f9903029 Author: Eelco Dolstra Date: Tue Apr 24 12:56:30 2012 +0200 Fix a warning in the build hook about $progressViewer commit 6387830c3b12722e5962a99aa81f225ea0830076 Merge: 259c6d3 85799bf Author: Eelco Dolstra Date: Mon Apr 23 03:29:03 2012 -0700 Merge pull request #2 from viric/master Again, adding the sync option commit 259c6d3fbb1298488cc9d437ae81f313dba585fd Author: Eelco Dolstra Date: Wed Apr 18 13:40:18 2012 +0200 Fix URL set by nix-channel commit 9cd3ff1059e9daffe65e24dc826268f1e69e2593 Author: Eelco Dolstra Date: Tue Apr 17 17:19:43 2012 +0200 nix-instantiate: default to "default.nix" if no arguments are given commit 8745fade0387b2900a98b95798d9f12be7ef97ca Author: Eelco Dolstra Date: Tue Apr 17 17:14:14 2012 +0200 Added utility command ‘nix-instantiate --find-file’ to look up a file in Nix's search path commit 8cf1719e3e02998c0d22ed9e505a4a98e3335627 Author: Eelco Dolstra Date: Mon Apr 16 19:52:31 2012 +0200 Hack to prevent accumulation of old manifests commit 1132dd27eaf6b32937f1e0508c84d08f5ae90470 Author: Eelco Dolstra Date: Mon Apr 16 18:47:01 2012 +0200 Fix obscure race condition in GC root creation This should fix rare Hydra errors of the form: error: symlinking `/nix/var/nix/gcroots/per-user/hydra/hydra-roots/7sfhs5fdmjxm8sqgcpd0pgcsmz1kq0l0-nixos-iso-0.1pre33785-33795' to `/nix/store/7sfhs5fdmjxm8sqgcpd0pgcsmz1kq0l0-nixos-iso-0.1pre33785-33795': File exists commit 154aa7f71ade55fe5ce43503ade85fc2a107a331 Author: Eelco Dolstra Date: Sun Apr 15 00:42:16 2012 +0200 Set a few more close-on-exec flags commit 31e34fcf932e86c398a38b39facc268026736f0c Author: Eelco Dolstra Date: Sun Apr 15 00:20:32 2012 +0200 Close almost all file descriptors in the builder This regression was accidentally introduced in 35355fc1fcffbe859395e360c0a6a1463f137d63. commit 0b5107c016080e70d30ccba3afa0f9aa7a90a891 Author: Eelco Dolstra Date: Sat Apr 14 21:05:28 2012 +0200 If the (redirected) channel URL contains a version number, use it commit 1d0bafb74d17f14778005a633ee332ad0ad9ba9e Author: Eelco Dolstra Date: Sat Apr 14 21:04:22 2012 +0200 Follow redirects early to ensure consistency between the manifest and the tarball Without this change, if the URL is a redirect that changes in between, we can get a manifest that doesn't match the tarball. commit ca3d9f8b31378093ecfbce493aab979c97d5ba78 Author: Eelco Dolstra Date: Sat Apr 14 19:52:58 2012 +0200 Urgh, modified the wrong file... commit ef902274fd4b1c13732851e6cbfa00d4d4e46821 Author: Eelco Dolstra Date: Sat Apr 14 18:48:11 2012 +0200 Remove unnecessary "system" argument commit e855c7e2c9a9a5cbe4406c1f9351181a9ebe6283 Author: Eelco Dolstra Date: Sat Apr 14 18:38:52 2012 +0200 nix-channel improvements "nix-channel --add" now accepts a second argument: the channel name. This allows channels to have a nicer name than (say) nixpkgs_unstable. If no name is given, it defaults to the last component of the URL (with "-unstable" or "-stable" removed). Also, channels are now stored in a profile (/nix/var/nix/profiles/per-user/$USER/channels). One advantage of this is that it allows rollbacks (e.g. if "nix-channel --update" gives an undesirable update). commit 969a14599d2f7bfd02971475b5b2be49fb965117 Author: Eelco Dolstra Date: Fri Apr 13 14:41:33 2012 +0200 If "pv" is available at compile time, hard-code its path commit 34a85c5405a228860a7bbe77239fb0204bf6952c Author: Shea Levy Date: Thu Mar 29 18:58:14 2012 +0200 nix-copy-closure: Move the progressViewer directly adjacent to the ssh call so that network progress is what's measured commit 055e803851e73bb94d341c3b4f25f52be167fef7 Author: Shea Levy Date: Thu Mar 29 18:20:31 2012 +0200 Add the '--show-progress' flag to nix-copy-closure commit 00c98a6befb70228c7ba2b7d5dc8684289915baa Author: Eelco Dolstra Date: Fri Apr 13 14:28:26 2012 +0200 Use Bison 2.5 commit 209927bb2785920eff455adb97ba513080c6e8c0 Author: Eelco Dolstra Date: Tue Apr 10 16:40:51 2012 +0200 Unconfuse Rob commit 1fb30e6d50c29adcc3a3d73381cd90f5f5989c31 Author: Eelco Dolstra Date: Tue Apr 10 13:52:37 2012 +0200 Handle the case where $SHELL is not set commit 8f6146a7bc7c5a2e8c03b127366eff7d82552eef Merge: 533250a 242a99c Author: Rob Vermaas Date: Mon Apr 9 00:24:08 2012 -0700 Merge pull request #5 from shlevy/doc-fix Nix is on github now commit 242a99c95ae9a0e829c5b34b51d29614ff2cb788 Author: Shea Levy Date: Sun Apr 8 23:59:02 2012 -0400 Nix is on github now commit 533250a4a3f5767fdc647b133134b92e3c804025 Author: Eelco Dolstra Date: Fri Apr 6 22:54:15 2012 +0200 Fix building from the tarball commit 831c7aa4108d56246595cfbcefdb1113f159715c Author: Eelco Dolstra Date: Fri Apr 6 22:03:19 2012 +0200 Documentation fix commit 5863987bba9bc4c90d0d71204933ac90ac7a710b Author: Eelco Dolstra Date: Fri Apr 6 21:56:20 2012 +0200 Include environment variables in the manpages commit 998b977ede9948f78a6a913ecedf3361eb14f769 Author: Eelco Dolstra Date: Fri Apr 6 21:45:00 2012 +0200 Include common options in the manpages using some XInclude hackery commit d49ef039dd61dba160cb0b78c6b00152ff9e680e Author: Eelco Dolstra Date: Fri Apr 6 21:43:56 2012 +0200 Update affiliation commit 5a6d50998dffcf60b45fd35b858dbe37cf33d649 Author: Eelco Dolstra Date: Fri Apr 6 20:26:30 2012 +0200 Add a missing DocBook source file to the tarball Reported on IRC by Adrian Siekierka. commit f2467eb6a0070176a5b1cd76aa330b84431f8258 Author: Eelco Dolstra Date: Thu Apr 5 13:03:19 2012 +0200 On Linux, pretend we're building on Linux 2.6 Setting the UNAME26 personality causes "uname" to return "2.6.x", regardless of the kernel version. This improves determinism in a few misbehaved packages. commit 3b859ead376cb0aa6c7b27774c2d82ed3ecb370a Author: Hydra mirror Date: Wed Apr 4 20:46:18 2012 +0000 nix-generate-patches: Optionally write new patches to $NIX_ALL_PATCHES commit 34ea91b25919d795b6d322059de274ddcf778763 Author: Eelco Dolstra Date: Wed Apr 4 16:22:32 2012 +0200 Include --keep-going in --help commit 0837348049bbdd24378ad9376caad932712d5acd Author: Eelco Dolstra Date: Wed Apr 4 15:41:35 2012 +0200 Follow redirects when checking for the existence of MANIFEST.bz2 If we don't follow redirects, we might think that MANIFEST.bz2 exists just because the HEAD request succeeds on the redirector URI. commit b8fb0ce5634456ba987231fc755c32af6f4ada30 Author: Eelco Dolstra Date: Tue Mar 27 11:59:36 2012 +0200 Update "nix-build --help" commit 5144abe5b67628d6968d0ab829aa52a6428a77a6 Author: Eelco Dolstra Date: Tue Mar 27 11:40:47 2012 +0200 Add an option "--exclude" to filter dependencies in "nix-build --run-env" Sometimes when doing "nix-build --run-env" you don't want all dependencies to be built. For instance, if we want to do "--run-env" on the "build" attribute in Hydra's release.nix (to get Hydra's build environment), we don't want its "tarball" dependency to be built. So we can do: $ nix-build --run-env release.nix -A build --exclude 'hydra-tarball' This will skip the dependency whose name matches the "hydra-tarball" regular expression. The "--exclude" option can be repeated any number of times. commit 3e94ffffd61573624883c02744f20ac3544ff9cb Author: Eelco Dolstra Date: Tue Mar 27 11:16:43 2012 +0200 Allow the command executed by "nix-build --run-env" to be overriden with --command commit 446b827baedde7ba3ca44f9ef51940e28e13fb87 Author: Eelco Dolstra Date: Mon Mar 26 23:18:36 2012 +0200 Mac OS X fix commit 480dda0e42e69be47434be5bce95be950bdb59b5 Author: Eelco Dolstra Date: Mon Mar 26 20:56:30 2012 +0200 Delete non-directory valid paths right away It's unlikely that rename() is faster than unlink() on a regular file or symlink, so don't bother. commit 117670be570d775a18e4e35db3dae00abc24f729 Author: Eelco Dolstra Date: Mon Mar 26 20:43:33 2012 +0200 Make the garbage collector more concurrent Make the garbage collector more concurrent by deleting valid paths outside the region where we're holding the global GC lock. This should greatly reduce the time during which new builds are blocked, since the deletion accounts for the vast majority of the time spent in the GC. To ensure that this is safe, the valid paths are invalidated and renamed to some arbitrary path while we're holding the lock. This ensures that we when we finally delete the path, it's not a (newly) valid or locked path. commit 8be1979f1ae4b85c36988f7b3cf8240c9682dc54 Author: Eelco Dolstra Date: Mon Mar 26 20:00:02 2012 +0200 Remove the --max-links GC option We don't need this anymore now that current filesystems support more than 32,000 files in a directory. commit 85799bf89ed2649d7f3e2298de0478c50a71776d Author: Lluís Batlle i Rossell Date: Thu Mar 22 20:05:54 2012 +0100 Fixing the default of sync-before-registering Setting 'false' as default, as suggested by Eelco. I also added a comment about the setting in the code. commit 25de80e2b61208850c4a39d8ee44967ada8f040e Author: Lluís Batlle i Rossell Date: Thu Mar 22 19:57:42 2012 +0100 Adding a nix option to sync before registering a path, for non-ext* filesystems. commit 19d9762ad5fc8d8db3e9a545a89309f08572cc9f Author: Eelco Dolstra Date: Tue Mar 20 18:23:26 2012 +0100 nix-store --clear-failed-paths: Clear derivation outputs If the argument to ‘nix-store --clear-failed-paths’ is a derivation, then clear the failed state of its outputs. commit cb79e91ec3f63ac46d8f4361cb4db75e76a79981 Author: Eelco Dolstra Date: Mon Mar 19 17:05:42 2012 +0100 Fix the coverage build commit 457dd55962837fc3026686b58ad89721106356cd Author: Eelco Dolstra Date: Mon Mar 19 15:11:22 2012 +0100 Fix the Deb builds commit 4b83483142c7442663ffee488789ffe572ceaea1 Author: Eelco Dolstra Date: Mon Mar 19 14:30:59 2012 +0100 Fix the RPM commit 7f38087f35e6f74a73bfdb28da8acd8930565d51 Author: Eelco Dolstra Date: Mon Mar 19 04:14:21 2012 +0100 Add a command "nix-build --run-env" to reproduce the environment of a derivation This command builds or fetches all dependencies of the given derivation, then starts a shell with the environment variables from the derivation. This shell also sources $stdenv/setup to initialise the environment further. The current directory is not changed. Thus this is a convenient way to reproduce a build environment in an existing working tree. Existing environment variables are left untouched (unless the derivation overrides them). As a special hack, the original value of $PATH is appended to the $PATH produced by $stdenv/setup. Example session: $ nix-build --run-env '' -A xterm (the dependencies of xterm are built/fetched...) $ tar xf $src $ ./configure $ make $ emacs (... hack source ...) $ make $ ./xterm commit ea402a255f9c03a644d256b0d1443a986a2bbebb Author: Eelco Dolstra Date: Mon Mar 19 01:20:02 2012 +0100 Replace "make check" with "make installcheck" Ensuring that the tests work from the build tree requires a growing number of nasty hacks. The tests also don't verify that the installed Nix actually works. Thus, the tests now require "make install" to have been run. commit 4b23900ff1568270c9a03ccadc1cbd0b872e4ef7 Author: Eelco Dolstra Date: Mon Mar 19 01:06:13 2012 +0100 Fix the optional dependency on OpenSSL http://hydra.nixos.org/build/2306540 commit b006a31d52b8f1cb01f3d722a6e3411dc8b98d64 Author: Eelco Dolstra Date: Sun Mar 18 23:54:57 2012 +0100 Drop the externals directory Nix now requires SQLite and bzip2 to be pre-installed. SQLite is detected using pkg-config. We required DBD::SQLite anyway, so depending on SQLite is not a big problem. The --with-bzip2, --with-openssl and --with-sqlite flags are gone. commit 2e0322efd14df7a1658201fb443c8e90687dcfda Author: Eelco Dolstra Date: Sun Mar 18 22:10:59 2012 +0100 Clean up when building from a working tree commit bd50c01972718167cf86d20dcd9c928b4c3cfbd8 Author: Eelco Dolstra Date: Tue Mar 13 17:07:49 2012 +0100 Ensure that Perl processes delete their entry in the temproots directory By moving the destructor object to libstore.so, it's also run when download-using-manifests and nix-prefetch-url exit. This prevents them from cluttering /nix/var/nix/temproots with stale files. commit b461721f17d7104c7ef08a0840d80685b9ae853e Author: Eelco Dolstra Date: Mon Mar 12 21:41:45 2012 +0100 Fix tests commit 005d1e4ccb7917d1438dd8f14ddaeeff8eab0b30 Author: Eelco Dolstra Date: Tue Mar 6 20:03:20 2012 +0100 Update bzip2 dependency commit 605b16cd7bd9b29482d9029740c3a4595a483f21 Author: Eelco Dolstra Date: Mon Mar 5 22:04:40 2012 +0100 Fix compilation on FreeBSD http://hydra.nixos.org/build/2213576 Not sure why compilation doesn't fail on other platforms... commit d645633643ff806bff8fcd1677d6ac87509f40e9 Author: Eelco Dolstra Date: Mon Mar 5 20:52:24 2012 +0100 nix-copy-closure: don't print copied path on stdout We're already printing progress on stderr, so printing them on stdout afterwards is kind of useless. commit 35355fc1fcffbe859395e360c0a6a1463f137d63 Author: Eelco Dolstra Date: Mon Mar 5 20:29:00 2012 +0100 Set the close-on-exec flag on file descriptors commit 7b22bec252a155514d811a8e2acc21562ac02bd4 Author: Eelco Dolstra Date: Mon Mar 5 20:28:09 2012 +0100 Don't leak a file descriptor in commonChildInit() commit 1d487dc6a682468ae00402b3720ff412b6bfb6fc Author: Eelco Dolstra Date: Mon Mar 5 19:19:29 2012 +0100 nix-worker: put the pid of the caller in argv[1] This is useful for debugging. commit 2b4964f31979b5227a7a51b646d2e4bbb5ef6579 Author: Eelco Dolstra Date: Mon Mar 5 18:13:44 2012 +0100 Restore progress indication during nix-copy-closure commit 56042a120a3149ec7ddfb36c6f7d7b841ba6dfeb Author: Eelco Dolstra Date: Mon Mar 5 17:58:09 2012 +0100 build-remote.pl: don't wait forever for the upload lock In the build hook, don't wait forever to get the upload lock. This ensures progress if another process gets stuck while holding the upload lock. commit 8afd28a922c8d3a0113abad2b8071465c2d77fe9 Author: Eelco Dolstra Date: Thu Mar 1 16:04:12 2012 +0100 Remove dependency on sqlite3_table_column_metadata Not all SQLite builds have the function sqlite3_table_column_metadata. We were only using it in a schema upgrade check for compatibility with databases that were probably never seen in the wild. So remove it. commit 1c94524458fda335739b163a76aedeb7bcc5f43a Author: Eelco Dolstra Date: Fri Feb 24 20:57:54 2012 +0100 Fix an uninitialised variable The variable ‘useChroot’ was not initialised properly. This caused random failures if using the build hook. Seen on Mac OS X 10.7 with Clang. Thanks to KolibriFX for finding this :-) commit 6fe13e6aba771452e2637d9a8102569c1007d919 Author: Eelco Dolstra Date: Sat Feb 18 01:23:52 2012 +0100 Fix chroots builds Chroots are initialised by hard-linking inputs from the Nix store to the chroot. This doesn't work if the input has its immutable bit set, because it's forbidden to create hard links to immutable files. So temporarily clear the immutable bit when creating and destroying the chroot. Note that making regular files in the Nix store immutable isn't very reliable, since the bit can easily become cleared: for instance, if we run the garbage collector after running ‘nix-store --optimise’. So maybe we should only make directories immutable. commit bd013b6f987c23c3b99b639ba7cdbc7b694a13f5 Author: Eelco Dolstra Date: Wed Feb 15 01:31:56 2012 +0100 On Linux, make the Nix store really read-only by using the immutable bit I was bitten one time too many by Python modifying the Nix store by creating *.pyc files when run as root. On Linux, we can prevent this by setting the immutable bit on files and directories (as in ‘chattr +i’). This isn't supported by all filesystems, so it's not an error if setting the bit fails. The immutable bit is cleared by the garbage collector before deleting a path. The only tricky aspect is in optimiseStore(), since it's forbidden to create hard links to an immutable file. Thus optimiseStore() temporarily clears the immutable bit before creating the link. commit 5e57047d874e0f01dcb3bbc8b809fcc1aa82755b Author: Eelco Dolstra Date: Wed Feb 15 01:00:30 2012 +0100 Fix a broken guard around utime() Because of an outdated check for a timestamp of 0, we were calling utime() even when it wasn't necessary. commit 58ac7a17a43587001331e4a0379d38c369b99057 Author: Eelco Dolstra Date: Wed Feb 15 00:28:01 2012 +0100 Don't use deletePath() to delete a single file commit e9fc91df45c28376960a6e38c8c5f04bf9312623 Author: Eelco Dolstra Date: Thu Feb 9 18:56:48 2012 +0100 Fix error message This fixes the error message error: file `' was not found in the Nix search path (add it using $NIX_PATH or -I) commit d5a5a83ad4fb8aba3b334039f567267a0463ee5a Author: Eelco Dolstra Date: Thu Feb 9 18:27:45 2012 +0100 Use data() instead of c_str() where appropriate commit ec2827f5fc4fc8081daacb197d40d22a5e429df4 Author: Eelco Dolstra Date: Wed Feb 8 19:25:43 2012 +0100 Update .gitignore commit 4055a3b19c826dbf487599ee24116a042e37275e Author: Eelco Dolstra Date: Wed Feb 8 13:22:08 2012 +0100 Remove empty ChangeLog file commit fb95455c02c8c48d98a94fde62d666ab13b53edf Author: Eelco Dolstra Date: Wed Feb 8 12:31:14 2012 +0100 Set the versionSuffix to include the Git shortrev commit 67444f5e54163702e6c5f0dd7d85c1158291fe99 Author: Eelco Dolstra Date: Tue Feb 7 13:18:20 2012 +0000 * Build Nix for the latest Fedora and Ubuntu releases (and drop some old ones). commit f491ae97d472bfd6305a8f3e8c58fac1fdc443a4 Author: Eelco Dolstra Date: Sat Feb 4 13:50:25 2012 +0000 * Inline some functions and get rid of the indirection through EvalState::eval(). This gives a 12% speedup on ‘nix-instantiate /etc/nixos/nixos/ -A system --readonly-mode’ (from 1.01s to 0.89s). commit 2bda12ef3b2b1d9a0fc59324d723e3fa883ab223 Author: Eelco Dolstra Date: Sat Feb 4 13:27:11 2012 +0000 * Print elapsed evaluation time. commit ce86a9a0ae928f8cdbe26021b6b757bf5b9d7693 Author: Eelco Dolstra Date: Thu Feb 2 12:25:56 2012 +0000 * nix-channel: fail if we don't have write permission to the manifests directory. Previously in this situation we did add the Nix expressions from the channel to allow installation from source, but this doesn't work for binary-only channels and leads to confusing error messages. commit baa0501cc120619ac3b76eaa53fff10cffd02449 Author: Eelco Dolstra Date: Thu Jan 26 13:13:00 2012 +0000 * Fix importing a derivation. This gave a segfault. commit 4c9fdd2cd63f2f3c4e87790c5cacfdf5cd88591f Author: Eelco Dolstra Date: Thu Jan 26 13:04:50 2012 +0000 * Add a test for importing derivations. commit 330df4b4dbb363b69e10fa96d1e22f62088bfc96 Author: Eelco Dolstra Date: Thu Jan 19 23:08:47 2012 +0000 * Allow comparisons between derivations by comparing the outPath attributes. commit 18047d4625b46ae001abc649096ab9ecd4c54560 Author: Eelco Dolstra Date: Thu Jan 19 23:07:42 2012 +0000 * Add some debug output to print the derivation name once it's known. This makes it easier to pinpoint the source of a crash. commit 126c7317bc2384e64e1c6d515061141718e2688f Author: Eelco Dolstra Date: Thu Jan 19 22:10:24 2012 +0000 * Add a test case for comparing derivations. commit ddd0ce534ad8ecf9dc57749f354ea6b88b82900f Author: Eelco Dolstra Date: Wed Jan 18 16:43:48 2012 +0000 * Don't distribute Store.cc, it's generated automatically by xsubpp. commit 02f1363e19b7df7cccc3523805bbf4fafe429529 Author: Eelco Dolstra Date: Wed Jan 18 16:39:54 2012 +0000 * Pass the appropriate flags to GCC when building the Perl bindings. Without these, Nix fails on 32-bit Linux with Perl 5.14, with a rather unhelpful error message: Not a CODE reference at /nix/store/n6kpbacn6nn7i3i735v8j3di8aqyl07v-perl-5.14.2/lib/perl5/5.14.2/i686-linux-thread-multi/DynaLoader.pm This is likely because the lack of -D_FILE_OFFSET_BITS=64 causes various Perl structures to not match what the Perl interpreter expects. commit 4e624849b686894f8a4c23a56098f4d47634a85c Author: Eelco Dolstra Date: Tue Jan 17 23:07:22 2012 +0000 * Added a command ‘nix-store --print-env $drvpath’ that prints out the environment of the given derivation in a format that can be sourced by the shell, e.g. $ eval "$(nix-store --print-env $(nix-instantiate /etc/nixos/nixpkgs -A pkg))" $ NIX_BUILD_TOP=/tmp $ source $stdenv/setup This is especially useful to reproduce the environment used to build a package outside of its builder for development purposes. TODO: add a nix-build option to do the above and fetch the dependencies of the derivation as well. commit 2a3f4110c54a10ebee67403a699cb8f951fca858 Author: Eelco Dolstra Date: Fri Jan 13 23:35:07 2012 +0000 * nix-build: put the temporary derivation symlink in a temporary directory rather than the current directory. * nix-build: --drv-link now implies --add-drv-link. commit 7ae763e16b2a2524f50487ea7422e5412a080004 Author: Eelco Dolstra Date: Thu Jan 12 14:16:25 2012 +0000 * ‘-module’ causes the generated library to have an .so extension on Mac OS X instead of .dylib, so don't do that. commit 6245f0d5298f613c39f999fd68bf21aee8d72945 Author: Ludovic Courtès Date: Wed Jan 11 16:58:49 2012 +0000 tests: Run `download-using-manifests' via libtool so that dlopening works. commit c5d9ccd810e3d4c791a912767c4463f4bb44d52e Author: Ludovic Courtès Date: Wed Jan 11 16:44:42 2012 +0000 perl: Build libNixStore.la with `-module'. commit f86fca9b708ea98be0d508db90ec25d537fba246 Author: Eelco Dolstra Date: Wed Jan 11 15:41:42 2012 +0000 * Figure out the extension of dynamic libraries; don't hard-code .so. commit 9fe24c5a0d1e694c6338d584a101034cfbff10bf Author: Eelco Dolstra Date: Sat Jan 7 17:26:33 2012 +0000 * Don't create thunks for simple constants (integers, strings, paths) and allocate them only once. * Move Value and related functions into value.hh. commit d4e6b9f2d62ef77ff46397bd130350f03723ce50 Author: Eelco Dolstra Date: Thu Jan 5 21:07:12 2012 +0000 * Doh! commit a7366a764aa8d549a16b58e43181fe4ff7e598ab Author: Eelco Dolstra Date: Thu Jan 5 20:33:46 2012 +0000 * Add a -I flag to the Perl bindings to nix-build and some other scripts. * Include the version and architecture in the -I flag so that there is at least a chance that a Nix binary built for one Perl version will run on another version. commit b52966e821b05e0d2e379ed6bbbf748f22453108 Author: Eelco Dolstra Date: Wed Jan 4 21:47:48 2012 +0000 * Remove dead code. commit 35f2a6ba82419d48ed8ebce7b8c3e74e65ac74f2 Author: Eelco Dolstra Date: Wed Jan 4 21:24:11 2012 +0000 * Don't use dynamic_cast, it's very slow. "nix-instantiate /etc/nixos/nixos -A system" spent about 10% of its time in dynamic_cast. commit adaf64a99b0a882249e35768c3f4fe3de104cbb2 Merge: 63227d4 9936da6 Author: Eelco Dolstra Date: Wed Jan 4 16:22:25 2012 +0000 * Merge the multiple-outputs-sandbox branch (svn merge --reintegrate ^/nix/branches/multiple-outputs-sandbox). Multiple output support still isn't complete, but it wasn't complete in the trunk either, so it doesn't hurt. commit 9936da6b546d1ce643eca21ac76c6e7d568de1c2 Author: Eelco Dolstra Date: Wed Jan 4 12:45:53 2012 +0000 * Check whether the outputName attribute works. commit 9d43a0238235cfbe914e2051db89095699a2df95 Author: Eelco Dolstra Date: Wed Jan 4 12:45:40 2012 +0000 * Let --disable-gc work. commit a0477a458fa9fd7fbe090ff8cebcfd162c090b43 Author: Eelco Dolstra Date: Wed Jan 4 12:00:39 2012 +0000 * currentOutput -> outputName. "current" implies some temporal aspect. commit b79b85ad7668783391538fe2cda2e896f4ea0c8e Author: Eelco Dolstra Date: Wed Jan 4 11:56:15 2012 +0000 * Export the original input attributes of the derivation in ‘drvAttrs’. This will simplify the implementation of functions such as ‘overrideDerivation’ in Nixpkgs, which need to filter out any added attributes such as outPath. commit 83647f4ef14f1ecf40b9fc6099fc77864b87cf41 Author: Eelco Dolstra Date: Wed Jan 4 11:04:19 2012 +0000 * Simplify the implementation of "derivation" a bit: lift out the common attribution so that they're evaluated only once, etc. Note that the default output is now the first element of the "outputs" attribute, rather than the first element of the sorted list of outputs. This seems more user-friendly. commit 71f3c46cf65c0638946c9bb57c36a2b5f177a672 Author: Eelco Dolstra Date: Tue Jan 3 15:27:18 2012 +0000 * Drop the inefficient "Path" suffix in output attribute names. commit 921111d1972388a0aa1841c545c753cb996c9257 Author: Eelco Dolstra Date: Tue Jan 3 14:01:47 2012 +0000 * Move the implementation of the ‘derivation’ primop into a separate file. commit 6c31232e1494d1d68a31fb8433dbf593f831dff2 Merge: 502d940 63227d4 Author: Eelco Dolstra Date: Tue Jan 3 12:59:31 2012 +0000 * Sync with the trunk. commit 502d94048ae848eda1fcda2d1e72b339eaa653aa Author: Eelco Dolstra Date: Tue Jan 3 12:59:00 2012 +0000 * Ignore missing manifest symlinks. commit 63227d434cefaa9faeb14afe28ebeb9b2d449ee2 Author: Eelco Dolstra Date: Tue Jan 3 12:18:41 2012 +0000 * FreeBSD tar defaults to the tape device instead of stdout. commit 9b7df1ef007d9209b17f7aa40a03be0250ea30d0 Author: Eelco Dolstra Date: Tue Jan 3 09:19:40 2012 +0000 * Forgot to add. commit 39d45a6b090b5105423b22b8ef39c2a4a000a4a1 Author: Eelco Dolstra Date: Tue Jan 3 01:51:38 2012 +0000 * Add a test for nix-channel. * Refactor the nix-channel unpacker a bit. commit dadbb51d969517c1f2512015ab201dc99088d9a6 Author: Eelco Dolstra Date: Tue Jan 3 00:47:27 2012 +0000 * Use Nix::Config. commit 48cea0d01ef48733ab38a73a20611f63aeb1b5cc Author: Eelco Dolstra Date: Tue Jan 3 00:16:29 2012 +0000 * Refactoring: Get rid of a few subdirectories in corepkgs/, and some other simplifications. * Use to locate the corepkgs. This allows them to be overriden through $NIX_PATH. * Use bash's pipefail option in the NAR builder so that we don't need to create a temporary file. commit 93e71e6ab68d9662441289a02448c47069beeb2a Author: Eelco Dolstra Date: Fri Dec 30 17:39:03 2011 +0000 * Follow our own coding conventions. commit f2d65c9c80821616c4f5587d2bbfdec9e18bdbfd Author: Eelco Dolstra Date: Fri Dec 30 17:31:58 2011 +0000 * Remove a redundant dot (Nicolas Pierron). commit 93b56acb2dd90e106413f201c8025d2ffeba98e0 Author: Eelco Dolstra Date: Fri Dec 30 17:25:19 2011 +0000 * Support multiple outputs in nix-store (specifically the ‘--query’ and ‘--realise’ actions). commit a71d02440b03cdb5dad6e43f786c0cc86cbb87b1 Author: Eelco Dolstra Date: Fri Dec 30 17:13:25 2011 +0000 * Oops. commit 6f5e3326cef2a2049c8f4ea757accafe4fc9d53f Author: Eelco Dolstra Date: Fri Dec 30 15:02:50 2011 +0000 * Move topoSortPaths() out of gc.cc. commit b1004f40f7e4dd02feec2d0cb26bd6c95dd66dde Author: Eelco Dolstra Date: Fri Dec 30 14:47:14 2011 +0000 * Reject a build if there is a cycle among the outputs. This is necessary because existing code assumes that the references graph is acyclic. commit ed11b17b2e0e10b759ac051b53c29cc9f79574dc Author: Eelco Dolstra Date: Fri Dec 30 13:43:29 2011 +0000 * Fix doc error. commit 254b3399ba3d7cf161fa54f9cf6cdc65c17164fb Merge: 5679041 8c42a8c Author: Eelco Dolstra Date: Fri Dec 30 13:08:14 2011 +0000 * Sync with the trunk. commit 8c42a8c8ff2986940a41d46b0bdaa1c2ff0f15ad Author: Eelco Dolstra Date: Sun Dec 25 16:38:37 2011 +0000 * Make sure that lock files are cleaned up properly when building through the build hook. commit 524fa8a4f11826fdf22005f3304366856f72ffa5 Author: Eelco Dolstra Date: Thu Dec 22 16:27:03 2011 +0000 * Oops. commit b33da599c5c1b06a32a3eeac58f95481d10f821d Author: Eelco Dolstra Date: Thu Dec 22 15:55:53 2011 +0000 * In the garbage collector, delete invalid paths before deleting unreachable paths. This matters when using --max-freed etc.: unreachable paths could become reachable again, so it's nicer to keep them if there is "real" garbage to be deleted. Also, don't use readDirectory() but read the Nix store and delete invalid paths in parallel. This reduces GC latency on very large Nix stores. commit 58d974336c733416756e5b396928602ea8ed8df2 Author: Eelco Dolstra Date: Thu Dec 22 14:33:34 2011 +0000 * Drop unnecessary call to canonPath() (nixStore is already canonical). commit 66c99b0cf50bb1d6290f55c209e9541b50ce41e8 Author: Eelco Dolstra Date: Thu Dec 22 10:58:27 2011 +0000 * ‘--disable-shared’ is no longer supported. Fortunately it's not needed for the coverage analysis. commit 2aac7cd0217ce3417b12574ca7f9930090da6c4c Author: Eelco Dolstra Date: Wed Dec 21 19:17:45 2011 +0000 * Another case of lock file permissions being too liberal. commit 4d728bc3e60a6d07858f7a881221688ccdebb7fe Author: Eelco Dolstra Date: Wed Dec 21 19:11:58 2011 +0000 * Security: make sure the lock files used by build-remote.pl are not readable to other users. Otherwise, any user can open the lock file for reading and lock it, thus DoSing the remote build mechanism. commit 69d6f0936a59da5cc35040407f4b667437d61add Author: Eelco Dolstra Date: Wed Dec 21 18:59:25 2011 +0000 * Use a lock to ensure that only one build-remote instance can copy a closure to a given machine at the same time. This prevents the case where multiple instances try to copy the same missing store path to the target machine, which is very wasteful. commit 56790411323eada03bacf37fe6fd328a7c84d32a Author: Eelco Dolstra Date: Wed Dec 21 18:19:05 2011 +0000 * The ‘foo.drvPath’ feature was already broken in read-only mode. Since it's rarely used and fixing it is too much work right now, just document it. commit f8e54b7874b73891e39aff11dac2a5ceabef2f02 Author: Shea Levy Date: Wed Dec 21 17:34:44 2011 +0000 Make the reference cycle in the cyclic outputs test indirect commit b4cee3f816ad53f9762f38c28b51a78732b249f2 Author: Shea Levy Date: Wed Dec 21 17:31:34 2011 +0000 Revert previous commit It doesn't detect indirect references commit f3c88f297d837f73d8123cb12564d237d7d0df87 Author: Shea Levy Date: Wed Dec 21 17:14:28 2011 +0000 Detect and reject mutually-referential outputs There is probably a more efficient way to do this. commit b19a0f63dbb0c4910f4d9dcb391ca424ff3faeaa Author: Eelco Dolstra Date: Wed Dec 21 15:33:30 2011 +0000 * Simplify the context handling logic. commit 4be5a2c096083234e62117ce6016c4c9aa573aff Author: Eelco Dolstra Date: Wed Dec 21 14:42:06 2011 +0000 * Add a test for unsafeDiscardOutputDependency. Not really related to multiple outputs, but good to have anyway. commit 179409b9112ee9d9f858a124e0b109a46fe835c9 Author: Eelco Dolstra Date: Wed Dec 21 13:47:21 2011 +0000 * Add a test for referring to another derivation's ‘drvPath’. This currently fails in read-only mode. commit 38776198880d06dc6af0fbdfa7cb2c053000112a Author: Eelco Dolstra Date: Wed Dec 21 11:47:52 2011 +0000 * Add some accidentally committed files. commit edd9359bebe012ae40e9e1538dab8f91e2d58d3e Author: Eelco Dolstra Date: Tue Dec 20 17:10:39 2011 +0000 * Doing a GC after building a derivation with cyclic outputs currently segfaults. commit 1f3b0ede7d9b6292e054f8e5ecc52a83cbba1f09 Author: Eelco Dolstra Date: Tue Dec 20 17:08:43 2011 +0000 * Add a (currently failing) test that checks whether mutually recursive outputs are properly rejected. * Add a (also failing) test for "nix-build -A ". commit 46e42c92c1444e1dd3aec871b3750bcd7391f60e Author: Eelco Dolstra Date: Tue Dec 20 17:01:02 2011 +0000 * Refactor a bit so that more tests can be added. commit b5363810bbeea37df34a5cb0051e05161630a510 Author: Eelco Dolstra Date: Tue Dec 20 16:37:01 2011 +0000 * Fix the build. commit 194d21f9f63ceb034f3e8294f89aa6bf6a217bc9 Merge: 3c3107d 273b288 Author: Eelco Dolstra Date: Fri Dec 16 23:33:01 2011 +0000 * Sync with the trunk. commit 273b288a7e862ac1918064537ff130cc751fa9fd Author: Eelco Dolstra Date: Fri Dec 16 22:31:25 2011 +0000 * importPath() -> importPaths(). Because of buffering of the input stream it's now necessary for the daemon to process the entire sequence of exported paths, rather than letting the client do it. commit 8d3dfa2c1782e955d2b7796d19dc0d0381596b98 Author: Eelco Dolstra Date: Fri Dec 16 21:29:46 2011 +0000 * Avoid expensive conversions from char arrays to STL strings. commit e0bd307802d13476055f8ba99ab7808de0fd71e5 Author: Eelco Dolstra Date: Fri Dec 16 19:44:13 2011 +0000 * Make the import operation through the daemon much more efficient (way fewer roundtrips) by allowing the client to send data in bigger chunks. * Some refactoring. commit 78598d06f0240a15b74720d8f987daeb702318d7 Author: Eelco Dolstra Date: Fri Dec 16 15:45:42 2011 +0000 * Clean up exception handling. commit 5a1b9ed0aa3a0c240b667dbe504b61b2b68e4d16 Author: Eelco Dolstra Date: Thu Dec 15 16:19:53 2011 +0000 * Refactoring: move sink/source buffering into separate classes. * Buffer the HashSink. This speeds up hashing a bit because it prevents lots of calls to the hash update functions (e.g. nix-hash went from 9.3s to 8.7s of user time on the closure of my /var/run/current-system). commit a67b8ae22450a0fe10698042b452f5f2f322e008 Author: Eelco Dolstra Date: Thu Dec 15 14:04:35 2011 +0000 * Typo. commit a3e0656cbbfadba28518e0a29c324edaabb9874a Author: Eelco Dolstra Date: Thu Dec 15 12:32:08 2011 +0000 * Buffer reads in FdSource. Together with write buffering, this significantly cuts down the number of syscalls (e.g., for "nix-store -qR /var/run/current-system" via the daemon, it reduced the number of syscalls in the client from 29134 to 4766 and in the daemon from 44266 to 20666). commit 3a48282b0681d68147e18f7464eaddf1d188c3be Author: Eelco Dolstra Date: Wed Dec 14 23:30:06 2011 +0000 * Buffer writes in FdSink. This significantly reduces the number of system calls / context switches when dumping a NAR and in the worker protocol. commit 893cac140232478e3ce9640ccf31dbfbfc2434c0 Author: Eelco Dolstra Date: Wed Dec 14 22:41:10 2011 +0000 * Remove the terminate handler, which was only really needed because of Berkeley DB (see r8632). commit 23bf700196b4fa05a2da55798644f8adc2e1d7b1 Author: Eelco Dolstra Date: Wed Dec 14 22:31:31 2011 +0000 * Oops, the daemon test wasn't actually using the daemon. commit c8c0380744afd107611bba17127a182ecebd4e0b Author: Eelco Dolstra Date: Mon Dec 5 21:04:20 2011 +0000 * Remove unnecessary quotes. showPaths() already adds quotes. commit 000160f5b915ce784e740c139f81e0cbeda751c4 Author: Eelco Dolstra Date: Fri Dec 2 17:52:18 2011 +0000 * In ‘nix-store --verify --check-contents’, repair missing hashes rather than complain about them. commit 3964d95abff8af2dc88effcebf6d935805ee6265 Author: Eelco Dolstra Date: Fri Dec 2 12:09:50 2011 +0000 * nix-prefetch-url: rewritten in Perl. commit 92d6a5ed73e043aebe5029c1ed75449873d327ac Author: Eelco Dolstra Date: Fri Dec 2 12:09:24 2011 +0000 * Add some more functions to the Perl bindings. commit 49f59dceca37636353cf2f5f60135d7705ea154e Author: Eelco Dolstra Date: Fri Dec 2 11:47:06 2011 +0000 * Move parseHash16or32 into libutil, and use in nix-hash. commit b12b21825c949ef9b9327c6a0c9e2d5601aaf0b2 Author: Eelco Dolstra Date: Thu Dec 1 16:41:43 2011 +0000 * Allow '' syntax to be used in nix-instantiate, nix-build and nix-env, e.g., $ nix-env -f '' -i patchelf or $ nix-build '' -A login.test commit 23c38a04ccba4469b9aa98167532c236beeee0a0 Author: Eelco Dolstra Date: Thu Dec 1 13:51:05 2011 +0000 * Slight improvement. commit 24f863d86b0316c736fe9e89998cd442b8a400dd Author: Eelco Dolstra Date: Thu Dec 1 13:48:48 2011 +0000 * When doing "nix-store --add-fixed" without "--recursive" via the Nix daemon (which is an error), print a nicer error message than "Connection reset by peer" or "broken pipe". * In the daemon, log errors that occur during request parameter processing. commit be9be4c1476a46e9d0996d89613ce44d9aaa6da4 Author: Peter Simons Date: Thu Dec 1 08:03:30 2011 +0000 doc/manual/nix-env.xml: fixed "nix-env -qaA" typo commit 3c7ec8fc1b1fe3c3bf48b957c2aafa6c3ea6d846 Author: Peter Simons Date: Thu Dec 1 08:02:37 2011 +0000 doc/manual/nix-env.xml: stripped trailing whitespace commit f35c4351e5f99f1960a6ca7a3fd6dae76dcca163 Author: Eelco Dolstra Date: Tue Nov 29 22:15:07 2011 +0000 * Don't require a specific Perl version. commit 4d0407ba087f8bc3a21865309291996084fd80eb Author: Eelco Dolstra Date: Tue Nov 29 13:38:52 2011 +0000 * Fix make check. commit 1749a7b0ae943f6a208ffc3fd0f6e9506872c5b6 Author: Eelco Dolstra Date: Tue Nov 29 13:01:24 2011 +0000 * download-using-manifests: use the Perl bindings. commit b1eb8f4249dbf666afa046c45e903566e9eb2df9 Author: Eelco Dolstra Date: Tue Nov 29 13:00:41 2011 +0000 * Get rid of some superfluous error messages if a substituter fails. * Say "fetch" instead of "substitute". commit 216440b3ff1431beca7784c7ae76cb5e75446953 Author: Eelco Dolstra Date: Tue Nov 29 12:32:55 2011 +0000 * For consistency with "nix-store -q --hash", produce hashes in base-32. (This affects Hydra manifests.) commit 1df120cb05121124379676d805b8f1fb090d7e22 Author: Eelco Dolstra Date: Tue Nov 29 10:51:22 2011 +0000 * Get rid of the shell in ssh calls. commit 784083176a6c2bbda84095de97cb59126fe7c7a5 Author: Eelco Dolstra Date: Fri Nov 25 17:04:26 2011 +0000 * Fix race. commit f3bc98b0015fe333f7b1ef342143c23d0d6a2aa5 Author: Eelco Dolstra Date: Wed Nov 23 15:39:54 2011 +0000 commit 10e2b2b79e77fffed95d55a4c0b8150d4a852ec4 Author: Eelco Dolstra Date: Wed Nov 23 15:39:02 2011 +0000 * Document the --include-outputs option. commit d5ac78e0d6f21dc60bd4f4f3990a18dc2bc12c4c Author: Eelco Dolstra Date: Wed Nov 23 15:29:58 2011 +0000 * Add bzip2 and xz support to nix-copy-closure. commit 5bbd693caedd5d50994938555b3a4b535875347e Author: Eelco Dolstra Date: Wed Nov 23 15:13:37 2011 +0000 * Add an API function exportPaths() that provides the functionality of ‘nix-store --export’. * Add a Perl module that provides the functionality of ‘nix-copy-closure --to’. This is used by build-remote.pl so it no longer needs to start a separate nix-copy-closure process. Also, it uses the Perl API to do the export, so it doesn't need to start a separate nix-store process either. As a result, nix-copy-closure and build-remote.pl should no longer fail on very large closures due to an "Argument list too long" error. (Note that having very many dependencies in a single derivation can still fail because the environment can become too large. Can't be helped though.) commit ab20af3e6f83f320232d0e5f6bcfcb279c0047c0 Author: Eelco Dolstra Date: Wed Nov 23 12:21:35 2011 +0000 * build-remote.pl: drop a hard-coded reference to /nix/etc/nix. commit 993fa94fb489f46e127ef760bea8c65ef281ef7f Author: Eelco Dolstra Date: Tue Nov 22 17:28:41 2011 +0000 * Move initialisation of variables like nixConfDir from libmain to libstore so that the Perl bindings can use it as well. It's vital that the Perl bindings use the configuration file, because otherwise nix-copy-closure will fail with a ‘database locked’ message if the value of ‘use-sqlite-wal’ is changed from the default. commit 4e1ea17052b4cc2445bc2ece2136f248112b4e45 Author: Rob Vermaas Date: Mon Nov 21 15:19:51 2011 +0000 nix: add /etc/hosts with localhost entry to chroot builds. commit 4de3e2a0db8d043324e9799ada181f7e73356908 Author: Eelco Dolstra Date: Mon Nov 21 13:22:34 2011 +0000 * Doh. commit 23e933b3b3e881515993538ab774c8c7b54f8370 Author: Eelco Dolstra Date: Mon Nov 21 12:23:48 2011 +0000 * Put back the "sys_name" variable which got removed somewhere. This broke building on Cygwin and Solaris. commit a6abade8e832217c27fade5ab8b7c28003c2ac46 Author: Eelco Dolstra Date: Mon Nov 21 12:18:26 2011 +0000 * Escape the [ and ] characters in the sed call, otherwise autoconf will eat them. commit 964399c079f312312f75c41d6f58d323822b6cf0 Author: Eelco Dolstra Date: Sun Nov 20 19:23:50 2011 +0000 * "sed" on FreeBSD doesn't know the "+" operator. commit b92f76374f34068e3a41130cdba88ac2c5924804 Author: Eelco Dolstra Date: Fri Nov 18 17:25:40 2011 +0000 * In the platform, canonicalise "amd64" to "x86_64". FreeBSD 8.2's uname reports amd64. * Drop the FreeBSD version number, e.g. "i686-freebsd" instead of "i686-freebsd8.2". commit 42164d6de493fa2e0acbf1ebaf9ee0d7502b4f0b Author: Ludovic Courtès Date: Wed Nov 16 20:58:21 2011 +0000 configure: Change i*86 to i686 as has always been done. commit 45ec69cbdf7e5e7ff19d28c8f25c7f650105b253 Author: Ludovic Courtès Date: Wed Nov 16 20:39:59 2011 +0000 configure: Rely on `AC_CANONICAL_HOST' to determine the Nix system name. This should be more robust and also plays better with cross-compilation---it uses the host name, instead of using the build name. commit f8e609c3413e38d403d986020079f24a2b82c063 Author: Eelco Dolstra Date: Wed Nov 16 16:41:48 2011 +0000 * nix-pull: update the Nix manifest cache if necessary. Also, don't read the manifest just to check the version and print the number of paths. This makes nix-pull very fast for the cached cache (speeding up nixos-rebuild without the ‘--no-pull’ or ‘--fast’ options). commit d7d7910ba48d898bda2db92a4f16a6179c855f7d Author: Eelco Dolstra Date: Wed Nov 16 16:25:38 2011 +0000 * Don't decompress the manifests in /nix/var/nix/manifest. This saves disk space, and, since they're typically only decompressed once (to fill the manifest cache), doesn't make things slower. commit 63ee5e4d2a46c3619c59307d7dbb08f25d32c3e8 Author: Eelco Dolstra Date: Wed Nov 16 11:56:19 2011 +0000 * Remove obsolete line. commit a5952405d2803ae0d29955fe6725cd9195327a07 Author: Eelco Dolstra Date: Wed Nov 16 11:37:40 2011 +0000 * Re-use prepared statements across insertions into the manifest cache DB. This speeds up creating the cache from 16.1s to 7.9s on my system. commit c0b706213dad330bd51607ff73059c87f0ec5b93 Author: Eelco Dolstra Date: Mon Nov 7 21:11:59 2011 +0000 * Boldly make SQLite WAL mode the default again. Hopefully the intermittent problems are gone by now. WAL mode is preferrable because it does way fewer fsyncs. commit 3c3107da86ff71a08ce44027ee5899acf486796a Author: Shea Levy Date: Sun Nov 6 07:18:19 2011 +0000 There's no need to mess with drvPath at all commit 2ab29be70c99483dbd8cf12eece4d553c7f953f3 Author: Shea Levy Date: Sun Nov 6 07:03:14 2011 +0000 Fix faulty reversion of my changes to unsafeDiscardOutputDependency commit ca0d47a70c37999f8cc9c2e82c76661826cfd50a Author: Shea Levy Date: Sun Nov 6 06:54:05 2011 +0000 Respect all outputs passed to the derivation, not just the last one commit 24b65937e103c5cb1232c3cbcbffc12322cb8ae3 Author: Shea Levy Date: Sun Nov 6 06:28:34 2011 +0000 Remove the unused sCurrentOutput symbol commit 3522730316dbb3a9ee5a690188f02435e7260406 Author: Shea Levy Date: Sun Nov 6 06:28:30 2011 +0000 Embed output name into the context of the *OutPath attributes and extract it for input derivations Multiple outputs test passes! commit 46876ff2037541613dc17c986f9b68b8f257cb3b Author: Shea Levy Date: Sun Nov 6 06:28:25 2011 +0000 Fix stupid typo in multiple outputs test commit af2e53fd481994cca46b9c003a6a8eae50cf951c Author: Shea Levy Date: Sun Nov 6 06:28:20 2011 +0000 Include all outputs of derivations in the closure of explicitly-passed derivation paths This required adding a queryOutputDerivationNames function in the store API commit 981edeab7b6b415c71d3421da6967ec7fc232e54 Author: Shea Levy Date: Sun Nov 6 06:28:14 2011 +0000 The 'insert output between = signs' approach was not helpful commit f883afa1a1bc6c48bbb3d9c150e357c35e40c921 Author: Shea Levy Date: Sun Nov 6 06:28:08 2011 +0000 The nixinstantiate and nixstore env vars are no longer set in common.sh commit 2721e9f56f92f5bd630dcbb0104fc56159cb28d4 Merge: bffe35a a6a3f3a Author: Shea Levy Date: Sun Nov 6 00:13:09 2011 +0000 Merge from trunk commit a6a3f3a8c26fdd6900880c13e924e6879d6c714c Author: Eelco Dolstra Date: Sat Nov 5 21:23:01 2011 +0000 * Fix race condition in the test. commit fa69ff57269dfd24ff04810c04d130e3e5d94154 Author: Eelco Dolstra Date: Sat Nov 5 21:06:24 2011 +0000 * Fix the broken reference to bunzip2 in the channel unpack script. commit daed9aeac557af4ec8d3d8f00b4f3f2b8f90408a Author: Eelco Dolstra Date: Thu Nov 3 19:22:24 2011 +0000 commit d7b87bebe3ac8f47e387c79e03ceb5915e71d249 Author: Eelco Dolstra Date: Thu Nov 3 18:47:10 2011 +0000 * The Nix configuration file is usually /etc/nix/nix.conf. commit 325b5a8aee89a12c30fbfcf74503f5105be0b230 Author: Eelco Dolstra Date: Wed Nov 2 19:14:54 2011 +0000 * Fix permission on /nix/store in the manual for multi-user installs (reported by Silvio Frischknecht). commit a12095d3be095ba9d88631e21ef6d43f1ddb5cee Author: Eelco Dolstra Date: Thu Oct 27 19:06:23 2011 +0000 * In printValueAsXML, handle the case where a "type" attribute is not a string. This happens in the NixOS option system. * Remove a bogus comparison of a unsigned integer with -1. commit 00b41e46ed02d16aeea1375c14a84df02a91efba Author: Eelco Dolstra Date: Wed Oct 19 21:34:13 2011 +0000 * Print a consistent message. commit f186a9141efd20b1236b9df29de1bf4b1f2098ce Author: Eelco Dolstra Date: Tue Oct 18 21:21:22 2011 +0000 * nix-copy-closure: support ‘--dry-run’ and ‘--include-outputs’. commit 67617574280a5db534e5b5c643a3b880d1b9336c Author: Eelco Dolstra Date: Tue Oct 11 15:41:13 2011 +0000 * Use the Store API bindings in nix-copy-closure. commit d43a148204a983bf676750f50640969f8edf7350 Author: Eelco Dolstra Date: Tue Oct 11 13:58:47 2011 +0000 * Add a test for nix-copy-closure. commit 2492914fbcd1d616c89b83fda0ee08551486273e Author: Eelco Dolstra Date: Tue Oct 11 13:06:59 2011 +0000 * Move the remote building test from the NixOS tree to the Nix tree. commit c362e4d718cb31e532a4e2d708d07a57bc3bdf55 Author: Eelco Dolstra Date: Tue Oct 11 11:45:36 2011 +0000 * Move SSH.pm. commit 7d314b8c959ca5c3dda8aea9c74079f4be63e19e Author: Eelco Dolstra Date: Tue Oct 11 11:14:30 2011 +0000 * Work around a race condition starting the Nix daemon. commit 5193db048e06578191ddd3085d76aab1d2e15ad3 Author: Eelco Dolstra Date: Tue Oct 11 09:32:34 2011 +0000 * Set svn:ignore. commit a2a317eb0bc418577461105790c70b363a10cc34 Author: Eelco Dolstra Date: Tue Oct 11 09:31:55 2011 +0000 * Distribute GeneratePatches.pm. commit 5090c34ee1251dd8f0a57332feff0c99489f7faa Author: Eelco Dolstra Date: Mon Oct 10 22:40:17 2011 +0000 * Set the executable bit on scripts. commit 8af7d766f0244d5b15d89ab2d2d66b0d63e8f576 Author: Eelco Dolstra Date: Mon Oct 10 21:32:34 2011 +0000 * Refactoring: remove unnecessary variables from the tests. commit cd6d02c366af43bccdd2ef345193e4fdeca78a13 Author: Eelco Dolstra Date: Mon Oct 10 21:30:59 2011 +0000 commit 6fcdbcac202e40e5de7147ff64b34d6aaad16249 Author: Eelco Dolstra Date: Mon Oct 10 21:11:08 2011 +0000 * Install NixManifest.pm, NixConfig.pm and GeneratePatches.pm under the Nix:: namespace. commit 659c427caa39e44e5861ff1345425e4c34c9ced3 Author: Eelco Dolstra Date: Mon Oct 10 18:58:49 2011 +0000 * Hopefully perl-devel contains the required headers (untested). commit 73fe6871c479f7670f8c93b0cc9ef7bb1a851777 Author: Eelco Dolstra Date: Mon Oct 10 18:12:40 2011 +0000 * Include the Nix Perl bindings in Nix itself. This will allow the bindings to be used in Nix's own Perl scripts. The only downside is that Perl XS and Automake/libtool don't really like each other, so building is a bit tricky. commit bffe35acedafcd7c7237cb1415798362bff8a180 Author: Shea Levy Date: Mon Sep 19 04:36:49 2011 +0000 Update gitignore commit 6c38cc9025591655b893bbd2437bfd1453c0c2fa Author: Shea Levy Date: Mon Sep 19 04:15:26 2011 +0000 Ignore everything created during build commit 55481c44d4767ffde561c02b039717916e0536f6 Author: Eelco Dolstra Date: Sat Sep 17 09:53:31 2011 +0000 * Don't assume that we want a shared Nix store. commit e81c09edbf6b352ec96668be35a68037df2f6342 Author: Shea Levy Date: Fri Sep 16 11:31:00 2011 +0000 Remove the current output metadata from the string for unsaveDiscardOutputDependency commit bf50d6ad3271aaa6ac93b68e99f5acb1d9a158c7 Author: Shea Levy Date: Fri Sep 16 11:30:52 2011 +0000 Add information about which output is active to drvPath's context This will break things that depend on being able to just strip away an equals sign, so those have to be updated next commit ffa038f66dc0dfcfaf16c523830490bb606af04c Author: Shea Levy Date: Fri Sep 16 11:30:44 2011 +0000 Add an sCurrentOutput member to EvalState commit f3e410d4bffc109718d8a108258710a543ecfca6 Author: Shea Levy Date: Fri Sep 16 11:30:03 2011 +0000 Add a currentOutput attribute to derivations keep track of which output is active commit 8f28a3ba25dd0dad6411a039bc01ad87c61a6e59 Author: Shea Levy Date: Wed Sep 14 05:59:29 2011 +0000 Add a test for multiple outputs This currently fails. Yay test-driven development! commit c172d16b00dd2126eb7c4f12c26f1e30e4356f07 Author: Shea Levy Date: Wed Sep 14 05:59:17 2011 +0000 First attempt at the output-as-derivation semantics For each output, this adds a corresponding attribute to the derivation that is the same as the derivation except for outPath, which is set to the path specific to that output. Additionally, an "all" attribute is added that is a list of all of the output derivations. This has to be done outside of derivationStrict as each output is itself a derivation that contains itself (and all other outputs) as an attribute. The derivation itself is equivalent to the first output in the outputs list (or "out" if that list isn't set). commit 0b34e57eb80dbadd8f24426c4486af97cbfe40bf Author: Shea Levy Date: Wed Sep 14 00:41:02 2011 +0000 Create a branch for me to play around with finishing off the multiple outputs implementation commit 13114daa3e38abc5c84987830d9276b93251592f Author: Eelco Dolstra Date: Mon Sep 12 09:07:43 2011 +0000 * Ouch. A store upgrade could cause a substituter to be triggered, causing a deadlock. commit 281e3ed0590f253ef717a1f82123dfc569a110a1 Author: Ludovic Courtès Date: Tue Sep 6 12:11:05 2011 +0000 bootstrap: Simplify & make more robust. commit e6cb3d0a0dcfe13e9b493afdc4e2107668ec99ff Author: Eelco Dolstra Date: Tue Sep 6 12:06:30 2011 +0000 * Added a command ‘nix-store --verify-paths PATHS’ to check whether the contents of any of the given store paths have been modified. E.g. $ nix-store --verify-path $(nix-store -qR /var/run/current-system) path `/nix/store/m2smyiwbxidlprfxfz4rjlvz2c3mg58y-etc' was modified! expected hash `fc87e271c5fdf179b47939b08ad13440493805584b35e3014109d04d8436e7b8', got `20f1a47281b3c0cbe299ce47ad5ca7340b20ab34246426915fce0ee9116483aa' All paths are checked; the exit code is 1 if any path has been modified, 0 otherwise. commit 82710f96f7ea72bc0f6fcc6d736e3ad4434c1988 Author: Eelco Dolstra Date: Tue Sep 6 12:00:11 2011 +0000 * Add some -f flags, never hurts. commit 93227ff65c73e726c4ceef0cdd9439e7a4301417 Author: Eelco Dolstra Date: Wed Aug 31 21:11:50 2011 +0000 * Eliminate all uses of the global variable ‘store’ from libstore. This should also fix: nix-instantiate: ./../boost/shared_ptr.hpp:254: T* boost::shared_ptr::operator->() const [with T = nix::StoreAPI]: Assertion `px != 0' failed. which was caused by hashDerivationModulo() calling the ‘store’ object (during store upgrades) before openStore() assigned it. commit 5bcdc7e3517e6d679cad1aaba41e4deb76d5a6e7 Author: Eelco Dolstra Date: Sat Aug 27 16:59:32 2011 +0000 * Update the cleanup script. commit a95ba4cdd9aa9f9c98928732dd26fba2757ade26 Author: Eelco Dolstra Date: Wed Aug 17 14:17:19 2011 +0000 * Use last_insert_id instead of sqlite_last_insert_rowid, which you're not really supposed to use according to the DBD::SQLite docs, and fails on some systems (e.g. http://hydra.nixos.org/build/1246662). commit da18b11b05b6196376d5387b879d28b8da20f734 Author: Eelco Dolstra Date: Mon Aug 8 14:08:38 2011 +0000 * On FreeBSD, ‘touch’ is not in the test $PATH, so don't use it. commit 76e0029f7ae03f30a2fa534e1eaf141437877398 Author: Eelco Dolstra Date: Mon Aug 8 14:06:10 2011 +0000 * Add perl-DBD-SQLite as a dependency of the RPM builds. commit d374be551df964f000a04061e6ad9c81a7a8341c Author: Eelco Dolstra Date: Mon Aug 8 13:19:00 2011 +0000 * Add DBD-SQLite as a dependency to the Debian/Ubuntu builds. * Drop some old Fedora/Debian/Ubuntu releases. commit 2d663b502da16d6dc480bff7f58297d176d04246 Author: Eelco Dolstra Date: Sat Aug 6 19:45:43 2011 +0000 * Cache the result of file evaluation (i.e, memoize evalFile()). This prevents files from being evaluated and stored as values multiple times. For instance, evaluation of the ‘system’ attribute in NixOS causes ‘nixpkgs/pkgs/lib/lists.nix’ to be evaluated 2019 times. Caching gives a modest speedup and a decent memory footprint reduction (e.g., from 1.44s to 1.28s, and from 81 MiB to 59 MiB with GC_INITIAL_HEAP_SIZE=100000 on my system). commit 510033e78376987ca358cebfa020754e61733543 Author: Eelco Dolstra Date: Sat Aug 6 18:54:29 2011 +0000 * Handle syntax. commit 9d091ee99a9b962c72b3cb9485a89ba028dd1155 Author: Eelco Dolstra Date: Sat Aug 6 18:45:28 2011 +0000 * Handle the case where the search path element is a regular file. commit 00a724ebc6f049009ce0810b0ac44dd11199d88b Author: Eelco Dolstra Date: Sat Aug 6 18:24:43 2011 +0000 * Remove a debug statement. commit 07340b8be742e08f1a000475eb1f389d5525d6c8 Author: Eelco Dolstra Date: Sat Aug 6 18:23:38 2011 +0000 * Add the Nix corepkgs to the end of the search path. This makes it possible for other Nix expressions to use corepkgs (mostly useful for the buildenv function). commit c7101dac0bd2631e50846194fc841ef5ef77461f Author: Eelco Dolstra Date: Sat Aug 6 17:48:57 2011 +0000 * Allow redirections in search path entries. E.g. if you have a directory /home/eelco/src/stdenv-updates that you want to use as the directory for import such as with (import { }); then you can say $ nix-build -I nixpkgs=/home/eelco/src/stdenv-updates commit 1578b2261d28003c8c1459041302e1f3c1921c43 Author: Eelco Dolstra Date: Sat Aug 6 16:18:54 2011 +0000 * Add lang/dir* to the distribution. commit 1ecc97b6bdb27e56d832ca48cdafd3dbb5185a04 Author: Eelco Dolstra Date: Sat Aug 6 16:05:24 2011 +0000 * Add a Nix expression search path feature. Paths between angle brackets, e.g. import are resolved by looking them up relative to the elements listed in the search path. This allows us to get rid of hacks like import "${builtins.getEnv "NIXPKGS_ALL"}/pkgs/lib" The search path can be specified through the ‘-I’ command-line flag and through the colon-separated ‘NIX_PATH’ environment variable, e.g., $ nix-build -I /etc/nixos ... If a file is not found in the search path, an error message is lazily thrown. commit 54945a2950174ded83d58336061b4a9990cdbbfd Author: Eelco Dolstra Date: Sat Aug 6 13:02:55 2011 +0000 * Refactoring: move parseExprFromFile() and parseExprFromString() into the EvalState class. commit c8606664abe952f74985503c831d31ae7a7369bc Author: Eelco Dolstra Date: Wed Jul 20 18:26:00 2011 +0000 * Don't allow derivations with fixed and non-fixed outputs. commit b2027f70d992bd2d088e71ee5cea7637445766f9 Author: Eelco Dolstra Date: Wed Jul 20 18:10:47 2011 +0000 * Fix a huuuuge security hole in the Nix daemon. It didn't check that derivations added to the store by clients have "correct" output paths (meaning that the output paths are computed by hashing the derivation according to a certain algorithm). This means that a malicious user could craft a special .drv file to build *any* desired path in the store with any desired contents (so long as the path doesn't already exist). Then the attacker just needs to wait for a victim to come along and install the compromised path. For instance, if Alice (the attacker) knows that the latest Firefox derivation in Nixpkgs produces the path /nix/store/1a5nyfd4ajxbyy97r1fslhgrv70gj8a7-firefox-5.0.1 then (provided this path doesn't already exist) she can craft a .drv file that creates that path (i.e., has it as one of its outputs), add it to the store using "nix-store --add", and build it with "nix-store -r". So the fake .drv could write a Trojan to the Firefox path. Then, if user Bob (the victim) comes along and does $ nix-env -i firefox $ firefox he executes the Trojan injected by Alice. The fix is to have the Nix daemon verify that derivation outputs are correct (in addValidPath()). This required some refactoring to move the hash computation code to libstore. commit d2bfe1b071d0d71bb981535a53e9c5de43aaac81 Author: Eelco Dolstra Date: Wed Jul 20 12:15:40 2011 +0000 * Added a test that make sure that users cannot register specially-crafted derivations that produce output paths belonging to other derivations. This could be used to inject malware into the store. commit 4bdb51e621e2690e561b7581d5670af08e7b3170 Author: Eelco Dolstra Date: Wed Jul 20 11:50:13 2011 +0000 * Refactoring. commit 0243eea4b92ca1598353e31b7e3c0d195c903221 Author: Eelco Dolstra Date: Wed Jul 20 11:47:00 2011 +0000 * Create a symlink to /nix/var/nix/manifests in /nix/var/nix/gcroots if it doesn't exist. commit d329c3ea9dde17a665b32a1716d02eb13627826d Author: Eelco Dolstra Date: Mon Jul 18 23:31:03 2011 +0000 * Support multiple outputs. A derivation can declare multiple outputs by setting the ‘outputs’ attribute. For example: stdenv.mkDerivation { name = "aterm-2.5"; src = ...; outputs = [ "out" "tools" "dev" ]; configureFlags = "--bindir=$(tools)/bin --includedir=$(dev)/include"; } This derivation creates three outputs, named like this: /nix/store/gcnqgllbh01p3d448q8q6pzn2nc2gpyl-aterm-2.5 /nix/store/gjf1sgirwfnrlr0bdxyrwzpw2r304j02-aterm-2.5-tools /nix/store/hp6108bqfgxvza25nnxfs7kj88xi2vdx-aterm-2.5-dev That is, the symbolic name of the output is suffixed to the store path (except for the ‘out’ output). Each path is passed to the builder through the corresponding environment variable, e.g., ${tools}. The main reason for multiple outputs is to allow parts of a package to be distributed and garbage-collected separately. For instance, most packages depend on Glibc for its libraries, but don't need its header files. If these are separated into different store paths, then a package that depends on the Glibc libraries only causes the libraries and not the headers to be downloaded. The main problem with multiple outputs is that if one output exists while the others have been garbage-collected (or never downloaded in the first place), and we want to rebuild the other outputs, then this isn't possible because we can't clobber a valid output (it might be in active use). This currently gives an error message like: error: derivation `/nix/store/1s9zw4c8qydpjyrayxamx2z7zzp5pcgh-aterm-2.5.drv' is blocked by its output paths There are two solutions: 1) Do the build in a chroot. Then we don't need to overwrite the existing path. 2) Use hash rewriting (see the ASE-2005 paper). Scary but it should work. This is not finished yet. There is not yet an easy way to refer to non-default outputs in Nix expressions. Also, mutually recursive outputs aren't detected yet and cause the garbage collector to crash. commit d9a5959139302781d1f4ac740b1af97c18a5fd08 Author: Eelco Dolstra Date: Wed Jul 13 15:57:44 2011 +0000 * Show the default for --with-store-dir (Nix/211). commit d5d4dcd4c988363beb2bb408ac31750e4c027176 Author: Eelco Dolstra Date: Wed Jul 13 15:53:24 2011 +0000 * Allow attribute names to be strings. Based on the allow-arbitrary-strinsg-in-names patch by Marc Weber. commit e649f3168bb03053c8201489ca52f9077c0d8b17 Author: Eelco Dolstra Date: Wed Jul 13 14:05:54 2011 +0000 * Fix concurrency issues in download-using-manifests' handling of the SQLite manifest cache. The DBI AutoCommit feature caused every process to have an active transaction at all times, which could indefinitely block processes wanting to update the manifest cache. * Disable fsync() in the manifest cache because we don't need integrity (the cache can always be recreated if it gets corrupted). commit 0a623a10c7e89a80b6dc74445a0ae6240f65723e Author: Eelco Dolstra Date: Wed Jul 13 12:19:57 2011 +0000 * Allow a default value in attribute selection by writing x.y.z or default (as originally proposed in https://mail.cs.uu.nl/pipermail/nix-dev/2009-September/002989.html). For instance, an expression like stdenv.lib.attrByPath ["features" "ckSched"] false args can now be written as args.features.ckSched or false commit 2b9e29b1c8b6b8e4884a46a3ba71ee795f1f97cd Author: Eelco Dolstra Date: Wed Jul 6 12:28:57 2011 +0000 * Change the right-hand side of the ‘.’ operator from an attribute to an attribute path. This is a refactoring to support default values. commit 5580f3817c37135dcc633d84d1360a17a8878a58 Author: Eelco Dolstra Date: Wed Jul 6 10:58:53 2011 +0000 * Test case. commit 56370378023fc84eb0153b991f4138f6acd011e3 Author: Eelco Dolstra Date: Wed Jul 6 10:58:17 2011 +0000 * In the ‘?’ operator, allow attribute paths. For instance, you can write ‘attrs ? a.b’ to test whether ‘attrs’ has an attribute ‘a’ containing an attribute ‘b’. This is more convenient than ‘attrs ? a && attrs.a ? b’. Slight change in the semantics: it's no longer an error if the left-hand side of ‘?’ is not an attribute set. In that case it just returns false. So, ‘null ? foo’ no longer throws an error. commit 34f4b91820796381d04c6e00ea5e805cf53d25da Author: Eelco Dolstra Date: Mon Jul 4 14:44:53 2011 +0000 commit 1ea6e064454d10b722c2fd9361f00e6cf3561f08 Author: Ludovic Courtès Date: Thu Jun 30 15:48:40 2011 +0000 doc: Fix typo. commit 5c9e9f732df6d95d712f25de9880b7461c53d6ca Author: Ludovic Courtès Date: Thu Jun 30 15:19:13 2011 +0000 Add support for the `build-timeout' and `--timeout' options. commit 9c99aa2620b8f86c0e7f99ebfe868e8ccb306f71 Author: Eelco Dolstra Date: Mon Jun 27 09:01:09 2011 +0000 commit e4d814858559f10900eff26bb7a87fb986a87c48 Author: Eelco Dolstra Date: Mon Jun 27 08:04:54 2011 +0000 commit 4891b21f34548a362df842e5d88914f6a70b5a39 Author: Eelco Dolstra Date: Tue May 3 16:17:24 2011 +0000 * Use SQLite 3.7.6.2. commit d94cb02bfe4119a91948d31b1b9082328955dae1 Author: Eelco Dolstra Date: Tue Apr 19 10:52:35 2011 +0000 * nix-install-package: unset NIX_REMOTE because $NIX_MANIFESTS_DIR doesn't work when building through the Nix daemon. This also ensures an error message when the user doesn't have sufficient privileges to do nix-pull. commit 8c69dac8a1d25c043ddb27d5c8dde5b072030667 Author: Eelco Dolstra Date: Tue Apr 19 10:44:44 2011 +0000 * Handle error messages from the Nix worker containing the `%' character. (Nix/216) commit 4ba6afaf48db8d4cece83a6e22de26829907834f Author: Eelco Dolstra Date: Mon Apr 11 16:27:05 2011 +0000 * `nix-env -ub' (`--prebuilt-only') didn't really work because it checked too soon whether substitutes are available. That is, it did so for every available package, rather than those matching installed packages. This was very slow and subject to assertion failures. So do the check much later. Idem for `nix-env -qab' and `nix-env -ib'. commit 412914d004462977e869e610172305d33fb4d335 Author: Eelco Dolstra Date: Mon Apr 11 13:16:54 2011 +0000 * Read manifests directly into the database, rather than first reading them into memory. This brings memory use down to (more or less) O(1). For instance, on my test case, the maximum resident size of download-using-manifests while filling the DB went from 142 MiB to 11 MiB. commit 08c89714984ca64b9ddfe53c99254c70a784e81c Author: Eelco Dolstra Date: Mon Apr 11 12:40:13 2011 +0000 * Lock the database during updates. commit b2c11b9ed05d33bb938d83fbcb367256427450f6 Author: Eelco Dolstra Date: Mon Apr 11 10:23:15 2011 +0000 commit 3cbf680f5d2bfb2ed4592dd24ff8ce2b7e5765bc Author: Eelco Dolstra Date: Mon Apr 11 10:13:53 2011 +0000 * configure: detect whether DBD::SQLite is present. If necessary the location to DBI and DBD::SQLite can be passed with --with-dbi and --with-dbd-sqlite. commit 83252b4ca9cb9de45bf4a069b20d1c2d1412396e Author: Eelco Dolstra Date: Mon Apr 11 08:21:30 2011 +0000 * Subtle bug: if you import File::stat in one module, it affects other modules as well. So use symbolic field names everywhere (which is nicer anyway). commit b1882c3ef75afdaa7b0926cd146aa2857ba0d40a Author: Eelco Dolstra Date: Mon Apr 11 08:06:14 2011 +0000 * Create $manifestDir if it doesn't exist. commit 5591fcc5292616e99d9d2478ffeb4f1b51f1899e Author: Eelco Dolstra Date: Sun Apr 10 23:22:46 2011 +0000 * Cache the manifests in /nix/var/nix/manifests in a SQLite database. This significantly speeds up the download-using-manifests substituter, especially if manifests are very large. For instance, one "nix-build -A geeqie" operation that updated four packages using binary patches went from 18.5s to 1.6s. It also significantly reduces memory use. The cache is kept in /nix/var/nix/manifests/cache.sqlite. It's updated automatically when manifests are added to or removed from /nix/var/nix/manifests. It might be interesting to have nix-pull store manifests directly in the DB, rather than storing them as separate flat files, but then we would need a command line interface to delete manifests from the DB. commit 1e7e4f21ba910bcf9da89b14cf2424a4b0955bed Author: Eelco Dolstra Date: Wed Apr 6 09:16:22 2011 +0000 * Remove the localPaths feature in manifests since it's no longer used and redundant anyway. commit 0423d0692abebf16a19b65b37d4926de2539bf1c Author: Eelco Dolstra Date: Wed Mar 16 15:55:57 2011 +0000 * Print a better error message. commit 48bdbbf07042f130996c0d9116893cc9f8ed2488 Author: Eelco Dolstra Date: Tue Mar 15 13:12:59 2011 +0000 * Fix a bug in the documentation (reported by Olexiy Buyanskyy, Nix/215). commit 802c2651c84b73a54b2a89484aa463f1f0df3b94 Author: Eelco Dolstra Date: Thu Feb 17 15:08:33 2011 +0000 commit e945b52a31ab339b253df40e35828582eff77e54 Author: Eelco Dolstra Date: Thu Feb 17 13:26:33 2011 +0000 * nix-push: handle the case where the hash is not set in the DB. commit c3cee5395bec0dd9db3fb60662a170ebb7453ee1 Author: Eelco Dolstra Date: Mon Feb 14 14:56:02 2011 +0000 * Build for Ubuntu 10.04. commit 8fcaf3e9c6d820175d124be0af06c481104222a1 Author: Florian Friesdorf Date: Mon Feb 14 03:11:56 2011 +0000 make nix-mode provide 'nix-mode this enables (require 'nix-mode) commit 538b7caab013e6ec78bed2b65a7c5d345f1c737e Author: Eelco Dolstra Date: Thu Feb 10 14:31:04 2011 +0000 * Don't allocate a big initial GC address space on machines with little RAM. Even if the memory isn't actually used, it can cause problems with the overcommit heuristics in the kernel. So use a VM space of 25% of RAM, up to 384 MB. commit 5a6b0398026a8a24b206a4b4d43894f9c683792c Author: Eelco Dolstra Date: Wed Feb 9 22:59:50 2011 +0000 * Don't call GC_expand_hp unless we're actually using the garbage collector. commit f1462c208ba5d4efda864875f814c268366f4803 Author: Ludovic Courtès Date: Wed Feb 9 21:23:13 2011 +0000 Use $BDW_GC_LIBS instead of a custom variable. commit 1876ab764f5b6e42fce67bdb46a8b03131653900 Author: Eelco Dolstra Date: Wed Feb 9 14:13:09 2011 +0000 * A better fix. $boehmgc isn't set anywhere, we should use the flags returned by pkg-config. commit dfc4117e901f27276ea1ce81c852bf4d52959961 Author: Eelco Dolstra Date: Wed Feb 9 14:08:32 2011 +0000 * The GC library can't be found on Solaris (http://hydra.nixos.org/build/890714), so don't build with GC support for now. commit d159ea1b7ec007fa5e4d4bef540453c9c09c3984 Author: Eelco Dolstra Date: Wed Feb 9 14:03:16 2011 +0000 * Urgh, FreeBSD doesn't have a "seq" command. commit 3087b3f7513ce713e0b759f63b9a4e9142e46f82 Author: Eelco Dolstra Date: Wed Feb 9 12:48:54 2011 +0000 * Obsolete. commit eb94581d399b8d0945b883b14c4a892fdab95dfc Author: Eelco Dolstra Date: Wed Feb 9 12:43:44 2011 +0000 * Remove obsolete directory. commit 7bba67c4013c1eb17c3f2f0a7015dbb57aae8ac8 Author: Eelco Dolstra Date: Wed Feb 9 12:42:15 2011 +0000 * Remove obsolete file. commit d0eda1f3e9b2030e373038fd8997f033f2d7aedd Merge: 3854fc9 5439885 Author: Eelco Dolstra Date: Wed Feb 9 12:41:54 2011 +0000 * Merged the SQLite branch. commit 543988572e2abc85767da315b2acc1f971c5d07f Merge: c0340ee 3854fc9 Author: Eelco Dolstra Date: Wed Feb 9 12:25:53 2011 +0000 * Sync with the trunk. commit c0340eec5ac175f7b757d883aca71d1a4382c641 Author: Eelco Dolstra Date: Tue Feb 8 12:30:28 2011 +0000 commit 0304fda3cfdbd1e0cbc939b667cbe833eb726be1 Author: Eelco Dolstra Date: Sat Feb 5 16:40:15 2011 +0000 * Propagate the CC setting. commit aeae0beba49e98655861c5c50e573bd7d9cfb5c5 Author: Eelco Dolstra Date: Sat Feb 5 16:29:10 2011 +0000 * Clang compatibility fix. Clang actually checks template definitions when they are defined commit 3854fc9b42d16b810f62b64194b699033b03aaf1 Author: Ludovic Courtès Date: Fri Jan 14 13:55:58 2011 +0000 Remove useless inclusion from public header. commit 9db190eb31d4adc412d50bc03574951f9a1f9dae Author: Eelco Dolstra Date: Fri Jan 14 12:47:10 2011 +0000 * builtins.substring: if "start" is beyond the end of the string, return the empty string. commit d6c8b995c5c08a6c6a6b18f0b2cf5b4b95cfc1b1 Author: Eelco Dolstra Date: Wed Dec 22 10:32:32 2010 +0000 * In Hydra manifests the Size field is missing, so don't rely on it. This caused a lot of "Use of uninitialized value" warnings from Perl. commit c931a7aec5ccb2209d3c4bcf4452c807fe894d94 Author: Eelco Dolstra Date: Fri Dec 17 17:23:15 2010 +0000 * Do a short sleep after SQLITE_BUSY. commit b1eb25217217087cb70a730da5311bd0890cf6ad Author: Eelco Dolstra Date: Fri Dec 17 11:28:26 2010 +0000 * Propagate the "100" exit status for failed builds through the Nix daemon. commit eac93d6efeba68d9da95f01e10cd859eef6d85dd Author: Eelco Dolstra Date: Fri Dec 17 09:28:51 2010 +0000 * Use the right `make'. commit a0be433fec792216ac5d9af68ec1fea6c21c7c1d Author: Eelco Dolstra Date: Wed Dec 15 14:25:54 2010 +0000 * Disable X11 forwarding, it's not needed. commit f1a6b97639474dbb13a1f96b4adf77c987a97d07 Author: Eelco Dolstra Date: Wed Dec 15 08:39:37 2010 +0000 * nix-copy-closure: make sure that the shell doesn't do globbing of `+' and `?' in filenames. This is very slow if /nix/store is very large. (This is a quick hack - a cleaner solution would be to bypass the shell entirely.) commit 3dd02580e324d04ebfe999779978b4aa0f999ccd Author: Eelco Dolstra Date: Tue Dec 14 13:25:20 2010 +0000 * I forgot to catch SQLiteBusy in registerValidPaths(). So registerValidPaths() now handles busy errors and registerValidPath() is simply a wrapper around it. commit d787285af997a607bb678f39f340e663fafd3122 Author: Eelco Dolstra Date: Mon Dec 13 16:53:23 2010 +0000 * nix-instantiate: return exit status 100 to denote a permanent build failure. The build hook can use this to distinguish between transient and permanent failures on the remote side. commit 5833243c92f28759ff0fc1ff9266535a3230e2d6 Author: Eelco Dolstra Date: Mon Dec 13 13:42:34 2010 +0000 * Create /nix/var/nix/db if it's missing. commit 100becf8d1b95055c73a024f1a2b318690de72f6 Author: Eelco Dolstra Date: Mon Dec 13 13:32:58 2010 +0000 * createDirs(path): if path already exists, make sure it's a directory. * Provide a C++ wrapper around lstat(). commit d7ca6f44eb506ec315db2ba59216de59de2758b6 Author: Eelco Dolstra Date: Mon Dec 13 13:19:46 2010 +0000 * Update some comments. commit 542fc6906297fcb72cbcb01d688c2f27819e0cf7 Author: Eelco Dolstra Date: Mon Dec 13 08:39:10 2010 +0000 * When doing a query (e.g. `nix-store -r --dry-run'), don't make a lot of expensive calls to `nix-store --check-validity'. commit 4d5777681309947041ecc297074f4ce537547553 Author: Eelco Dolstra Date: Fri Dec 10 11:45:56 2010 +0000 * Use SQLite 3.7.4. commit e4720b1a79f549b3bcb0e33fe999d02d12e3ed23 Author: Eelco Dolstra Date: Wed Dec 8 18:19:15 2010 +0000 * Ignore the result of sqlite3_reset(). commit 7d0444e2446c71e79e49f46f371c62f6d20488d7 Author: Eelco Dolstra Date: Tue Dec 7 12:33:42 2010 +0000 * Bad things happen when a filehandle has the same name as a module. commit 8062d3af30b27eb4d617c14856d4f3a173f8012e Author: Eelco Dolstra Date: Mon Dec 6 15:29:38 2010 +0000 * `nix-store --verify --check-contents': don't hold the global GC lock while checking the contents, since this operation can take a very long time to finish. Also, fill in missing narSize fields in the DB while doing this. commit de79d23f76c13da820f7167cd980264b2de28bd2 Author: Eelco Dolstra Date: Sun Dec 5 18:23:19 2010 +0000 * Retry a transaction if SQLite returns SQLITE_BUSY. This can happen even with a very long busy timeout, because SQLITE_BUSY is also returned to resolve deadlocks. This should get rid of random "database is locked" errors. This is kind of hard to test though. * Fix a horrible bug in deleteFromStore(): deletePathWrapped() should be called after committing the transaction, not before, because the commit might not succeed. commit 365f3028ddfb5487f35ebbb9adc42ddf9459113d Author: Eelco Dolstra Date: Sun Dec 5 17:50:29 2010 +0000 * Use CamelCase for the Perl modules. commit f42a505ab71ba421797ac511e1221ccbefef8ab9 Author: Eelco Dolstra Date: Sun Dec 5 17:36:02 2010 +0000 * Add a script `nix-generate-patches'. * Fix the binary patching test. commit 77f7a6d591e32a4a475552f3e67e3e67b7f71a10 Author: Eelco Dolstra Date: Mon Nov 29 17:07:04 2010 +0000 * Quick hack around one of the pathological cases in bsdiff (namely, when there is a long region of 0s). On one 86 MiB case, this cut patch generation time from 44m to 2m. commit d3bba0c2d8b879950d55d508ef3fc8dec3559f8f Author: Eelco Dolstra Date: Mon Nov 29 15:26:28 2010 +0000 * Move the patch generator into a module. commit 9737a7eba0844e317591f16092879696c4f3feae Author: Eelco Dolstra Date: Mon Nov 29 09:26:05 2010 +0000 * Don't generate patches if the system type differs. commit bd48fd97f646f068ae2725b5b2f048d45866119b Author: Eelco Dolstra Date: Mon Nov 29 09:15:45 2010 +0000 * Impose a configurable time limit on patch generation. This is necessary because bsdiff has some pathological worst-case behaviour, e.g. O(n^2) on files consisting only of 0s. commit 703e5a2ce2f111c5329a8448ba47a7fbe11ad6cd Merge: d92ccbf 812fae4 Author: Eelco Dolstra Date: Thu Nov 25 14:09:13 2010 +0000 * Sync with the trunk. commit 812fae424ee7139cf9bc0d17815ee68aa3cab517 Author: Eelco Dolstra Date: Thu Nov 25 13:47:34 2010 +0000 * DrvInfo contains pointers to expressions, so DrvInfos should be traced by the garbage collector. Otherwise "nix-env -u" can crash randomly. commit d92ccbf1ac5ab68937a0e411f4daee7e427865bd Author: Eelco Dolstra Date: Wed Nov 17 18:01:37 2010 +0000 * Test whether sequences of patches work. commit 1a211d812f1808a5a9128cbfd74bb59d07487b1c Author: Eelco Dolstra Date: Wed Nov 17 17:54:49 2010 +0000 * Oops. commit a4f0365b2dfc95b60c42a702937fc801dcc8d81b Author: Eelco Dolstra Date: Wed Nov 17 17:41:59 2010 +0000 * When checking whether a patch is applicable, for efficiency, use `nix-store -q --hash' to get the hash of the base path rather than `nix-hash'. However, only do this for estimating the size of a download, not for the actual substitution, because sometimes the contents of store paths are modified (which they shouldn't, of course). commit 3d38a498404bf842ca479d42d18def1f472a6fb0 Author: Eelco Dolstra Date: Wed Nov 17 17:32:25 2010 +0000 * In the download size indication, take binary patches into account. Hopefully this doesn't slow things down too much. commit f69626ed3eb9314bbdf9b0fe5497a0c3a3465d31 Author: Eelco Dolstra Date: Wed Nov 17 15:45:09 2010 +0000 commit a07c68f05edd754e389e0757ed2deefd70aad364 Author: Eelco Dolstra Date: Wed Nov 17 15:30:07 2010 +0000 * Finally, a test for the binary patch functionality. commit bf658f016ff16af79535358c8e609a933b86e6d7 Author: Eelco Dolstra Date: Wed Nov 17 14:39:02 2010 +0000 * Test that download sizes are shown correctly. commit 1e24cbaba3a7b553569c72afddeb825001ae1dd7 Author: Eelco Dolstra Date: Wed Nov 17 14:35:14 2010 +0000 * Fix the test. commit bdf089f46362b8c9defefa0a14e3198582e12818 Author: Eelco Dolstra Date: Wed Nov 17 14:31:42 2010 +0000 * Before a build, show the disk space that the downloaded store paths will approximately require. commit 06699d4219019182d9e45ebc613ae1a1df23f257 Author: Eelco Dolstra Date: Wed Nov 17 12:57:52 2010 +0000 * Store the NAR size in the manifest. commit 5693b8a7e246af352c26c258e2af6402601839ed Author: Eelco Dolstra Date: Wed Nov 17 12:51:54 2010 +0000 * nix-push: no need to compute the NAR hash, since the Nix database already has it (`nix-store -q --hash'). commit e60c962fb8dd3d8be37c1f4ae08d5247901fa129 Author: Eelco Dolstra Date: Wed Nov 17 12:40:52 2010 +0000 * Add an operation `nix-store -q --size'. commit 1db6259076b1b8f667451da8d2e44a55ece19056 Author: Eelco Dolstra Date: Wed Nov 17 12:08:01 2010 +0000 * Implement RemoteStore::queryPathInfo(). commit a3883cbd28057a3dd2573f77dcda9a26faaac555 Author: Eelco Dolstra Date: Tue Nov 16 17:11:46 2010 +0000 * Store the size of a store path in the database (to be precise, the size of the NAR serialisation of the path, i.e., `nix-store --dump PATH'). This is useful for Hydra. commit fb9368b5a0b2457b28f19d4902bc0790123338a2 Merge: 64fd298 4aced7f Author: Eelco Dolstra Date: Tue Nov 16 12:49:47 2010 +0000 * Sync with the trunk. commit 4aced7f8d0d5d2c1057b0f46a70a37a577f81fa5 Merge: 8dadced 26def53 Author: Eelco Dolstra Date: Fri Oct 29 15:04:39 2010 +0000 * Merge the GC branch. commit 26def5392f6f6364aa0939a2d4fc7705e786d38d Author: Eelco Dolstra Date: Fri Oct 29 14:44:02 2010 +0000 * Document Boehm GC support. commit 3d71c8013efa5d347b9767af54160b3d0fd9127b Author: Eelco Dolstra Date: Fri Oct 29 14:00:47 2010 +0000 * Use pkgconfig to locate the Boehm GC (as suggested by Ludo), if --enable-gc is given. commit 14fbf85380b23efcc19c8479b65336fc7275d90b Author: Eelco Dolstra Date: Fri Oct 29 13:11:50 2010 +0000 * Set libgc's initial heap size to 384 MiB to prevent garbage collection in most cases (and therefore its performance overhead). commit 0c4828ea05798b9e070e233884739736115a830d Author: Eelco Dolstra Date: Thu Oct 28 12:50:01 2010 +0000 * new(UseGC) is inexplicably slower than GC_MALLOC, so prefer the latter. commit e11e6fb1c6709ca3f0e596a7b1fb988df2fbd9b1 Author: Eelco Dolstra Date: Thu Oct 28 12:29:40 2010 +0000 * Handle out of memory condition. commit 8a788e38ac7efc785ffe4fcf49a4e031c7784216 Author: Eelco Dolstra Date: Tue Oct 26 10:47:02 2010 +0000 * Install config.h. commit 11ccd44e95c16b9f7fcf51e75b511b1b6587397b Author: Eelco Dolstra Date: Sun Oct 24 21:48:59 2010 +0000 * We need Bison 2.4 now. commit 43535499f38acc04367eeb4dd0d9938e9f8666f8 Author: Eelco Dolstra Date: Sun Oct 24 20:09:37 2010 +0000 * When allocating an attribute set, reserve enough space for all elements. This prevents the vector from having to resize itself. commit e0b7fb8f2710ec3012afe6b9d2096f770429a389 Author: Eelco Dolstra Date: Sun Oct 24 19:52:33 2010 +0000 * Keep attribute sets in sorted order to speed up attribute lookups. * Simplify the representation of attributes in the AST. * Change the behaviour of listToAttrs() in case of duplicate names. commit 2dc6d5094183edee523a48d449eab1a376e839a2 Author: Eelco Dolstra Date: Sun Oct 24 14:20:02 2010 +0000 * Don't create thunks for variable lookups (if possible). This significantly reduces the number of values allocated (e.g. from 8.7m to 4.9m for the Bittorrent test). commit 0b305c534f989dbc3645ff03e070b0e4665fdeb7 Author: Eelco Dolstra Date: Sun Oct 24 00:41:29 2010 +0000 * Store attribute sets as a vector instead of a map (i.e. a red-black tree). This saves a lot of memory. The vector should be sorted so that names can be looked up using binary search, but this is not the case yet. (Surprisingly, looking up attributes using linear search doesn't have a big impact on performance.) Memory consumption for $ nix-instantiate /etc/nixos/nixos/tests -A bittorrent.test --readonly-mode on x86_64-linux with GC enabled is now 185 MiB (compared to 946 MiB on the trunk). commit a247d20604a97ff6e84b87f66e3338714e7964f0 Author: Eelco Dolstra Date: Sat Oct 23 22:58:24 2010 +0000 * Fix compiling without Boehm. * Fix the stats. commit 02934b12000d5a837ef4cac78025cb531330c2b3 Author: Eelco Dolstra Date: Sat Oct 23 22:55:30 2010 +0000 * Regression test for listToAttr's behaviour if an attribute name occurs multiple times. commit b2ba62170cc8359d2f8bbbd9dbacf331b98151fe Author: Eelco Dolstra Date: Sat Oct 23 21:11:59 2010 +0000 * Optimise string constants by putting them in the symbol table. commit 8ac06726b92fff66714ceee8af89068ac876875a Author: Eelco Dolstra Date: Sat Oct 23 20:07:47 2010 +0000 * Make Value smaller by not storing redundant PrimOp info. * Clear pointers in Values after overwriting them to make sure that no objects are kept alive unnecessarily. commit 3f66cfb96b6f4bbddc8bf3b15e364fd522e028bc Author: Eelco Dolstra Date: Sat Oct 23 18:18:07 2010 +0000 * Remove allocValues(). commit 4dee289550d11950d6d17482484061a4792b2eef Author: Eelco Dolstra Date: Fri Oct 22 15:51:52 2010 +0000 * In environments, store pointers to values rather than values. This improves GC effectiveness a bit more (because a live value doesn't keep other values in the environment plus the parent environments alive), and removes the need for copy nodes. commit cf7e645a48a31e04428778a8d39924a3da8a30f8 Author: Eelco Dolstra Date: Fri Oct 22 15:15:12 2010 +0000 * Regression test for __overrides. commit 41c45a9b319a5578e2731505ca3de2b9c50b4988 Author: Eelco Dolstra Date: Fri Oct 22 14:47:42 2010 +0000 * Store Value nodes outside of attribute sets. I.e., Attr now stores a pointer to a Value, rather than the Value directly. This improves the effectiveness of garbage collection a lot: if the Value is stored inside the set directly, then any live pointer to the Value causes all other attributes in the set to be live as well. commit 64c3325b0bef8c0234bf797033e129323b36ad1e Author: Eelco Dolstra Date: Fri Oct 22 13:39:15 2010 +0000 * Make building against the Boehm GC a configure option. commit 76feaf016a7e9a9b019148df5ff84a63e48dbda7 Author: Eelco Dolstra Date: Wed Oct 20 15:48:00 2010 +0000 * Keep some more stats. commit e879a0371ba7ef99da2d82547823c3f96b445fdb Author: Eelco Dolstra Date: Wed Oct 20 11:38:30 2010 +0000 * Use the Boehm garbage collector to reclaim unused memory in the Nix expression evaluator. commit b0c11cda7ef9eaef46f9868e3f3736aa72fa641c Author: Eelco Dolstra Date: Wed Oct 20 09:08:39 2010 +0000 * Evaluator garbage collection branch. commit 64fd29855a8ae49cacdaff424679821b4fd3bf57 Author: Eelco Dolstra Date: Thu Oct 14 15:55:51 2010 +0000 * Wrap deleteFromStore() in a transaction. Otherwise there might be a race with other processes that add new referrers to a path, resulting in the garbage collector crashing with "foreign key constraint failed". (Nix/4) * Make --gc --print-dead etc. interruptible. commit 8dadcede65c75488da4cc5e5d8266c4b176cb7e5 Author: Rob Vermaas Date: Wed Oct 6 19:04:04 2010 +0000 nix manual: fix 'install' -> 'uninstall' in garbage collection section of introduction commit 7119d38287659ec665a1a542c23edd1758ad3a1f Author: Eelco Dolstra Date: Mon Oct 4 22:26:38 2010 +0000 * In the referrers test, lower the nesting depth from 2500 to 1000 to prevent hitting a stack overflow bug in the garbage collector. commit 705868a8a96a10f70e629433cfffc2d5cd2703eb Author: Eelco Dolstra Date: Mon Oct 4 17:55:38 2010 +0000 * Make sure that config.h is included before the system headers, because it defines _FILE_OFFSET_BITS. Without this, on OpenSolaris the system headers define it to be 32, and then the 32-bit stat() ends up being called with a 64-bit "struct stat", or vice versa. This also ensures that we get 64-bit file sizes everywhere. * Remove the redundant call to stat() in parseExprFromFile(). The file cannot be a symlink because that's the exit condition of the loop before. commit 95f4f2cf6102f95abf6948d74907c44c3540eddd Author: Eelco Dolstra Date: Mon Oct 4 16:16:19 2010 +0000 * If std::tr1::unordered_set is unavailable, use std::set. commit 36a23e86b6ab1265bbf883dd71bc844f7c9183f3 Author: Eelco Dolstra Date: Mon Oct 4 15:50:08 2010 +0000 * "type -P" isn't portable. commit bfa6ee7d919b84a105f6376116e82240e44b990d Author: Eelco Dolstra Date: Mon Oct 4 12:30:46 2010 +0000 * Don't use SSH's `-tt' flag because it doesn't seem to work on OpenSolaris when using connection sharing. Instead have the remote side check for disconnection and kill the process group when that happens. commit 71dfe4b90bec29075f01cfbc45f8f521535bf460 Merge: e490741 450837b Author: Eelco Dolstra Date: Mon Oct 4 11:44:47 2010 +0000 * Sync with the trunk. commit 450837bcc887a47260817611d01c22e35aba92b6 Author: Eelco Dolstra Date: Mon Oct 4 11:23:07 2010 +0000 * In printMsg(), ignore failing writes to stderr if we're in an exception handler, otherwise throw an exception. We need to ignore write errors in exception handlers to ensure that cleanup code runs to completion if the other side of stderr has been closed unexpectedly. commit 4aa92450832e87018513a2453e39858fab00833a Author: Eelco Dolstra Date: Mon Oct 4 10:51:16 2010 +0000 * Hack needed for GCC 4.3.2 on OpenSolaris. commit 923736df38c1415150afbe62983daf3fee8726b1 Author: Eelco Dolstra Date: Tue Sep 14 12:47:19 2010 +0000 * Doh. Remove debug message. commit e4907411c2d902215d1a18456ce8b0c653650461 Author: Eelco Dolstra Date: Wed Sep 1 11:36:22 2010 +0000 * Only do "pragma journal_mode = ..." if the current journal mode differs from the desired mode. There is an open SQLite ticket `Executing "PRAGMA journal_mode" may delete journal file while it is in use.' commit bf0dde959771661c6893001a7e0779b65d7be490 Author: Eelco Dolstra Date: Tue Aug 31 12:36:24 2010 +0000 * Always print hook output on stderr, even if --no-build-output is set. * In the build hook, print a trace message to allow Hydra to pick up the name of the remote machine used for the build. commit e2e168f7c27f5239badf6e8705264bd907d6b82c Author: Eelco Dolstra Date: Tue Aug 31 11:47:31 2010 +0000 `nix-store --verify' improvements: * If a path has disappeared, check its referrers first, and don't try to invalidate paths that have valid referrers. Otherwise we get a foreign key constraint violation. * Read the whole Nix store directory instead of statting each valid path, which is slower. * Acquire the global GC lock. commit 80e722278ca03bf303961e2f27487dc98d042803 Author: Eelco Dolstra Date: Mon Aug 30 14:53:03 2010 +0000 * When using the build hook, distinguish between the stderr of the hook script proper, and the stdout/stderr of the builder. Only the latter should be saved in /nix/var/log/nix/drvs. * Allow the verbosity to be set through an option. * Added a flag --quiet to lower the verbosity level. commit 20acd43c25a388f5c31c2ee601f1cac88cf12f7b Author: Eelco Dolstra Date: Mon Aug 30 14:11:57 2010 +0000 * Disable the GC reachability check for now (when creating new roots), as it's hopelessly inefficient. commit 766f7084188d8c0dd0595bbbfc50fbc4f9d67a50 Author: Eelco Dolstra Date: Fri Aug 27 13:18:13 2010 +0000 * Experimental feature: allow a derivation to tell the build hook that it requires a certain feature on the build machine, e.g. requiredSystemFeatures = [ "kvm" ]; We need this in Hydra to make sure that builds that require KVM support are forwarded to machines that have KVM support. Probably this should also be enforced for local builds. commit df50916e46d80e640a36076f1c38c355b89999d4 Author: Eelco Dolstra Date: Fri Aug 27 12:10:56 2010 +0000 * Oops - "null" was displayed as "true". commit e41ecbf7303a181fd37026edb72f2f23dde7e73b Author: Eelco Dolstra Date: Fri Aug 27 11:09:04 2010 +0000 commit e437b0825018b1935f9a849382c12b1df0aeae06 Author: Eelco Dolstra Date: Wed Aug 25 20:44:28 2010 +0000 * Made the build hook mechanism more efficient. Rather than starting the hook every time we want to ask whether we can run a remote build (which can be very often), we now reuse a hook process for answering those queries until it accepts a build. So if there are N derivations to be built, at most N hooks will be started. commit 1a396f3789feefc20bdcd8a355939eb1ec5126c2 Author: Eelco Dolstra Date: Wed Aug 25 12:19:30 2010 +0000 * Don't call "cat". commit 95deba581dc3a93874b13406fb5c4dfb6747bbc3 Author: Eelco Dolstra Date: Wed Aug 25 11:54:11 2010 +0000 * In the build hook, temporarily register the derivation and its output as GC roots. This prevents a race if the garbage collector is running during the build. commit 1e5f5ea2e9f522397c05e710ae32ff7c0b0f1611 Author: Eelco Dolstra Date: Tue Aug 24 14:27:07 2010 +0000 * Correctly handle SSH failing to establish a connection. Because this didn't work right, the build hook wouldn't fall back to using other machines of the desired type. commit 034f608e004c3206ff99c55c107139c38bfe9408 Author: Eelco Dolstra Date: Tue Aug 24 14:25:33 2010 +0000 * Don't complain if the stored hash of a path is zero (unknown). commit f58f51f38007f8bfb1089c3b4c88b6e66da15f39 Author: Eelco Dolstra Date: Tue Aug 24 11:45:44 2010 +0000 * Handle the unlikely case where a derivation has no dependencies at all. commit 955d11aae738f7f9c56c51e8ab2eabdf8732aab1 Merge: 5c5ab2b c67eccc Author: Eelco Dolstra Date: Tue Aug 24 09:56:28 2010 +0000 * Sync with the trunk. commit c67eccc26d42bce9496024ac77eaa7e4ff725d01 Author: Eelco Dolstra Date: Tue Aug 24 09:21:59 2010 +0000 * nix-build: pass --cores. commit 2c8e070e5d75e1d1f610c8493b359a194c30e3b8 Author: Eelco Dolstra Date: Tue Aug 17 15:39:35 2010 +0000 * Bump the version number. commit ed133e6e6443646a21d87cf9a8eb0263f7c3f3fc Author: Eelco Dolstra Date: Tue Aug 17 14:08:44 2010 +0000 * rpmBuild already includes the disk image in the output name. commit 2de17f4edcd7ee66b1094d777cdb62ec4a786a8c Author: Eelco Dolstra Date: Tue Aug 17 10:06:26 2010 +0000 * Update date. commit 86f65edf4e519224eaa35ebc6bcf98bffe04b3d6 Author: Eelco Dolstra Date: Tue Aug 17 07:22:05 2010 +0000 * Document --cores in the manual. commit b75e1043a3a4bd72086e4007a53f0a1c3211c9fa Author: Eelco Dolstra Date: Mon Aug 16 13:23:45 2010 +0000 * Typo. commit 8ec6594d6d77d73c7f961881f6575a56d81ca77f Author: Eelco Dolstra Date: Mon Aug 16 13:01:31 2010 +0000 * Remove the "tarball" jobset argument. commit 12721a3a9a5b6f64b9150833a2e682daf9c03e4d Author: Eelco Dolstra Date: Mon Aug 16 12:38:32 2010 +0000 * Nix 0.16 release notes. commit 5fb824e896630741b6ca2c1c27d5f293f7d1f84e Author: Eelco Dolstra Date: Thu Aug 12 13:36:56 2010 +0000 * Urgh, this was supposed to go in the trunk... commit 5c5ab2bc12472f63a33cc841dcdc57f1ed8ddea5 Author: Eelco Dolstra Date: Thu Aug 12 13:34:34 2010 +0000 * Don't link against pthreads. This was added way back in r211 because Berkeley DB needed it on some platforms, but we don't use BDB anymore. On FreeBSD, if you link against pthreads, then the main thread gets a 2 MB stack which cannot be overriden (it ignores "ulimit -s"): http://www.mail-archive.com/freebsd-hackers@freebsd.org/msg62445.html This is not enough for Nix. For instance, the garbage collector can fail if there is a pathologically deep chain of references (http://hydra.nixos.org/build/556199). 2 MB is also not enough for many Nix expressions. Arguably the garbage collector shouldn't use recursion, because in NixOS unprivileged users can DOS the garbage collector by creating a sufficiently deeply nested chain of references. But getting rid of recursion is a bit harder. commit 6846ed8b442c20430b816a6b2ec926c841e38e0d Author: Eelco Dolstra Date: Thu Aug 12 09:21:50 2010 +0000 * Make --cores work when building through the Nix daemon. commit 5f9aad44caff5b2a2fb22fcf93d6ca129656984d Author: Eelco Dolstra Date: Wed Aug 11 15:28:02 2010 +0000 * nix-build: recognise --cores. commit d7875d164884b1a42d9b5ed0d92b55beeeb89a99 Author: Eelco Dolstra Date: Fri Aug 6 07:51:27 2010 +0000 * Use SQLite 3.7.0.1. commit 587dc8aa003cc5f676cc7d01b4fea984f5033107 Merge: fd9c77d 750be19 Author: Eelco Dolstra Date: Wed Aug 4 17:48:29 2010 +0000 * Sync with the trunk. commit fd9c77dfc7b90d447e6bfdb4f0d5b521184aeddb Author: Eelco Dolstra Date: Wed Aug 4 17:35:59 2010 +0000 * Use SQLite 3.7.0's write-ahead logging (WAL mode). This is a lot faster than the old mode when fsyncs are enabled, because it only performs an fsync() when doing a checkpoint, rather than at every commit. Some timings for doing a "nix-instantiate /etc/nixos/nixos -A system" after modifying the stdenv setup script: 42.5s - SQLite 3.6.23 with truncate mode and fsync 3.4s - SQLite 3.6.23 with truncate mode and no fsync 32.1s - SQLite 3.7.0 with truncate mode and fsync 16.8s - SQLite 3.7.0 with WAL mode and fsync, auto-checkpoint every 1000 pages 8.3s - SQLite 3.7.0 with WAL mode and fsync, auto-checkpoint every 8192 pages 1.7s - SQLite 3.7.0 with WAL mode and no fsync The default is now to use WAL mode with fsyncs. Because WAL doesn't work on remote filesystems such as NFS (as it uses shared memory), truncate mode can be re-enabled by setting the "use-sqlite-wal" option to false. commit 750be19ae865da3ee03c132a287148f2402ad72b Author: Eelco Dolstra Date: Wed Aug 4 12:23:59 2010 +0000 * Remove "auto" and "guess" as synonyms for 0 in the handling of build-cores and --cores. They're superfluous and just complicate the parsing. commit 7f893b7a43fdca728fd1f7a72e51d31d2a6e7147 Author: Eelco Dolstra Date: Wed Aug 4 12:13:58 2010 +0000 * Allow derivations to hint that they should not be built remotely using the build hook mechanism, by setting the derivation attribute "preferLocalBuild" to true. This has a few use cases: - The user environment builder. Since it just creates a bunch of symlinks without much computation, there is no reason to do it remotely. In fact, doing it remotely requires the entire closure of the user environment to be copied to the remote machine, which is extremely wasteful. - `fetchurl'. Performing the download on a remote machine and then copying it to the local machine involves twice as much network traffic as performing the download locally, and doesn't save any CPU cycles on the local machine. commit 315d8fbd7570532e008b03d50226f53fa9e460db Author: Eelco Dolstra Date: Wed Aug 4 09:32:42 2010 +0000 * Set the default system filter to "*". This ensures that (for instance) "nix-env -i wine" works on x86_64-linux, even though Wine is built on i686-linux. In the event that there are multiple matching derivations, prefer those built for the current system. commit 6d6200f37afe10e8da3b08582a926245538af5d6 Author: Eelco Dolstra Date: Mon Aug 2 16:31:05 2010 +0000 * Optimisation in the // operator: if one of the sets is empty, return the other set. commit 7af6a2fd71e95bdc28e0015b1e89a9b81ef32711 Author: Eelco Dolstra Date: Mon Aug 2 11:54:44 2010 +0000 * intersectAttrs: optimise for the case where the second set is larger than the first set. (That's usually the case with callPackage.) commit 532d766c279daf190728b4815b92f04623e7fb7f Author: Eelco Dolstra Date: Wed Jul 21 11:30:23 2010 +0000 * Don't barf if the source NAR for a patch has disappeared. commit 7e043d28a64b38e18511140a9a42494977ca6015 Author: Peter Simons Date: Thu Jul 15 14:35:20 2010 +0000 src/bsdiff-4.3/Makefile.am: include the 'compat-include' directory in distribution tarballs commit 60b632b173e633cc5346f8a5491ef637e1f78166 Author: Peter Simons Date: Fri Jun 25 14:05:37 2010 +0000 tests/build-hook.hook.sh: prefer more portable `...` syntax over $(...) for running sub-shells The /bin/sh interpreter on Solaris doesn't understand $(...) syntax for running sub-shells. Consequently, this test fails on Solaris. To remedy the situation, the script either needs to be run by /bin/bash -- which is non-standard --, or it needs to use the ancient but portable `...` syntax. commit a0d29040f79b365598fe75d01f72d29ab538206b Author: Peter Simons Date: Thu Jun 24 22:22:24 2010 +0000 Revert "configure.ac: make flex and bison required programs" This reverts commit 22405. Apparently, these programs aren't necessarily required when building from a release archive. commit af09fe12ddf356d93855cfe7b84d607e3103103a Author: Peter Simons Date: Thu Jun 24 17:51:31 2010 +0000 Fix build of bsdiff-4.3 on machines that don't have , such as Solaris. commit d63375d52998e91c4d79563727baa29eb0753251 Author: Peter Simons Date: Thu Jun 24 17:51:24 2010 +0000 configure.ac: Incredibly enough, tr(1) on Solaris doesn't understand A-Z syntax for ranges. commit 4c21c016c578ced9d612ea3040ea225e57c477ec Author: Peter Simons Date: Thu Jun 24 17:51:19 2010 +0000 configure.ac: make flex and bison required programs The build fails if these tools aren't available. commit bcec46057c0a99be3f0094cddfe0b06f27919f74 Author: Peter Simons Date: Thu Jun 24 17:51:13 2010 +0000 src/libutil/util.cc: include to ensure that PATH_MAX is defined commit a17071fef15115dc0e7052ebe091ffe8457f77d0 Author: Peter Simons Date: Thu Jun 24 17:51:04 2010 +0000 Include to ensure that strcpy(), strlen(), and memset() are declared. An "using namespace std" was added locally in those functions that refer to names from . That is not pretty, but it's a very portable solution, because strcpy() and friends will be found in both the 'std' and in the global namespace. commit 560ab22f7db8238672ed3117ef8bf0de8baf9155 Author: Eelco Dolstra Date: Wed Jun 23 21:11:33 2010 +0000 * Ignore packages that don't have a version. * Work on a manifest instead of a channel directory. commit 8b7f8b56f11145c1be5188113cbcdbea27e99525 Author: Peter Simons Date: Wed Jun 23 14:34:08 2010 +0000 Added support for passing an (impure) NIX_BUILD_CORES variable to build expressions. This patch adds the configuration file variable "build-cores" and the command line argument "--cores". These settings specify the number of CPU cores to utilize for parallel building within a job, i.e. by passing an appropriate "-j" flag to GNU Make. The default value is 1, which means that parallel building is *disabled*. If the number of build cores is specified as 0 (synonymously: "guess" or "auto"), then the actual value is supposed to be auto-detected by builders at run-time, i.e by calling the nproc(1) utility from coreutils. The environment variable $NIX_BUILD_CORES is available to builders, but the contents of that variable does *not* influence the hash that goes into the $out store path, i.e. the number of build cores to be utilized can be changed at will without requiring any re-builds. commit 87ef5907e97f455bd4064f4d6e5f3c972402a8b9 Merge: 3e5e0fa 819548d Author: Eelco Dolstra Date: Tue Jun 22 14:42:34 2010 +0000 * Sync. commit 819548d92f45d8aea671ca9a3e938ff928679063 Author: Eelco Dolstra Date: Tue Jun 22 14:41:22 2010 +0000 * Pass `--fallback' to the remote build to ignore failing substituters. commit 3e5e0faf9cf93c01fb621774c0c3c50ce51bdd91 Author: Eelco Dolstra Date: Mon Jun 21 11:08:09 2010 +0000 * Okay, putting a lock on the temporary directory used by importPath() doesn't work because the garbage collector doesn't actually look at locks. So r22253 was stupid. Use addTempRoot() instead. Also, locking the temporary directory in exportPath() was silly because it isn't even in the store. commit bf87cc44b4484df74388b526c89884fea166ab7f Merge: d1f6c0c b571891 Author: Eelco Dolstra Date: Mon Jun 21 07:55:38 2010 +0000 * Sync with the trunk. commit b57189174f6e11c3e9e0f7c65c08a72f689fe194 Author: Eelco Dolstra Date: Mon Jun 14 08:34:48 2010 +0000 * In importPath() and exportPath(), lock the temporary directory to prevent it from being deleted by the garbage collector. commit f16fe2af8d59fef156c29077a240a832d3e60ef2 Author: Eelco Dolstra Date: Thu Jun 10 10:29:50 2010 +0000 * builtins.toXML: propagate the string context. This is a regression from the old ATerm-based evaluator. commit d1f6c0cbe39b509545f809f08cbd580859f38e34 Author: Eelco Dolstra Date: Tue Jun 8 13:38:28 2010 +0000 * Replacing ValidPath rows doesn't work because it causes a constraint violation of the Refs table. So don't do that. commit 07ca66cf242eef3c7a6396e9353e48037034498b Author: Eelco Dolstra Date: Fri Jun 4 13:56:11 2010 +0000 * Applied a patch from David Brown to prevent `nix-store --optimise' from failing on rename() on BtrFS. commit 1ab67cf437704f51f514e2ab7856e3c87f3c88b1 Author: Eelco Dolstra Date: Wed Jun 2 09:43:04 2010 +0000 commit 89865da76d87292e5bc61f324b1ac892d40236e7 Author: Eelco Dolstra Date: Tue Jun 1 11:19:32 2010 +0000 * Turn build errors during evaluation into EvalErrors. commit a443c7573b3d76a6db107e6de974205e605a2738 Author: Eelco Dolstra Date: Tue Jun 1 10:01:14 2010 +0000 * Hack to allow derivations to disable chroot builds by setting the attribute "__noChroot = true" (requested by Rob). commit 8bcdd36f10c5adfd312493c822c95c6fa5fbd110 Author: Ludovic Courtès Date: Mon May 31 16:36:24 2010 +0000 Add XML output to `nix-store'. * src/nix-store/Makefile.am (nix_store_SOURCES): Add `xmlgraph.cc' and `xmlgraph.hh'. * src/nix-store/help.txt (Operations): Document `--xml'. * src/nix-store/nix-store.cc (opQuery): Handle `--xml'. * src/nix-store/xmlgraph.cc, src/nix-store/xmlgraph.hh: New files. commit da52f8bea0620cd55e10a8ec90306fa169f2d14f Author: Ludovic Courtès Date: Mon May 31 16:36:20 2010 +0000 Comment out dead code in `nix-store'. * src/nix-store/dotgraph.cc (pathLabel): Move within #if 0 section. commit 7343e6c8ae6d18f38f42a0714212ca5deb957c39 Author: Eelco Dolstra Date: Sun May 30 20:29:56 2010 +0000 * Remove an accidentally committed debug statement. commit b92a2e5cc2c4f6a14ceea75dfd3bcf5f64743b2f Merge: 32539e4 93cd5a4 Author: Eelco Dolstra Date: Thu May 20 12:36:03 2010 +0000 * Sync with the trunk. commit 93cd5a4a13742b48bb1db0cafe36dd90b7abc10d Author: Eelco Dolstra Date: Tue May 18 10:36:37 2010 +0000 * The << operator on values should be const. commit 32539e41d5aac3daef4a02ad47da785cbaa651e2 Merge: aa45027 b2235d8 Author: Eelco Dolstra Date: Sun May 16 17:16:00 2010 +0000 * Sync with trunk. commit b2235d81d1b3733a93fdd1397a62d0f49409dcb0 Author: Eelco Dolstra Date: Sat May 15 08:10:12 2010 +0000 * Restore the __overrides feature that was lost somewhere in the fast-eval branch. commit aa45027818af8976dc73e6a299d5d918e5c51df1 Merge: a0e3b84 8032f26 Author: Eelco Dolstra Date: Wed May 12 22:13:09 2010 +0000 * Sync with the trunk. commit 8032f26ca0bd2233de066ce5786ff976bbd641ae Merge: 4750065 bd25ac2 Author: Eelco Dolstra Date: Wed May 12 13:59:36 2010 +0000 * Merged the `fast-eval' branch. commit bd25ac2260267abd2181324e1650820da70e5e60 Author: Eelco Dolstra Date: Wed May 12 12:15:49 2010 +0000 * Print attributes in sorted order. commit 81a4b4e49bf82f17eef20d78c4f505874cf5532e Author: Eelco Dolstra Date: Wed May 12 11:23:44 2010 +0000 * Implemented tryEval, the last missing primop in the fast-eval branch. Also added a test for tryEval. commit 1a8eb6e3ec9329ee7b61ac2345c6e1d994905813 Author: Eelco Dolstra Date: Fri May 7 15:26:33 2010 +0000 commit 83dfa898706e1faa491b3a50ea20baf60abda387 Merge: 01e58ad 4750065 Author: Eelco Dolstra Date: Fri May 7 14:46:47 2010 +0000 * Sync with the trunk. commit 01e58adce0767f1a484d80fcbcf67c7945cbc146 Author: Eelco Dolstra Date: Fri May 7 12:43:57 2010 +0000 * Store position info for inherited attributes. commit 83d7b89660ebb942ad844b9be260492b2ea9fb24 Author: Eelco Dolstra Date: Fri May 7 12:33:14 2010 +0000 * Updated addErrorContext. commit e2d5e40f4fdd98e5d2ad7b77c00fb97caa3aa259 Author: Eelco Dolstra Date: Fri May 7 12:11:05 2010 +0000 * Keep track of the source positions of attributes. commit 84ce7ac76feab6e9a5c074bd1b9550ae543d1db8 Author: Eelco Dolstra Date: Thu May 6 16:46:48 2010 +0000 * Store attribute positions in the AST and report duplicate attribute errors with position info. * For all positions, use the position of the first character of the first token, rather than the last character of the first token plus one. commit 4750065ada362bd46e85879975a3148e18df5b0c Author: Ludovic Courtès Date: Wed May 5 20:46:41 2010 +0000 buildenv: Special-case Python's `site.py' and `site.pyc'. * corepkgs/buildenv/builder.pl.in (createLinks): Skip `site.py' and `site.pyc' files. commit a0e3b84fac56cad6377ecd1462058a6b29bb1ea8 Author: Eelco Dolstra Date: Tue May 4 12:42:58 2010 +0000 * Revert r15436. This was a workaround for a bug in btrfs which seems to have been fixed now. commit f92c9a0ac585d30e245c6667cbce4b035659cb11 Author: Eelco Dolstra Date: Tue May 4 10:45:10 2010 +0000 * Allow unprivileged users to do `nix-store --clear-failed-paths' and `nix-store --query-failed-paths'. commit 4bab25a28d32f0551ac20b8b9b33e79af5decf0a Author: Ludovic Courtès Date: Mon May 3 13:13:38 2010 +0000 buildenv: Special-case Python's `easy-install.pth' files. * corepkgs/buildenv/builder.pl.in (createLinks): Skip `easy-install.pth' files. Comment the hack. commit 7fa338f4bac16f83b65b95fb0397b534d5ba5d5b Author: Eelco Dolstra Date: Sun May 2 21:27:50 2010 +0000 * Don't use smart quotes where normal ASCII quotes are intended. Actually, don't use quotes at all. (Reported by Howard B. Golden.) commit c82782f9a5190c7489fb8e9bd6876b247b0de0bf Author: Eelco Dolstra Date: Tue Apr 27 09:05:11 2010 +0000 commit c778ed17687a506c46c107a7adb1f3173d8136da Author: Eelco Dolstra Date: Mon Apr 26 13:39:55 2010 +0000 * Fix the copy-from-other-stores substituter. commit ef337f7089e484929be92114dac5455d00cebb45 Author: Eelco Dolstra Date: Mon Apr 26 12:58:12 2010 +0000 commit 6199f9b93ee234139906792c8c1b4908a35df146 Author: Eelco Dolstra Date: Mon Apr 26 12:56:42 2010 +0000 * Added a command `nix-store --clear-failed-paths ' to clear the "failed" status of the given store paths. The special value `*' clears all failed paths. commit 2398af13c53217b5de5821bac0f0c44e9081c23d Author: Eelco Dolstra Date: Mon Apr 26 12:43:42 2010 +0000 * Add an command `nix-store --query-failed-paths' to list the cached failed paths (when using the `build-cache-failure' option). commit d77331d32f33cc17398d3e1422d0114309ef62de Author: Lluís Batlle i Rossell Date: Sun Apr 25 20:52:49 2010 +0000 Fixing a typo in the nix-store manual, that could confuse a bit too much (--delete/--gc) commit 2be6118f4c7e909f36d5563ad0ea70780f30cc10 Author: Eelco Dolstra Date: Fri Apr 23 09:09:32 2010 +0000 * Don't need the test program anymore. commit 0bc468f195e37a8a5f4f8b36ae6c92459e8ca652 Author: Eelco Dolstra Date: Thu Apr 22 15:08:09 2010 +0000 * Simplify the implementation of `with'. This gives a 7% speedup in evaluating the NixOS system configuration. commit ee0384fb966b7a9bd202fa6fb447788be30c4ce4 Author: Eelco Dolstra Date: Thu Apr 22 11:34:15 2010 +0000 commit ebade9ff8b8557bdae7cdaf9f70c12ceeb3dc02c Author: Eelco Dolstra Date: Thu Apr 22 11:02:24 2010 +0000 * Check for duplicate attribute names / function arguments. `make check' now succeeds :-) * An attribute set such as `{ foo = { enable = true; }; foo.port = 23; }' now parses. It was previously rejected, but I'm too lazy to implement the check. (The only reason to reject it is that the reverse, `{ foo.port = 23; foo = { enable = true; }; }', is rejected, which is kind of ugly.) commit 2d7636529f782b552b634497fd8ac876aae72fcc Author: Eelco Dolstra Date: Thu Apr 22 09:54:11 2010 +0000 * String equality tests should take the context into account. All the evaluation test cases now succeed. commit 6bbfe95e3012effa0df79066ae129ce9828a8ff2 Author: Eelco Dolstra Date: Wed Apr 21 19:25:50 2010 +0000 * Don't use an ostringstream in unparseDerivation(), because it's slow. A `nix-env -qa --drv-path \*' on Nixpkgs was spending 40% of its time in unparseDerivation() because of this (now 11%). commit 7148df797174ff742fdd8cee3c2d92e6340ee930 Author: Eelco Dolstra Date: Wed Apr 21 16:22:03 2010 +0000 * Update the expected test output (no longer an ATerm). commit 6f0f16497a8ce671c2aa9ff3cd9a27eb1f931cf2 Author: Eelco Dolstra Date: Wed Apr 21 16:18:27 2010 +0000 * Fix the interpretation of ''\ in indented strings. commit cae4efdca3a207b97244aef96161ad2974ec4e50 Author: Eelco Dolstra Date: Wed Apr 21 16:02:12 2010 +0000 * Because --parse-only no longer produces an ATerm, don't check the output. Whether it parses at all should be enough. commit 0777448ca68175b6daf3d8f5374cf43523828c47 Author: Eelco Dolstra Date: Wed Apr 21 15:57:11 2010 +0000 * Fixed builtins.genericClosure. commit fe2d869e04372de69719c3989a75247ff44b8fd4 Author: Eelco Dolstra Date: Wed Apr 21 15:08:58 2010 +0000 * Store user environment manifests as a Nix expression in $out/manifest.nix rather than as an ATerm. (Hm, I thought I committed this two days ago...) commit d66ea83a763a36e7e7b9558b90abcfe09bec1b85 Merge: f71ea9c aac5fcf Author: Eelco Dolstra Date: Tue Apr 20 09:20:29 2010 +0000 * Sync with the trunk. commit f3b8833a48472c3545ea8673d687ea9cadcedd61 Author: Eelco Dolstra Date: Mon Apr 19 14:51:58 2010 +0000 * Drop the dependency on the ATerm library. commit efc7a579e880ec15ebe9afc0d8766c85c7d53ec2 Author: Eelco Dolstra Date: Mon Apr 19 13:46:58 2010 +0000 * Don't use the ATerm library for parsing/printing .drv files. commit 55b5ddd3ca1ff4dfe4cfbfab92a4025d88ef6443 Author: Eelco Dolstra Date: Mon Apr 19 12:10:04 2010 +0000 * Added parsing of manifests in ATerm format. commit b7ff69eb7c3f97c33ec18c51ab87b7f3dd967052 Author: Eelco Dolstra Date: Mon Apr 19 10:47:56 2010 +0000 * Refactoring: move the user environment stuff into its own module. commit 5c31995bb8adb9189152ebd4f3c41ca9e8049749 Author: Eelco Dolstra Date: Fri Apr 16 15:13:47 2010 +0000 * Updated some more primops. commit 8bb0210fea89f2df70b3c10c431b1383e74093df Author: Eelco Dolstra Date: Fri Apr 16 14:07:52 2010 +0000 * _combineChannels shouldn't be an integer. commit 8ca4a001cb9e8ca2556c26a1b559b0322a8fb46a Author: Eelco Dolstra Date: Fri Apr 16 14:03:26 2010 +0000 * Improve sharing a bit. commit 497e4ad12650e27ecbaf0e056fe0c54bc12a138b Author: Eelco Dolstra Date: Fri Apr 16 13:51:01 2010 +0000 * Remove some redundant tests. commit 02c1dac90934e1b833c4d6bd9280bda27c146d80 Author: Eelco Dolstra Date: Fri Apr 16 13:44:02 2010 +0000 * In an nested `with' where the inner with is a variable (`with ...; with someVar; ...'), the contents of the variable would be clobbered. (The attributes in the outer `with' were added to the variable.) commit 04c4bd3624b094043ff0f2410c1e376a51f457f7 Author: Eelco Dolstra Date: Thu Apr 15 00:37:36 2010 +0000 * Store lists as lists of pointers to values rather than as lists of values. This improves sharing and gives another speed up. Evaluation of the NixOS system attribute is now almost 7 times faster than the old evaluator. commit e41b5828db0c154e4a3f0ed6299a987fde5bc03f Author: Eelco Dolstra Date: Wed Apr 14 23:48:46 2010 +0000 * Better stats. commit d39d3c6264707c466b21dfadd4d48653842a9156 Author: Eelco Dolstra Date: Wed Apr 14 23:25:05 2010 +0000 * Implemented inherit. commit 267dc693d2ca8dea13199f92c265fc35fdb047f6 Author: Eelco Dolstra Date: Wed Apr 14 22:59:39 2010 +0000 * Fix builtins. commit 81de12bc8fa09a89dae958a3ffc93e7a4c245db1 Author: Eelco Dolstra Date: Wed Apr 14 15:14:23 2010 +0000 * Refactoring: move variable uses to a separate class. commit 110d1557782fac4f8cafa27e5cbbcdebefb7a4c7 Author: Eelco Dolstra Date: Wed Apr 14 15:01:04 2010 +0000 * Implemented withs. commit 9985230c00226826949473c3862c0c3afea74aaf Author: Eelco Dolstra Date: Wed Apr 14 14:42:32 2010 +0000 * After parsing, compute level/displacement pairs for each variable use site, allowing environments to be stores as vectors of values rather than maps. This should speed up evaluation and reduce the number of allocations. commit 816dd3f0612111718c338842283c1ee6577b9f0a Author: Eelco Dolstra Date: Wed Apr 14 12:49:05 2010 +0000 * Remove more obsolete code. commit 011b5da0f46e9796fc68bc5daf5fe4dd4b57f933 Author: Eelco Dolstra Date: Wed Apr 14 09:39:06 2010 +0000 * Get nix-env to compile again. commit 85d13c8f93c8b251f5883d9b38051b33bab1ad3e Author: Eelco Dolstra Date: Wed Apr 14 08:37:08 2010 +0000 * Change the semantics of "with" so that inner "withs" take precedence, i.e. `with {x=1;}; with {x=2;}; x' evaluates to 2'. This has a simpler implementation and seems more natural. There doesn't seem to be any code in Nixpkgs or NixOS that relies on the old behaviour. commit 816f9c0f6fae0229961bb573dfa0f75ff42c14eb Author: Eelco Dolstra Date: Tue Apr 13 14:34:11 2010 +0000 * Use std::tr1::unordered_set instead of std::set for the symbol table. This gives a 10% speed increase on `nix-instantiate /etc/nixos/nixos -A system --readonly-mode'. commit 7d47498b5ea1ad4685bad954e5407f628f7f5595 Author: Eelco Dolstra Date: Tue Apr 13 13:42:25 2010 +0000 * Evaluate lets directly (i.e. without desugaring to `rec { attrs...; = e; }.). This prevents the unnecessary allocation of an attribute set. commit ac1e8f40d4a5c380d68bb6f1c7cef6f1e7987c1a Author: Eelco Dolstra Date: Tue Apr 13 12:25:42 2010 +0000 * Use a symbol table to represent identifiers and attribute names efficiently. The symbol table ensures that there is only one copy of each symbol, thus allowing symbols to be compared efficiently using a pointer equality test. commit 10e8b1fd15d59dc541c15f6da56f8baf58eb3aa3 Author: Eelco Dolstra Date: Mon Apr 12 23:33:23 2010 +0000 * Finished the ATerm-less parser. commit 0d272fca799f7e6da955875b2935c19542cd6b4d Author: Eelco Dolstra Date: Mon Apr 12 23:31:47 2010 +0000 * Remove some obsolete functions. commit d4f0b0fc6cdb9ae2fd5fc057d621bc80b36a7b18 Author: Eelco Dolstra Date: Mon Apr 12 22:03:27 2010 +0000 * Indented strings. commit a60317f20fbc8be8e339060d932946f6d99ece6a Author: Eelco Dolstra Date: Mon Apr 12 21:21:24 2010 +0000 * More missing constructs. commit 4d6ad5be1738c64b1de4274cafbd4b8f23ca287c Author: Eelco Dolstra Date: Mon Apr 12 18:30:11 2010 +0000 * Don't use ATerms for the abstract syntax trees anymore. Not finished yet. commit ed711f73bce8786b1a37bd718eb97276d0916484 Author: Eelco Dolstra Date: Mon Apr 12 10:38:18 2010 +0000 * Don't use ATerms to represent integers in the lexer. commit db90b88e655a0d8e501beddee966a124b2f097d8 Author: Eelco Dolstra Date: Mon Apr 12 09:50:20 2010 +0000 * Hack to support builderDefs expressions. commit 4e490025767093e287a8b7b01de52fee7ae36830 Author: Eelco Dolstra Date: Mon Apr 12 09:45:00 2010 +0000 * Doh. commit c3f228f296321991ef54e46fc621a292824b13e1 Author: Eelco Dolstra Date: Mon Apr 12 09:14:27 2010 +0000 commit aac5fcfbb54ff64c593d8919f7f52025415ea996 Author: Ludovic Courtès Date: Fri Apr 9 21:30:55 2010 +0000 Re-add `drvPath' and `outPath' attributes to XML nodes. This fixes a regression introduced in r20882 ("Add source location information to the XML output."). * src/libexpr/expr-to-xml.cc (nix::printTermAsXML): Dereference the attribute RHS from "drvPath" and "outPath". commit f3dc7ab877c736ec1500f6b503ab71a62ce90305 Author: Eelco Dolstra Date: Fri Apr 9 12:00:49 2010 +0000 * Keep more statistics about stack space usage. * Reduce stack space usage. commit b7b3dd55f9e30e2eccb54aca22830852c5c2b514 Author: Eelco Dolstra Date: Thu Apr 8 11:41:19 2010 +0000 * Remove a lot of dead code. commit 7e048eddf55637b9e81d704f6b9f1fdeca98a5ea Author: Eelco Dolstra Date: Thu Apr 8 11:25:14 2010 +0000 * Fix blackholing. If evaluation fails due to an assertion failure, then the blackhole has to be removed to ensure that repeated evaluation of the same value gives an assertion failure again rather than an "infinite recursion" error. commit af2a372bb000d4d5aeec37e43ee0f6245c1bba54 Author: Eelco Dolstra Date: Wed Apr 7 15:47:06 2010 +0000 * Update autoCallFunction() and findAlongAttrPath(). commit 9a64454faae2ab4ccedeeaad85a0e094726b4765 Author: Eelco Dolstra Date: Wed Apr 7 13:59:45 2010 +0000 * expr-to-xml -> value-to-xml. commit fc92244ba81d884e099d467a3b82fbdcbff7fc40 Author: Eelco Dolstra Date: Wed Apr 7 13:55:46 2010 +0000 * Implemented the primops necessary for generating the NixOS manual. commit a353aef0b157e7c628fd18640bd6c45215f3e606 Author: Eelco Dolstra Date: Tue Apr 6 14:15:29 2010 +0000 * In eval(), don't use the target value `v' as a temporary. Overwriting `v' breaks when the expression evaluation to an assertion failure or throw. commit a5ece7d016e72a61ca69a401e833314f538518f9 Author: Eelco Dolstra Date: Thu Apr 1 16:59:07 2010 +0000 * Removed the `~' operator. commit c172274e170a87a30420842ee07ed1f7226d7f2e Author: Eelco Dolstra Date: Thu Apr 1 14:35:03 2010 +0000 * Quick hack to make coerceToString work more or less correctly on nested lists. `nix-instantiate' can now evaluate the NixOS system derivation attribute correctly (in 2.1s on my laptop vs. 6.2s for the trunk). commit 7b851915bfbad1c561191a037a2924d2b3d2d398 Author: Eelco Dolstra Date: Thu Apr 1 12:04:57 2010 +0000 * Improve sharing. commit 95cc417d76f7d374ef63e0b49a2f83e7b9202b0c Author: Eelco Dolstra Date: Thu Apr 1 10:55:36 2010 +0000 * Functions are incomparable. commit 71f026292ba1b401237a16ab6e0fb57c36c93df5 Author: Eelco Dolstra Date: Thu Apr 1 09:55:57 2010 +0000 * Make `derivation' lazy again for performance. It also turns out that there are some places in Nixpkgs (php_configurable / composableDerivation, it seems) that call `derivation' with incorrect arguments (namely, the `name' attribute missing) but get away with it because of laziness. commit dc31305b381f69de5ac5fd4776df1a802045ff00 Author: Eelco Dolstra Date: Wed Mar 31 20:09:20 2010 +0000 * Fixed the trace primop and path comparison. * Removed exprToString and stringToExpr because there is no ATerm representation to work on anymore (and exposing the internals of the evaluator like this is not a good idea anyway). commit 979f163615745db74f3a94a71818e66c75baf9ac Author: Eelco Dolstra Date: Wed Mar 31 19:52:29 2010 +0000 * Handle string contexts. `nix-instantiate' can now correctly compute the `firefoxWrapper' attribute in Nixpkgs, and it's about 3 times faster than the trunk :-) commit d8cd3115d8e1acc9e866c67265668d5268f2c1ec Author: Eelco Dolstra Date: Wed Mar 31 19:12:08 2010 +0000 * Get nix-env to compile. commit 55e207b2dc43e426bd0dfbc2065b8853a1fc59b0 Author: Eelco Dolstra Date: Wed Mar 31 16:14:32 2010 +0000 * Cache parse trees to prevent repeated parsing of imported Nix expressions. commit 3d94be61ea562dea2098b6570f711386179913ef Author: Eelco Dolstra Date: Wed Mar 31 15:38:03 2010 +0000 * Implemented derivations. commit 51876789131e81dca9807c00773158160c3824c2 Author: Eelco Dolstra Date: Wed Mar 31 15:14:23 2010 +0000 commit f061086a93400c34f19eb54f0b34637af9f0d9cb Author: Eelco Dolstra Date: Wed Mar 31 13:35:29 2010 +0000 * Fix the broken test for listToAttrs. commit 09381cccffe675ccbc8d183f043788f99dc018cd Author: Ludovic Courtès Date: Wed Mar 31 12:38:31 2010 +0000 Make source location info in the XML output optional. * src/libexpr/expr-to-xml.cc (nix::showAttrs): Add `location' parameter. Provide location XML attributes when it's true. Update callers. (nix::printTermAsXML): Likewise. * src/libexpr/expr-to-xml.hh (nix::printTermAsXML): Update prototype; have `location' default to `false'. * src/nix-instantiate/nix-instantiate.cc (printResult, processExpr): Add `location' parameter; update callers. (run): Add support for `--no-location'. * src/nix-instantiate/help.txt: Update accordingly. * tests/lang.sh: Invoke `nix-instantiate' with `--no-location' for the XML tests. * tests/lang/eval-okay-toxml.exp, tests/lang/eval-okay-to-xml.nix: New files. commit 13c2adc897b7f18e9a7784efbd46fabd995d2798 Author: Eelco Dolstra Date: Wed Mar 31 11:05:39 2010 +0000 * Implemented `rec { inherit ...; }'. commit 4c53ca2692f0a1325ec2d085ac3a6ee313b3cdb2 Author: Eelco Dolstra Date: Wed Mar 31 09:54:12 2010 +0000 * Compare nulls. commit 471419d1fac21412dea9a47eff200d44cd75d825 Author: Ludovic Courtès Date: Wed Mar 31 08:29:05 2010 +0000 Add source location information to the XML output. * src/libexpr/expr-to-xml.cc (nix::showAttrs): Dereference the attribute RHS. Add "path", "line", and "column" XML attributes to the node when source location information is available. (nix::printTermAsXML): Likewise for functions. commit eb07a4f1ee532833407b40a9992bfe65c8a4d1d2 Author: Ludovic Courtès Date: Wed Mar 31 08:29:01 2010 +0000 Escape `>' signs in the XML output. * src/libutil/xml-writer.cc (nix::XMLWriter::writeAttrs): Escape `>'. commit 7f19e03c65693ae6a5eefc7e681b3003676d38eb Author: Eelco Dolstra Date: Tue Mar 30 22:39:48 2010 +0000 * More primops. commit 47df476daa568af9f645b6a039c028e602a7e44b Author: Eelco Dolstra Date: Tue Mar 30 18:05:54 2010 +0000 * More operators / primops. commit c9170be2bd2e735b37db7e7b4ccaca86835cb5c5 Author: Eelco Dolstra Date: Tue Mar 30 15:18:20 2010 +0000 * More primops. commit c3aa615a5f4a8bdde5d836ce91d5daa743ded065 Author: Eelco Dolstra Date: Tue Mar 30 14:39:27 2010 +0000 * More primops. commit 5b72d8a749e6718986f6e2bfef2ae725981a26ff Author: Eelco Dolstra Date: Tue Mar 30 13:47:59 2010 +0000 * Implemented `map'. commit d78a05ab4014d75fd1e394961376f02cff20ed88 Author: Eelco Dolstra Date: Tue Mar 30 09:22:33 2010 +0000 * Make `import' work. commit 31428c3a0675f7223470af726bc697dc7a228927 Author: Eelco Dolstra Date: Mon Mar 29 14:37:56 2010 +0000 * Started integrating the new evaluator. commit 52090d24185f5092bfd5f8f1fdf0d0890e19a09d Author: Eelco Dolstra Date: Mon Mar 29 10:13:51 2010 +0000 commit e3f32ac5af69641d12ad07a52f3ab495f61938f1 Author: Eelco Dolstra Date: Mon Mar 29 09:43:55 2010 +0000 commit 807a67bc7430f13e23f28d70780da0e9090e5cf2 Author: Eelco Dolstra Date: Mon Mar 29 09:43:39 2010 +0000 commit 392811eb8fb8125a6ae9661d5a0fb2a8ced31a94 Author: Eelco Dolstra Date: Sun Mar 28 18:27:07 2010 +0000 * Strings. commit d96cdcea6b910b9ca169bea0b0b71e65532e70cb Author: Eelco Dolstra Date: Sun Mar 28 16:57:16 2010 +0000 commit 3d2b835f30bf97f2e9ac8a76c4e19be384803219 Author: Eelco Dolstra Date: Sun Mar 28 16:37:39 2010 +0000 * Implemented multi-argument primops. commit 45d822f29c84644d1b795bd36999e97f30cfb8ba Author: Eelco Dolstra Date: Fri Mar 26 15:45:53 2010 +0000 * Primops (not yet finished). commit cad8726b2c7fcefae6b629320283b0f1ee4072a4 Author: Eelco Dolstra Date: Fri Mar 26 13:27:26 2010 +0000 * Implemented the `==' and `!=' operators. These now use a deep equality test, so they also work for (finite) attribute sets and lists. commit 8da118e4d03a9ecbd2116eadabd992cfef0479c5 Author: Eelco Dolstra Date: Thu Mar 25 16:35:24 2010 +0000 * Measure stack usage. commit c2ba4313fb7f2e257f6205eb3fa366376c3010b0 Author: Eelco Dolstra Date: Thu Mar 25 15:38:37 2010 +0000 * Implemented lists. commit 25eedf085d9b3a1ad7d0e6969b050a2f73234ae3 Author: Eelco Dolstra Date: Thu Mar 25 14:51:04 2010 +0000 * Quick and dirty implementation of `with'. `with e1; e2' is basically desugared to `let = e1; e2', and `lookupVar' looks in each in the environment chain for an attribute with the specified name. commit 3c9f8fc9b609b13986a1d59d08a7a79ad42d0bd5 Author: Eelco Dolstra Date: Thu Mar 25 13:10:04 2010 +0000 * Don't convert variable names to strings. commit f450384ded92cb68cf4b60b5bd9be64556aff339 Author: Eelco Dolstra Date: Thu Mar 25 12:51:14 2010 +0000 * Implement blackholing. commit ef8bd919fc8e895df402502ffb1727bad0db07b2 Author: Eelco Dolstra Date: Thu Mar 25 12:45:23 2010 +0000 * Implement `...' and default function arguments. commit 8a10360c912bc344ea9ce7f8871a47a6e036552f Author: Eelco Dolstra Date: Thu Mar 25 12:19:41 2010 +0000 * Simplify @-patterns: only `{attrs}@name' or `name@{attrs}' are now allowed. So `name1@name2', `{attrs1}@{attrs2}' and so on are now no longer legal. This is no big loss because they were not useful anyway. This also changes the output of builtins.toXML for @-patterns slightly. commit 7482349fe8ba9f285f6c7e53d8573fc367ecff8b Author: Eelco Dolstra Date: Wed Mar 24 23:40:00 2010 +0000 * Implemented attribute set pattern matches. commit 0fd3648d34b3ce52d4b55c7d7aedcc81ae32754d Author: Eelco Dolstra Date: Wed Mar 24 12:41:08 2010 +0000 * Store values in environments. commit b70bd8fe566a40f3b7c1b4dd96a7d5032d6da9c7 Author: Eelco Dolstra Date: Wed Mar 24 12:11:38 2010 +0000 * Reduce the number of value allocations in eval() by moving responsibility for allocation of the result to the caller. commit d31c59eb17d181082c955391f4e83a2cff1850a6 Author: Eelco Dolstra Date: Wed Mar 24 11:06:05 2010 +0000 * Plain lambdas. commit e8f7978274708a8e0c29903910f4942da955c926 Author: Eelco Dolstra Date: Tue Mar 23 19:19:52 2010 +0000 commit 0910ae95680011915211769577a4219384b695af Author: Eelco Dolstra Date: Tue Mar 23 17:30:50 2010 +0000 * Start of an evaluator that uses call-by-need (with thunk updating) instead of (memoised) call-by-name. commit 90039e0863469da7892830b122ccab017b29e2c8 Author: Eelco Dolstra Date: Tue Mar 23 15:09:29 2010 +0000 * Branch for experimenting with faster / less memory-hungry Nix expression evaluation. commit 71be50cc25544f742db2275b4621b92c4e938400 Author: Eelco Dolstra Date: Tue Mar 23 14:51:32 2010 +0000 * Doh. commit 3bfd3a4e9511e16d8a826cb271fc95acc2fb9845 Author: Eelco Dolstra Date: Tue Mar 23 14:26:27 2010 +0000 * Test "with as; with bs;" since nobody knows what its semantics is. commit f71ea9c911294ec72f52137175ad088a2f50ab97 Author: Eelco Dolstra Date: Tue Mar 23 10:38:59 2010 +0000 * Use SQLite 3.6.23. commit 141294ff38fb3623ae24c2d47cf0c3180cc363d3 Author: Eelco Dolstra Date: Fri Mar 19 11:36:34 2010 +0000 * Clean up error messages in killUser(). commit 74299c1cfb770fee1860e62701cd093faffa0119 Author: Eelco Dolstra Date: Wed Mar 17 12:12:45 2010 +0000 * Bump version number. commit c4cfb392d381dd68122d0fcbba71e192d0d11690 Author: Eelco Dolstra Date: Wed Mar 17 10:08:34 2010 +0000 commit 8e3d98eb41ab0516814fa34cba6198d2472bdd3e Author: Eelco Dolstra Date: Tue Mar 16 13:12:18 2010 +0000 * Release notes for Nix 0.15. commit f0c473c5f70b8d6dc072da3d6d53a898766546a2 Author: Eelco Dolstra Date: Tue Mar 16 13:01:52 2010 +0000 * Fix building on Cygwin (http://hydra.nixos.org/build/325071). commit fe1b8781ae310bfa6baea80ed475b6c3ae00d991 Author: Eelco Dolstra Date: Tue Mar 16 12:58:20 2010 +0000 * Fix a broken link (reported by Peter Koppstein). commit 741b7577c14911fed71b6d52d8d90e88ef2e05ef Author: Nicolas Pierron Date: Sun Mar 14 11:58:07 2010 +0000 Merge r20344 & r20346. commit 2fb0df83e960d6b39dd43b47cc6168cad3732746 Author: Lluís Batlle i Rossell Date: Thu Mar 11 21:22:52 2010 +0000 Uh. somehow a Makefile tab got in as spaces. Fixing. commit 13cce8ec45fd59bd8a1f1101a92576796cba97d2 Author: Lluís Batlle i Rossell Date: Thu Mar 11 20:56:25 2010 +0000 Making 'bin2c' to be built with the compiler for the local system. I copied the configure.ac code about CC_FOR_BUILD from libX11. commit e020d80e4e7b9c8850fbee378e7bd2118a351a50 Merge: 070057c 05e1504 Author: Eelco Dolstra Date: Thu Mar 11 15:45:05 2010 +0000 * Sync with the trunk. commit 05e15049a5f42ca7222c7557d7257352fe711d2e Author: Ludovic Courtès Date: Thu Mar 11 14:47:04 2010 +0000 Show the build user's group in /etc/group in chroots. * src/libstore/build.cc (nix::DerivationGoal::startBuilder): Create /etc/group showing the build user's group. commit 070057c1b9335ef2c5ff0fe12adb76e214f945ba Merge: 03afc34 c752c9f Author: Eelco Dolstra Date: Thu Mar 11 10:52:52 2010 +0000 * Sync with the trunk. commit c752c9f41aa88ff2129cdc0863fe74f76328835c Author: Ludovic Courtès Date: Thu Mar 11 10:33:04 2010 +0000 Fix thinko in r20547. * src/libstore/build.cc (nix::DerivationGoal::startBuilder): Fix the GID of the build user in /etc/passwd. commit 2e8eaca573ccda707ff42c136a6f38a34f2975b4 Author: Ludovic Courtès Date: Thu Mar 11 10:21:23 2010 +0000 Clear supplementary groups of `nixbld' in /etc/passwd in chroots. * src/libstore/build.cc (nix::DerivationGoal::startBuilder): Don't display any supplementary groups for `nixbld' in /etc/passwd. commit 03afc34805c0dbd5f354b823cb8391fed99c6539 Author: Eelco Dolstra Date: Wed Mar 10 13:07:37 2010 +0000 * Simplify. commit 1a65142ec40c92b2df9973a1fc8d948e146e05d8 Author: Eelco Dolstra Date: Wed Mar 10 12:46:25 2010 +0000 * Remove a debug statement. commit 4c356acd044dffbf459ac895b483b49959042931 Author: Eelco Dolstra Date: Tue Mar 9 14:32:03 2010 +0000 * In `nix-store --export', abort if the contents of a path has changed. This prevents corrupt paths from spreading to other machines. Note that checking the hash is cheap because we're hashing anyway (because of the --sign feature). commit 44f6e6de77dd318800775d594b1f33cffa2be9a5 Author: Eelco Dolstra Date: Mon Mar 8 21:31:42 2010 +0000 * Set `gc-keep-outputs' or `gc-keep-derivations' to false with `--delete --ignore-liveness'. commit 2e4ef03aa3247782339f3d5af8547b448d38b8d2 Author: Eelco Dolstra Date: Mon Mar 8 10:35:45 2010 +0000 * Increase the sqlite timeout. commit 05fbf61f0e4f2670d23929235e2da5342599d447 Author: Eelco Dolstra Date: Fri Mar 5 18:26:47 2010 +0000 * nix-prefetch-url depends on sed (see http://hydra.nixos.org/build/311170). commit 04791840f4dd4d6bcc96aea133e9fda7c03897de Author: Eelco Dolstra Date: Fri Mar 5 12:54:58 2010 +0000 * Emit warning='1' or error='1' attributes for lines marked as warnings or errors with \e[w or \e[e. commit bc6f7fc139b5a72306a54c89db74bf126cca9ca7 Author: Eelco Dolstra Date: Thu Mar 4 13:03:26 2010 +0000 * Remove some unused functions. commit fb6e223ddce9b7ff157c5b89569a54562e9eabd1 Merge: 5ff87c9 84a4dd5 Author: Eelco Dolstra Date: Thu Mar 4 12:15:00 2010 +0000 * Synced with the trunk. commit 5ff87c982e913d14adeba1c4ee833738a6b58293 Author: Eelco Dolstra Date: Wed Mar 3 16:17:09 2010 +0000 commit e14e2399ed5b1ffc30f08d1f30f19d2ceb24dabb Author: Eelco Dolstra Date: Tue Mar 2 20:23:42 2010 +0000 * Prevent a potential memory corruption problem if an ATerm garbage collection happens during fixAttrs(). commit 158aa8931776c61e19cec62e7cea7c45961fdcc7 Author: Eelco Dolstra Date: Tue Mar 2 20:22:46 2010 +0000 * Ensure that `make install' works without a prior `make'. commit 56af8e86e3e00d8417838f582221e60e1d5f5fdb Author: Eelco Dolstra Date: Tue Mar 2 20:09:12 2010 +0000 * Protect the `true', `false' and `__overrides' constants. Without an ATprotect call, these could be garbage collected, leading to weird crashes or wrong results. commit 3f9e647ae8c4928a8fc4de0d704119245f58ff45 Author: Eelco Dolstra Date: Tue Mar 2 19:04:17 2010 +0000 * checkInterrupt() shouldn't be called from a destructor. commit d8c5745c41de1a1217cfeac2d4af85146cb87e0f Author: Eelco Dolstra Date: Tue Mar 2 17:12:47 2010 +0000 * Support static builds. commit e07d7284a221a11ceda340dea80ed392e0a8a381 Author: Eelco Dolstra Date: Tue Mar 2 16:55:07 2010 +0000 * Fix DESTDIR builds. commit 5414b3b2dbb539a5d1f3cd48c59178ff1bb3aa08 Author: Eelco Dolstra Date: Tue Mar 2 16:40:40 2010 +0000 * Remove the --enable-static-nix flag. commit 594eaddd1157db8abe2e1c47cdf2180f027559ad Author: Eelco Dolstra Date: Tue Mar 2 15:58:13 2010 +0000 * When using the included sqlite/aterm libraries, build with --enable-shared. * In libutil/libstore/libexpr etc., link against sqlite and aterm. * Some more header file hygiene. commit 966ffb29a7a7de00f3521da05f325ae8c7e8e35e Author: Eelco Dolstra Date: Fri Feb 26 13:10:57 2010 +0000 * Update the Valgrind suppressions for ATerm 2.5. commit 24035b98b155dd2d35414bdf015b3d7ab9a57af7 Author: Eelco Dolstra Date: Fri Feb 26 12:05:01 2010 +0000 * Implement RemoteStore::queryValidPaths(). commit e42401ee7b0c0b166677595d4fd1255176ba33c2 Author: Eelco Dolstra Date: Thu Feb 25 15:52:22 2010 +0000 * Implement RemoteStore::queryDerivationOutputs(). commit af565c348a286fb55ad17f8c3c4233465d32a9f6 Author: Eelco Dolstra Date: Wed Feb 24 16:44:43 2010 +0000 * Support read-only access to the database. commit e33f67ff0b02cc8fc2e0024dd87a6d61467df177 Author: Eelco Dolstra Date: Wed Feb 24 16:30:20 2010 +0000 * Refactor the upgrade / database initialisation logic a bit. commit 84a4dd5ff08ceb7894d8dce662265d7d188e615c Author: Eelco Dolstra Date: Wed Feb 24 15:46:06 2010 +0000 * Don't use fdatasync since it doesn't work on Snow Leopard. * Don't refer to config.h in util.hh, because config.h is not installed (http://hydra.nixos.org/build/303053). commit cfe742cfc50e40b590e75200179013dd62b07bde Author: Eelco Dolstra Date: Wed Feb 24 15:07:23 2010 +0000 * A function to query just the database id of a valid path. commit 6baa2a2f5ef5b11859b95f453338efaf7c5b2724 Author: Eelco Dolstra Date: Wed Feb 24 14:39:52 2010 +0000 commit 9fd85c94de90ec91ccf8a4bf04e8911e6e3e483b Author: Eelco Dolstra Date: Wed Feb 24 14:22:34 2010 +0000 * Use `truncate' journal mode, which should be a bit faster. commit fefd467539683e45e3682a54cefc67ead33eb346 Author: Eelco Dolstra Date: Wed Feb 24 13:24:27 2010 +0000 * `helpText' is now zero-terminated. commit 21b134b4e5d150690bc56ede1da3790705d637aa Author: Eelco Dolstra Date: Wed Feb 24 13:13:39 2010 +0000 commit a3c63d0d6c2570ce3218be809f67dddc5239cdff Author: Eelco Dolstra Date: Wed Feb 24 13:12:57 2010 +0000 * Disable fsync() in SQLite if the fsync-metadata option is set to false. * Change the default for `fsync-metadata' to true. * Disable `fsync-metadata' in `make check'. commit 90b6352d0a5d08dc7feabcfde92653dd1f6e324b Author: Eelco Dolstra Date: Wed Feb 24 12:48:00 2010 +0000 * Do registerValidPaths() in one transaction, which is much faster. E.g. it cuts the runtime of the referrers test from 50s to 23s. commit fae0427324269e420d8ea5774f2fab2330acda9d Author: Eelco Dolstra Date: Wed Feb 24 12:25:48 2010 +0000 * ADDITIONAL_NETWORK_LIBS -> LIBS. commit fa6a4fcb11fa6db1c35cd1199ce8d1dc794e6cd4 Author: Eelco Dolstra Date: Wed Feb 24 12:18:48 2010 +0000 * Add ${sqlite_lib} everywhere. Just adding it in `libstore' doesn't work on x86_64 when sqlite is compiled statically. commit 5954eadf6741e0b4cdab23c414d7a6b470cd06db Author: Eelco Dolstra Date: Wed Feb 24 12:16:50 2010 +0000 * Remove the fdatasync check since it's no longer needed. commit bb82310dba8a70b539122db20712fbd8fd9e840e Author: Eelco Dolstra Date: Wed Feb 24 11:06:17 2010 +0000 * Set the path to sqlite3 properly. commit 69d9df7fe6a0c4043e6f913137b5322bc5c48073 Author: Eelco Dolstra Date: Wed Feb 24 11:04:03 2010 +0000 * Don't fork so much. commit 462bd50aefca3d70e76ccf17f42c2aef4714c95b Author: Eelco Dolstra Date: Wed Feb 24 10:57:57 2010 +0000 * Use normal (rather than full) synchronous mode, which I gather from the description at http://www.sqlite.org/atomiccommit.html should be safe enough. commit 8520de4720a798701a41b6ab3e6cf8d6cc71caa3 Author: Eelco Dolstra Date: Wed Feb 24 10:48:57 2010 +0000 * Include the sqlite tarball in the Nix tarball. commit dc6d1ec67ea7af4e509c171852620befb9184441 Author: Eelco Dolstra Date: Tue Feb 23 23:24:49 2010 +0000 commit 63b09c5e414f9592f52d4f3a19185df6f8c00e42 Author: Eelco Dolstra Date: Tue Feb 23 22:31:38 2010 +0000 commit 0efc986ba1c0de97fd0bdb97db2ca6b7a77ee7d4 Merge: b4e6d98 7db2831 Author: Eelco Dolstra Date: Tue Feb 23 22:14:33 2010 +0000 * Sync with the trunk. commit b4e6d98fc33df055c8230903bb7d9633042a6374 Author: Eelco Dolstra Date: Tue Feb 23 22:12:46 2010 +0000 * configure: flag --with-sqlite. commit 7db2831d3a76bc239bb7a9f7573152ce12413c29 Author: Eelco Dolstra Date: Tue Feb 23 16:17:21 2010 +0000 * Use ATerm 2.5. commit 5ccb6f64f44671a01d457bcd3afd863055347363 Author: Eelco Dolstra Date: Tue Feb 23 12:26:35 2010 +0000 * Run ATerm's `make check'. commit 2b20318b0e968432438a7528b2d11d05585877c2 Author: Eelco Dolstra Date: Mon Feb 22 14:24:37 2010 +0000 commit 9cda61694957f2f0428779319f85f626578d0cf0 Author: Eelco Dolstra Date: Mon Feb 22 14:18:55 2010 +0000 * The database needs a trigger to get rid of self-references to prevent a foreign key constraint violation on the Refs table when deleting a path. commit c4d388add4942f6f99a8df12f4e49149005047e2 Author: Eelco Dolstra Date: Mon Feb 22 12:44:36 2010 +0000 * Get derivation outputs from the database instead of the .drv file, which requires more I/O. commit 103cfee056cbc8f002929fd5958e305c1a75fe45 Author: Eelco Dolstra Date: Mon Feb 22 11:44:17 2010 +0000 * Revert r19650 (implement gc-keep-outputs by looking for derivations with the same name as the output) and instead use the DerivationOutputs table in the database, which is the correct way to to do things. commit 299ff64812ce166d230f1b630f794be226c7a178 Author: Eelco Dolstra Date: Mon Feb 22 11:15:50 2010 +0000 * Put the derivation outputs in the database. This is useful for the garbage collector. commit 1930570ad96e47de9e8557a7734c7bfd9f36f942 Author: Eelco Dolstra Date: Fri Feb 19 17:15:22 2010 +0000 * Foreign key support in SQLite is not a persistent setting, so enable it at startup. * Implement negative caching. Now `make check' passes. commit 9c9a88e9e25bdc4456368a40691e61acf5d3b330 Author: Eelco Dolstra Date: Fri Feb 19 16:43:25 2010 +0000 * Implement more stuff. commit 762cee72ccd860e72c7b639a1dd542ac0f298bb2 Author: Eelco Dolstra Date: Fri Feb 19 16:04:51 2010 +0000 * Implement registerValidPath(). commit 268f9aaf286294c05f34be338ac4ec75e20d1442 Author: Eelco Dolstra Date: Thu Feb 18 16:51:27 2010 +0000 * Implemented queryValidPaths() and verifyStore(). commit 836e5b6f5741c845da08490a6fd8ad9a3f37726e Author: Eelco Dolstra Date: Thu Feb 18 16:21:59 2010 +0000 * Implemented queryReferrers(). commit 77cb9e3fb19005a40724cb42773d2b11e2528858 Author: Eelco Dolstra Date: Thu Feb 18 15:52:57 2010 +0000 * Implement queryPathInfo(). commit 885e22b16e3a6ea2a94014d33de31d756fa32eda Author: Eelco Dolstra Date: Thu Feb 18 15:11:08 2010 +0000 * Implement isValidPath(). commit cfb09e0fadf7db240f4f8c35c35c13b192456b89 Author: Eelco Dolstra Date: Thu Feb 18 14:40:07 2010 +0000 * Automatically abort transactions if they go out of scope without committing. commit e0305bb7a8b24fe1ea8b36cc2e5fe77ab151ae2f Author: Eelco Dolstra Date: Thu Feb 18 14:30:42 2010 +0000 * Some wrapper objects to ensure that SQLite objects are properly destroyed. commit a053d2d8e53f2967c64ab2b204727e4c27f06c0e Author: Eelco Dolstra Date: Thu Feb 18 13:48:18 2010 +0000 * Add the deriver to the ValidPaths table. In principle we could now store all the derivers of a path efficiently. But that opens a big can of worms with respect to garbage collector semantics. commit dbddac0fe91072b402ccb3801c952e3159f0cba4 Author: Eelco Dolstra Date: Thu Feb 18 13:40:46 2010 +0000 * Assign an integer id to every row in the ValidPaths table in order to make the Refs table more space-efficient. For instance, this reduces the size of the database on my laptop from 93 MiB to 18 MiB. (It was 72 MiB with the old schema on an ext3 disk with a 1 KiB block size.) commit c1a07f94451cfa93aa9ac986188d0e9a536e4b9f Author: Eelco Dolstra Date: Thu Feb 18 13:16:59 2010 +0000 * Convert the Nix database to SQLite. commit eaaa13ce475687ac0d0e2d3c22c7de73a9a83a49 Author: Eelco Dolstra Date: Thu Feb 18 13:14:51 2010 +0000 * Experimental branch for using SQLite to store the Nix database. commit 68e55cd9da7902ac8c8859507657cb013e234da4 Author: Eelco Dolstra Date: Tue Feb 16 00:10:39 2010 +0000 * Since Hydra now escapes `+', `=' and `?' to %NN in URIs, nix-prefetch-url should unescape them, because `%' is not a valid character in store path names. commit 3b3e1025c3d94dacb4c19c89f02e6a8684f93e58 Author: Eelco Dolstra Date: Fri Feb 12 10:50:30 2010 +0000 * Typo. Reported by Peter Koppstein. commit 20186a40791f662696857720d414dd7cd2ace8a2 Author: Ludovic Courtès Date: Wed Feb 10 15:55:50 2010 +0000 Don't rely on `PATH_MAX' on GNU. commit d0bf4adb1f8c72640c9e80dee30f96e173dfab87 Author: Ludovic Courtès Date: Wed Feb 10 15:55:46 2010 +0000 Add `.gitignore'. commit e08dbff9a891ad2ba29c65612780f2a6c7e88750 Author: Eelco Dolstra Date: Fri Feb 5 10:17:13 2010 +0000 * Fix a broken link (reported by Bjorn Buckwalter). commit e1e91a37316b97627705864cb4828c17b2e2bfce Author: Eelco Dolstra Date: Thu Feb 4 15:46:04 2010 +0000 * Bump. commit 817f4f7908c4f4a77a9bcd05aeef1b600a115300 Author: Eelco Dolstra Date: Thu Feb 4 14:43:43 2010 +0000 * Grmbl. Timing-sensitive tests are evil. commit f36b7e7579a72d145ce84a654c5d95a315bb6115 Author: Eelco Dolstra Date: Thu Feb 4 14:00:47 2010 +0000 commit 719cebcac2e31e6c9e4f747ae35b8e6800952e0c Author: Eelco Dolstra Date: Thu Feb 4 09:38:09 2010 +0000 * "Fix" incorrect help message. commit 443673620d908cb35c569c929701ba6b4c9dfc69 Author: Eelco Dolstra Date: Thu Feb 4 02:38:40 2010 +0000 * Don't use ssh's -f flag since it leads to lots of lingering ssh processes. commit 7ec5a659252148ad87191108622e9ab7e9712605 Author: Eelco Dolstra Date: Thu Feb 4 02:18:29 2010 +0000 * Doh! The scope of $slotLock should extend to the end of the script, because otherwise the lock will be released at the end of the while loop. commit c9b2d80bcda33e3e26c1a2afc7b76e3bc0a8489d Author: Eelco Dolstra Date: Thu Feb 4 02:05:34 2010 +0000 * Typo. commit 3cfe65e516a75696addcf0281674f644a0933ea5 Author: Eelco Dolstra Date: Thu Feb 4 02:05:22 2010 +0000 * Doh! Calling `system' in an END block causes the exit status in $? to be changed to 0. commit e51a276907f46daf8dbc177829f8db05c0e43372 Author: Eelco Dolstra Date: Thu Feb 4 01:39:23 2010 +0000 * Remove the `cat' calls when not using --gzip. commit 408913bbafefdd5a4058013ce1d8791e6c3123f8 Author: Eelco Dolstra Date: Thu Feb 4 00:12:57 2010 +0000 * Revert r19796 for now. commit 4e17be7981026f0317fb12f166282be2d972889e Author: Eelco Dolstra Date: Wed Feb 3 21:38:41 2010 +0000 * Revert r19797, and use a simpler solution: just don't monitor build hooks for silence. It's unnecessary because the remote nix-store command is already monitoring the real build. commit f859a8d3c33cc275f41d983bfeff2a21a9f88f1b Author: Eelco Dolstra Date: Wed Feb 3 21:22:57 2010 +0000 * While waiting for a lock, print a sign of life every 5 minutes. This prevents remote builders from being killed by the `max-silent-time' inactivity monitor while they are waiting for a long garbage collection to finish. This happens fairly often in the Hydra build farm. commit c45de33c67a7273fc87a654696d15010df0f5c6d Author: Eelco Dolstra Date: Wed Feb 3 21:13:37 2010 +0000 * Respect @sysconfdir@. commit d0c32dc135f147ad352e28ff8c648e611516edec Author: Eelco Dolstra Date: Wed Feb 3 20:35:37 2010 +0000 * In the build hook, if connecting to a machine fails, try the other machines of the right type (if available). This makes the build farm more robust to failures. commit f56a039775930d4ba2b4504440b7ab37dfefeb75 Author: Eelco Dolstra Date: Wed Feb 3 20:12:18 2010 +0000 * Use SSH connection sharing in the remote build script. * Removed the Cygwin password hack since the problem is apparently fixed in Visual Studio. commit bc1e478db160059753c4bf4cb28dd50437a76b27 Author: Eelco Dolstra Date: Wed Feb 3 15:34:52 2010 +0000 * nix-copy-closure: start only one SSH connection to the server, or recycle an already existing connection (using OpenSSH's connection sharing feature). commit 4d8a85b8f56625616c993d0bace0a4e856e7f2c5 Author: Eelco Dolstra Date: Wed Feb 3 11:00:35 2010 +0000 * Updated the release notes. commit 3ce5f07793c22c95ebc8b0ddc9b105f5e72623f7 Author: Eelco Dolstra Date: Tue Feb 2 17:01:16 2010 +0000 * Ugly hack to make `nix-channel' work on Cygwin. commit e839802720af75e5af321b46a3921695ed696e79 Author: Eelco Dolstra Date: Tue Feb 2 15:29:18 2010 +0000 * Don't do a chdir to $tmpDir. It's not necessary, and Windows doesn't support deleting the current directory. commit 4bbbe25802ee5d625d05b9566bcc488b93974692 Author: Eelco Dolstra Date: Tue Feb 2 15:28:36 2010 +0000 * Remove most Cygwin-specific code. Cygwin 1.7 implements advisory POSIX locks, and simulates Unix-style file deletion semantics sufficiently. Note that this means that Nix won't work on Cygwin 1.5 anymore. commit 2723d9b56e2ea15c0c753ae579849806102f4ce0 Author: Eelco Dolstra Date: Tue Feb 2 11:57:49 2010 +0000 * If fdatasync() isn't available, use fsync(). commit 07ffdc28629e537c3811f86b83a93655b73909ec Author: Eelco Dolstra Date: Fri Jan 29 12:22:58 2010 +0000 * Added an option "fsync-metadata" to fsync() changes to /nix/var/nix/db. * Removed the function writeStringToFile since it does (almost) the same thing as writeFile. commit ad529fb89fb34bea9762eccfc9c2ee6f1f2865c0 Author: Eelco Dolstra Date: Fri Jan 29 11:53:58 2010 +0000 * Don't consider a store path valid if its info file exists but is zero bytes long. That makes Nix more robust in case of crashes (especially on ext4). commit fdcaf37361126793a1416ef5b348e5bf2f0fd1a0 Author: Eelco Dolstra Date: Mon Jan 25 17:18:44 2010 +0000 * Made `nix-store -qR --include-outputs' much faster if there are multiple paths specified on the command line (from O(n * m) to O(n + m), where n is the number of arguments and m is the size of the closure). commit 50e34891f0e11f400bd50390ede3b7700a2b4db9 Author: Eelco Dolstra Date: Mon Jan 25 16:14:45 2010 +0000 * Disable gzip compression in build-remote.pl because it puts too much load on the Hydra build farm (where it's unnecessary anyway because it has a fast connection to the build machines). In any case, compression can be enabled by using the `-C' option to ssh. commit 5388944e8d1ca61e23d42a6a0769b925f099f4e1 Author: Eelco Dolstra Date: Mon Jan 25 16:04:32 2010 +0000 * Make the garbage collector do the right thing when `gc-keep-outputs' is enabled by not depending on the deriver. commit f0c0277970f8283428b599d8da8089756583a26c Author: Eelco Dolstra Date: Tue Jan 12 12:22:38 2010 +0000 * On startup, set the default SIGCHLD handler. This is so that Nix works correctly in weird environments where the SIGCHLD handler is set to "ignore". commit ef92a14bfea7a16102b04711c9c18ad717e82ea1 Author: Eelco Dolstra Date: Thu Dec 17 14:12:44 2009 +0000 * Include config.h before the C library headers, because it defines _FILE_OFFSET_BITS=64. Without it, functions like stat() fail on large file sizes. This happened with a Nix store on squashfs: $ nix-store --dump /tmp/mnt/46wzqnk4cbdwh1dclhrpqnnz1icak6n7-local-net-cmds > /dev/null error: getting attributes of path `/tmp/mnt/46wzqnk4cbdwh1dclhrpqnnz1icak6n7-local-net-cmds': Value too large for defined data type $ stat /tmp/mnt/46wzqnk4cbdwh1dclhrpqnnz1icak6n7-local-net-cmds File: `/tmp/mnt/46wzqnk4cbdwh1dclhrpqnnz1icak6n7-local-net-cmds' Size: 0 Blocks: 36028797018963968 IO Block: 1024 regular empty file (This is a bug in squashfs or mksquashfs, but it shouldn't cause Nix to fail.) commit 945d8218fbcab4e546213f420125bf521ff3306d Author: Eelco Dolstra Date: Wed Dec 16 15:29:50 2009 +0000 * Build correctly against newer ATerm releases. Fixes "error: 'union' tag used in naming 'struct _ATerm'". commit d8a5dc02fc2efbbd386edb4be960d741c0650b8a Author: Eelco Dolstra Date: Thu Dec 10 13:14:22 2009 +0000 * Build on Fedora 12. commit 3a78af1e2435074292eb0694afe66ccd64448099 Author: Eelco Dolstra Date: Wed Dec 9 21:02:24 2009 +0000 * Release notes. commit 7ca997263680025a7cf5386a44efcb0a9949315e Author: Eelco Dolstra Date: Wed Dec 9 19:36:54 2009 +0000 * When doing a nix-pull, remove old manifests downloaded from the same URL. This prevents lots of old cruft accumulating in /nix/var/nix/manifests. commit c4c84d1edb4e0dd4ed77a9b2d1386834cdfaaa34 Author: Eelco Dolstra Date: Wed Dec 9 18:08:28 2009 +0000 * nix-build: be less verbose. commit bcd6cdf0d8d52bb5d459911bc552260d67c1bb38 Author: Eelco Dolstra Date: Wed Dec 9 17:45:22 2009 +0000 * Give a better error message when trying to build something and readOnlyMode is set. commit 13618b191e923a7ccc861a46be378fd85b0c8412 Author: Eelco Dolstra Date: Tue Nov 24 13:28:46 2009 +0000 * Grrr. commit aa5a768720f92076b024c551527e2abfd7ad9848 Author: Eelco Dolstra Date: Tue Nov 24 12:56:26 2009 +0000 * GCC 4.4 is stricter about the EOF macro (http://hydra.nixos.org/build/156340). commit 9b8fda796b620a5476e8a50edcc29a3462667fc3 Author: Eelco Dolstra Date: Tue Nov 24 12:26:25 2009 +0000 * Templatise getIntArg / string2Int. commit 80220155523fb21c938d595e96597f6511aa7bd0 Author: Eelco Dolstra Date: Tue Nov 24 10:51:52 2009 +0000 * In the garbage collector, don't count files with a link count > 1 in the "bytes/blocks freed" statistics. commit f9e766db9875e7ab390df8d405d9719b279efe3c Author: Eelco Dolstra Date: Tue Nov 24 09:53:18 2009 +0000 * Randomise the order in which we delete entries to make the collector less biased towards deleting paths that come alphabetically first (e.g. /nix/store/000...). This matters when using --max-freed etc. commit ca50c83fbb8f3bfbbcc60203a518d4e5a7aa8349 Author: Eelco Dolstra Date: Mon Nov 23 21:21:29 2009 +0000 commit 3d55f1eb57c04efc10a093379ea38d6c0aefa588 Author: Eelco Dolstra Date: Mon Nov 23 18:16:25 2009 +0000 * A command `nix-store --query --roots ' to find the garbage collector roots that point (directly or indirectly) to the given paths. commit ae6bf87273b30258408dc292611f3f50015b843c Author: Eelco Dolstra Date: Mon Nov 23 17:23:12 2009 +0000 * `nix-store --gc --print-roots': also print the path of the actual root symlink, not just its target. E.g.: /nix/var/nix/profiles/system-99-link -> /nix/store/76kwf88657nq7wgk1hx3l1z5q91zb9wd-system commit c364d5d1e36a9f790b0d610aae1d30d8732b58ce Author: Eelco Dolstra Date: Mon Nov 23 16:34:24 2009 +0000 * Made the garbage collector a lot faster. It no longer computes the complete set of live and dead paths before starting the actual deletion, but determines liveness on demand. I.e. for any path in the store, it first tries to delete all the referrers, and then the path itself. This means that the collector can start deleting paths almost immediately. commit 4f7e5f5810380ba4bcdd3c32c37dafb75d8e2f8d Author: Eelco Dolstra Date: Mon Nov 23 12:48:54 2009 +0000 * Don't create /nix/var/nix/gcroots/{tmp,channels}, since they don't seem to be used anymore. commit 8824d60fe549e2fc9b5a852fc1b967eca241ea77 Author: Eelco Dolstra Date: Fri Nov 20 17:12:38 2009 +0000 * Remove the --use-atime / --max-atime garbage collector flags. Many (Linux) machines no longer maintain the atime because it's too expensive, and on the machines where --use-atime is useful (like the buildfarm), reading the atimes on the entire Nix store takes way too much time to make it practical. commit 997db91e07882f0555e224a2687189a362567577 Author: Eelco Dolstra Date: Tue Nov 17 16:22:39 2009 +0000 * Don't pass -K. It should really inherit the setting of the calling Nix though. commit 3392d32e8b4202da8d3b013edd6f585e98aa7b02 Author: Eelco Dolstra Date: Fri Nov 13 10:08:31 2009 +0000 * In nix-pull/nix-channel, create the manifests directory if it doesn't exist. The Debian packages don't include the manifests directory, so nix-channel would silently skip doing a nix-pull, resulting in everything being built from source. Thanks to Juan Pedro Bolívar Puente. commit 327a232c85de3faa56f9a6117c86e1aa22f88bd6 Author: Eelco Dolstra Date: Fri Nov 6 01:15:44 2009 +0000 * Remove support for old (before Nix 0.12pre12020) databases. commit c60d796f04f81b17330fbfc1e438ed207b1047f4 Author: Eelco Dolstra Date: Thu Nov 5 22:23:38 2009 +0000 * Version bump. commit e8bad77c7cd3ab11e0c131f138c3d18cdf80dbba Author: Eelco Dolstra Date: Thu Nov 5 15:20:19 2009 +0000 commit 7680904839bcf6a68c2e772d5d7c4e6e28d952e0 Author: Eelco Dolstra Date: Thu Nov 5 14:53:01 2009 +0000 * Build on Karmic. commit 58f3338bfafe27795995ffc35dc0ecd3ec331197 Author: Eelco Dolstra Date: Thu Nov 5 14:40:42 2009 +0000 * The Nix .deb package depends on curl. commit 268d90a03eaab95d13c1326d58fb2287c628aedc Author: Eelco Dolstra Date: Thu Nov 5 09:07:43 2009 +0000 * Various updates. commit 1ff8758f762367ffd2517ce7d9d63c6c9746a0ee Author: Eelco Dolstra Date: Wed Nov 4 16:52:35 2009 +0000 * Manual updates. commit 8520542071d9ec4c5cc088f9a604d051f4880796 Author: Eelco Dolstra Date: Thu Oct 22 08:28:33 2009 +0000 * When building in a chroot, make a copy of a file if hard-linking fails. This is likely to happen after a `nix-store --optimise', because some files may have 32000 links (NIX-111). commit 6b9f6b02225035c016cf73868a12aa26bc0ad225 Author: Eelco Dolstra Date: Thu Oct 22 08:12:38 2009 +0000 * Remove a prototype for a function that no longer exists. commit deb342fb08fb7b366af482664f44e52f749e63b8 Author: Eelco Dolstra Date: Thu Oct 22 08:10:12 2009 +0000 * builtins.trace: in the common case that the value is a string, then show the string, not the ATerm, so we get `trace: bla' instead of `trace: Str("bla",[])'. commit 437077c39dd7abb44b2ab02cb9c6215d125bef04 Author: Eelco Dolstra Date: Wed Oct 21 15:05:30 2009 +0000 * Added a primop unsafeDiscardOutputDependency needed by Disnix to pass derivation paths to a builder without actually building them. commit 6f7d7bc1de110c49e7b41926e4669ce44bc86617 Author: Eelco Dolstra Date: Tue Oct 13 09:30:17 2009 +0000 * Give a useful error message when an evaluation error occurs while trying to upgrade a package. commit 53a4981fa28a9f13758554b643c06e871ede8dbd Author: Sander van der Burg Date: Thu Oct 8 14:50:37 2009 +0000 Added optional parameter which adds -lnsl -lsocket to make the Nix package manager work on OpenSolaris commit 18f0ff003d711f88a8682131108b101debec3737 Author: Peter Simons Date: Tue Oct 6 09:14:06 2009 +0000 configure.ac: use AC_SYS_LARGEFILE to determine how to enable 64-bit file size support Defining -D_FILE_OFFSET_BITS=64 works on most platforms, but not on all (i.e. Solaris). Also, the Autoconf macro offers the user a switch to disable the functionality in case of problems. commit 96f151783153c62bb19f39d9675b35601003f4d4 Author: Eelco Dolstra Date: Wed Sep 30 11:32:04 2009 +0000 * Support platforms that don't have O_ASYNC (e.g. OpenSolaris apparently). commit 1a8f8fd86fb89222f6fadab0d9f8a0fb850c8f6f Author: Eelco Dolstra Date: Wed Sep 30 09:54:29 2009 +0000 * OpenSolaris compatibility. commit 0f79ad47c5af646ad7a42f86759170df8081899c Author: Eelco Dolstra Date: Fri Sep 25 12:36:03 2009 +0000 commit c7057fc1f2232a530709a1596b2fe8722ed19aef Author: Eelco Dolstra Date: Thu Sep 24 07:39:55 2009 +0000 * And some more. commit 193f59e0771f35e977a4b4606c91c90d5c50ae0a Author: Eelco Dolstra Date: Thu Sep 24 07:21:29 2009 +0000 * Fix a build failure on Fedora 11. rename() needs . commit 0ae2be56927729c251c7a4a45130eba672821af0 Author: Eelco Dolstra Date: Thu Sep 24 07:05:06 2009 +0000 commit 1332dd1ed34b45b7e970111da561f20ffe6bc6b2 Author: Eelco Dolstra Date: Wed Sep 23 19:19:26 2009 +0000 * tryEval shouldn't catch all exceptions of type Error, since not all of them leave the evaluator in a continuable state. Also, it should be less chatty. commit 63a17d4bd5e0a9c0f896221017ab518a6cc4c79b Author: Eelco Dolstra Date: Wed Sep 23 18:52:18 2009 +0000 * Don't build against BDB on Cygwin, it's been broken for unknown reasons for a while (e.g. http://hydra.nixos.org/build/79164). commit 676e07902e175666208b5c644ed8427f7684d3d9 Author: Eelco Dolstra Date: Wed Sep 23 18:04:55 2009 +0000 * Darwin hack. commit 64e89980e880826fec3e973e50edebf24278c7b8 Author: Eelco Dolstra Date: Wed Sep 23 17:05:51 2009 +0000 * Create some state directories automatically as a convenience. commit 48b58617e9e84fd1a0e4bd11798bd6b9d04a1633 Author: Rob Vermaas Date: Wed Sep 23 12:57:15 2009 +0000 * include wait.h for WEXITSTATUS commit 51ad64cc0791f797c936d8d7b1cef0dec64c0ce3 Author: Eelco Dolstra Date: Fri Sep 18 11:45:56 2009 +0000 * Use xmllint (>= 2.7.4) for RelaxNG validation instead of Jing. commit df05a759e4b73058ade82b6008c405cc5c75b104 Author: Eelco Dolstra Date: Fri Sep 18 11:01:30 2009 +0000 * In "make init-state", ignore errors creating /nix/store. Hack to get the Debian VM builds to work (where /nix/store is a mount point containing the store of the host). commit d3de71efc935ac5744dedf22528a6f0c4e38aaf4 Author: Eelco Dolstra Date: Thu Sep 17 17:44:13 2009 +0000 commit e1df4ef73c442ad0fa175a19341bcbab0c2b6450 Author: Eelco Dolstra Date: Thu Sep 17 17:02:14 2009 +0000 commit 86408b3f47d7b77067c8d35f1488ccdddb0f304b Author: Eelco Dolstra Date: Thu Sep 17 15:48:17 2009 +0000 * build-remote.pl: Pick machines in a round-robin order, rather than giving jobs to the first machine until it hits its job limit, then the second machine and so on. This should improve utilisation of the Hydra build farm a lot. Also take an optional speed factor into account to cause fast machines to be preferred over slower machines with a similar load. commit 57e0d73c776ef672afe2a20b1f7b39a495894c4a Author: Eelco Dolstra Date: Thu Sep 17 13:51:04 2009 +0000 * build-remote.pl: allow the system type to be a comma-separated list of system types. Don't treat the x86_64-linux system type specially. commit 0dbd4638e07d224e642b52c1dd0468c3752e2479 Author: Eelco Dolstra Date: Tue Sep 15 13:01:46 2009 +0000 * Two primops: builtins.intersectAttrs and builtins.functionArgs. intersectAttrs returns the (right-biased) intersection between two attribute sets, e.g. every attribute from the second set that also exists in the first. functionArgs returns the set of attributes expected by a function. The main goal of these is to allow the elimination of most of all-packages.nix. Most package instantiations in all-packages.nix have this form: foo = import ./foo.nix { inherit a b c; }; With intersectAttrs and functionArgs, this can be written as: foo = callPackage (import ./foo.nix) { }; where callPackage = f: args: f ((builtins.intersectAttrs (builtins.functionArgs f) pkgs) // args); I.e., foo.nix is called with all attributes from "pkgs" that it actually needs (e.g., pkgs.a, pkgs.b and pkgs.c). (callPackage can do any other generic package-level stuff we might want, such as applying makeOverridable.) Of course, the automatically supplied arguments can be overriden if needed, e.g. foo = callPackage (import ./foo.nix) { c = c_version_2; }; but for the vast majority of packages, this won't be needed. The advantages are to reduce the amount of typing needed to add a dependency (from three sites to two), and to reduce the number of trivial commits to all-packages.nix. For the former, there have been two previous attempts: - Use "args: with args;" in the package's function definition. This however obscures the actual expected arguments of a function, which is very bad. - Use "{ arg1, arg2, ... }:" in the package's function definition (i.e. use the ellipis "..." to allow arbitrary additional arguments), and then call the function with all of "pkgs" as an argument. But this inhibits error detection if you call it with an misspelled (or obsolete) argument. commit 3bca8931e8861fa4694b1ca31ecc023149e7aa81 Author: Michael Raskin <7c6f434c@mail.ru> Date: Tue Aug 25 16:06:46 2009 +0000 Adding tryEval builtin. It allows to catch presence of errors in an expression. commit 5e9a4e5101a76655dd7f1bcd2c1c3afc200552b1 Author: Eelco Dolstra Date: Mon Aug 3 13:32:13 2009 +0000 commit 9b46d1ae6fe37f4caf24a39541553c07b5c07342 Author: Eelco Dolstra Date: Mon Aug 3 12:24:20 2009 +0000 commit 20b6f94b65204f3a7b2e93c31b35f7554f2823a1 Author: Eelco Dolstra Date: Wed Jul 15 09:10:38 2009 +0000 * nix-build: pass the --show-trace flag. commit d413612029ee44628dea3598f3a67042acf05d50 Author: Eelco Dolstra Date: Tue Jul 14 14:58:12 2009 +0000 * Remove the redundant around refentries. commit 1f169f43b31d02c1fad39df16bb4e61c8cb593df Author: Eelco Dolstra Date: Fri Jul 10 13:42:12 2009 +0000 * Leave out the collaborators / revision history page. commit 5e2e2f10efab3ba3e0504fb4d1b374a57dfaeb0c Author: Eelco Dolstra Date: Fri Jul 10 11:48:49 2009 +0000 commit c6890d6b5cf6bb57afd6431382a6459eee47f5b3 Author: Eelco Dolstra Date: Thu Jul 2 08:52:12 2009 +0000 * Replace newlines in table output with spaces. commit 749dd97a54f50467d266dde2b833f272cb556145 Author: Eelco Dolstra Date: Tue Jun 30 15:53:39 2009 +0000 * Support integers and lists of strings in meta fields. This is useful for fields like meta.maintainers, meta.priority (which can be a proper integer now) and even meta.license (if there are multiple licenses). commit f2c3fc519190b021f0bb3b66f58d0fe7fc40b0e7 Author: Eelco Dolstra Date: Tue Jun 30 13:28:29 2009 +0000 * Don't show trace information by default (`--show-trace' to enable). NixOS evaluation errors in particular look intimidating and generally aren't very useful. Ideally the builtins.throw messages should be self-contained. commit a2fc3a53ba87d3688dae0554bfdb2fe3fb3dbf2a Author: Eelco Dolstra Date: Thu Jun 18 10:04:14 2009 +0000 * Highlight URLs containing "=" properly. commit d53603c928ae98eee54bdd06241e898e02efef0c Author: Eelco Dolstra Date: Thu Jun 18 09:56:50 2009 +0000 * Attributes names in attrsets can contain dots now. commit 14bc3ce3d6d5745717fa19b8b43b5fdd117ff757 Author: Eelco Dolstra Date: Sat Jun 13 16:30:58 2009 +0000 * Canonicalise timestamps in the Nix store to 1 (1970-01-01 00:00:01 UTC) rather than 0 (00:00:00). 1 is a better choice because some programs use 0 as a special value. For instance, the Template Toolkit uses a timestamp of 0 to denote the non-existence of a file, so it barfs on files in the Nix store (see template-toolkit-nix-store.patch in Nixpkgs). Similarly, Maya 2008 fails to load script directories with a timestamp of 0 and can't be patched because it's closed source. This will also shut up those "implausibly old time stamp" GNU tar warnings. commit f24cf5d303dac3e82068f80091d2f312455ba8cf Author: Eelco Dolstra Date: Wed Jun 10 11:30:34 2009 +0000 * nix-build: if nix-instantiate or nix-store fails due to a signal (e.g. out of memory or a segfault), print an error message. Otherwise the user doesn't see anything. commit c6cb792d48a8b4290df15202ec30b06a3383dc6a Author: Eelco Dolstra Date: Tue May 26 16:32:02 2009 +0000 commit a64bbe049e19618c33a878154f2e69029d45ecd7 Author: Eelco Dolstra Date: Fri May 15 13:46:13 2009 +0000 * Change the scoping of "inherit (e) ..." in recs so that the attributes of the rec are in scope of `e'. This is useful in expressions such as rec { lib = import ./lib; inherit (lib) concatStrings; } It does change the semantics of expressions such as let x = {y = 1;}; in rec { x = {y = 2;}; inherit (x) y; }.y This now returns 2 instead of 1. However, no code in Nixpkgs or NixOS seems to rely on the old behaviour. commit d407d572fdc72f4eb14cc0f37d7d61446425b663 Author: Eelco Dolstra Date: Fri May 15 12:35:23 2009 +0000 * Some syntactic sugar for attribute sets: allow {x.y.z = ...;} as a shorthand for {x = {y = {z = ...;};};}. This is especially useful for NixOS configuration files, e.g. { services = { sshd = { enable = true; port = 2022; }; }; } can now be written as { services.sshd.enable = true; services.sshd.port = 2022; } However, it is currently not permitted to write { services.sshd = {enable = true;}; services.sshd.port = 2022; } as this is considered a duplicate definition of `services.sshd'. commit e42975490fa96e811c9fd80435ce20c26f8603f8 Author: Eelco Dolstra Date: Thu May 14 14:29:45 2009 +0000 * Check for duplicate attributes in fixAttrs, rather than doing a separate traversal after parsing. Likewise, check for duplicate pattern variables right away. commit 50d11b90caf6545556fc090858c694e19f3c7683 Author: Eelco Dolstra Date: Tue May 12 11:06:24 2009 +0000 * Allow unsafe (unspecified) comparisons between attrsets unless NIX_NO_UNSAFE_EQ is set, for now. commit c34e6d71bc62bb83f3bfed69f781ded4d5a46d3a Author: Eelco Dolstra Date: Mon May 11 15:50:14 2009 +0000 * Disallow equality tests between attribute sets. This was always broken, but now the evaluator checks for it to prevent Nix expressions from relying on undefined behaviour. Equality tests are implemented using a shallow pointer equality test between ATerms. However, because attribute sets are lazy and contain position information, this can give false positives. For instance, previously let y = {x = 1;}; in y == y evaluated to true, while the equivalent expression {x = 1;} == {x = 1;} evaluated to false. So disallow these tests for now. (Eventually we may want to implement deep equality tests for attribute sets, like lib.eqStrict.) * Idem: disallow comparisons between functions. * Implemented deep comparisons of lists. This had the same problem as attribute sets - the elements in the list weren't evaluated. For instance, ["xy"] == [("x" + "y")] evaluated to false. Now it works properly. commit 9536ba19d437a82d4b521709b49ef6977321b692 Author: Eelco Dolstra Date: Thu May 7 13:22:26 2009 +0000 commit 83bd320b39c5d12ff4a40bea47177011fa1c7599 Author: Eelco Dolstra Date: Thu May 7 13:12:46 2009 +0000 * Build a PDF version of the manual in the tarball job (it's not included in the tarball though). commit f751c2966b98d14bbb0337abeca1cb1106e09136 Author: Eelco Dolstra Date: Thu May 7 13:11:58 2009 +0000 * Don't have a bugs section in the manual. Bugs should be kept in the bug tracker. commit 404996ca1f2089511b90666ce092377ade830139 Author: Eelco Dolstra Date: Thu May 7 12:57:04 2009 +0000 * Produce the manual in the tarball job. commit 7660e2a0684e57c2f7f014a6f457b7866e2b9e22 Author: Eelco Dolstra Date: Thu May 7 11:35:52 2009 +0000 * Remove a right recursion that causes the parser to barf on very long lists. The comment about ATreverse requiring unbounded stack space was unfounded anyway. commit 52a9ba96f53be0a36f8229a14126302c5de966a6 Author: Eelco Dolstra Date: Thu May 7 11:34:08 2009 +0000 * Include the version file. commit 6a5599fd014af87ccffd20e5fa172d8b561636d1 Author: Eelco Dolstra Date: Thu May 7 11:33:57 2009 +0000 * Typo. commit 098cb9d233ff7e1568b55e88dacf52e1dc8eebab Author: Michael Raskin <7c6f434c@mail.ru> Date: Mon May 4 08:10:24 2009 +0000 Add an ftruncate call paired with fallocate to play safe with some FSes (namely, BtrFS fallocate sets file size to allocated size, i.e. multiple of block size) commit c710fe540e3763d821eab74621b43d9422cb7e92 Author: Eelco Dolstra Date: Tue Apr 21 12:42:47 2009 +0000 * Machines of type x86_64-linux can do i686-linux builds. commit d5eab2fc8293e0d14c7fd297bf7512257442295b Author: Eelco Dolstra Date: Tue Apr 21 11:52:16 2009 +0000 * Use foreach in a lot of places. commit 8f1bf28505e6ba8fae35859391cbab7264b0014a Author: Eelco Dolstra Date: Tue Apr 21 11:06:27 2009 +0000 * nix-store --verify: don't bail out if a referenced path is missing. (It can't fix it though.) commit 4e646b0ddb81e1fbf1159ad66a41de848fe93930 Author: Eelco Dolstra Date: Thu Apr 16 12:03:17 2009 +0000 * Fix a few "comparison is always false/true due to limited range of data type" warnings on 64-bit platforms. The one in parser.y is likely to be a real bug. commit 0460ea4c395cc45e510d13fbf12930dd3d221305 Author: Eelco Dolstra Date: Thu Apr 16 09:27:33 2009 +0000 * Cleanup. commit dfb863f3339ee7e43c83803ade2d9fdf418399b7 Author: Eelco Dolstra Date: Wed Apr 15 06:25:02 2009 +0000 * Don't cache transient build hook problems. commit 435a93b5d845a6fa90675675060ca3cc2d2a650d Author: Eelco Dolstra Date: Tue Apr 14 13:03:27 2009 +0000 * Remove references to __XXX primops. commit 8b2a01a8c238f36a71157e4c2f8e6cf6ee6f5309 Author: Eelco Dolstra Date: Tue Apr 14 12:02:22 2009 +0000 * Release notes. commit 50cb6f978218c00f2fee52cef8939f2ef8d4f2b6 Author: Eelco Dolstra Date: Thu Apr 2 08:16:15 2009 +0000 * Debian packages: use /etc, not /usr/etc. commit 351bf658f99e91b41d2b11f994f799dd34a600e2 Author: Eelco Dolstra Date: Tue Mar 31 21:14:07 2009 +0000 * Do a substitution even if --max-jobs == 0. commit cff2b2a13aea7cf30c0ef5be449e355594dc80c2 Author: Eelco Dolstra Date: Tue Mar 31 15:50:03 2009 +0000 * Doh! commit 160a60d663039cc26e73d0359fcbce12b30a7d3d Author: Eelco Dolstra Date: Mon Mar 30 19:35:55 2009 +0000 commit 805144b705305fc6ba22645cebf52daaf835ca49 Author: Eelco Dolstra Date: Mon Mar 30 11:34:03 2009 +0000 * Make the poll interval configurable. commit 096affb55b06c1280df9ff6b1fd5111d5745b57a Author: Eelco Dolstra Date: Sun Mar 29 18:40:44 2009 +0000 * Update the mtime on the lock file to make it easy to see when a slot was last used. commit cbc1f57b48dc9b8f0c679e004ee407d3cf27d5c5 Author: Eelco Dolstra Date: Sun Mar 29 18:08:32 2009 +0000 * Undocument the "system" option. No sane person would use it :-) commit 7377195297e66c02e91caab700e7984e4c6a904a Author: Eelco Dolstra Date: Sun Mar 29 18:06:00 2009 +0000 * With `--max-jobs 0', print a nicer error message than "Assertion `!awake.empty()' failed." commit 737423a89c4b5f666fb4daf61775764b66911cf1 Author: Eelco Dolstra Date: Sun Mar 29 18:00:45 2009 +0000 * Use polling to wait for a remote build slot when using a build hook (that is, call the build hook with a certain interval until it accepts the build). * build-remote.pl was totally broken: for all system types other than the local system type, it would send all builds to the *first* machine of the appropriate type. commit 47706e3924cf592a4e0085eb2e45f0e84b67f933 Author: Eelco Dolstra Date: Sat Mar 28 21:10:29 2009 +0000 * nix-copy-closure: compute the closure in one call to nix-store, which is much faster. commit 6e946c8e72e0fd2baa58cab484a34debd2ae906d Author: Eelco Dolstra Date: Sat Mar 28 20:51:33 2009 +0000 * Scan for references and compute the SHA-256 hash of the output in one pass. This halves the amount of I/O. commit c7152c8f97d01dda4eeb70869a0d28cc9a04df1f Author: Eelco Dolstra Date: Sat Mar 28 19:41:53 2009 +0000 * Don't use the non-standard __gnu_cxx::stdio_filebuf class. commit 3a2bbe7f8ad7ec8b2896ff5e666b8f5525691c6f Author: Eelco Dolstra Date: Sat Mar 28 19:29:55 2009 +0000 * Simplify communication with the hook a bit (don't use file descriptors 3/4, just use stdin/stderr). commit 7fb548aa2621375559f980b4627955dbc6fe9914 Author: Eelco Dolstra Date: Sat Mar 28 16:12:46 2009 +0000 * Clean up the output a bit. commit f54e800366b3c8540c60f0a35c407ad701e2f622 Author: Eelco Dolstra Date: Sat Mar 28 16:12:27 2009 +0000 * The `fixedOutput' variable didn't get initialised when using a build hook, causing negative caching to fail randomly. commit 38f98b32822efa35a050b26d7ab5bbd561c9e529 Author: Eelco Dolstra Date: Fri Mar 27 22:40:22 2009 +0000 * Argh, stupid timing sensitive tests... commit e23a7a8b7b37f493327b7f73350140811cccdb37 Author: Eelco Dolstra Date: Fri Mar 27 14:20:03 2009 +0000 * Debian 5.0, Ubuntu 8.10 builds. commit cb85bc396e7ee291bfd5c22b2a9edf3c85b49c5d Author: Eelco Dolstra Date: Fri Mar 27 14:19:04 2009 +0000 * Create /nix/store if it doesn't exist. commit 61686926d12e55052480bd0ff2297e69cd6c364f Author: Eelco Dolstra Date: Thu Mar 26 14:12:42 2009 +0000 * A job for creating a fully statically linked binary tarball. commit 9856efc7b0d5653aea17f1f7e58c6ff97a0b6b35 Author: Eelco Dolstra Date: Thu Mar 26 12:22:08 2009 +0000 * Support doing a fully static build. Statically linked Nix binaries will be useful as a fallback on platforms for which there are no RPMs/Debs available. commit 5dd8fb20691c375778fd73bf613d4988df72fb50 Author: Eelco Dolstra Date: Thu Mar 26 11:02:07 2009 +0000 * Don't use ULLONG_MAX in maxFreed - use 0 to mean "no limit". 18446744073709551615ULL breaks on GCC 3.3.6 (`integer constant is too large for "long" type'). commit 92f525ecf4ea8a9bd356acd1d3845074b1e5b918 Author: Eelco Dolstra Date: Wed Mar 25 21:05:42 2009 +0000 * Negative caching, i.e. caching of build failures. Disabled by default. This is mostly useful for Hydra. commit 7024a1ef076cedf4596c9f4b107e85d315242cea Author: Eelco Dolstra Date: Wed Mar 25 16:43:38 2009 +0000 * Removed the locking.sh test; it's redundant because of the extended parallel.sh test. Also, don't call multiple nix-builds in parallel, since they can race creating .nix-build-tmp-derivation. commit 8146a0c7313b95b4cc24776cc609efc846b0a38e Author: Eelco Dolstra Date: Wed Mar 25 16:11:04 2009 +0000 * Use bash in the tests. commit a046858a22751ce87014aa5cc2a619ea83668ed9 Author: Eelco Dolstra Date: Tue Mar 24 23:40:24 2009 +0000 * Doh. commit 12c8c64efaefd36d32e5e7c028496c5ae9172acc Author: Eelco Dolstra Date: Tue Mar 24 14:07:37 2009 +0000 commit 7aedcf946043468c169ab9b0a131be908804789b Author: Eelco Dolstra Date: Mon Mar 23 15:16:36 2009 +0000 * Make this test a bit more robust. It's still timing dependent though. commit 3a87163b2480eaf47d626580d20049387d942066 Author: Eelco Dolstra Date: Mon Mar 23 13:52:52 2009 +0000 * Shut up a GCC warning. commit cacff1be886ed975bbef1b17151b25c633711256 Author: Eelco Dolstra Date: Mon Mar 23 01:05:54 2009 +0000 * No longer block while waiting for a lock on a store path. Instead poll for it (i.e. if we can't acquire the lock, then let the main select() loop wait for at most a few seconds and then try again). This improves parallelism: if two nix-store processes are both trying to build a path at the same time, the second one shouldn't block; it should first see if it can build other goals. Also, it prevents the deadlocks that have been occuring in Hydra lately, where a process waits for a lock held by another process that's waiting for a lock held by the first. The downside is that polling isn't really elegant, but POSIX doesn't provide a way to wait for locks in a select() loop. The only solution would be to spawn a thread for each lock to do a blocking fcntl() and then signal the main thread, but that would require pthreads. commit 58969fa2bf9d5e662c372bdf970470b8226bd4c7 Author: Eelco Dolstra Date: Sun Mar 22 23:53:05 2009 +0000 * Refactoring. commit d7b2d11255d048dd9aa59e49848baa5977b718e3 Author: Eelco Dolstra Date: Sun Mar 22 23:16:18 2009 +0000 * Test case (currently fails): multiple Nix builds shouldn't block waiting on the same lock when there are other builds that can be done. commit 7a57b2920b7f04ab0cdd42687dd183217231549e Author: Eelco Dolstra Date: Sun Mar 22 17:51:45 2009 +0000 * Better error message when nix-store --import is applied to garbage (previously it would likely say "implementation cannot deal with > 32-bit integers"). commit 77d272623fb4fd57cf27d4b92a7dc1713a2d4098 Author: Eelco Dolstra Date: Sun Mar 22 17:36:43 2009 +0000 * NAR archives: handle files larger than 2^32 bytes. Previously it would just silently store only (fileSize % 2^32) bytes. * Use posix_fallocate if available when unpacking archives. * Provide a better error message when trying to unpack something that isn't a NAR archive. commit 7e05b8b75e0f4b370cc7d4b78b3fb18a3678b360 Author: Eelco Dolstra Date: Thu Mar 19 10:02:02 2009 +0000 * Future proofing: assume we can read manifests up to version 10 (which should therefore be backwards compatible). commit b88460bcbc05ec7c164cb6ce6015b193d3c2d6c5 Author: Eelco Dolstra Date: Thu Mar 19 09:47:34 2009 +0000 * Disregard the Hash field in manifests. commit 28972864879a63c4110211d9852b692672869a2a Author: Eelco Dolstra Date: Wed Mar 18 17:36:42 2009 +0000 * Unify exportReferencesGraph and exportBuildReferencesGraph, and make sure that it works as expected when you pass it a derivation. That is, we have to make sure that all build-time dependencies are built, and that they are all in the input closure (otherwise remote builds might fail, for example). This is ensured at instantiation time by adding all derivations and their sources to inputDrvs and inputSrcs. commit e530e0a35041b3135b521f1b2dbc21fabfb00d47 Author: Eelco Dolstra Date: Wed Mar 18 16:36:13 2009 +0000 * Improve the test. commit 9485ec31ea3b4ad9f2b31c350cd24f2fa6ec5484 Author: Eelco Dolstra Date: Wed Mar 18 16:35:35 2009 +0000 * Better cleanup after tests. commit 13df3915ef7b967b3889e2bf5f66ca8de1adc8b0 Author: Eelco Dolstra Date: Wed Mar 18 16:23:29 2009 +0000 * Missing file. commit c183ee5c79dd356262c3d7c31e3aace09045671f Author: Eelco Dolstra Date: Wed Mar 18 14:48:42 2009 +0000 * Acquire the locks on the output paths before trying to run the build hook. This fixes a problem with log files being partially or completely filled with 0's because another nix-store process truncates the log file. It should also be more efficient. commit 1dcf208f562d853909ad53772c208dcb2a73de88 Author: Eelco Dolstra Date: Wed Mar 18 13:15:55 2009 +0000 * Clean up some tests (use nix-build where appropriate). commit 93b6926054b0b339d310a3075a677a65676c7c11 Author: Eelco Dolstra Date: Tue Mar 17 17:38:32 2009 +0000 * Regression test for exportBuildReferencesGraph. It currently fails. commit 51e7e32c3bf7c2fb5045b0655c2edc1fbf347455 Author: Eelco Dolstra Date: Tue Mar 17 17:11:55 2009 +0000 * Refactoring: renamed *.nix.in to *.nix. commit 2d5114452d8a8f73c858f9beb6bfaafe35e7bf9a Author: Eelco Dolstra Date: Tue Mar 17 16:33:48 2009 +0000 * Regression test for the `exportReferencesGraph' derivation attribute. commit 33ecb4299107da91f5d61131ead37afabe496649 Author: Eelco Dolstra Date: Tue Mar 17 11:42:55 2009 +0000 * Cleanup. commit be88248add7ac96137a323acb111a301048e37bc Author: Eelco Dolstra Date: Mon Mar 9 15:05:08 2009 +0000 * Make the version available to release.nix. commit a96cac0d18e291057e79dab36d3e2030d1bbafc9 Author: Eelco Dolstra Date: Fri Mar 6 17:00:58 2009 +0000 commit d4753c944f62cd92ee05947a5881b8ae4dc0aa21 Author: Eelco Dolstra Date: Fri Mar 6 11:01:45 2009 +0000 commit 0e6f6041784ed6d3a3851b20a1d93604e3ae27aa Author: Eelco Dolstra Date: Thu Mar 5 14:57:50 2009 +0000 * Install some headers in the right location. commit 7f254706b065889c444a555ab13fbf75c1c3feee Author: Eelco Dolstra Date: Tue Mar 3 14:47:39 2009 +0000 * Allow the channel to declare a name for itself. commit 1273d355ac91f502654aba0df07068d330064e83 Author: Eelco Dolstra Date: Fri Feb 27 14:06:38 2009 +0000 * nix-install-package: don't pollute /nix/var/nix/manifests. commit d4ca5c395290da9a517df99dfbb79d2186930c83 Author: Eelco Dolstra Date: Fri Feb 27 13:55:11 2009 +0000 * Use the regular progress bar; the hash bar isn't very useful when the size of the download isn't known in advance. commit fd2e14b3c886c4ff6a702f22bb7f4494b1fbec39 Author: Eelco Dolstra Date: Fri Feb 27 12:09:30 2009 +0000 * nix-build: support --option. commit 60cb7de336035768089cc764a3fd7e8867a8d298 Author: Eelco Dolstra Date: Fri Feb 27 11:04:41 2009 +0000 * Allow options from the Nix config file to be overriden from the command line (e.g. "--option build-use-chroot true"). commit 8ab6bc5a49686aedf85adffe322c4f016764af5f Author: Eelco Dolstra Date: Fri Feb 27 11:01:03 2009 +0000 * nix-channel: use nix-build. commit f052c10eedf8701e746bbacac63a8ac0d4a8bc0f Author: Eelco Dolstra Date: Fri Feb 27 09:53:58 2009 +0000 * Check the manifest version. commit a7cee528c5967ffe20e50fb9dc329987843d42ec Author: Eelco Dolstra Date: Thu Feb 26 21:12:35 2009 +0000 * Handle base-16 hashes in manifests. commit 041717eda399de5ddbe2a147bafedf1a39993f8e Author: Eelco Dolstra Date: Thu Feb 19 23:46:37 2009 +0000 * download-using-manifests: don't check the cryptographic hash of downloaded files; rather, check the hash of the unpacked store path. When the server produces bzipped NAR archives on demand (like Hydra does), the hash of the file is not known in advance; it's streamed from the server. Thus the manifest doesn't contain a hash for the bzipped NAR archive. However, the server does know the hash of the *uncompressed* NAR archive (the "NarHash" field), since it's stored in the Nix database (nix-store -q --hash /nix/store/bla). So we use that instead for checking the integrity of the download. commit 621093cb1c142e125ed1c534fc0c23c1e8404a66 Author: Michael Raskin <7c6f434c@mail.ru> Date: Thu Feb 19 20:46:45 2009 +0000 Replace wrong (w.r.t. PATH) sed call with in-shell substitution commit 824b154ce82a76bfc604b3084b18e06af4e3d007 Author: Eelco Dolstra Date: Mon Feb 16 09:24:20 2009 +0000 * Release output locks as soon as possible, not when the destructor of the DerivationGoal runs. Otherwise, if a goal is a top-level goal, then the lock won't be released until nix-store finishes. With --keep-going and lots of top-level goals, it's possible to run out of file descriptors (this happened sometimes in the build farm for Nixpkgs). Also, for failed derivation, it won't be possible to build it again until the lock is released. * Idem for locks on build users: these weren't released in a timely manner for failed top-level derivation goals. So if there were more than (say) 10 such failed builds, you would get an error about having run out of build users. commit 2ef579d1aa62501d59957783665f997e3c6f475b Author: Marc Weber Date: Thu Feb 5 19:35:44 2009 +0000 documentation for previous commit commit 1407a1ec99163bf3323fbd223396a124336a861a Author: Marc Weber Date: Thu Feb 5 19:35:40 2009 +0000 added primop functions __isBool, __isString, __isInt commit 1bb0f1e84b7c9444a2fd922a658d721da3da00fd Author: Eelco Dolstra Date: Tue Feb 3 10:34:15 2009 +0000 * Build hook: compress the transferred data. commit b682fae9d93037af65282e02b88a9ce34129026e Author: Eelco Dolstra Date: Mon Feb 2 17:24:10 2009 +0000 * Build hooks: use nix-store --import. This prevents a redundant scan for runtime dependencies (i.e. the local machine shouldn't do a scan that the remote machine has already done). Also pipe directly into `nix-store --import': don't use a temporary file. commit 6f8c96d12399b747b5f41b5211a635d2801247c8 Author: Marc Weber Date: Wed Jan 28 12:14:53 2009 +0000 vim syntax: support for indented strings ('' .. '') commit 110606d470c22928a505296b694751c7d17a5c03 Author: Nicolas Pierron Date: Tue Jan 27 14:36:44 2009 +0000 Add the "addErrorContext" builtin to add more information in the stack trace. commit 061141e63256842bd72160a30302b31463222411 Author: Eelco Dolstra Date: Tue Jan 27 13:36:59 2009 +0000 * Make it compile on Debian 4.0 (which doesn't define PER_LINUX32_3GB in sys/personality.h). commit 019176137f49eba826e08c6b0f0a5c35ecdde81d Author: Eelco Dolstra Date: Tue Jan 13 11:39:09 2009 +0000 * When using a build hook, distinguish between transient failures (e.g. an SSH connection problem) and permanent failures (i.e. the builder failed). This matters to Hydra (it wants to know whether it makes sense to retry a build). commit 4ce692df88b4a9b32767ee6c0223d789d83712cc Author: Eelco Dolstra Date: Tue Jan 13 10:42:13 2009 +0000 commit c504d90c1159bd0fadd37bb3098ecf8622d0b13c Author: Eelco Dolstra Date: Mon Jan 12 16:30:32 2009 +0000 * Support i686-linux builds directly on x86_64-linux Nix installations. This is implemented using the personality() syscall, which causes uname to return "i686" in child processes. commit 8e39d9bdb30cbe2e7c3f7d9b30ac64c3a2e32684 Author: Eelco Dolstra Date: Mon Jan 12 12:51:28 2009 +0000 * Make Nix build with Bison 2.4. commit 28355dafcf49dddf707499fc99b18c5071cf8eb6 Author: Eelco Dolstra Date: Mon Jan 5 12:14:43 2009 +0000 * Removed reference to losser.st-lab.cs.uu.nl, which is RIP after 9 years of loyal service :-) commit 8fce03e0adc719930de4f4aebd5dd17b7d59402a Author: Eelco Dolstra Date: Tue Dec 16 13:28:18 2008 +0000 * nix-store --verify: repair bad hash fields in the metadata file. commit 60ec75048ae0e0bc72ea2fe47e8b48fcf40a2b86 Author: Eelco Dolstra Date: Tue Dec 16 12:23:35 2008 +0000 * Pass --use-atime / --max-atime to the daemon. commit 6f6bb1fdea9dcd4c6f6c0b8059b05d56ea7c16f3 Author: Eelco Dolstra Date: Mon Dec 15 23:55:11 2008 +0000 * Delete the chroot if it already exists (e.g. left over from an interrupted build). commit 92cb7c4dfe036ed4c13d45128a21838a039d840f Author: Eelco Dolstra Date: Fri Dec 12 17:14:57 2008 +0000 * Put chroots in the Nix store. This ensures that we can create hard links to the inputs. commit 0008b0006db59ea8fccfe041cf8d87f05abb427d Author: Eelco Dolstra Date: Fri Dec 12 17:03:18 2008 +0000 * Simplify deleting .lock files in /nix/store: just don't delete them if they belong a path that's currently being built. This gets rid of some Cygwin-specific code. commit ac36c6cd44e8f46573ce3df0749d2f062fa35f3b Author: Eelco Dolstra Date: Fri Dec 12 15:36:18 2008 +0000 * Some hackery to make "make check" succeed on Cygwin. commit 2b70a8e7c98adebdac1e546e17ee1d909b4e5989 Author: Eelco Dolstra Date: Fri Dec 12 13:41:36 2008 +0000 * Detect whether unshare() is available. commit 9122dcecbba9d5268d1087918ffe5a3b970625b8 Author: Eelco Dolstra Date: Fri Dec 12 12:59:27 2008 +0000 * We can't use string objects in signal handlers because they might allocate memory, which is verboten in signal handlers. This caused random failures in the test suite on Mac OS X (triggered by the spurious SIGPOLL signals on Mac OS X, which should also be fixed). commit 6776a52bb380bb2567847c6e50e1d7880ad7847a Author: Eelco Dolstra Date: Fri Dec 12 11:49:42 2008 +0000 * Use a PathSet for the chroot directories so that we don't accidentally bind-mount a directory twice. commit d86bd22d247227e36de9577f25ad35f8fd4c65e0 Author: Eelco Dolstra Date: Fri Dec 12 10:20:19 2008 +0000 * Define _GNU_SOURCE. Hopefully this fixes the build on Debian 4.0 (http://hydra.nixos.org/nixlog/384/1). commit ac5478eb525f85e560d822ab3b5cb6ccb664d56e Author: Eelco Dolstra Date: Thu Dec 11 18:57:10 2008 +0000 * Don't provide the whole Nix store in the chroot, but only the closure of the inputs. This really enforces that there can't be any undeclared dependencies on paths in the store. This is done by creating a fake Nix store and creating bind-mounts or hard-links in the fake store for all paths in the closure. After the build, the build output is moved from the fake store to the real store. TODO: the chroot has to be on the same filesystem as the Nix store for this to work, but this isn't enforced yet. (I.e. it only works currently if /tmp is on the same FS as /nix/store.) commit 652817046b2f999e29de8109fce9c61b5b18d22c Author: Eelco Dolstra Date: Thu Dec 11 17:52:34 2008 +0000 * Revert r13150: now that we use private namespaces for the chroot, we don't have to put the chroot in /nix/var/nix/chroots anymore. They're back in /tmp now. commit 5a569509b491d43bfcb5c72e85a6d7374a583228 Author: Eelco Dolstra Date: Thu Dec 11 17:44:02 2008 +0000 * Provide a minimal /etc/passwd in the chroot to keep some builders happy. commit 7c54f1603f0c793bfc1f191aaa0ec71441038515 Author: Eelco Dolstra Date: Thu Dec 11 17:00:12 2008 +0000 * Do chroot builds in a private namespace. This means that all the bind-mounts we do are only visible to the builder process and its children. So accidentally doing "rm -rf" on the chroot directory won't wipe out /nix/store and other bind-mounted directories anymore. Also, the bind-mounts in the private namespace disappear automatically when the builder exits. commit 07cdfb09fb74cf8e1c3c70c070ad20b5d1119fcf Author: Eelco Dolstra Date: Thu Dec 11 14:30:25 2008 +0000 * Open the connection to the daemon lazily (on demand) so that read-only operations (like nix-env -qa) work properly when the daemon isn't running. commit a0766eca270390c2181c7f31f27f93629b19f4a5 Author: Eelco Dolstra Date: Thu Dec 4 21:07:29 2008 +0000 * Build on Debian 4.0 (GCC 4.1.1). commit cd16d5dc3d86c6c877514c291ce56b09746708af Author: Eelco Dolstra Date: Thu Dec 4 17:56:12 2008 +0000 * Doh. commit 5b949241a59c417b05dcbde3d65bd02cbcdf7d84 Author: Eelco Dolstra Date: Thu Dec 4 17:54:14 2008 +0000 * Build some 64-bit RPMs/Debs. commit 67958f21df2cac2adfb8b8ae33a4200f49d6add6 Author: Eelco Dolstra Date: Thu Dec 4 16:55:22 2008 +0000 * Be sure to clean up the daemon if the test fails. commit d91dc086bb61613f42fa5c2663e1c82e0567f78a Author: Eelco Dolstra Date: Thu Dec 4 16:51:36 2008 +0000 commit 9ac3f5df9c29e35b38539c3dca753eacc9b1393d Author: Eelco Dolstra Date: Thu Dec 4 16:51:16 2008 +0000 * Propagate --max-silent-time to remote machines. commit bcfe98acffbefea734f51523b386868ae443c111 Author: Eelco Dolstra Date: Thu Dec 4 16:35:47 2008 +0000 * Prefer building on a remote machine over a local machine. This makes more sense for the build farm, otherwise every nix-store invocation will lead to at least one local build. Will come up with a better solution later... commit 9850262a72d1eb77c8f36cf44a9a4aaffedc5d6b Author: Eelco Dolstra Date: Thu Dec 4 15:25:28 2008 +0000 * Build RPMs, Debs, coverage analysis. commit 909fbb9de1e3e2d020a3dd000b9009a5ff1aaeca Author: Eelco Dolstra Date: Thu Dec 4 14:29:41 2008 +0000 * When using build hooks, for any nix-store -r build operation, it is necessary that at least one build hook doesn't return "postpone", otherwise nix-store will barf ("waiting for a build slot, yet there are no running children"). So inform the build hook when this is the case, so that it can start a build even when that would exceed the maximum load on a machine. commit 5dfba0b4db24f4943c5b529eb3b092a64bcd6b18 Author: Eelco Dolstra Date: Thu Dec 4 13:36:52 2008 +0000 * Force allocation of a pseudo-terminal to clean up the remote nix-store process when the connection is interrupted. commit 9ccdb80de32cf8ff4e0f84c7011b5fbbfaf73c01 Author: Eelco Dolstra Date: Thu Dec 4 13:13:31 2008 +0000 * Don't ignore errors from writing to stderr. That way, when nix-store -r (or some other operation) is started via ssh, it will at least have a chance of terminating quickly when the connection is killed. Right now it just runs to completion, because it never notices that stderr is no longer connected to anything. Of course it would be better if sshd would just send a SIGHUP, but it doesn't (https://bugzilla.mindrot.org/show_bug.cgi?id=396). commit 9fd9c4c63559e21dde62b719a1665f9bc6c2155e Author: Eelco Dolstra Date: Thu Dec 4 12:20:06 2008 +0000 * Support multiple system types per remote machine, e.g. a machine list like root@example.org x86_64-linux /root/.ssh/id_buildfarm 1 root@example.org i686-darwin /root/.ssh/id_buildfarm 1 This is possible when the Nix installation on example.org itself has remote builds enabled. commit 63b8f09d8d8532e67009b7233f8f81e9326353ef Author: Eelco Dolstra Date: Thu Dec 4 10:45:47 2008 +0000 commit f8713e1287e2641c3d2550f7af1a445c77b8552a Author: Eelco Dolstra Date: Thu Dec 4 10:40:41 2008 +0000 * Dirty hack to make nix-push work properly on derivations: the derivation should be a source rather than a derivation dependency of the call to the NAR derivation. Otherwise the derivation (and all its dependencies) will be built as a side-effect, which may not even succeed. commit 82ae85de2759eaa68bb2411a1f0a640cf9f8e76a Author: Eelco Dolstra Date: Wed Dec 3 18:05:14 2008 +0000 * addToStore() in nix-worker: don't write the NAR dump received from the client to a temporary directory, as that is highly inefficient. commit 5eaf644c99c78ed89b2cab1d10d630435fd55d28 Author: Eelco Dolstra Date: Wed Dec 3 17:30:32 2008 +0000 * A simple API for parsing NAR archives. commit cdee3174190c237bbf36955a5faa3896f564b7a1 Author: Eelco Dolstra Date: Wed Dec 3 17:02:29 2008 +0000 * Backwards compatibility. commit d95b68fde32ab9f6b6aac052604b90b5ce4523d7 Author: Eelco Dolstra Date: Wed Dec 3 16:15:38 2008 +0000 commit ff762fb499be220ccd680f3bf68dca44a902a5ff Author: Eelco Dolstra Date: Wed Dec 3 16:10:17 2008 +0000 * Pass HashType values instead of strings. commit 1307b222239da8e503d22ad9316789e30b4e2431 Author: Eelco Dolstra Date: Wed Dec 3 15:51:17 2008 +0000 * Made addToStore() a lot more efficient: it no longer reads the path being copied 3 times in the worst case. It doesn't run in constant space, but it didn't do that anyway. commit 64519cfd657d024ae6e2bb74cb21ad21b886fd2a Author: Eelco Dolstra Date: Wed Dec 3 15:06:30 2008 +0000 * Unify the treatment of sources copied to the store, and recursive SHA-256 outputs of fixed-output derivations. I.e. they now produce the same store path: $ nix-store --add x /nix/store/j2fq9qxvvxgqymvpszhs773ncci45xsj-x $ nix-store --add-fixed --recursive sha256 x /nix/store/j2fq9qxvvxgqymvpszhs773ncci45xsj-x the latter being the same as the path that a derivation derivation { name = "x"; outputHashAlgo = "sha256"; outputHashMode = "recursive"; outputHash = "..."; ... }; produces. This does change the output path for such fixed-output derivations. Fortunately they are quite rare. The most common use is fetchsvn calls with SHA-256 hashes. (There are a handful of those is Nixpkgs, mostly unstable development packages.) * Documented the computation of store paths (in store-api.cc). commit 09bc0c502c4a52baf0bd363d8ee5f18d49244f73 Author: Eelco Dolstra Date: Sat Nov 29 00:31:39 2008 +0000 * Install the release notes. commit 5d4eb9dd07ddd589ec03582c3eeb82d490023282 Author: Eelco Dolstra Date: Wed Nov 26 01:13:29 2008 +0000 * Moved the build farm job for building Nix to the Nix tree. commit 0c478d2f4d7459c4af4e7608ed45ae3b2f09c7dc Author: Eelco Dolstra Date: Tue Nov 25 02:30:35 2008 +0000 * Ignore carriage returns. commit 5024bde8f407582c9cb5a916f3b5603184f76eb7 Author: Eelco Dolstra Date: Tue Nov 25 01:06:15 2008 +0000 * Handle prematurely ended logfiles, i.e. make sure we emit enough close tags. commit 2ab09a55cf06f547f7b6e94870259e1a51dbcf18 Author: Eelco Dolstra Date: Thu Nov 20 21:51:58 2008 +0000 * Bump the version number. commit 6bbff48079b27b529f0359bb9e6731dba1ad71db Author: Eelco Dolstra Date: Thu Nov 20 17:22:42 2008 +0000 commit b8eb32f4d22e42d7c17a7da7aed4cb864eee8902 Author: Eelco Dolstra Date: Thu Nov 20 16:42:52 2008 +0000 * Urgh. commit bba87589cce9629891c0094e5b5566d15a09c515 Author: Eelco Dolstra Date: Thu Nov 20 16:28:04 2008 +0000 commit f3e2e6076abdd60dc6d6a4237c0cb0f130cc5271 Author: Eelco Dolstra Date: Thu Nov 20 16:10:55 2008 +0000 commit 53cca4a445e9dd429302765805d9563a8a176832 Author: Eelco Dolstra Date: Thu Nov 20 16:06:13 2008 +0000 commit 4213b8d8ec8cf478e43b0ec3dc4068e5e55f097a Author: Eelco Dolstra Date: Thu Nov 20 15:44:59 2008 +0000 * Urgh. commit eb86b6f5a5429075866eca40d3cc4b864e7499ae Author: Eelco Dolstra Date: Thu Nov 20 15:08:39 2008 +0000 commit 3d2035ea86ce70c3a9f90120578271399ffd961e Author: Eelco Dolstra Date: Thu Nov 20 15:08:34 2008 +0000 * Blindly doing a replacement of occurences of $bindir (when running the tests) is a bad idea when $bindir = /usr and some programs (like perl) live there. Fortunately it doesn't seem to be needed anymore. commit 285d26374aac69d2bbd1df31bc76686ad39171a4 Author: Eelco Dolstra Date: Thu Nov 20 14:14:35 2008 +0000 * Don't set the prefix to /nix by default, rather use the Autoconf default of /usr/local. However, localstatedir and storedir are set to /nix/var/nix and /nix/store respectively unless they're explicitly overriden. commit a55113411fe8e6ef39e24c79564e39f07f5a8fdf Author: Eelco Dolstra Date: Thu Nov 20 12:25:11 2008 +0000 * Nix daemon: reload the configuration file after forking (NIX-100). commit c202523e5304c41ef9a6c7a54951bf39a33ff26e Author: Eelco Dolstra Date: Thu Nov 20 12:01:05 2008 +0000 commit aab530e9712baf802bcb48f03440a915dbc37ee9 Author: Eelco Dolstra Date: Wed Nov 19 23:26:19 2008 +0000 * Primop builtins.storePath for declaring a store path as a dependency. `storePath /nix/store/bla' gives exactly the same result as `toPath /nix/store/bla', except that the former includes /nix/store/bla in the dependency context of the string. Useful in some generated Nix expressions like nix-push, which now finally does the right thing wrt distributed builds. (Previously the path to be packed wasn't an explicit dependency, so it wouldn't be copied to the remote machine.) commit 60564410ef34db8fd3c9be759bdc687366f24e8e Author: Eelco Dolstra Date: Wed Nov 19 17:50:25 2008 +0000 * Patterns. commit 2668a43388d26d9ce740a54e8c4f0ec583ebf120 Author: Eelco Dolstra Date: Wed Nov 19 17:27:52 2008 +0000 commit 63ccd724968569455bb7d54f0badcfec18d18e9d Author: Eelco Dolstra Date: Wed Nov 19 17:00:32 2008 +0000 * Updated the manual. commit e13da525a7c16200f451fafb832993b47d407418 Author: Eelco Dolstra Date: Wed Nov 19 16:27:07 2008 +0000 * Files in the info directory starting with "." are temporary files and don't indicate path validity. commit 5d250ad1eae704106c7030ab984c929d7aef8f8f Author: Eelco Dolstra Date: Wed Nov 19 16:26:34 2008 +0000 * nix-store --dump-db: be more streamy. commit 7509d70f9ddec7d28911e6b6f2145bc50a923e9f Author: Eelco Dolstra Date: Wed Nov 19 15:20:46 2008 +0000 * Documented some of the sharing mechanisms. commit 2369b122d19c7a08fc6e38e5a8aab90636ed4132 Author: Eelco Dolstra Date: Wed Nov 19 13:19:09 2008 +0000 * Install documentation in $(docdir) (i.e. share/doc/nix). commit 6c2c771af7b1fc35a33e1faf0e4e7b266fe44e79 Author: Eelco Dolstra Date: Wed Nov 19 13:18:46 2008 +0000 * Removed obsolete option. commit 07d3a38726aeb9544212c14c8db5bdcdb7da785b Author: Eelco Dolstra Date: Wed Nov 19 11:58:33 2008 +0000 * Remove references to Berkeley DB, including most of the troubleshooting section. W00t. commit f5325d292d79f174f73b35ed886ae83bb80896cc Author: Eelco Dolstra Date: Wed Nov 19 10:59:36 2008 +0000 * Release notes. commit fa791116a35479bd295f5666c8d35fba60e0c98d Author: Eelco Dolstra Date: Tue Nov 18 14:43:40 2008 +0000 * Get rid of nix-pack-closure / nix-unpack-closure, they're redundant. commit 3f4ed681c2e16ab7a73e31835a6a7e29d5857dd7 Author: Eelco Dolstra Date: Fri Nov 14 16:50:01 2008 +0000 * Prevent zombies. Previous the SIGCHLD handler only reaped one zombie at a time, so if multiple children died before the handler got to run, some of them would not be cleaned up. commit 6fedb7aa0f76c34bccedd14095bcc7824006489d Author: Eelco Dolstra Date: Fri Nov 14 15:46:45 2008 +0000 * Restore SIGPIPE to SIG_DFL when running the builder. This prevents subtle and often hard-to-reproduce bugs where programs in pipes either barf with a "Broken pipe" message or not, depending on the exact timing conditions. This particularly happened in GNU M4 (and Bison, which uses M4). commit a519bb063505a8d39e6b1e12f130d66771676e23 Author: Eelco Dolstra Date: Wed Nov 12 11:08:27 2008 +0000 * Some somewhat ad hoc mechanism to allow the build farm to monitor build progress. commit 96598e7b06dad0de082730cab8992eacc440e535 Author: Eelco Dolstra Date: Tue Nov 11 15:11:10 2008 +0000 * Pass the --no-build-output flag to the daemon. commit 4166b11a53f16365f9becfa4f29f15047fc221af Author: Eelco Dolstra Date: Tue Nov 11 14:59:20 2008 +0000 * Add /dev/pts to the default nix.conf. commit 2b7c839b4e20d53e097036d854fbd52dbbc16dd6 Author: Eelco Dolstra Date: Tue Nov 11 14:58:37 2008 +0000 * Typo. commit 709b55ee0281bc2d587dff6f60ec189b010800f6 Author: Eelco Dolstra Date: Wed Oct 29 15:34:48 2008 +0000 * Put the chroots under /nix/var/nix/chroots to reduce the risk of disasters involving `rm -rf' on bind mounts. Will try the definitive fix (per-process mounts, apparently possible via the CLONE_NEWNS flag in clone()) some other time. commit c98ea254dcb6384b686a88657fd800ad7655e4a5 Author: Ludovic Courtès Date: Thu Oct 16 21:04:32 2008 +0000 libstore: Always mount `/dev/pts' individually. This fixes problems such as Tcl's PTY handling: ERROR: The system has no more ptys. Ask your system administrator to create more. commit 9d6d50269bef214473580a879f6194e02692fe16 Author: Eelco Dolstra Date: Thu Oct 16 14:16:03 2008 +0000 * Bug fix for building on some old installations (contributed by Pjotr). commit fa61ee70ee80b2b223fae86ee197987aa70499b2 Author: Eelco Dolstra Date: Thu Sep 18 09:08:54 2008 +0000 * Fix `--from-profile'. commit f32fef1b075f63ecf8c7351c5e67d4dd95c0fb80 Author: Eelco Dolstra Date: Wed Sep 17 14:52:35 2008 +0000 * GC option `--max-atime' that specifies an upper limit to the last accessed time of paths that may be deleted. Anything more recently used won't be deleted. The time is specified in time_t, e.g. seconds since 1970-01-01 00:00:00 UTC; use `date +%s' to convert to time_t from the command line. Example: to delete everything that hasn't been used in the last two months: $ nix-store --gc -v --max-atime $(date +%s -d "2 months ago") commit 4af2fdba6d709d0b9bb77dd58ceb6e16d6cd4cfa Author: Eelco Dolstra Date: Wed Sep 17 13:00:55 2008 +0000 * Typo. commit c987061aa401eaad984aaa3058aa0506df4f46da Author: Eelco Dolstra Date: Wed Sep 17 12:54:07 2008 +0000 * Some refactoring. Better output with `-v' for --use-atime. commit 77afd97a996a0bde569140b512879fbde83bf4a1 Author: Eelco Dolstra Date: Wed Sep 17 12:53:33 2008 +0000 * nix-store --gc / --delete: show how many store paths were deleted. commit 7ab68961e4d7c30485efde1fb9dcb6edbdea9b5c Author: Eelco Dolstra Date: Wed Sep 17 10:02:55 2008 +0000 * Garbage collector: added an option `--use-atime' to delete paths in order of ascending last access time. This is useful in conjunction with --max-freed or --max-links to prefer deleting non-recently used garbage, which is good (especially in the build farm) since garbage may become live again. The code could easily be modified to accept other criteria for ordering garbage by changing the comparison operator used by the priority queue in collectGarbage(). commit 2b2aa8a820b10aeaf8bb8f1eb70937d04869c045 Author: Eelco Dolstra Date: Mon Sep 8 11:02:15 2008 +0000 * Doh. commit 7933cdc6dcbc5e6bc64e38c986b952e5ecd2dfa1 Author: Eelco Dolstra Date: Tue Sep 2 09:21:38 2008 +0000 * When writing the user environment manifest, filter out non-string attributes from the meta attribute. Not doing so caused nix-env to barf on the "psi" package, which has a meta.function attribute, the textual serialisation of which causes a gigantic string to be produced --- so big that it causes nix-env to run out of memory. Note however that "meta" really only should contain strings. meta.function should be passthru.function. commit 0f0dbe8c0c958f14461ad998c0847a06f95eca1d Author: Eelco Dolstra Date: Fri Aug 29 14:38:04 2008 +0000 * Extend the ATerm suppressions to 64-bit. commit 311c222f472e93c9eb9987526b6caf80774c3d49 Author: Eelco Dolstra Date: Fri Aug 29 13:59:03 2008 +0000 commit 2a01d06da6a5e7f4eda3f13c5c4c1a20d0e02d94 Author: Michael Raskin <7c6f434c@mail.ru> Date: Fri Aug 29 08:34:38 2008 +0000 Added nix-http-export.cgi to extra distributed scripts; so it can be installed from releases, not only from SVN. commit 7718b19389fd02407860ce587196adc04f80bb5d Author: Eelco Dolstra Date: Wed Aug 27 17:20:25 2008 +0000 * Explicitly set PWD to prevent problems with chroot builds. In particular, dietlibc cannot figure out the cwd because the inode of the current directory doesn't appear in .. (because getdents returns the inode of the mount point). commit 9cc0da84533f1ced2ed89ea807ac18b1078f7f88 Author: Eelco Dolstra Date: Wed Aug 27 16:03:03 2008 +0000 * Create a /tmp with 1777 permission in the chroot. Some builders need a writable /tmp (they don't respect $TMPDIR). commit 99dc3e613a2ce30474fff92151abf165d017c26d Author: Eelco Dolstra Date: Tue Aug 26 14:05:59 2008 +0000 * Require that __overrides is defined as a non-recursive attribute (which means it can only be defined via "inherit"), otherwise we get scoping bugs, since __overrides can't be recursive (or at least, it would be hard). commit d06be428f6dd046c89a69995d5328b8250bec3d2 Author: Eelco Dolstra Date: Mon Aug 25 15:49:22 2008 +0000 * Disable chroot builds for fixed-output derivations so that we don't need /etc in the chroot (in particular, /etc/resolv.conf for fetchurl). Not having /etc/resolv.conf in the chroot is a good thing, since we don't want normal derivations to download files. commit abec1c000410a1533f9c80357be6061730d8c6aa Author: Eelco Dolstra Date: Mon Aug 25 14:31:29 2008 +0000 * Evaluate attributes in sorted order for better determinism. commit c4f1c2114b520f5c9d589780dd7662efbfd9cf63 Author: Eelco Dolstra Date: Mon Aug 25 14:15:56 2008 +0000 * Minor simplification. commit 49829da8b450a1e869168428171334e6d9d0eb45 Author: Eelco Dolstra Date: Mon Aug 25 13:32:27 2008 +0000 * Doh. commit b428adc267f23441be2f801239641aaf8419e4ba Author: Eelco Dolstra Date: Mon Aug 25 13:31:57 2008 +0000 * Strip off the `.nix' suffix from the attribute name for files in ~/.nix-defexpr, otherwise the attribute cannot be selected with the `-A' option. Useful if you want to stick a Nix expression directly in ~/.nix-defexpr. commit cc826dc03e738c1d6c6fd6de0dfd9600f6289b72 Author: Eelco Dolstra Date: Fri Aug 22 14:32:29 2008 +0000 * Simplify the Valgrind suppressions using wildcards. commit 51e2dda58c4aa08c4833bdab6b0bb0fad8e1c595 Author: Eelco Dolstra Date: Tue Aug 19 12:46:43 2008 +0000 * Some more ATerm Valgrind suppressions. commit b7ff182b6ef1f9d8db87de040b4ffc75db1cb9bc Author: Michael Raskin <7c6f434c@mail.ru> Date: Thu Aug 14 22:01:43 2008 +0000 Fixing an obvious typo in override code. I do not know whether it works correctly after the change, but at least it ca nbe compiled now. commit ca07f3e37015fa85fbfc5afd868249d457e649c9 Author: Eelco Dolstra Date: Thu Aug 14 16:59:37 2008 +0000 * Another experimental feature: a way to truly override attributes in a rec. This will be very useful to allow end-user customisation of all-packages.nix, for instance globally overriding GCC or some other dependency. The // operator doesn't cut it: you could replace the "gcc" attribute, but all other attributes would continue to reference the original value due to the substitution semantics of rec. The syntax is a bit hacky but this is to allow backwards compatibility. commit 9279174dde3e1a450e63e866d2683352dd8238d3 Author: Eelco Dolstra Date: Thu Aug 14 14:00:44 2008 +0000 * Added an experimental feature suggested by Andres: ellipses ("...") in attribute set pattern matches. This allows defining a function that takes *at least* the listed attributes, while ignoring additional attributes. For instance, {stdenv, fetchurl, fuse, ...}: stdenv.mkDerivation { ... }; defines a function that requires an attribute set that contains the specified attributes but ignores others. The main advantage is that we can then write in all-packages.nix aefs = import ../bla/aefs pkgs; instead of aefs = import ../bla/aefs { inherit stdenv fetchurl fuse; }; This saves a lot of typing (not to mention not having to update all-packages.nix with purely mechanical changes). It saves as much typing as the "args: with args;" style, but has the advantage that the function arguments are properly declared (not implicit in what the body of the "with" uses). commit db4f4a842515392a6b40f5c86b2ef885c1278451 Author: Eelco Dolstra Date: Thu Aug 14 13:02:19 2008 +0000 * Backward compatibility check to prevent nixos-rebuild from barfing when upgrading Nix. commit 1b962fc7206bf3134b2a2097d3db0ee6d2863c47 Author: Eelco Dolstra Date: Thu Aug 14 12:53:29 2008 +0000 * @-patterns as in Haskell. For instance, in a function definition f = args @ {x, y, z}: ...; `args' refers to the argument as a whole, which is further pattern-matched against the attribute set pattern {x, y, z}. commit e8188384129bda7c8cdd5e17023ab05047551e6e Author: Eelco Dolstra Date: Thu Aug 14 10:14:34 2008 +0000 * "pattern" non-terminal. commit efe4b690ae4de5f0adea99abb1176a64a099d433 Author: Eelco Dolstra Date: Thu Aug 14 10:04:22 2008 +0000 * Refactoring: combine functions that take an attribute set and functions that take a single argument (plain lambdas) into one AST node (Function) that contains a Pattern node describing the arguments. Current patterns are single lazy arguments (VarPat) and matching against an attribute set (AttrsPat). This refactoring allows other kinds of patterns to be added easily, such as Haskell-style @-patterns, or list pattern matching. commit c03b729319997b4e38c3f586d7c76352228b22e7 Author: Eelco Dolstra Date: Thu Aug 14 09:26:30 2008 +0000 * Increase the sleep periods a bit to make the test less likely to fail on slow machines. Of course it would be better if this test wasn't timing dependent... commit 5664b6d7ba28453ccdd6d1c07a707f98608500ff Author: Eelco Dolstra Date: Mon Aug 11 13:36:40 2008 +0000 * Removed the "valid values" feature. Nobody uses it anyway. commit b455c4c45cba49397952e662cace85aedb6848fe Author: Michael Raskin <7c6f434c@mail.ru> Date: Wed Aug 6 19:43:53 2008 +0000 Updates to nix-reduce-build Common code in local build package sources refactored out in a function; before building the real set of derivations needed is found (slightly slower for only one build strategy, but less garbage on output and better performance for multiple build strategies). Now you have full choice of best-effort build regardless of method (substituters or actual build), using substituters, building only fixed derivations (should get you all the downloads) and local build without even trying substituters. Some minor fix in the help text about behavior with no package sources. commit 72f3ea7358f2c85ced46da3b958505951657f9d4 Author: Eelco Dolstra Date: Tue Aug 5 11:03:05 2008 +0000 * Moved some stuff to the Nixpkgs manual. * Updated the release notes. commit 98b07466fbb9fc736bba0b93731117fd650e7349 Author: Eelco Dolstra Date: Tue Aug 5 10:57:53 2008 +0000 * Better error checking of the data from the substituters. commit 339c1420096c254b20b5b16b79a075b2c646ee70 Author: Eelco Dolstra Date: Mon Aug 4 16:21:45 2008 +0000 * Use optimistic profile locking for nix-env operations like `-i' and `-u'. Instead of acquiring an exclusive lock on the profile for the entire duration of the operation, we just perform the operation optimistically (without an exclusive lock), and check at the end whether the profile changed while we were busy (i.e., the symlink target changed). If so, the operation is restarted. Restarting is generally cheap, since the build results are still in the Nix store. Most of the time, only the user environment has to be rebuilt. commit a87b5256e27bb4ac359aa98ce11ff19c5cecd9fa Author: Eelco Dolstra Date: Mon Aug 4 16:16:49 2008 +0000 * Fix the tests. commit 001b3f06ecf7356cdef53f4ece4ba1cd87b97e77 Author: Eelco Dolstra Date: Mon Aug 4 14:58:50 2008 +0000 * `nix-env --set': support --dry-run. commit 7592f48c83b2f333fa7c5e85fd2fb64445b1c6ca Author: Eelco Dolstra Date: Mon Aug 4 13:46:01 2008 +0000 * nix-build: `--dry-run' flag. commit a1d310b6b5c710215265c1cd0d5893248ed50f92 Author: Eelco Dolstra Date: Mon Aug 4 13:44:46 2008 +0000 * `nix-store --realise': print what paths will be built/downloaded, just like nix-env. * `nix-store --realise': --dry-run option. commit 42043953c3558f054dc5b9bb3da605a4a3ed6314 Author: Eelco Dolstra Date: Mon Aug 4 13:15:47 2008 +0000 * Doh. commit 5adbb0aabe54479304453bf5e544f84b40ee7dd7 Author: Eelco Dolstra Date: Mon Aug 4 13:15:35 2008 +0000 * build.cc: only use a substituter if it returns info for a path. commit 5b1052663a35940fc99ae6a8fcf6e707ae939fef Author: Eelco Dolstra Date: Mon Aug 4 13:11:09 2008 +0000 * Always show what paths we're going to build/download (as in --dry-run). Maybe there should be an option to turn this on/off? commit c4f98941ed7e5e07786d92fc0be4435878f9b3cd Author: Eelco Dolstra Date: Mon Aug 4 12:29:04 2008 +0000 * nix-env --dry-run: show the total size of the substituter downloads. commit 03427e76f11fe1d918020d28bdb69b2fb348ee96 Author: Eelco Dolstra Date: Mon Aug 4 11:44:50 2008 +0000 * querySubstitutablePathInfo: work properly when run via the daemon. * --dry-run: print the paths that we don't know how to build/substitute. commit b3c26180e33856f16e1e5ceea30b951065b4ebc1 Author: Michael Raskin <7c6f434c@mail.ru> Date: Sat Aug 2 16:43:25 2008 +0000 Updates to nix-reduce-build: only realize fixed derivations if user asks so, or only use substituters. Oh, and add possibility to use : for things like /etc/nixos/nixpkgs:-A:gnused commit 3c92ea399d717dc45b3fa91424c0dadc0239ebf2 Author: Eelco Dolstra Date: Sat Aug 2 12:54:35 2008 +0000 * Make nix-env --dry-run print the paths to be substituted correctly again. (After the previous substituter mechanism refactoring I didn't update the code that obtains the references of substitutable paths.) This required some refactoring: the substituter programs are now kept running and receive/respond to info requests via stdin/stdout. commit fc691e1cbdcddb8c553cba06d4089bc1b60e3d98 Author: Eelco Dolstra Date: Thu Jul 24 14:52:25 2008 +0000 * Print a better error message when a non-derivation attribute set is coerced to a string. commit 096198d11f14a1fff2eb335a572c0b20ae52dbf8 Author: Eelco Dolstra Date: Wed Jul 23 16:02:58 2008 +0000 * A quick hack to make nix-prefetch-url support mirror:// URLs. It requires that $NIXPKGS_ALL points at a Nixpkgs tree. commit 660244f65f5d3cb445c874b25fcf6494b3c1df3a Author: Eelco Dolstra Date: Wed Jul 23 09:38:38 2008 +0000 * Make sure that copy-from-other-stores.pl is built. commit e139d7fc6896ec9eaca3944828e37ec61894d8e0 Author: Eelco Dolstra Date: Fri Jul 18 20:03:12 2008 +0000 * Fix the tests. commit 989176c56e1996a7df87bb501ad09aed1f3b395d Author: Eelco Dolstra Date: Fri Jul 18 15:34:46 2008 +0000 * Allow read-only access to the store (e.g., non-root users on NixOS can do operations like "nix-store -qR " even without the Nix daemon). commit 8bc591a6f07ee577b5aa594dfa705f3ddabd269d Author: Eelco Dolstra Date: Fri Jul 18 13:05:10 2008 +0000 * Use the copy-from-other-stores substituter by default. Of course, it only does something if $NIX_OTHER_STORES (not really a good name...) is set. * Do globbing on the elements of $NIX_OTHER_STORES. E.g. you could set it to /mnts/*/nix or something. * Install substituters in libexec/nix/substituters. commit 15f39aba8ceb2dabc4f019bd1c985ca9d13bfdb4 Author: Eelco Dolstra Date: Sat Jul 12 18:58:24 2008 +0000 * Quick prototype of a substituter that copies paths from other Nix stores (typically remote Nix stores mounted via e.g. NFS, or the Nix store on the NixOS installation CD). Example use: $ sshfs foo@example.org:/ /mnt $ NIX_OTHER_STORES=/mnt/nix \ NIX_SUBSTITUTERS=.../copy-from-other-stores.pl \ nix-env -i foo This will be especially useful for the installation CD since it doesn't require a manifest for the CD contents. commit 7cd88b1dec29f33188e789d780ec2e4ebb155d20 Author: Eelco Dolstra Date: Fri Jul 11 13:29:04 2008 +0000 * Generalised the dependencyClosure primop to builtins.genericClosure, which is hopefully more useful. * New primops: length, mul, div. commit d567baabbd99fdb92e67295a77aef76ef970e65c Author: Eelco Dolstra Date: Tue Jul 1 10:10:32 2008 +0000 * Export the nix-env derivation name parsing and version comparison logic through the `parseDrvName' and `compareVersions' primops. This will allow expressions to easily check whether some dependency is a specific needed version or falls in some version range. See tests/lang/eval-okay-versions.nix for examples. commit b3b0b2a29e2842784f80cf839f84af18b0b83e90 Author: Eelco Dolstra Date: Mon Jun 23 13:52:28 2008 +0000 * `make ext-clean': remove the bzip2 build. commit 6c8641a542aef69698ae05f568e8b8d67abfea8b Author: Eelco Dolstra Date: Wed Jun 18 19:17:05 2008 +0000 commit 5af84139a8d04ad9fdb2c02bc242ce5cd50b87b9 Author: Eelco Dolstra Date: Wed Jun 18 15:20:33 2008 +0000 * --max-freed: support values >= 4 GB. commit d3aa183beb774c20cb77052248cf45e684d134fb Author: Eelco Dolstra Date: Wed Jun 18 14:20:16 2008 +0000 * Garbage collector: option `--max-freed' to stop after at least N bytes have been freed, `--max-links' to stop when the Nix store directory has fewer than N hard links (the latter being important for very large Nix stores on filesystems with a 32000 subdirectories limit). commit a8f3b02092fcc08fb25fb327d0188ffc888120bb Author: Eelco Dolstra Date: Wed Jun 18 14:13:00 2008 +0000 * `nix-store --optimise': handle files with >= 32000 hard links. (There can easily be more than 32000 occurrences of the empty file.) commit a72709afd8ffe35613a6bacd698a36395e095a48 Author: Eelco Dolstra Date: Wed Jun 18 09:34:17 2008 +0000 * Some refactoring: put the GC options / results in separate structs. * The garbage collector now also prints the number of blocks freed. commit 934c58aa381f5eacc86304ba7f5c6775ff456cd5 Author: Eelco Dolstra Date: Tue Jun 17 08:12:12 2008 +0000 * Use bzip2 1.0.5. commit ee8f15930d9b2fb31b0125aac3ccd9a92d04c556 Author: Eelco Dolstra Date: Sun Jun 15 15:10:03 2008 +0000 * Test instrumentation. commit f351834f77441e14238b3348cfe211fa6f6f4e3a Author: Eelco Dolstra Date: Sat Jun 14 16:03:02 2008 +0000 * nix-worker: clean up the temporary root for the worker processes in /nix/var/nix/temproots. commit 94fd46fa1c4655a609b3a67bef447c9547eb5080 Author: Eelco Dolstra Date: Sat Jun 14 16:02:31 2008 +0000 * Note. commit 955b8841cd2a32afd7f2be56b198ce4d163f3b46 Author: Michael Raskin <7c6f434c@mail.ru> Date: Sat Jun 14 08:48:40 2008 +0000 Also trying to build derivers in case we cannot get substituters commit 18e27629d301ceef4c6f896f22197f8daee24da3 Author: Michael Raskin <7c6f434c@mail.ru> Date: Sat Jun 14 08:30:35 2008 +0000 Added local best-effort builds (i.e. one failure does not ruin all packages you would like to see built) commit 826b271d9aead1a0f8e1678e7c2814066fffb983 Author: Eelco Dolstra Date: Fri Jun 13 18:25:24 2008 +0000 * Garbage collector: don't do a complete topological sort of the Nix store under the reference relation, since that means that the garbage collector will need a long time to start deleting paths. Instead just delete the referrers of a path first. commit 30c9f909b24d64d8fabc2bb450e03744cc69c9a0 Author: Eelco Dolstra Date: Fri Jun 13 17:21:20 2008 +0000 * Print some progress info during the early GC stages. commit 194c66eeebdd6920716c82eeb259083d7bbd84c5 Author: Michael Raskin <7c6f434c@mail.ru> Date: Fri Jun 13 14:34:19 2008 +0000 Stupid error in script commit f903d86740c918176bf299a114a03a49a17aa0b9 Author: Michael Raskin <7c6f434c@mail.ru> Date: Fri Jun 13 13:53:14 2008 +0000 OK, I will believe that fix does no worse.. commit ce85b55cf0c81b9de1a1633bc8f200f1d0ed0d4c Author: Michael Raskin <7c6f434c@mail.ru> Date: Thu Jun 12 17:45:38 2008 +0000 Updated help text commit 4532e4b90da3f4410e3c6ea4766e4e8912aa2cab Author: Michael Raskin <7c6f434c@mail.ru> Date: Thu Jun 12 16:26:53 2008 +0000 Added verbosity for nix-reduce-build commit 2818b7cee6729043b9eeef5b6eb6bba68e93b1e7 Author: Eelco Dolstra Date: Wed Jun 11 15:39:38 2008 +0000 * Updated some URLs. commit 997b95a4af9b70bc36c57a681c1637499c5ed18c Author: Eelco Dolstra Date: Tue Jun 10 10:08:15 2008 +0000 * Fixed compatibility with old versions of "wc" that print whitespace before the count. commit b0e92f6d474ce91d7f071f9ed62bbb2015009c58 Author: Eelco Dolstra Date: Mon Jun 9 13:52:45 2008 +0000 * Merged the no-bdb branch (-r10900:HEAD https://svn.nixos.org/repos/nix/nix/branches/no-bdb). commit 4ed01ed791b3bb7a4010049c6128aa2d49a81a29 Author: Eelco Dolstra Date: Mon Jun 9 13:42:13 2008 +0000 * Updated some URLs (did this a long time ago but forgot to commit...). commit c41a3ec3a9ebf0bfde5fe23fa10d800afe2d9bd9 Author: Sander van der Burg Date: Wed Jun 4 14:36:46 2008 +0000 First attempt to update Nix SDF grammar to match the actual bison grammar commit bd955e15e1aac8a1490a680b9f5cfcce29f2331a Author: Eelco Dolstra Date: Wed May 21 11:17:31 2008 +0000 * GCC 4.3.0 (Fedora 9) compatibility fixes. Reported by Gour and Armijn Hemel. commit 9819bb20da130509ab62f303267331c2403b043c Author: Michael Raskin <7c6f434c@mail.ru> Date: Sun May 11 15:54:30 2008 +0000 Added support for file:// archive (.nar.gz) repositories to nix-reduce-build. /tmp/nix-export created by nix-http-export.cgi is OK. commit b4bc8b76160ff81e0e5489b88ff3ca8cbd587131 Author: Michael Raskin <7c6f434c@mail.ru> Date: Wed May 7 14:18:28 2008 +0000 --proxy=proxy:3128 commit b1e321d6ce0b4ef2e042021939a3d6be160841f8 Author: Michael Raskin <7c6f434c@mail.ru> Date: Tue Apr 29 04:03:54 2008 +0000 Added http alternative transport for nix-reduce-build commit 658816ddc9b6c22ddb9de27b82fc15af2a473723 Author: Eelco Dolstra Date: Thu Apr 10 09:54:23 2008 +0000 * Make really sure that we use bash. The line NEED_PROG(shell, bash) actually uses the content of $shell if set, which often points at /bin/sh. commit 72034ab35d5ba8c2b229fe36375a15b2a8b5b68c Author: Eelco Dolstra Date: Wed Apr 9 05:57:01 2008 +0000 * sockaddr_un doesn't allow path names of more than 108 characters. This isn't usually a problem, except that it causes tests to fail when performed in a directory with a very long path name. So chdir to the socket directory and use a relative path name. commit f8985d195e600387fd03137872bb27cec65b2492 Author: Eelco Dolstra Date: Fri Mar 28 17:52:33 2008 +0000 * Fix for NIX-101 (should use an absolute path for call to nix-hash). commit 329025253d38361ee3d13af0728f99c756c86b7a Author: Eelco Dolstra Date: Thu Mar 27 13:45:17 2008 +0000 * Use /tmp/nix-build-- instead of /tmp/nix-- for temporary build directories. This increases purity a bit: many packages store the temporary build path in their output, causing (generally unimportant) binary differences. commit 5bb08db55b57b03608b15f599f0d5d9dbda13d74 Author: Eelco Dolstra Date: Fri Mar 21 14:57:16 2008 +0000 * Updated URL. commit 98968fbb63a1a049b2439bfc2a7d53e5b51471e3 Author: Eelco Dolstra Date: Thu Mar 20 18:15:20 2008 +0000 * Disable the don't-run-as-root sanity check because it breaks RPM builds (which are done as root...). commit 2f1e2cf6326d25befc9962add29d6fe2e7246b1a Author: Eelco Dolstra Date: Thu Mar 20 14:59:33 2008 +0000 * Note that the SDF grammar isn't used. commit f10686811053f79b5c60c97a70dde4f638fad840 Author: Eelco Dolstra Date: Thu Mar 20 10:16:36 2008 +0000 * Cleanup. commit f789ea1d098c2755e97f7ee6ebc418f71e5f56f6 Author: Eelco Dolstra Date: Sat Mar 1 21:05:33 2008 +0000 * A transaction is unnecessary since the path cannot be garbage-collected (it's a temporary root). commit d7caac3e811c0c9b284c8bbbdf5bc1dd5badd040 Author: Eelco Dolstra Date: Thu Feb 28 21:27:47 2008 +0000 * Don't install nix-reduce-build by default yet please, I first want to understand better what it does... commit 11d512e7a812e750deccf616b461876fb0a342c2 Author: Michael Raskin <7c6f434c@mail.ru> Date: Wed Feb 27 21:26:47 2008 +0000 Added nix-reduce-build. You point it to some path you want to build and it fetches whatever it can from specified computers via nix-copy-closure. NOTE: You do want to set up RSA keys or ssh-agent or something... You really do want it. It will run separate ssh instances insane number of times. commit 0a84137c4512e0a31802e94de7795e04f8ee2198 Author: Eelco Dolstra Date: Thu Feb 21 12:01:24 2008 +0000 * checkVarDefs: don't check in closed terms, which don't have undefined variables by definition. This matters for the implementation of "with", which does a call to checkVarDefs to see if the body of the with has no undefined variables. (It can't be checked at parse time because you don't know which variables are in the "with" attribute set.) If we check closed terms, then we check not just the with body but also the substituted terms, which are typically very large. This is the cause of the poor nix-env performance on Nixpkgs lately. It didn't happen earlier because "with" wasn't used very often in the past. This fix improves nix-env performance roughly 60x on current Nixpkgs. nix-env -qa is down from 29.3s to 0.5s on my laptop, and nix-env -qa --out-path is down from 229s to 3.39s. Not bad for a 1-line fix :-) commit 0ed89c569f95d884fb8107a555f8a03672a0fffd Author: Eelco Dolstra Date: Tue Feb 5 13:38:07 2008 +0000 * Fix the parsing of '' '${foo}' '' where the antiquote should work as expected, instead of giving the string "'${foo}'". commit 4066f450c2ea56f90eba819564a112ec5ba2ee09 Author: Eelco Dolstra Date: Tue Feb 5 13:35:49 2008 +0000 * Doh. commit e7bdde981f9460994baa805beb6906bb4aa4f947 Author: Eelco Dolstra Date: Tue Feb 5 13:25:18 2008 +0000 * Regression test. commit 66c51dc21558c6ac5149c5158df7e5b580029e84 Author: Eelco Dolstra Date: Tue Jan 29 18:17:36 2008 +0000 * nix-store --dump-db / --load-db to dump/load the Nix DB. * nix-store --register-validity: option to supply the content hash of each path. * Removed compatibility with Nix <= 0.7 stores. commit 5b5a3af98372029f3a870cf18cc1442f1434be85 Author: Michael Raskin <7c6f434c@mail.ru> Date: Sun Jan 20 20:44:03 2008 +0000 Probably fixed __exprToString commit 5eb5c23447b5c2bfa097416aab340d172eb416d3 Author: Michael Raskin <7c6f434c@mail.ru> Date: Tue Jan 15 04:32:08 2008 +0000 Fixed exportBuildReferenceGraph commit 7d0f6aed59b11ef1037e7b0ee4dae1c7288ebb45 Author: Eelco Dolstra Date: Fri Jan 4 14:22:49 2008 +0000 * New primop `unsafeDiscardStringContext' to get rid of string contexts. Needed to prevent unnecessary dependencies when building the NixOS manual. commit 895c9538173a1c1d7e5f6c82e5b7a58b7d904683 Author: Eelco Dolstra Date: Mon Dec 31 17:53:59 2007 +0000 * Bumped the version number to 0.12. commit d4117859d61ed9560d0d6ab468735a22bfa6d076 Author: Eelco Dolstra Date: Mon Dec 31 16:57:12 2007 +0000 commit e0ca6714911e34f86f6a644634ebaef86666e6dc Author: Eelco Dolstra Date: Mon Dec 31 02:52:17 2007 +0000 * More documentation. commit 6bdecfacbbebfaa4aa588941844713d2b31ae95c Author: Eelco Dolstra Date: Mon Dec 31 01:52:57 2007 +0000 * Documented a bunch of nix-store commands. commit 454f571f873eef151f382ef4ada7692d9680da77 Author: Eelco Dolstra Date: Mon Dec 31 01:22:09 2007 +0000 commit 4c82983010214f2588fbd7cf73265a816b7d8ac9 Author: Eelco Dolstra Date: Mon Dec 31 01:17:25 2007 +0000 commit f60aa2aa21f59de0d741ecb7d8a46d1bff82513c Author: Eelco Dolstra Date: Mon Dec 31 00:34:44 2007 +0000 commit dedd62dd0ca0c066dd0fce32eaa7bff442bd15da Author: Eelco Dolstra Date: Mon Dec 31 00:08:09 2007 +0000 * More release notes. commit b5ddcf58ad1283d462fd10935708f8b24bc05135 Author: Eelco Dolstra Date: Sun Dec 30 23:59:10 2007 +0000 * Fix the hashDerivationModulo test. I should really investigate *why* the test failed... commit 59707975a39b0a444444df4eb6c2e6d19ff5e050 Author: Eelco Dolstra Date: Sun Dec 30 23:36:09 2007 +0000 * Documented indented string literals. * Release notes. commit de012e76e2502cd5513cf7e7417aff6db3951cb2 Author: Eelco Dolstra Date: Sun Dec 30 23:35:45 2007 +0000 * Don't use "store expression", it's obsolete. commit 2196cb67c5a47eeb822351f1669c201e16ea6ebc Author: Michael Raskin <7c6f434c@mail.ru> Date: Sun Dec 30 09:30:56 2007 +0000 Added a way to include derivation with its outputs and dependencies - exportBuildReferenceGraph commit df303666bceb5715e706478fad0325447a2a52f6 Author: Eelco Dolstra Date: Fri Dec 14 14:49:35 2007 +0000 * Use strsignal if available to give better error messages for builders that fail due to a signal. commit 1e90b4189d5b922479a10eac550736d608b038fd Author: Eelco Dolstra Date: Fri Dec 14 14:15:30 2007 +0000 * Another insane Mac OS X 10.5 compatibility hack. commit 485d71c54a323e967ef4f0b4c5ebf97e97d7d725 Author: Eelco Dolstra Date: Fri Dec 14 14:08:09 2007 +0000 * Mac OS X 10.5 compatibility: `echo -n foo' suddenly prints `-n foo' instead of `foo' without a newline (with /bin/sh, not /bin/bash, even though /bin/sh is also bash...). So use printf instead. commit 30e4653783096c8349ef12512df12f0829764e65 Author: Eelco Dolstra Date: Thu Dec 13 22:06:19 2007 +0000 * Mac OS X 10.5 compatibility. commit 4ff1335b2e7f69c33fa3d4223fe51e109338aa90 Author: Marc Weber Date: Wed Dec 12 02:12:58 2007 +0000 small udpate commit 3a2833daffcaf22894220837d9f9985580f5823a Author: Michael Raskin <7c6f434c@mail.ru> Date: Mon Dec 10 22:16:47 2007 +0000 corrected --help message for nix-store a bit commit 764b0115d5abd529d08d16f7bac2976e4a7e0cda Author: Marc Weber Date: Mon Dec 10 21:17:29 2007 +0000 Very basic nix vim syntax highlighting commit b42ef9c0544009b372e3da0275553ce08cf0ea2a Author: Eelco Dolstra Date: Thu Dec 6 10:20:58 2007 +0000 * Syntax to escape '', ${. commit d4950f207f18e635cc13e3ee33103fd501456384 Author: Eelco Dolstra Date: Tue Dec 4 11:42:58 2007 +0000 * component -> package. commit 6d6c68c0d29310b6eca35f58b1e68f495d6cd33a Author: Eelco Dolstra Date: Fri Nov 30 16:48:45 2007 +0000 * Added a new kind of multi-line string literal delimited by two single quotes. Example (from NixOS): job = '' start on network-interfaces start script rm -f /var/run/opengl-driver ${if videoDriver == "nvidia" then "ln -sf ${nvidiaDrivers} /var/run/opengl-driver" else if cfg.driSupport then "ln -sf ${mesa} /var/run/opengl-driver" else "" } rm -f /var/log/slim.log end script ''; This style has two big advantages: - \, ' and " aren't special, only '' and ${. So you get a lot less escaping in shell scripts / configuration files in Nixpkgs/NixOS. The delimiter '' is rare in scripts (and can usually be written as ""). ${ is also fairly rare. Other delimiters such as <<...>>, {{...}} and <|...|> were also considered but this one appears to have the fewest drawbacks (thanks Martin). - Indentation is intelligently stripped so that multi-line strings can follow the nesting structure of the containing Nix expression. E.g. in the example above 6 spaces are stripped from the start of each line. This prevents unnecessary indentation in generated files (which sometimes even breaks things). See tests/lang/eval-okay-ind-string.nix for some examples. commit 633518628f48fb9c06bfd570eeca6f62696aba05 Author: Eelco Dolstra Date: Thu Nov 29 16:18:24 2007 +0000 * nix-env -e: support uninstalling by path, so that one can say $ nix-env -e $(which firefox) or $ nix-env -e /nix/store/nywzlygrkfcgz7dfmhm5xixlx1l0m60v-pan-0.132 * nix-env -i: if an argument contains a slash anywhere, treat it as a path and follow it through symlinks into the Nix store. This allows things like $ nix-build -A firefox $ nix-env -i ./result * nix-env -q/-i/-e: don't complain when the `*' selector doesn't match anything. In particular, `nix-env -q \*' doesn't fail anymore on an empty profile. commit 12d0a1eb753567bb2083aadb4ee3d325d3f29c70 Author: Eelco Dolstra Date: Thu Nov 29 14:15:33 2007 +0000 * Troubleshooting entry about running out of locks. commit 06f95dd07ce691a1f12c8ec7fa5ad84858d81cd0 Author: Eelco Dolstra Date: Wed Nov 21 13:49:59 2007 +0000 * New primop `readFile' to get the contents of a file as a string. commit c370755583d7350f4b96136eb0a6a8a7b08551b1 Author: Eelco Dolstra Date: Fri Nov 16 16:15:26 2007 +0000 * Flag `--no-build-hook' to disable distributed builds. * queryDeriver in daemon mode: don't barf if the other side returns an empty string (which means there is no deriver). commit c05783ad67ee95b5dd76d160efedc23b3acb0905 Author: Eelco Dolstra Date: Fri Nov 16 16:10:27 2007 +0000 * nix-store --import: add a flag --require-signature. commit 6784b14241c916943cd9b1b0fa0af66fb574605c Author: Eelco Dolstra Date: Thu Nov 15 16:52:40 2007 +0000 * nix-build: pass --argstr to nix-instantiate. commit ca210d2a581622e0276c5e98420189374652d24a Author: Eelco Dolstra Date: Thu Nov 15 15:33:30 2007 +0000 * Doh! commit 149e27302334b6a83bfe293c15426d1a4abf958d Author: Eelco Dolstra Date: Thu Nov 15 15:07:27 2007 +0000 * Don't need gc.hh. commit bfec245efa68f010b8687c1eee8dcf909c4d1343 Author: Eelco Dolstra Date: Thu Nov 15 14:28:08 2007 +0000 * Add build-remote.pl to the Nix distribution. commit 6fc60e2060be5958c2aad1c859ee60bae5e23980 Author: Michael Raskin <7c6f434c@mail.ru> Date: Thu Nov 15 03:47:12 2007 +0000 Added possibility to specify garbage collection levels for store paths; so packages can share intermediate results of compilation and GC will collect it automatically while never touching tarballs, for example. commit 5b74a5957023bd51b7ba32fc244cb08931507a52 Author: Eelco Dolstra Date: Mon Nov 5 18:12:29 2007 +0000 * nix-prefetch-url: don't fail if /tmp/nix-prefetch-url- exists, instead use a counter just like we do for temporary build directories. commit 5f8a203b556c649ef25b4b855ee795b6cff23e98 Author: Eelco Dolstra Date: Thu Nov 1 14:42:44 2007 +0000 * A rule to make a PDF version of the manual. commit 1511aa11ce8a529ebf7210a9090653a7d7e885d8 Author: Eelco Dolstra Date: Thu Nov 1 13:28:33 2007 +0000 * Documented some of the more obscure derivation attributes (including fixed-output derivations). commit fa44e401a8ca5cddc2c5506984f0cd476e0b7d57 Author: Eelco Dolstra Date: Wed Oct 31 18:01:56 2007 +0000 * Documented multi-user Nix. commit e007b50eb7ba070c039fc438f49a72bd248e1b5c Author: Eelco Dolstra Date: Mon Oct 29 22:16:36 2007 +0000 commit bfea7b1f3514e4b3b4fd094969de92efa46c415d Author: Eelco Dolstra Date: Mon Oct 29 14:31:45 2007 +0000 * Make the `--prebuilt-only' / `-b' option work not just for queries but installations/upgrades as well. So `nix-env -ub \*' will upgrade only those packages for which a substitute is available (or to be precise, it will upgrade each package to the highest version for which a substitute is available). commit 0b95603595511db693378404b0f84d4033030dec Author: Eelco Dolstra Date: Mon Oct 29 10:46:45 2007 +0000 * Depend on bash instead of sh (since we use a few bashisms). commit 42d80d11705579dbb1e8b9029e2beaa1e86baf91 Author: Eelco Dolstra Date: Mon Oct 29 10:03:07 2007 +0000 * On FreeBSD, sys/mount.h needs sys/param.h. commit d91cd305634bfe0de200cb0b062a56349249d26e Author: Eelco Dolstra Date: Sat Oct 27 16:51:55 2007 +0000 * Detect whether chroot / bind-mount support is available. commit dc6f373842ae65d6c407d8169089367d9c0d4e1a Author: Eelco Dolstra Date: Sat Oct 27 16:06:38 2007 +0000 * Delete the chroot directory automatically. * Removed some debug messages. commit 9397cd30c8a6ffd65fc3b85985ea59ecfb72672b Author: Eelco Dolstra Date: Sat Oct 27 00:46:59 2007 +0000 * Support for doing builds in a chroot under Linux. The builder is executed in a chroot that contains just the Nix store, the temporary build directory, and a configurable set of additional directories (/dev and /proc by default). This allows a bit more purity enforcement: hidden build-time dependencies on directories such as /usr or /nix/var/nix/profiles are no longer possible. As an added benefit, accidental network downloads (cf. NIXPKGS-52) are prevented as well (because files such as /etc/resolv.conf are not available in the chroot). However the usefulness of chroots is diminished by the fact that many builders depend on /bin/sh, so you need /bin in the list of additional directories. (And then on non-NixOS you need /lib as well...) commit 0b4ed64d295316146fc4de8a5a2e971b771058b8 Author: Eelco Dolstra Date: Fri Oct 26 18:25:50 2007 +0000 * "trace" primop: write the trace to standard error. commit cd08fb3fdeaeb80f8d980f7ef2ace93cf5194c0e Author: Eelco Dolstra Date: Wed Oct 24 13:54:06 2007 +0000 commit d423968ba1d4f13abd469aa5b2e7ee5facac71d5 Author: Eelco Dolstra Date: Tue Oct 23 16:34:04 2007 +0000 * Improved introduction (actually copied mostly from the homepage). commit 612b3e8fa35dde4893f92b4d0a5cfb5aa040f551 Author: Eelco Dolstra Date: Mon Oct 22 15:28:32 2007 +0000 * Document the new primops in Nix 0.11. commit 35ac16e75e1fb7c948adecd64904f40b96d1d8fb Author: Eelco Dolstra Date: Mon Oct 22 12:58:28 2007 +0000 * Move list of built-in functions to a separate file. commit 1db187ff690e6673433eb073088fe5169e12a4d2 Author: Eelco Dolstra Date: Mon Oct 22 12:46:15 2007 +0000 commit f90d85107e5ea092f125b8e83c0cce9eddae766e Author: Eelco Dolstra Date: Mon Oct 22 12:05:30 2007 +0000 commit f8ed2e64a5d77badf68263ac239ad9d991f23ea8 Author: Eelco Dolstra Date: Mon Oct 22 12:05:18 2007 +0000 commit f529a3be8a1c1eab6af06171c498f38508e7a729 Author: Marc Weber Date: Mon Oct 22 01:10:19 2007 +0000 Added comment telling about setup-hook and propagatedBuildInputs commit 14e47e9c2caa7bec5778dd740ebb4a200b2b5c2a Author: Eelco Dolstra Date: Wed Oct 10 14:58:00 2007 +0000 * Doh. commit d04291cfabd81f3c9e06b2dba68a4edaf6f8df87 Author: Eelco Dolstra Date: Wed Oct 10 13:52:38 2007 +0000 * Doh! Don't change the permissions on /nix/store. commit 315183f194881591480d9acd1eef685d6b64d7f8 Author: Eelco Dolstra Date: Wed Oct 10 13:43:04 2007 +0000 * nix-store --optimise: flag "--dry-run" to just query what the disk savings would be. commit a8629de827e4d5a67372614727ce6fcc26423f8c Author: Eelco Dolstra Date: Tue Oct 9 22:14:27 2007 +0000 * New command `nix-store --optimise' to reduce Nix store disk space usage by finding identical files in the store and hard-linking them to each other. It typically reduces the size of the store by something like 25-35%. This is what the optimise-store.pl script did, but the new command is faster and more correct (it's safe wrt garbage collection and concurrent builds). commit 27a0662828cb5ac9da198f35754750f12628d546 Author: Eelco Dolstra Date: Tue Oct 9 12:51:25 2007 +0000 * listToAttrs: the list now should consist of {name, value} attribute sets instead of {attr, value}. "name" is better than "attr" because the *combination* of the two forms the attribute. commit 8a9fe6c11c4cf6ae9f3648ece844a8f392fc1cc0 Author: Eelco Dolstra Date: Wed Sep 19 14:01:41 2007 +0000 * Manpage for nix-copy-closure. commit 27f57c901800c085ecc4667748b2c3a2485ee8cb Author: Eelco Dolstra Date: Tue Sep 18 14:01:14 2007 +0000 * Ignore dangling symlinks in ~/.nix-defexpr. commit f3441e6122c3ce8f81576bfe79897a638c8f82e2 Author: Eelco Dolstra Date: Tue Sep 18 09:11:20 2007 +0000 * Pass various options to the worker so that flags like -K or -j work in multi-user Nix (NIX-72). * Client/worker: exchange a protocol version number for future compatibility. commit 26f981c2e52bb8dc91311f9a4ca53f7e37233e5c Author: Eelco Dolstra Date: Tue Sep 18 08:26:55 2007 +0000 * Remove garbage. commit c8ea8a09b88ec89ef9749e9d8bae09c7cada5d1f Author: Eelco Dolstra Date: Mon Sep 17 19:24:07 2007 +0000 * nix-env -qa: make the "-A" flag do the expected thing, namely follow the given attribute path (just as -A does with other option) (NIX-83). So you can now say $ nix-env -qa -A nixpkgs_unstable.gnome \* atk-1.12.4 esound-0.2.36 ... to see the packages in the "gnome" attribute in Nixpkgs. To *print* the attribute path, you should now use "--attr-path" / "-P" (running out of letters...). commit 055608227f5a003825a905b0eb2aea39cba5ca16 Author: Eelco Dolstra Date: Mon Sep 17 16:08:24 2007 +0000 * nix-env: allow ~/.nix-defexpr to be a directory. If it is, then the Nix expressions in that directory are combined into an attribute set {file1 = import file1; file2 = import file2; ...}, i.e. each Nix expression is an attribute with the file name as the attribute name. Also recurses into directories. * nix-env: removed the "--import" (-I) option which set the ~/.nix-defexpr symlink. * nix-channel: don't use "nix-env --import", instead symlink ~/.nix-defexpr/channels. So finally nix-channel --update doesn't override any default Nix expressions but combines with them. This means that you can have (say) a local Nixpkgs SVN tree and use it as a default for nix-env: $ ln -s .../path-to-nixpkgs-tree ~/.nix-defexpr/nixpkgs_svn and be subscribed to channels (including Nixpkgs) at the same time. (If there is any ambiguity, the -A flag can be used to disambiguate, e.g. "nix-env -i -A nixpkgs_svn.pan".) commit 3339f854473863c8780e537626f457be0b2b33e2 Author: Eelco Dolstra Date: Tue Sep 11 13:32:04 2007 +0000 * Test the impureEnvVars feature. commit 9441550acb34cf35f6cd3859d3672adca79551d9 Author: Eelco Dolstra Date: Tue Sep 4 15:38:09 2007 +0000 * nix-push / generate-patches: bzip the manifest. commit 7b20c0ed4b3ef518c1f55bfbb2ece932539f35ea Author: Marc Weber Date: Sun Sep 2 10:36:59 2007 +0000 explanation what happens when passing true / false and null values to derivation builders added commit 0d65fc08e2f7e69976ab91271024a87dbeef380d Author: Eelco Dolstra Date: Thu Aug 30 09:50:44 2007 +0000 * Create the Nix daemon socket in a separate directory (/nix/var/nix/daemon-socket). This allows access to the Nix daemon to be restricted by setting the mode/ownership on that directory as desired, e.g. $ chmod 770 /nix/var/nix/daemon-socket $ chown root.wheel /nix/var/nix/daemon-socket to allow only users in the wheel group to use Nix. Setting the ownership on a socket is much trickier, since the socket must be deleted and recreated every time the daemon is started (which would require additional Nix configuration file directives to specify the mode/ownership, and wouldn't support arbitrary ACLs), some BSD variants appear to ignore permissions on sockets, and it's not clear whether the umask is respected on every platform when creating sockets. commit cb1c1004cdd582abe67146ab3904bd88de3a1d4e Author: Eelco Dolstra Date: Tue Aug 28 16:22:08 2007 +0000 * When there are multiple substituters, make sure to release the lock on the output path after trying each. Otherwise the pathIsLockedByMe() test gets confused. commit c970b28ba0f8866bde800849120d429d781ccb5d Author: Eelco Dolstra Date: Tue Aug 28 11:36:17 2007 +0000 * Fix a race condition with parallel builds where multiple fixed-output derivations or substitutions try to build the same store path at the same time. Locking generally catches this, but not between multiple goals in the same process. This happened especially often (actually, only) in the build farm with fetchurl downloads of the same file being executed on multiple machines and then copied back to the main machine where they would clobber each other (NIXBF-13). Solution: if a goal notices that the output path is already locked, then go to sleep until another goal finishes (hopefully the one locking the path) and try again. commit bc0429b1cd94289ac8d8a51f562b920999002b89 Author: Eelco Dolstra Date: Tue Aug 28 11:31:44 2007 +0000 * Doh! Broken test. commit e0d7e47862aa1b33292fb8d05e5d50ad4ebf3590 Author: Eelco Dolstra Date: Tue Aug 28 09:39:03 2007 +0000 * PathLocks::lockPaths: don't allow reacquiring a lock we already hold. commit 455a7b95776440a56fd5d545d3b9a01cbae1d8e7 Author: Eelco Dolstra Date: Tue Aug 28 09:21:47 2007 +0000 * Test case to show that parallel builds of different fixed-output derivations that produce the same output path don't work properly wrt locking. This happens a lot in the build farm when fetchurl derivations downloading the same file on different platforms are executed in parallel and then copied back to the main machine. commit 7d5836b34df363c2b2e7fc1574aaba1dde9a697e Author: Eelco Dolstra Date: Wed Aug 22 14:52:22 2007 +0000 * nix-channel: supports users who don't have write permission to the manifests directory. In that case, we don't do a nix-pull, so the user gets pure source deployment. The directory /nix/var/nix/gcroots/per-user/$USER should be writable. (It's created automatically if /nix/var/nix/gcroots/per-user is writable, e.g. if it has 1777 permission.) commit 2629998e9167b2d7897a2f34a6f531affc4033db Author: Marc Weber Date: Sat Aug 18 22:12:00 2007 +0000 primop functions listToAttrs (+test), __isAttrs, __trace added new configuration style proposal in lib/default-unstable.nix commit dbc0170ed998484178780d9390ae0d4434bf93b0 Author: Eelco Dolstra Date: Wed Aug 15 09:24:06 2007 +0000 * Show errors in nix-prefetch-url. commit 5c793ad03e08f8f795397af1d49034ac6f616ade Author: Eelco Dolstra Date: Tue Aug 14 13:43:51 2007 +0000 * Hopefully this fixes the test on FreeBSD. commit ffa1c61cd50a512685b44c55261c1539890482f4 Author: Eelco Dolstra Date: Tue Aug 14 13:15:59 2007 +0000 * Fix the tests. commit a7e1a51fdf5d93b0a158a120595443fe9c7c6687 Author: Eelco Dolstra Date: Mon Aug 13 14:56:40 2007 +0000 * A test for the nix-worker. commit 550ba9ebb4b1b2415c9930879cfa6937f7fa916a Author: Eelco Dolstra Date: Mon Aug 13 13:15:02 2007 +0000 * Fix the tests. commit 3757ee589f46a401fdacaa2126e6bf4902eee23d Author: Eelco Dolstra Date: Mon Aug 13 11:37:39 2007 +0000 * Bump the Nix database schema version number; delete the substitutes table. commit 59afc1a15cfb90c333aa7423e46be32cc0635b12 Author: Eelco Dolstra Date: Mon Aug 13 11:15:13 2007 +0000 * Backwards compatibility. commit 9e975458b48d9eb041a6484c634be2ee8ee1649d Author: Eelco Dolstra Date: Sun Aug 12 00:29:28 2007 +0000 * Get rid of the substitutes database table (NIX-47). Instead, if we need any info on substitutable paths, we just call the substituters (such as download-using-manifests.pl) directly. This means that it's no longer necessary for nix-pull to register substitutes or for nix-channel to clear them, which makes those operations much faster (NIX-95). Also, we don't have to worry about keeping nix-pull manifests (in /nix/var/nix/manifests) and the database in sync with each other. The downside is that there is some overhead in calling an external program to get the substitutes info. For instance, "nix-env -qas" takes a bit longer. Abolishing the substitutes table also makes the logic in local-store.cc simpler, as we don't need to store info for invalid paths. On the downside, you cannot do things like "nix-store -qR" on a substitutable but invalid path (but nobody did that anyway). * Never catch interrupts (the Interrupted exception). commit 4695f4edd6925147a59befefce1c66d34bb2d0e4 Author: Eelco Dolstra Date: Fri Aug 10 01:42:00 2007 +0000 * nix-pull: support bzipped manifests: when doing a nix-pull on $url, try $url.bz2 first. commit 911bc01454fba42b531f3f8dd0781845b045be63 Author: Eelco Dolstra Date: Fri Aug 10 00:28:44 2007 +0000 * Enable nix-prefetch-url caching in nix-channel. commit 5e52df18fefb188b7c7a8e917ebeb8ea1f5ed95a Author: Eelco Dolstra Date: Fri Aug 10 00:22:21 2007 +0000 * Don't rely on /dev/stdin. commit c5e934dcc9f3c0e75cd14fd7dbab6048abf907d1 Author: Eelco Dolstra Date: Thu Aug 9 23:52:53 2007 +0000 * nix-pull: using nix-prefetch-url (so that we get caching for free), and store the manifests in the Nix store. (So now /nix/var/nix/manifests/ just contains symlinks to the store and is searched for GC roots.) commit f881f7a017059fb501668aa85d41e873fe8f5285 Author: Eelco Dolstra Date: Thu Aug 9 23:16:44 2007 +0000 * nix-prefetch-url: support caching. If the environment variable NIX_DOWNLOAD_CACHE is set, then nix-prefetch-url will store the hash and timestamp of downloaded files in the directory $NIX_DOWNLOAD_CACHE. This allows it to figure out if the file is still in the Nix store. commit ef240bc0d564d8de8877724756c1e7765c74ff75 Author: Eelco Dolstra Date: Tue Aug 7 23:40:39 2007 +0000 * Use the new patched version of the aterm library. commit d71cc503a6f50f8c576eb8665ce3cf08d74e035b Author: Eelco Dolstra Date: Tue Aug 7 15:00:13 2007 +0000 * Don't allocate input files on the stack. commit 4cad125e088576035ea8f7955d7770278aa6ed24 Author: Eelco Dolstra Date: Mon Aug 6 16:08:09 2007 +0000 * Optionally warn about packages that give an assertion failure. commit 6da6fbfbe940feb807eeef20035d6603448d4d5e Author: Eelco Dolstra Date: Thu Jul 5 20:33:04 2007 +0000 * Properly keep packages during upgrades. commit 6d1a1191b053645fa0277830524bf085a7fe0956 Author: Eelco Dolstra Date: Tue Jun 12 16:53:44 2007 +0000 * Support queryDeriver() in multi-user installations. commit 9d9e1c5c41023e03ed5069ba6fc17ad3cfeab9f4 Author: Eelco Dolstra Date: Mon Jun 11 13:59:07 2007 +0000 * Distribute bzip2 1.0.4. commit 9bff7ad7287dafff1e06f3c3db6a5ec295d7c152 Author: Eelco Dolstra Date: Mon Jun 11 11:36:22 2007 +0000 * Check against creation of GC roots in the store. Those roots don't work, because findRoots() stops when it encounters a symlink to the store. And of course the store is supposed to be read-only. commit f3ebd03bb17533806d38fe871200b1dc4688acdc Author: Eelco Dolstra Date: Mon Jun 4 12:03:33 2007 +0000 * Remove debug statement. commit 40b6f06f09ce1faa5fb7532475623dfd5e4d6208 Author: Armijn Hemel Date: Sat Jun 2 15:03:54 2007 +0000 change default NIX_HASH_ALGO commit b47da5ea21df9ba558f05516198d401f76719cf5 Author: Eelco Dolstra Date: Wed May 16 22:07:39 2007 +0000 commit bddc83a1487e9f3c1bb3ac2279c0238e8e6c3ff3 Author: Eelco Dolstra Date: Wed May 16 16:17:04 2007 +0000 * New builtin function "isFunction". You're not supposed to use it ;-) * Channels: fix channels that are plain lists of derivations (like strategoxt-unstable) instead of functions (like nixpkgs-unstable). This fixes the error message "error: the left-hand side of the function call is neither a function nor a primop (built-in operation) but a list". commit ca00aa11714921804afb490d0613086f549fb894 Author: Eelco Dolstra Date: Tue May 15 12:14:37 2007 +0000 * Allow empty argument lists in function definitions (e.g., `{}: bla'). Also allow trailing commas (`{x, y,}: ...') as a unintented consequence. Hopefully the reduce/reduce conflict won't cause any problems. commit 7046c35843af7c6232efc7e7ee23b26096e0c692 Author: Eelco Dolstra Date: Mon May 14 12:16:41 2007 +0000 * Typo (reported by Marc Weber). commit e5da9c88039c360065f20cfd513f2fe68430f04a Author: Eelco Dolstra Date: Mon May 7 16:59:19 2007 +0000 * Create the database directory if it doesn't exist. commit 30beeb27a9729366cb4a93d602815827a6153d06 Author: Eelco Dolstra Date: Wed May 2 19:38:02 2007 +0000 * Set the right priorities when recovering from a directory collision. commit 34d4c9388b31f21710939399376f3ade08ab2162 Author: Eelco Dolstra Date: Wed May 2 16:06:04 2007 +0000 commit 93aefd9fc0250eda2c47d22a88922d319cde34b8 Author: Eelco Dolstra Date: Tue May 1 23:16:38 2007 +0000 * Give unpacked channels more sensible names than 0, 1, ... They now get the basename of the channel URL (e.g., nixpkgs-unstable). The top-level Nix expression of the channel is now an attribute set, the attributes of which are the individual channels (e.g., {nixpkgs_unstable = ...; strategoxt_unstable = ...}). This makes attribute paths ("nix-env -qaA" and "nix-env -iA") more sensible, e.g., "nix-env -iA nixpkgs_unstable.subversion". commit a9d15d4f434fece269852a65be836d1338ed787d Author: Eelco Dolstra Date: Tue May 1 20:33:18 2007 +0000 * nix-env -i: instead of breaking package ties by version, break them by priority and version install. That is, if there are multiple packages with the same name, then pick the package with the highest priority, and only use the version if there are multiple packages with the same priority. This makes it possible to mark specific versions/variant in Nixpkgs more or less desirable than others. A typical example would be a beta version of some package (e.g., "gcc-4.2.0rc1") which should not be installed even though it is the highest version, except when it is explicitly selected (e.g., "nix-env -i gcc-4.2.0rc1"). * Idem for nix-env -u, only the semantics are a bit trickier since we also need to take into account the priority of the currently installed package (we never upgrade to a lower priority, unless --always is given). commit cbfac2fdccc83b04d9c2027e9e21070d4ac7c7e5 Author: Eelco Dolstra Date: Tue May 1 15:16:17 2007 +0000 * Set a terminate() handler to ensure that we leave the BDB environment cleanly even when an exception is thrown from a destructor. We still crash, but we don't take all other Nix processes with us. commit 644946feed146396c00c288337bad26428970aa4 Author: Eelco Dolstra Date: Tue May 1 13:21:05 2007 +0000 * Make --verify more interruptable. commit bd1f66453a7a1900f9fa850a7052b3fbe3e26933 Author: Eelco Dolstra Date: Tue May 1 11:30:52 2007 +0000 * `nix-env -q --xml --meta' to show all meta attributes. commit e20f0da22ccb28d94bfd82fa66e2a723c75951f2 Author: Eelco Dolstra Date: Mon Apr 30 18:41:27 2007 +0000 * Doh. commit 89c1d2b202dccbf91c40586ac33efee515f7e93d Author: Eelco Dolstra Date: Fri Apr 27 23:48:14 2007 +0000 * Package flag "keep" that prevents a package from being removed from a user environment by an install or upgrade action. This is particularly useful if you have a version installed that you don't want to upgrade (e.g., because the newer versions are broken). Example: $ nix-env -u zapping --dry-run (dry run; not doing anything) upgrading `zapping-0.9.6' to `zapping-0.10cvs6' $ nix-env --set-flag keep true zapping $ nix-env -u zapping --dry-run (dry run; not doing anything) However, "-e" will still uninstall the package. (Maybe we should require the keep flag to be explicitly set to false before it can be uninstalled.) commit a46db5d013a5c3ab5b041824bfb935e5c042886c Author: Eelco Dolstra Date: Fri Apr 27 23:28:44 2007 +0000 * Package conflict resolution through priority levels. If there is a user environment collission between two packages due to overlapping file names, then a package with a higher priority will overwrite the symlinks of a package with a lower priority. E.g., $ nix-env --set-flag priority 5 gcc $ nix-env --set-flag priority 10 binutils gives gcc a higher priority than binutils (higher number = lower priority). commit 3d05166086682b39e013001bdaedb3e8b68a769f Author: Eelco Dolstra Date: Fri Apr 27 22:40:59 2007 +0000 * Allow conflicting packages to be kept in a user environment, and allow switching between them (NIX-80). Example: two versions of Pan: $ nix-env -q pan pan-0.128 pan-0.14.2.91 $ readlink $(which pan) /nix/store/l38jrbilw269drpjkx7kinhrxj6fjh59-pan-0.14.2.91/bin/pan At most one of them can be active any given time. Assuming than 0.14.2.91 is active, you can active 0.128 as follows: $ nix-env --set-flag active false pan-0.14.2.91 $ nix-env --set-flag active true pan-0.128 $ readlink $(which pan) /nix/store/nziqwnlzy7xl385kglxhg75pfl5i936n-pan-0.128/bin/pan More flags to follow. commit b7f0f65c1934851b038826b2ab78c0378a36143a Author: Eelco Dolstra Date: Thu Apr 26 14:20:31 2007 +0000 * nix-env -q now has a flag --prebuilt-only (-b<) that causes nix-env to show only those derivations whose output is already in the Nix store or that can be substituted (i.e., downloaded from somewhere). In other words, it shows the packages that can be installed “quickly”, i.e., don’t need to be built from source. commit 5dc05b76ab88a332521a777d6a42974b3f432f02 Author: Eelco Dolstra Date: Mon Apr 16 16:08:44 2007 +0000 * Updated dependency information. commit 5f2492eaecfe8d3451812e894852b1330492e827 Author: Eelco Dolstra Date: Mon Apr 16 15:03:19 2007 +0000 * New primop "throw " to throw an error. This is like abort, only thrown errors are caught by the top-level derivation evaluation in nix-env -qa / -i. commit 0a8eeea9d8060b9d25891ccc5a9d55e32bf829ba Author: Eelco Dolstra Date: Mon Apr 16 14:45:25 2007 +0000 * Remove a warning. commit 2716f9bc5f947ffdd2835c2a820ca8d35544630e Author: Eelco Dolstra Date: Mon Apr 16 12:00:13 2007 +0000 * It seems that svnversion prints a carriage return on Cygwin, so we get a invalid #define VERSION. Use "svnversion -n" to leave out the newline. Fix provided by Marc Weber. commit ae7990cc88dcc6a61edfe9e442174bc5b1bc3299 Author: Eelco Dolstra Date: Fri Mar 30 13:24:35 2007 +0000 * Work around a bug in Apple's GCC preprocessor. commit 4caca58ff7cc2edae110a11b9c47d14fea345eca Author: Eelco Dolstra Date: Fri Mar 30 09:01:05 2007 +0000 * Make the maximum patch size configurable. commit 17b506c0c7a927da1befc62100c5354e4b3147f6 Author: Eelco Dolstra Date: Wed Mar 28 15:46:21 2007 +0000 * Handle ECONNRESET from the client. Also, don't abort() if there are unexpected conditions in the SIGPOLL handler, since that messes up the Berkeley DB environment (which a client must never be able to trigger). commit efd31139dfd07600c909fa14870c82d90c6ca9de Author: Eelco Dolstra Date: Tue Mar 27 09:53:58 2007 +0000 * Forgot a @bindir@. commit d303b389a9dbd44fe60deba5e98e68ec98bdddd3 Author: Eelco Dolstra Date: Mon Mar 26 21:05:17 2007 +0000 * `nix-copy-closure --from': copy from a remote machine instead of to a remote machine. commit 7edd2e2cd281cadbc9b7a5afbb279e5570caf77a Author: Eelco Dolstra Date: Mon Mar 26 20:49:22 2007 +0000 * Refactoring. commit f3584ff535f4244f6df7d0eadf9695fd8a747c8d Author: Eelco Dolstra Date: Wed Mar 21 12:39:55 2007 +0000 * Fix URL/description. commit 803cb6e3b9c0719add9a977e76ab3fadb78858f0 Author: Eelco Dolstra Date: Tue Mar 20 22:04:25 2007 +0000 * Override the setuid helper using NIX_SETUID_HELPER. commit a8ea4cbcc8337e0fd4d423201794891fdf6e8677 Author: Eelco Dolstra Date: Tue Mar 20 11:13:15 2007 +0000 * Scan /proc/sys/kernel/modprobe for roots to prevent the kernel modules for the running kernel from being garbage-collected. Idem for /proc/sys/kernel/fbsplash. commit 8ab229ddf2383ec6455836f342539b8c89356f76 Author: Eelco Dolstra Date: Mon Mar 19 12:48:45 2007 +0000 * Terminate build hooks and substitutes with a TERM signal, not a KILL signal. This is necessary because those processes may have joined the BDB environment, so they have to be given a chance to clean up. (NIX-85) commit b2b6cf3fc83f0e1625214ae31b0b088a266234bf Author: Eelco Dolstra Date: Mon Mar 19 09:16:47 2007 +0000 * Undocumented option `gc-check-reachability' to allow reachability checking to be turned off on machines with way too many roots. commit eb2dd4815c05fcc592d049bddcd2f42d13216eab Author: Eelco Dolstra Date: Tue Mar 13 11:30:57 2007 +0000 * Remove old generations in all directories under /nix/var/nix/profiles, not just in that directory itself. (NixOS puts profiles in /nix/var/nix/profiles/per-user.) commit 917e06bf6398ed77a23e5e1fc894321a7fc7f86e Author: Eelco Dolstra Date: Wed Mar 7 15:53:11 2007 +0000 * Delete the output paths before invoking the build hook. commit df0283ae86afd1a40a83b2abc3705146ab0a6cb8 Author: Eelco Dolstra Date: Thu Mar 1 13:55:47 2007 +0000 * Get rid of those stupid --login tricks, it's the responsibility of the remote system to make sure that Nix is in the $PATH. commit 30394a4f3f99ccfffb6935b47433c320f00e2a67 Author: Eelco Dolstra Date: Thu Mar 1 13:49:20 2007 +0000 * sh -> bash. commit db1973d01277278b58253676337e568d5591c01f Author: Eelco Dolstra Date: Thu Mar 1 13:30:46 2007 +0000 * Look for the openssl program at compile time. If not found, call openssl through $PATH at runtime. commit b4a040e52b607e019515e9339f90a2e5c6c21ad5 Author: Eelco Dolstra Date: Thu Mar 1 12:30:24 2007 +0000 * Don't check the signature unless we have to. commit 2ea3bebc23b2d13475c00191f6005740fbdc7771 Author: Eelco Dolstra Date: Tue Feb 27 23:18:57 2007 +0000 * Doh! The deriver can be empty. commit 044b6482c185ba8966d9d893b033d97d66b5f225 Author: Eelco Dolstra Date: Tue Feb 27 19:10:45 2007 +0000 * Greatly reduced the amount of stack space used by the Nix expression evaluator. This was important because the NixOS expressions started to hit 2 MB default stack size on Linux. GCC is really dumb about stack space: it just adds up all the local variables and temporaries of every scope into one huge stack frame. This is really bad for deeply recursive functions. For instance, every `throw Error(format("error message"))' causes a format object of a few hundred bytes to be allocated on the stack. As a result, every recursive call to evalExpr2() consumed 4680 bytes. By splitting evalExpr2() and by moving the exception-throwing code out of the main functions, evalExpr2() now only consumes 40 bytes. Similar for evalExpr(). commit adce01a8d05ee21890a5be699a26f1835594cb5d Author: Eelco Dolstra Date: Tue Feb 27 17:28:51 2007 +0000 * When NIX_SHOW_STATS=1, show the amount of stack space consumed by the Nix expression evaluator. commit 363e307fd360c32a932b9bcb1d620d3add259f79 Author: Eelco Dolstra Date: Mon Feb 26 23:32:10 2007 +0000 * Error message to stdout. commit ddde8e2f32b5c6785e9ac7c6ea6eb84813cca293 Author: Eelco Dolstra Date: Thu Feb 22 18:15:29 2007 +0000 * Handle EINTR in select(). commit 27bb0ac7d2571d32c28cd09bf23cf916905d2557 Author: Eelco Dolstra Date: Thu Feb 22 17:00:58 2007 +0000 * /man -> /share/man commit fa2be32034dcb25f9382dda91514a7785211f443 Author: Eelco Dolstra Date: Thu Feb 22 16:42:01 2007 +0000 * nix-copy-closure: force a login shell on the remote machine to make sure that nix-store is in the PATH. * nix-copy-closure: option --gzip to compress data. commit 4c5e6d1a2f48a26c22ee5b515f8ac672d3d2e7ab Author: Eelco Dolstra Date: Thu Feb 22 15:48:20 2007 +0000 * nix-copy-closure: option --sign. * nix-copy-closure: set SSH options through NIX_SSHOPTS.. commit 024a8ed3822867c5f9b9498bd8b27fa5dc180846 Author: Eelco Dolstra Date: Wed Feb 21 23:14:53 2007 +0000 * New command `nix-copy-closure' to copy a closure to a Nix store on another machine through ssh. E.g., $ nix-copy-closure xyzzy $(which svn) copies the closure of Subversion to machine `xyzzy'. This is like `nix-pack-closure $(which svn) | ssh xyzzy', but it's much more efficient since it only copies those paths that are missing on the target machine. commit 7f6161ab3af81e0adf834d9cfb6d232ad5c54ec2 Author: Eelco Dolstra Date: Wed Feb 21 23:08:55 2007 +0000 * Flush cout to show progress. commit 0db450024dbeadf0c595a6de8743b7cb8f3dcbcd Author: Eelco Dolstra Date: Wed Feb 21 23:00:31 2007 +0000 * Export/import many paths in one go. commit 9da367b7d5e7c71efd802b87c99c11faff141499 Author: Eelco Dolstra Date: Wed Feb 21 22:45:10 2007 +0000 * `nix-store -qR' and friends: print the paths sorted topologically under the references relation. This is useful for commands that want to copy paths to another Nix store in the right order. commit 881feb96987dace75f983c16fec1013b70602d4f Author: Eelco Dolstra Date: Wed Feb 21 17:57:59 2007 +0000 * Flag `--print-invalid' in `nix-store --check-validity' to print out which paths specified on the command line are invalid (i.e., don't barf when encountering an invalid path, just print it). This is useful for build-remote.pl to figure out which paths need to be copied to a remote machine. (Currently we use rsync, but that's rather inefficient.) commit 65f195f4c7eec4f0880e7c3953aa5e78eeffbebf Author: Eelco Dolstra Date: Wed Feb 21 17:51:10 2007 +0000 * Check that the file containing the secret key is secret. commit bdadb98de8fcd5ed99cca97071741e2775f3ada2 Author: Eelco Dolstra Date: Wed Feb 21 17:34:02 2007 +0000 * `nix-store --import' now also works in remote mode. The worker always requires a signature on the archive. This is to ensure that unprivileged users cannot add Trojan horses to the Nix store. commit 0f5da8a83c227879566ed87623617fe195bc6f88 Author: Eelco Dolstra Date: Wed Feb 21 16:34:00 2007 +0000 * Support exportPath() in remote mode. commit dc7d59477613e88b18133208f6c8b2f646e66260 Author: Eelco Dolstra Date: Wed Feb 21 16:23:25 2007 +0000 * importPath(): set the deriver. * exportPath(): lock the path, use a transaction. commit 43c4d18c6a4e1a8b129114439718e26c12b49ca8 Author: Eelco Dolstra Date: Wed Feb 21 15:45:32 2007 +0000 * `nix-store --import': import an archive created by `nix-store --export' into the Nix store, and optionally check the cryptographic signatures against /nix/etc/nix/signing-key.pub. (TODO: verify against a set of public keys.) commit 46e0919ced4646004cc0701b188d0a68e24e8924 Author: Eelco Dolstra Date: Wed Feb 21 14:31:42 2007 +0000 * `nix-store --export --sign': sign the Nix archive using the RSA key in /nix/etc/nix/signing-key.sec commit 6c9fdb17fbda181fc09a9ce1f49662ef522d006b Author: Eelco Dolstra Date: Wed Feb 21 14:00:46 2007 +0000 * Don't use $SHELL. commit b824a1daeefd1611c8d84432dc0b2b38f24bbbfd Author: Eelco Dolstra Date: Tue Feb 20 23:17:20 2007 +0000 * Start of `nix-store --export' operation for serialising a store path. This is like `nix-store --dump', only it also dumps the meta-information of the store path (references, deriver). Will add a `--sign' flag later to add a cryptographic signature, which we will use for exchanging store paths between build farm machines in a secure manner. commit 3390c1be76f648ac0b18199c6204a32d1d6d5fbb Author: Eelco Dolstra Date: Tue Feb 20 22:57:46 2007 +0000 * Temporary notes on how we're going to use OpenSSL. commit 8181a1c3bbb35642d8242f13c3bbd17fe468c8e3 Author: Eelco Dolstra Date: Tue Feb 20 22:49:08 2007 +0000 * Close the file - just in case. commit 46605fb4f5024120f894f9894b8873c6a666a7a5 Author: Eelco Dolstra Date: Tue Feb 6 20:03:53 2007 +0000 * Fix 64-bit compiler warnings. commit 52d03276dd035aab2fc5c0c6e462866b6f96d6fb Author: Eelco Dolstra Date: Mon Feb 5 12:10:10 2007 +0000 * Compatibility with docbook5-xsl. commit 451dbf687f65b42d70e64c3858771abaab51b356 Author: Eelco Dolstra Date: Fri Feb 2 01:52:42 2007 +0000 * nix-env now maintains meta info (from the `meta' derivation attribute) about installed packages in user environments. Thus, an operation like `nix-env -q --description' shows useful information not only on available packages but also on installed packages. * nix-env now passes the entire manifest as an argument to the Nix expression of the user environment builder (not just a list of paths), so that in particular the user environment builder has access to the meta attributes. * New operation `--set-flag' in nix-env to change meta info of installed packages. This will be useful to pass per-package policies to the user environment builder (e.g., how to resolve collision or whether to disable a package (NIX-80)) or upgrade policies in nix-env (e.g., that a package should be "masked", that is, left untouched by upgrade actions). Example: $ nix-env --set-flag enabled false ghc-6.4 commit f52de527c7743d8fe28574f02b632566a1006244 Author: Eelco Dolstra Date: Mon Jan 29 15:55:49 2007 +0000 * Doh! commit b618fa6eb6aa4cc128286ab748bfb100fa46a888 Author: Eelco Dolstra Date: Mon Jan 29 15:51:37 2007 +0000 * computeStorePathForText: take the references into account when computing the store path (NIX-77). This is an important security property in multi-user Nix stores. Note that this changes the store paths of derivations (since the derivation aterms are added using addTextToStore), but not most outputs (unless they use builtins.toFile). commit c558b1583c0e23bf4e19e916ef0ba223b61405a3 Author: Eelco Dolstra Date: Mon Jan 29 15:15:37 2007 +0000 * Don't capitalise the primop functions. commit 18e60961057f67995bf76b1952c8673b89f59bc2 Author: Eelco Dolstra Date: Mon Jan 29 15:11:32 2007 +0000 * Organise primops.cc a bit better. commit 7349bd0176b8a8ced3a017bb5d0e9ebb30570722 Author: Eelco Dolstra Date: Mon Jan 29 14:23:09 2007 +0000 New primitives: * `sub' to subtract two numbers. * `stringLength' to get the length of a string. * `substring' to get a substring of a string. These should be enough to allow most string operations to be expressed. commit 7dedbd896ade732ab2fe88a5fe88e069cb329fa5 Author: Eelco Dolstra Date: Mon Jan 29 13:32:50 2007 +0000 * filterSource: pass strings to the predicate function instead of paths. Paths can have unexpected semantics. commit 84a84afb0ec60551c606fa95699afb6153465704 Author: Eelco Dolstra Date: Wed Jan 24 13:31:20 2007 +0000 * Nasty: Glibc clears the TMPDIR environment variable in setuid programs, so if a builder uses TMPDIR, then it will fail when executed through nix-setuid-helper. In fact Glibc clears a whole bunch of variables (see sysdeps/generic/unsecvars.h in the Glibc sources), but only TMPDIR should matter in practice. As a workaround, we reinitialise TMPDIR from NIX_BUILD_TOP. commit fac63d6416ae0f7aec6c986d9d258b25047a24e2 Author: Eelco Dolstra Date: Tue Jan 23 16:57:43 2007 +0000 * exportReferencesGraph: work on paths within store paths as well. commit bae75ca5a18edbb9fb959e2e48065a1987ffb61a Author: Eelco Dolstra Date: Tue Jan 23 16:50:19 2007 +0000 * New kind of manifest object: "localPath", which denotes that a store path can be created by copying it from another location in the file system. This is useful in the NixOS installation. commit 36d9258c0dbfeab095dc5727b6ebcb55afacb0a6 Author: Eelco Dolstra Date: Tue Jan 23 16:05:59 2007 +0000 * Successors have been gone for ages. commit 7bc30e1ca8e20ee54175881364663ce5aaf1fa1c Author: Eelco Dolstra Date: Mon Jan 22 09:53:36 2007 +0000 * nix-prefetch-url: change the default hash to SHA-256 (in base-32). commit 71ceb1c16102f82e15375afb44e0ac59e39eaa23 Author: Eelco Dolstra Date: Mon Jan 15 14:50:25 2007 +0000 * Handle multiple indirect symlinks when loading a Nix expression. commit e4b0666f8eee3fc48f37c0cd3fd194c27652173c Author: Eelco Dolstra Date: Mon Jan 15 08:54:51 2007 +0000 * builtins.filterSource: pass the type of the file ("regular", "directory", "symlink") as the second argument to the filter predicate. commit 63f3ce6d9a26cb46a2f066dd9c5f2af25b3610df Author: Eelco Dolstra Date: Sun Jan 14 17:28:30 2007 +0000 * `nix-store --verify': revive checking the referrers table. This is important to get garbage collection to work if there is any inconsistency in the database (because the referrer table is used to determine whether it is safe to delete a path). * `nix-store --verify': show some progress. commit 8f67b3588603483402440538d7dc326451bbe60d Author: Eelco Dolstra Date: Sun Jan 14 16:24:49 2007 +0000 * Make the garbage collector more resilient to certain consistency errors: in-use paths now cause a warning, not a fatal error. commit 8659edc0981373a42f123cd7d84b9925be0123bc Author: Eelco Dolstra Date: Sun Jan 14 12:33:04 2007 +0000 * Don't forget the .flags files. commit e418976107ed1581c108c82cd5b3b06c2f4ba9db Author: Eelco Dolstra Date: Sun Jan 14 12:32:44 2007 +0000 * Option --argstr for passing string arguments easily. (NIX-75) commit 4e329f173f738dfc83e58bdb8ad2ced6c452a395 Author: Eelco Dolstra Date: Sun Jan 14 12:16:58 2007 +0000 * Doh. commit afe23b5f385901ba5972ce88b2f053526c5097a9 Author: Eelco Dolstra Date: Sat Jan 13 19:50:42 2007 +0000 * nix-pack-closure: store the top-level store paths in the closure. * nix-unpack-closure: extract the top-level paths from the closure and print them on stdout. This allows them to be installed, e.g., "nix-env -i $(nix-unpack-closure)". (NIX-64) commit f25f9000451ec5b9fb3221cdf2a297fe24ab7357 Author: Eelco Dolstra Date: Sat Jan 13 18:25:30 2007 +0000 * Allow multiple --attr / -A arguments in nix-build / nix-instantiate (NIX-74). commit 215505bb46503b083fd64dd9a65e7b79d6eadf21 Author: Eelco Dolstra Date: Sat Jan 13 17:54:01 2007 +0000 * Removed chroot support. commit f23dcdd60330c3b2f83b5b4278e38c245c397468 Author: Eelco Dolstra Date: Sat Jan 13 16:17:07 2007 +0000 * Canonicalise ASTs in `nix-instantiate --eval': remove position info, sort attribute sets. commit 05879db628a31f53c69a0fc29311c840c80837e0 Author: Eelco Dolstra Date: Sat Jan 13 15:41:54 2007 +0000 * Memoize strict evaluation. commit 501158845919c8bdf4297a8a76a916dc5b9a7943 Author: Eelco Dolstra Date: Sat Jan 13 15:11:10 2007 +0000 * printTermAsXML: treat derivations specially; emit an element attrs . Only emit the attributes of any specific derivation only. This prevents exponententially large XML output due to the absense of sharing. commit 792878af911bd1913706a1a8ee5a18f7230352ef Author: Eelco Dolstra Date: Sat Jan 13 14:48:41 2007 +0000 * Make printing an expression as XML interruptible. commit 11158028be348ed9eb58bf78f4cc9711e8bfe664 Author: Eelco Dolstra Date: Sat Jan 13 14:21:49 2007 +0000 * Cleanup. commit 1b7840b949f038d44f31492bd59e0e189e17ef9c Author: Eelco Dolstra Date: Thu Jan 11 19:28:28 2007 +0000 commit 69c8b5b8a7165e1b9468c2b98a56b0e5af092a69 Author: Eelco Dolstra Date: Thu Jan 11 16:19:45 2007 +0000 * Install generate-patches into libexec. commit 1f3722bd4ad2ee0b97f9622574547f144dad6932 Author: Eelco Dolstra Date: Mon Jan 8 15:32:15 2007 +0000 * Reject patches that are larger than a certain fraction of the full archive (currently 60%). Large patches aren't very economical. commit 50bdec410adaf4acacd40444203799ac110e34d8 Author: Eelco Dolstra Date: Mon Jan 8 15:17:18 2007 +0000 * Huge speedup in patch propagation (20 minutes or so to 3 seconds). commit 4c63f9fe0493e07039c2a75a0926d2aab8cb6549 Author: Eelco Dolstra Date: Fri Dec 29 22:23:51 2006 +0000 * Another great success. commit 57969b95b321ca9527de9e4625db5fb6ad709e01 Author: Eelco Dolstra Date: Fri Dec 29 20:37:55 2006 +0000 * Testing 1 2 3. commit cafaceb70721e9a5aea478501eb3b572bbacaa68 Author: Eelco Dolstra Date: Fri Dec 15 21:27:26 2006 +0000 * Handle weird cases when the server redirects us while setting a cookie. commit 1073b1780a68522a5cad0fe0e1e6735365034118 Author: Eelco Dolstra Date: Wed Dec 13 14:29:05 2006 +0000 * Remove debug message. commit a3e6415ba8cf1b8d2a1db40c06997d997eac8afc Author: Eelco Dolstra Date: Tue Dec 12 23:05:01 2006 +0000 * New primop builtins.filterSource, which can be used to filter files from a source directory. All files for which a predicate function returns true are copied to the store. Typical example is to leave out the .svn directory: stdenv.mkDerivation { ... src = builtins.filterSource (path: baseNameOf (toString path) != ".svn") ./source-dir; # as opposed to # src = ./source-dir; } This is important because the .svn directory influences the hash in a rather unpredictable and variable way. commit b438d37558eab56a2927771013c9080675381ba8 Author: Eelco Dolstra Date: Tue Dec 12 21:51:02 2006 +0000 * In dumpPath(): pass a function object that allows files to be selectively in/excluded from the dump. commit 3130f1f0fa484495ebca89bd458cf7fffa522687 Author: Eelco Dolstra Date: Tue Dec 12 20:17:14 2006 +0000 * Push. commit 7ace29dae7bc928e5511c148408825f6d846771e Author: Eelco Dolstra Date: Tue Dec 12 19:06:02 2006 +0000 * New operation `nix-env --set' which sets a user environment to a single derivation specified by the argument. This is useful when we want to have a profile for a single derivation, such as a server configuration. Then we can just say (e.g.) $ nix-env -p /.../server-profile -f server.nix --set -A server We can't do queries or upgrades on such a profile, but we can do rollbacks. The advantage over -i is that we don't have to worry about other packages having been installed in the profile previously; --set gets rid of them. commit 1a7e88bbd9290987e72616d42c9e9d344acc2a86 Author: Eelco Dolstra Date: Tue Dec 12 16:14:31 2006 +0000 * New built-in function `builtins.attrNames' that returns the names of the attributes in an attribute set. commit 5e6699188fba38619dc23c0b65ee70849f90ea6c Author: Eelco Dolstra Date: Sat Dec 9 23:14:55 2006 +0000 commit b17677462c56161bb00fb2d90f2c8e3e2a855229 Author: Eelco Dolstra Date: Sat Dec 9 20:02:27 2006 +0000 * Use lchown() instead of chown() in canonicalisePathMetaData(). This matters when running as root, since then we don't use the setuid helper (which already used lchown()). * Also check for an obscure security problem on platforms that don't have lchown. Then we can't change the ownership of symlinks, which doesn't matter *except* when the containing directory is writable by the owner (which is the case with the top-level Nix store directory). commit 5f681988f210dd8edbb0d13da7d00e1c0e2a1769 Author: Eelco Dolstra Date: Sat Dec 9 00:26:24 2006 +0000 * Use deletePathWrapped() in more places. commit fa333031464ca394317a55a0e7c6b773f068aae2 Author: Eelco Dolstra Date: Fri Dec 8 18:41:48 2006 +0000 * Goal cancellation inside the waitForInput() loop needs to be handled very carefully, since it can invalidate iterators into the `children' map. commit 06c4929958c60b085cbe18a558df9ef58c8f8689 Author: Eelco Dolstra Date: Fri Dec 8 17:26:21 2006 +0000 * Some refactoring. * Throw more exceptions as BuildErrors instead of Errors. This matters when --keep-going is turned on. (A BuildError is caught and terminates the goal in question, an Error terminates the program.) commit 9dbfe242e3bdbfc7728a36c8a2b9fbbea2c8ed68 Author: Eelco Dolstra Date: Fri Dec 8 15:44:00 2006 +0000 * Kill a build if it has gone for more than a certain number of seconds without producing output on stdout or stderr (NIX-65). This timeout can be specified using the `--max-silent-time' option or the `build-max-silent-time' configuration setting. The default is infinity (0). * Fix a tricky race condition: if we kill the build user before the child has done its setuid() to the build user uid, then it won't be killed, and we'll potentially lock up in pid.wait(). So also send a conventional kill to the child. commit d3fe6ab024df7764f4de2a9dcf88e2daa981f786 Author: Eelco Dolstra Date: Fri Dec 8 00:19:50 2006 +0000 * Also for convenience, change the ownership of the build output even in case of failure. commit 096194ab29db244fe791404e02b729a3e38eee8d Author: Eelco Dolstra Date: Thu Dec 7 23:58:36 2006 +0000 * Remove ancient terminology. commit 6833e8bbe89dc61bda59a1e04c01415501ad4133 Author: Eelco Dolstra Date: Thu Dec 7 23:27:40 2006 +0000 * When keeping the temporary build directory (-K), change the owner back to the Nix account. commit e24d0201c29b09483944b462bd62b71a90c99c97 Author: Eelco Dolstra Date: Thu Dec 7 22:07:05 2006 +0000 * Doh! commit 2819eb36a43488c348942de5ef4dca4442b999db Author: Eelco Dolstra Date: Thu Dec 7 21:43:35 2006 +0000 * Be less verbose. commit 4ca01065c3df106eb9610c425b2c604ba96db365 Author: Eelco Dolstra Date: Thu Dec 7 20:47:30 2006 +0000 * Rename all those main.cc files. commit d03f0d411740aebd5b27e5a1ac57d8533843ff6b Author: Eelco Dolstra Date: Thu Dec 7 18:51:11 2006 +0000 * Check for lchown. commit c3286ec020dfa20edcad6ad3cea519546e5207f1 Author: Eelco Dolstra Date: Thu Dec 7 17:52:58 2006 +0000 * Don't count on the Pid deconstructor to kill the child process, since if we're running a build user in non-root mode, we can't. Let the setuid helper do it. commit a82d80ddeb6f68ff136124dfb591a404bb195ea3 Author: Eelco Dolstra Date: Thu Dec 7 16:40:41 2006 +0000 * Move setuidCleanup() to libutil. commit f76fdb6d42a1b539fcf0b77d8efc5262283a19ea Author: Eelco Dolstra Date: Thu Dec 7 16:33:31 2006 +0000 * If not running as root, let the setuid helper kill the build user's processes before and after the build. commit ec23ecc64d40b7f65585c23592db123127967221 Author: Eelco Dolstra Date: Thu Dec 7 15:54:52 2006 +0000 * In the garbage collector, if deleting a path fails, try to fix its ownership, then try again. commit a0a43c32062f756b32feca7d04e89fb5d01767db Author: Eelco Dolstra Date: Thu Dec 7 15:18:14 2006 +0000 * When not running as root, call the setuid helper to change the ownership of the build result after the build. commit 6a07ff1ec068c6255d45644eb182dea5c0027286 Author: Eelco Dolstra Date: Thu Dec 7 14:14:35 2006 +0000 * Change the ownership of store paths to the Nix account before deleting them using the setuid helper. commit 7d8cf316eec3b5b1f2cf5ae8558a80bcaa69437f Author: Eelco Dolstra Date: Thu Dec 7 11:27:32 2006 +0000 * Pass the actual build user to the setuid helper. commit a45c498e4e1109e0147b46df1230db718e5bceb1 Author: Eelco Dolstra Date: Thu Dec 7 00:42:30 2006 +0000 * If Nix is not running as root, call the setuid helper to start the builder under the desired build user. commit 813a7c65c99951a946e8342713884d46af1f2966 Author: Eelco Dolstra Date: Thu Dec 7 00:19:27 2006 +0000 * Sanity check. commit 6a8e60913ac470c704510a733d40d3fab3ecb00d Author: Eelco Dolstra Date: Thu Dec 7 00:16:07 2006 +0000 * Move killUser() to libutil so that the setuid helper can use it. commit 79875c5e42eca2e2d05f439da4b0da778385678a Author: Eelco Dolstra Date: Wed Dec 6 23:52:25 2006 +0000 * Change the ownership of the current directory to the build user. commit 62ab1314127a164c7e71e77551d549b27ce82e6a Author: Eelco Dolstra Date: Wed Dec 6 23:15:26 2006 +0000 * Verify that the desired target user is in the build users group (as specified in the setuid config file). commit f07ac41656fbc4349ec0dda9d072b06a8b38e53b Author: Eelco Dolstra Date: Wed Dec 6 22:45:41 2006 +0000 * Check that the caller is allowed to call the setuid helper. The allowed uid is specified in a configuration file in /etc/nix-setuid.conf. commit 173d328351b2c59c313177d8d984df506760ada3 Author: Eelco Dolstra Date: Wed Dec 6 20:19:25 2006 +0000 * Urgh. commit ef281b93c22580c3ccbcb598e3dd734402adce39 Author: Eelco Dolstra Date: Wed Dec 6 20:18:29 2006 +0000 * Fix the safety check. commit a14d491f09e4f1908e916be507def744be11d1c0 Author: Eelco Dolstra Date: Wed Dec 6 20:16:28 2006 +0000 * Oops. commit 6e5ec1029ad279c1ac69e14730afb4d2d9964b5d Author: Eelco Dolstra Date: Wed Dec 6 20:00:15 2006 +0000 * Get rid of `build-users'. We'll just take all the members of `build-users-group'. This makes configuration easier: you can just add users in /etc/group. commit 751f6d2157a1b89f2463b68a90f8515deb3f942c Author: Eelco Dolstra Date: Wed Dec 6 17:29:10 2006 +0000 * nix-setuid-helper: allow running programs under a different uid. commit 9f0efa6611d010bf2fb88a2f6a583c4f32fd89ac Author: Eelco Dolstra Date: Wed Dec 6 01:24:02 2006 +0000 * Start of the setuid helper (the program that performs the operations that have to be done as root: running builders under different uids, changing ownership of build results, and deleting paths in the store with the wrong ownership). commit 2b558843a2228051bec475a016e7bb2565433330 Author: Eelco Dolstra Date: Tue Dec 5 19:01:19 2006 +0000 * Be less chatty. commit 44cad9630f25f7f1c6a9263c031e453170b2f489 Author: Eelco Dolstra Date: Tue Dec 5 18:28:15 2006 +0000 * Urgh. Do setgid() before setuid(), because the semantics of setgid() changes completely depending on whether you're root... commit 6f0d05032410873bd5cdb573b998c7a7939d09b5 Author: Eelco Dolstra Date: Tue Dec 5 18:21:16 2006 +0000 * Tricky: child processes should not send data to the client since that might mess up the protocol. And besides, the socket file descriptor is probably closed. commit 4c1c37d0b6f4f8e7331b359617d7071c5e6e42fb Author: Eelco Dolstra Date: Tue Dec 5 18:07:46 2006 +0000 * FreeBSD returns ESRCH when there are no processes to kill. commit 8d1854c3f19848fa6435aaa0fc688230ccc478c2 Author: Eelco Dolstra Date: Tue Dec 5 17:44:19 2006 +0000 * Oops! In daemon mode, we can't run as root either if build-users is empty. commit 99655245ae21dd18403ce79f54199c13574da9aa Author: Eelco Dolstra Date: Tue Dec 5 17:21:42 2006 +0000 * Use an explicit handler for SIGCHLD, since SIG_IGN doesn't do the right thing on FreeBSD 4 (it leaves zombies). commit 62b0497c0f2e1b269c7284684524d20c39c1d519 Author: Eelco Dolstra Date: Tue Dec 5 16:17:01 2006 +0000 * Better message. commit c808e6252f7ba6d02834c591e0e4bcfbc8476635 Author: Eelco Dolstra Date: Tue Dec 5 15:36:31 2006 +0000 * Ugly hack to handle spurious SIGPOLLs. commit fd4a9db91fc82ddc399f3be73ba65188a63cd7d9 Author: Eelco Dolstra Date: Tue Dec 5 14:15:51 2006 +0000 * Some renaming. commit fc1c20d11b5e95690ad5acf6bebd5cea129618e3 Author: Eelco Dolstra Date: Tue Dec 5 13:57:35 2006 +0000 * Redundant. commit a9c4f66cfb1618833cc70ceaf13733730b634193 Author: Eelco Dolstra Date: Tue Dec 5 02:18:46 2006 +0000 * Allow unprivileged users to run the garbage collector and to do `nix-store --delete'. But unprivileged users are not allowed to ignore liveness. * `nix-store --delete --ignore-liveness': ignore the runtime roots as well. commit 29cf434a35d82529f56c085c9cd50858c148d086 Author: Eelco Dolstra Date: Tue Dec 5 01:31:45 2006 +0000 * The determination of the root set should be made by the privileged process, so forward the operation. * Spam the user about GC misconfigurations (NIX-71). * findRoots: skip all roots that are unreadable - the warnings with which we spam the user should be enough. commit 8623256f483f77e090e689ae332165a530a489a5 Author: Eelco Dolstra Date: Tue Dec 5 00:48:36 2006 +0000 * findRoots: return a map from the symlink (outside of the store) to the store path (inside the store). commit d27a73b1a95a911077947f39fab42c628c722c0e Author: Eelco Dolstra Date: Tue Dec 5 00:34:42 2006 +0000 * In addPermRoot, check that the root that we just registered can be found by the garbage collector. This addresses NIX-71 and is a particular concern in multi-user stores. commit 74033a844fe57e3e91c71ae37f9a65f6b2f22aa9 Author: Eelco Dolstra Date: Mon Dec 4 23:29:16 2006 +0000 * Add indirect root registration to the protocol so that unprivileged processes can register indirect roots. Of course, there is still the problem that the garbage collector can only read the targets of the indirect roots when it's running as root... commit 0d40f6d7bb226e69f65f8ca8e6d0597baf3eec9a Author: Eelco Dolstra Date: Mon Dec 4 22:58:44 2006 +0000 * Not every OS knows about SIGPOLL. commit 7751160e9f560e7063d3e6e6e0e57b1432037b4c Author: Eelco Dolstra Date: Mon Dec 4 19:10:23 2006 +0000 * Don't redirect stderr. commit 40c3529909a929e03ebd943d87dd00e3fce93c9e Author: Eelco Dolstra Date: Mon Dec 4 17:55:14 2006 +0000 * Handle exceptions and stderr for all protocol functions. * SIGIO -> SIGPOLL (POSIX calls it that). * Use sigaction instead of signal to register the SIGPOLL handler. Sigaction is better defined, and a handler registered with signal appears not to interrupt fcntl(..., F_SETLKW, ...), which is bad. commit 0130ef88ea280e67037fa76bcedc59db17d9a8ca Author: Eelco Dolstra Date: Mon Dec 4 17:17:13 2006 +0000 * Daemon mode (`nix-worker --daemon'). Clients connect to the server via the Unix domain socket in /nix/var/nix/daemon.socket. The server forks a worker process per connection. * readString(): use the heap, not the stack. * Some protocol fixes. commit 4740baf3a61c48c07f12f23927c84ca9892088a8 Author: Eelco Dolstra Date: Mon Dec 4 14:21:39 2006 +0000 * When NIX_REMOTE=daemon, connect to /nix/var/nix/daemon.socket instead of forking a worker. commit f5f0cf423fda5e030d9be6fd6500a1b06d3a60bc Author: Eelco Dolstra Date: Mon Dec 4 13:28:14 2006 +0000 * Refactoring. commit 052b6fb1495cd606d35cd3eb1806f9fe0019e6ca Author: Eelco Dolstra Date: Mon Dec 4 13:15:29 2006 +0000 * Pass the verbosity level to the worker. commit 1e16d2065503e213189d58db14de893f51545597 Author: Eelco Dolstra Date: Mon Dec 4 13:09:16 2006 +0000 * Install the worker in bindir, not libexecdir. * Allow the worker path to be overriden through the NIX_WORKER environment variable. commit 9322b399f3a6fe3e0d60dfa991b06012c35b72f8 Author: Eelco Dolstra Date: Sun Dec 3 20:41:22 2006 +0000 * Doh. commit f4279bcde0934c221df081c366c8fc776aa2be99 Author: Eelco Dolstra Date: Sun Dec 3 16:25:19 2006 +0000 * Don't run setuid root when build-users is empty. * Send startup errors to the client. commit 35247c4c9f55fd49d8838b0df963016fdcde0420 Author: Eelco Dolstra Date: Sun Dec 3 15:32:38 2006 +0000 * Removed `build-allow-root'. * Added `build-users-group', the group under which builds are to be performed. * Check that /nix/store has 1775 permission and is owner by the build-users-group. commit 84d6459bd5a0820729c57d710f886af6f423259b Author: Eelco Dolstra Date: Sun Dec 3 14:32:22 2006 +0000 * Use setreuid if setresuid is not available. commit a9f92410541e15e994c3306215608cb33ff101e2 Author: Eelco Dolstra Date: Sun Dec 3 03:16:27 2006 +0000 * Handle a subtle race condition: the client closing the socket between the last worker read/write and the enabling of the signal handler. commit 3ed9e4ad9b72dfbe59d47823beec829fe550351e Author: Eelco Dolstra Date: Sun Dec 3 03:03:36 2006 +0000 * Some hardcore magic to handle asynchronous client disconnects. The problem is that when we kill the client while the worker is building, and the builder is not writing anything to stderr, then the worker never notice that the socket is closed on the other side, so it just continues indefinitely. The solution is to catch SIGIO, which is sent when the far side of the socket closes, and simulate an normal interruption. Of course, SIGIO is also sent every time the client sends data over the socket, so we only enable the signal handler when we're not expecting any data... commit 4251f94b32daed2abb0324439466876a97acdb77 Author: Eelco Dolstra Date: Sun Dec 3 02:36:44 2006 +0000 * Use a Unix domain socket instead of pipes. commit 8c76df93e6fe021df6a6aa2b2c710202db326a34 Author: Eelco Dolstra Date: Sun Dec 3 02:22:04 2006 +0000 * Better error message if the worker doesn't start. commit 363f40022f08b3a7f5571574ddecf785db39584a Author: Eelco Dolstra Date: Sun Dec 3 02:12:26 2006 +0000 * Pid::kill() should be interruptable. commit 7951c3c5460324c652d42f5f92bcae44e0a0b9c7 Author: Eelco Dolstra Date: Sun Dec 3 02:08:13 2006 +0000 * Some hackery to propagate the worker's stderr and exceptions to the client. commit 714fa24cfb5afeb144549e0cc4808cc2a1c459cf Author: Eelco Dolstra Date: Sun Dec 3 00:52:27 2006 +0000 * Run the worker in a separate session to prevent terminal signals from interfering. commit e25fad691aa3ccb492c4fb8840289f76151e553e Author: Eelco Dolstra Date: Sat Dec 2 16:41:36 2006 +0000 * Move addTempRoot() to the store API, and add another function syncWithGC() to allow clients to register GC roots without needing write access to the global roots directory or the GC lock. commit 30bf547f4f5bc881eb60c9e11020d077fbb8b899 Author: Eelco Dolstra Date: Sat Dec 2 15:46:17 2006 +0000 * Doh. commit 536595b072e73f72c421400c35d09089e7d54ca4 Author: Eelco Dolstra Date: Sat Dec 2 15:45:51 2006 +0000 * Remove most of the old setuid code. * Much simpler setuid code for the worker in slave mode. commit 9c9cdb06d095ea91e10be8dae3a85f06a99c51bf Author: Eelco Dolstra Date: Sat Dec 2 14:34:14 2006 +0000 * Remove SwitchToOriginalUser, we're not going to need it anymore. commit 626f8ee42f0b984ebc1cbf0b39938bcb3edf3bd7 Author: Eelco Dolstra Date: Sat Dec 2 14:33:39 2006 +0000 * Clear NIX_REMOTE in the tests. commit 8ba5d32769560d32cb5e1e83fd30fb6da0b145f4 Author: Eelco Dolstra Date: Sat Dec 2 14:27:24 2006 +0000 * Remove queryPathHash(). * Help for nix-worker. commit fcd9900d74b0eb3d57402c448ede2a411133fa46 Author: Eelco Dolstra Date: Fri Dec 1 21:00:39 2006 +0000 * Replace read-only calls to addTextToStore. commit a824d58b566752b2a89a718fd628053754968d72 Author: Eelco Dolstra Date: Fri Dec 1 20:51:18 2006 +0000 * Merge addToStore and addToStoreFixed. * addToStore now adds unconditionally, it doesn't use readOnlyMode. Read-only operation is up to the caller (who can call computeStorePathForPath). commit ceb982a1be381d59532d0405451f38d263abb617 Author: Eelco Dolstra Date: Fri Dec 1 18:02:05 2006 +0000 * Right name. commit b0d8e05be16e9887dbf3edcd6167c7f0b36dee5d Author: Eelco Dolstra Date: Fri Dec 1 18:00:01 2006 +0000 * More operations. * addToStore() and friends: don't do a round-trip to the worker if we're only interested in the path (i.e., in read-only mode). commit 0565b5f2b35dc153dc98e1e3bd37476aa13ee4f1 Author: Eelco Dolstra Date: Thu Nov 30 22:43:55 2006 +0000 * More remote operations. * Added new operation hasSubstitutes(), which is more efficient than querySubstitutes().size() > 0. commit aac547a8b3f481fda48cc1fe1082ce4c32be0e03 Author: Eelco Dolstra Date: Thu Nov 30 21:32:46 2006 +0000 * Doh. commit 02632790713eaabd5250ba04283233c8bc078067 Author: Eelco Dolstra Date: Thu Nov 30 20:45:20 2006 +0000 * More operations. commit a711689368fe0915a2f18ea61fe6e953647d0174 Author: Eelco Dolstra Date: Thu Nov 30 20:13:59 2006 +0000 * First remote operation: isValidPath(). commit 765bdfe542d3250329dea98b69db2271419f31b6 Author: Eelco Dolstra Date: Thu Nov 30 19:54:43 2006 +0000 * When NIX_REMOTE is set to "slave", fork off nix-worker in slave mode. Presumably nix-worker would be setuid to the Nix store user. The worker performs all operations on the Nix store and database, so the caller can be completely unprivileged. This is already much more secure than the old setuid scheme, since the worker doesn't need to do Nix expression evaluation and so on. Most importantly, this means that it doesn't need to access any user files, with all resulting security risks; it only performs pure store operations. Once this works, it is easy to move to a daemon model that forks off a worker for connections established through a Unix domain socket. That would be even more secure. commit 40b3f64b55f98e03b3173541b8d94cd924099223 Author: Eelco Dolstra Date: Thu Nov 30 19:19:59 2006 +0000 * Skeleton of the privileged worker program. * Some refactoring: put the NAR archive integer/string serialisation code in a separate file so it can be reused by the worker protocol implementation. commit 9adc074dc3e135356c2390038bf72264c29c1e03 Author: Eelco Dolstra Date: Thu Nov 30 18:35:50 2006 +0000 * Oops. commit 9cf1948993659cc394eccea5890e14df82eff8bb Author: Eelco Dolstra Date: Thu Nov 30 18:35:36 2006 +0000 * Skeleton of remote store implementation. commit 6ecb840fd118019f879de60007e13321b7c080d3 Author: Eelco Dolstra Date: Thu Nov 30 18:02:04 2006 +0000 * Put building in the store API. commit e2ef5e07fdc142670f7f3161d3133ff04e99d342 Author: Eelco Dolstra Date: Thu Nov 30 17:43:04 2006 +0000 * Refactoring. There is now an abstract interface class StoreAPI containing functions that operate on the Nix store. One implementation is LocalStore, which operates on the Nix store directly. The next step, to enable secure multi-user Nix, is to create a different implementation RemoteStore that talks to a privileged daemon process that uses LocalStore to perform the actual operations. commit 5f0b9de6d837daf43c6ab26d41c829621c3ca727 Author: Eelco Dolstra Date: Thu Nov 30 15:06:46 2006 +0000 * Benchmarking Unix domain sockets. commit fe15f991e3a65021442b682f187fcbdad06358a8 Author: Eelco Dolstra Date: Thu Nov 30 11:24:10 2006 +0000 * Troubleshooting information on fixing a b0rked Berkeley DB database. commit 80b742dd520bffd3895b4dadef83d64e70309375 Author: Eelco Dolstra Date: Wed Nov 29 22:07:49 2006 +0000 * Don't spam. commit 92417600a1f26510d50310afef19b75c541d05df Author: Roy van den Broek Date: Wed Nov 29 21:58:09 2006 +0000 * Example script to set permissions for setuid operation. commit 71e867c5f5ee2c188244da33366e506935abffb7 Author: Eelco Dolstra Date: Wed Nov 29 21:06:58 2006 +0000 * Remove --enable-setuid, --with-nix-user and --with-nix-group. Rather, setuid support is now always compiled in (at least on platforms that have the setresuid system call, e.g., Linux and FreeBSD), but it must enabled by chowning/chmodding the Nix binaries. commit c6a97e3b74289fdc8e57189212a0db3d0e6896e0 Author: Eelco Dolstra Date: Fri Nov 24 20:24:14 2006 +0000 * Doh! Path sizes need to be computed recursively of course. (NIX-70) commit a76efaeb3f2c1d7de6d41bd0e883b92e2d0f3d7f Author: Eelco Dolstra Date: Fri Nov 24 20:07:30 2006 +0000 * Dead files. commit d94118628919ee5b6d8e52cd6dcf89ba13a54360 Author: Eelco Dolstra Date: Sat Nov 18 19:03:45 2006 +0000 * Show more progress. commit 0541ddc7e33c35a35efe85b6d6f603efb5bac8c8 Author: Eelco Dolstra Date: Sat Nov 18 18:56:30 2006 +0000 * Turn off synchronisation between C and C++ I/O functions. This gives a huge speedup in operations that read or write from standard input/output. (So libstdc++'s I/O isn't that bad, you just have to call std::ios::sync_with_stdio(false).) For instance, `nix-store --register-substitutes' went from 1.4 seconds to 0.1 seconds on a certain input. Another victory for Valgrind. commit 471749ca7eb594660488954d23391f5329d638a4 Author: Eelco Dolstra Date: Tue Nov 14 19:18:52 2006 +0000 * Grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr... commit 17d18b1a9c821c234f5b0df7f4dec41a7ec537c1 Author: Eelco Dolstra Date: Tue Nov 14 19:11:36 2006 +0000 * Doh! commit 0ddaee756e6e6b1d3802969162a90d4ff7ef886b Author: Eelco Dolstra Date: Tue Nov 14 19:08:46 2006 +0000 * Doh. commit bce9ff7ece912d18f1d92e6759b82ef5b8ad20aa Author: Eelco Dolstra Date: Tue Nov 14 15:36:27 2006 +0000 * Use the patched ATerm library. commit 745e354b19a00dba9fd6d058036ce412ba30e23a Author: Eelco Dolstra Date: Tue Nov 14 10:23:21 2006 +0000 * Push. commit f459a5bb3a7142dee5d82c5d385bc3c4654c8e2c Author: Eelco Dolstra Date: Mon Nov 13 18:19:05 2006 +0000 * Remove the undocumented `noscan' feature. It's no longer necessary now that reference scanning is sufficiently streamy. commit e2a70b7ec04db604e9eaadfa6446bd360473163a Author: Eelco Dolstra Date: Mon Nov 13 18:18:13 2006 +0000 * Magic attribute `exportReferencesGraph' that allows the references graph to be passed to a builder. This attribute should be a list of pairs [name1 path1 name2 path2 ...]. The references graph of each `pathN' will be stored in a text file `nameN' in the temporary build directory. The text files have the format used by `nix-store --register-validity'. However, the deriver fields are left empty. `exportReferencesGraph' is useful for builders that want to do something with the closure of a store path. Examples: the builders that make initrds and ISO images for NixOS. `exportReferencesGraph' is entirely pure. It's necessary because otherwise the only way for a builder to get this information would be to call `nix-store' directly, which is not allowed (though unfortunately possible). commit e40d4a5604a75540d94782d405dfff2000143f61 Author: Eelco Dolstra Date: Mon Nov 13 16:48:27 2006 +0000 * Option `--reregister' in `nix-store --register-validity'. We need this in the NixOS installer (or in the buildfarm) to ensure that the cryptographic hash of the path contents still matches the actual contents. commit e7904043184ed08b1c4f206bd67c9e84305220f0 Author: Eelco Dolstra Date: Mon Nov 13 14:54:18 2006 +0000 * Don't use the result of `uname -p' on x86_64 as it gives wacky results on some machines. (NIX-69) commit 983c5e3fce1fb688ec086a5d6664a30f492f700d Author: Eelco Dolstra Date: Tue Nov 7 14:51:28 2006 +0000 * Fix the locking patch for Berkeley DB 4.5. commit 7e85a2af5f2cf6c19fc582c6cec77c0eefef2c31 Author: Eelco Dolstra Date: Fri Nov 3 16:17:39 2006 +0000 * Fix importing of derivation outputs. commit b3f916995af379ac1964e0459fb805803794ba39 Author: Eelco Dolstra Date: Tue Oct 31 18:45:17 2006 +0000 * Oops, `nix-build --no-out-link' was broken. commit 005eecfc4d0a26694b521e999e4985c452c4b3f3 Author: Eelco Dolstra Date: Mon Oct 30 16:29:05 2006 +0000 * Release notes. commit 8478cd260f31e8592aacdfaf99c1a4e53e4eb400 Author: Eelco Dolstra Date: Mon Oct 30 11:56:09 2006 +0000 * readFile: don't overflow the stack on large files. commit 8d17265ac4f9202d924a109a38db33dac5619f9f Author: Eelco Dolstra Date: Sat Oct 28 22:07:09 2006 +0000 * Don't use EPSV. commit ae6fb27f18fff6639f3b51ace4789537255a43a4 Author: Eelco Dolstra Date: Sat Oct 28 16:33:54 2006 +0000 * `nix-store --read-log / -l PATH' shows the build log of PATH, if available. For instance, $ nix-store -l $(which svn) | less lets you read the build log of the Subversion instance in your profile. * `nix-store -qb': if applied to a non-derivation, take the deriver. commit 99b0ea7c67e9e545bdf8b8bb050ce63dc9440e95 Author: Eelco Dolstra Date: Thu Oct 26 23:06:47 2006 +0000 * Typo reported by Arie Middelkoop. * Left out close-quote in example. commit dd300fb48dd2048d056a5f25dda7d4c1f5515d46 Author: Eelco Dolstra Date: Mon Oct 23 16:45:19 2006 +0000 * Some better error messages. commit 1d694eef4ce022a99a3fb552804a1f26f686cc55 Author: Eelco Dolstra Date: Thu Oct 19 19:20:18 2006 +0000 * Require Perl 5.8.0 or newer. I mean, it *is* more than four years old... commit 7a4497d98ca10a3e92d4f94fd62075f336b299b1 Author: Eelco Dolstra Date: Thu Oct 19 17:44:51 2006 +0000 * Checks for allowedReferences and some other features. * Use nix-build in a test. commit 17f4883bfeb27c3fb6f28bd8ff8c6bbf65e6ea84 Author: Eelco Dolstra Date: Thu Oct 19 17:43:58 2006 +0000 * Better message. commit 9bd93f76069fdf25688ce984a17798ab0834202f Author: Eelco Dolstra Date: Thu Oct 19 17:39:02 2006 +0000 * toFile: maintain the references. commit b3d3700e113c584329473dbfbd3149c9ef8566e8 Author: Eelco Dolstra Date: Thu Oct 19 17:30:09 2006 +0000 * nix-build: check the exit status of `nix-store -r'. commit 6a67556f7192108d612560992e97a14b0fe16a22 Author: Eelco Dolstra Date: Thu Oct 19 16:09:24 2006 +0000 * Special derivation attribute `allowedReferences' that causes Nix to check that the references of the output of a derivation are in the specified set. For instance, allowedReferences = []; specifies that the output cannot have any references. (This is useful, for instance, for the generation of bootstrap binaries for stdenv-linux, which must not have any references for purity). It could also be used to guard against undesired runtime dependencies, e.g., {gcc, dynlib}: derivation { ... allowedReferences = [dynlib]; } says that the output can refer to the path of `dynlib' but not `gcc'. A `forbiddedReferences' attribute would be more useful for this, though. commit daa8f85fcd3d5d7c48a51305818e05bee866b936 Author: Eelco Dolstra Date: Tue Oct 17 14:13:15 2006 +0000 * Backwards compatibility hack for user environments made by Nix <= 0.10. commit 24737f279e6f1e0fd079609b9397deb867925324 Author: Eelco Dolstra Date: Tue Oct 17 14:01:45 2006 +0000 * Backwards compatibility with old user environment manifests. commit 4bd5cdb90b980bd5e0eec86bf3fcfdd3b07946d1 Author: Eelco Dolstra Date: Tue Oct 17 14:01:28 2006 +0000 * Print out the offending path. commit 58ff6939f4713063dabd77d485689691a82dbb3b Author: Eelco Dolstra Date: Tue Oct 17 12:58:42 2006 +0000 * An awful backwards compatibility hack. commit 3059df0f1e7c70da8b63e09420af84014ef96295 Author: Eelco Dolstra Date: Tue Oct 17 12:34:13 2006 +0000 * baseNameOf: paths don't have to be absolute. commit 822dba2210a03144510df357c4c38229b1e4c211 Author: Eelco Dolstra Date: Tue Oct 17 12:15:15 2006 +0000 * Maintain the references for the user environment properly. commit dfc042a0c1786596554f30d628555845ab4539d8 Author: Eelco Dolstra Date: Tue Oct 17 11:16:02 2006 +0000 * Another test. commit 9e30694f9838ff16533f614788c782503fe20967 Author: Eelco Dolstra Date: Tue Oct 17 11:08:59 2006 +0000 * Fix the tests wrt the AST changes, i.e., Str(s) -> Str(s, []), and the semantic changes. commit be1961c9f8fbf71ab8ba7ba7a2da5dbb21be54b4 Author: Eelco Dolstra Date: Tue Oct 17 11:07:11 2006 +0000 * toPath: should be the identity on paths. commit cba913c5217fd4071419279da81fd02599715b6a Author: Eelco Dolstra Date: Tue Oct 17 11:05:34 2006 +0000 * dirOf: return a path if the argument is a path. commit cf705eaf78df646116f2fc14e6fa07d88f1607fe Author: Eelco Dolstra Date: Tue Oct 17 10:58:12 2006 +0000 * toString: don't copy paths. So toString can be used to pass non-store paths to a builder. commit 7de5fe2fc2cf4ceafc421697ad0bfb0a6e2d994d Author: Eelco Dolstra Date: Tue Oct 17 10:57:25 2006 +0000 * Do the path check on the normal form. commit 46b631b6c4a743b88bf2d6bb779c0f677e9b8318 Author: Eelco Dolstra Date: Tue Oct 17 10:15:42 2006 +0000 * Don't generate an empty drvPath attribute in the manifest. commit d7efd7639420f4c840cbfdfcbbb3c45292f3ac54 Author: Eelco Dolstra Date: Mon Oct 16 15:55:34 2006 +0000 * Big cleanup of the semantics of paths, strings, contexts, string concatenation and string coercion. This was a big mess (see e.g. NIX-67). Contexts are now folded into strings, so that they don't cause evaluation errors when they're not expected. The semantics of paths has been clarified (see nixexpr-ast.def). toString() and coerceToString() have been merged. Semantic change: paths are now copied to the store when they're in a concatenation (and in most other situations - that's the formalisation of the meaning of a path). So "foo " + ./bla evaluates to "foo /nix/store/hash...-bla", not "foo /path/to/current-dir/bla". This prevents accidental impurities, and is more consistent with the treatment of derivation outputs, e.g., `"foo " + bla' where `bla' is a derivation. (Here `bla' would be replaced by the output path of `bla'.) commit 4c9aa821b985b8e334790a03497a56af3a021f3b Author: Eelco Dolstra Date: Fri Oct 13 14:08:14 2006 +0000 * Fix version. commit 142863a89d1652d6e634b5fb7f3084c9bc37b023 Author: Eelco Dolstra Date: Fri Oct 13 12:11:30 2006 +0000 * Use Berkeley DB 4.5. commit 37c8a664f3af9d67ecdc200d4a6b5ced1009c25f Author: Eelco Dolstra Date: Fri Oct 13 11:49:55 2006 +0000 * A helpful message. commit e4af398681576d62df29cfee018dea800a7dfa17 Author: Eelco Dolstra Date: Fri Oct 13 11:15:53 2006 +0000 * Don't crash when upgrading the Berkeley DB environment. commit 2a535689fe801441ef8e4a5c6659925528cce106 Author: Eelco Dolstra Date: Thu Oct 12 20:13:29 2006 +0000 * Reduce the maximum archive size for patch generation to 100 MB to prevent trashing on nix.cs.uu.nl. commit 7d4567f2cc16959e827f542e6de76a28ff11789e Author: Eelco Dolstra Date: Wed Oct 11 21:59:33 2006 +0000 * Removed URIs from the evaluator (NIX-66). They are now just another kind of notation for strings. commit b4e012ab4d8ef2f9091c1e8d14e059b38a2e4529 Author: Eelco Dolstra Date: Wed Oct 11 13:39:00 2006 +0000 * Merge 0.10.1 release notes. commit 0c4c5c2020383db9c2d39d7a3420195568d06312 Author: Eelco Dolstra Date: Tue Oct 10 21:23:35 2006 +0000 * Quick hack to fix NIX-67: evaluation result differing if the Nix expression resides in the store. commit bd0c40e1e93d2239b44bd1f73c2587cd62e66e4d Author: Eelco Dolstra Date: Tue Oct 10 15:07:23 2006 +0000 * `import': unwrap the context. Necessary to make `import (x + y)' work, where x is a store path. commit 7bada48b36a091bb30c905229e16df3c36c90d7d Author: Eelco Dolstra Date: Fri Oct 6 13:45:29 2006 +0000 * Bumped the version number to 0.11. commit e1cc84259ce38f0639f6304f04e1747c00fd43cb Author: Eelco Dolstra Date: Fri Oct 6 09:59:02 2006 +0000 * Too lazy to document nix-push --copy. commit b3fc0160618d89bf63ce87ccad27fc68360c9731 Author: Eelco Dolstra Date: Fri Oct 6 09:03:39 2006 +0000 * Translate Unicode quote characters to ASCII equivalents when generating NEWS.txt. commit 3815d2d463d6cd130e96497e66ff50b9243e59fb Author: Eelco Dolstra Date: Fri Oct 6 07:47:56 2006 +0000 * Typos etc. * Set the release date. commit beee18de881040e3d7861be694fc3c66e9bf4159 Author: Eelco Dolstra Date: Thu Oct 5 23:13:15 2006 +0000 * Document nix-store --delete. commit eff573f5638e8eefd682d0a8860728fe53791f22 Author: Eelco Dolstra Date: Thu Oct 5 23:01:50 2006 +0000 * Work around a weird bug in the manpage generation. commit 9e08f5efe105fb1314e3bb052a819696ed2adee1 Author: Eelco Dolstra Date: Thu Oct 5 22:57:07 2006 +0000 * Documented nix-store --dump / --restore. commit 8791ffbc886520e02017f854342922a624b61fb5 Author: Eelco Dolstra Date: Thu Oct 5 22:56:52 2006 +0000 * Documented new nix-env options. commit 99ef620c8c453949719c45229a8bd4f1cd5a66a8 Author: Eelco Dolstra Date: Thu Oct 5 20:41:57 2006 +0000 * Documented nix-instantiate --xml, --strict. * Added an example to the nix-build section. commit 8396b592860bcb7b6394e7201b20d63ea92887d6 Author: Eelco Dolstra Date: Thu Oct 5 20:07:41 2006 +0000 * Documented --attr / -A. commit 5d769de8a34474f4e76911927118312b69b47136 Author: Eelco Dolstra Date: Thu Oct 5 09:08:52 2006 +0000 * Document --arg. commit 6f2bfd92b695a31b35d8d515cd4ee12f9fc2c786 Author: Eelco Dolstra Date: Thu Oct 5 08:21:52 2006 +0000 * Manual. commit d98f750fd8de5a0546903061e94b9bda3f68681f Author: Eelco Dolstra Date: Wed Oct 4 18:58:11 2006 +0000 * tmpnam() -> File::Temp::tempdir(). commit 34427a7b43382215774b1a164fd784a0f7804d33 Author: Eelco Dolstra Date: Wed Oct 4 17:07:58 2006 +0000 * Weird. commit a3fd53b9eb767c9b9f2c8f3824a1aea1c25544a6 Author: Eelco Dolstra Date: Wed Oct 4 17:07:52 2006 +0000 * Style tweak. commit 59ef0aaf3fc6707d25f7f4fcabab4f1ceaaef9e1 Author: Eelco Dolstra Date: Wed Oct 4 16:02:18 2006 +0000 * Strings. commit 407c9fd520e8084f3a313297cdd6e99e56247f07 Author: Eelco Dolstra Date: Wed Oct 4 15:20:19 2006 +0000 * Explanation of toXML example. commit 0ef3bd3c376a2d48e98dfb8712a7d376743b0498 Author: Eelco Dolstra Date: Wed Oct 4 12:20:07 2006 +0000 * Use GIF callouts instead of PNG since the GIFs have transparency. commit 4a7ece698ba27e8957fed071434e3e66c337b03b Author: Eelco Dolstra Date: Wed Oct 4 08:26:05 2006 +0000 commit bd4f1b4bb8fb20b0752677c52f28ff951205d513 Author: Eelco Dolstra Date: Wed Oct 4 08:14:35 2006 +0000 * Style tweaks. commit 96fa456a0ae624a30a3cfded21e91e690056eda2 Author: Eelco Dolstra Date: Tue Oct 3 15:39:34 2006 +0000 * An example of using toXML to pass structured information to a builder and generate a Jetty configuration file with XSLT. commit 5fd44654dbca02f188957279eb25a33a3ecfe96b Author: Eelco Dolstra Date: Tue Oct 3 15:38:59 2006 +0000 * toXML: propagate the context to allow derivations to be used in the argument. commit 3837fb233cccc8f65629749f07820afba04952a0 Author: Eelco Dolstra Date: Tue Oct 3 15:19:05 2006 +0000 * Document the built-in functions. commit d20c3011a06a49d229c92c49447eb21b5a1f110d Author: Eelco Dolstra Date: Tue Oct 3 14:55:54 2006 +0000 * toFile: added an additional argument to specify the store path suffix, e.g., `builtins.toFile "builder.sh" "..."'. * toFile: handle references to other files correctly. commit 84e6c43e85cab83ee033bf13c1e58c0f30ca1de9 Author: Eelco Dolstra Date: Mon Oct 2 22:11:44 2006 +0000 * Documented nix-hash. commit cfe35ca0e04fe486394d8505646cf7dff5d627be Author: Eelco Dolstra Date: Mon Oct 2 20:28:52 2006 +0000 * Manual. commit 853252ac6699ec339f0692c913361b0df417ded6 Author: Eelco Dolstra Date: Mon Oct 2 16:14:30 2006 +0000 * Document the new let. commit ac19b333b38b2ac4b633bc1203e59c153bbb5c91 Author: Eelco Dolstra Date: Mon Oct 2 15:52:44 2006 +0000 * Finally, a real "let" syntax: `let x = ...; ... z = ...; in ...'. commit 7581cfdee4001cba719d4d72f8f17f1b4c04ed51 Author: Eelco Dolstra Date: Mon Oct 2 14:43:15 2006 +0000 * Hack for Bison 2.3 compatability. commit f316b6c1a91e596b2717bc4db76c6513e3ef5f85 Author: Eelco Dolstra Date: Mon Oct 2 11:50:55 2006 +0000 * Manual updates (especially how nix-build makes testing packages much easier; no longer need a helper expression). commit 91a01e6fcf88edfff5cd1b25651452d4385b1fbd Author: Eelco Dolstra Date: Mon Oct 2 09:01:36 2006 +0000 * Manual. commit 88d422567eb018b8b050a662bdaa6b0faa6a4be0 Author: Eelco Dolstra Date: Fri Sep 29 14:59:10 2006 +0000 * One-click installs. commit 0212feeed66d2eb0a9365ca4d55cb2dad3bc4ade Author: Eelco Dolstra Date: Fri Sep 29 14:16:41 2006 +0000 * Document nix-install-package and the nixpkg file format. commit 070e07ed5aeac9918b9ec4cb6944f31b2b1aeeae Author: Eelco Dolstra Date: Fri Sep 29 11:03:16 2006 +0000 * Manual. commit 30c7db85d81840d9d99841ab72e95c5267a925a6 Author: Eelco Dolstra Date: Fri Sep 29 10:31:56 2006 +0000 * Manual updates, some style improvements. commit e2eed05224ed9bbc64014db9158bbc42bd3d9bef Author: Eelco Dolstra Date: Thu Sep 28 09:10:53 2006 +0000 * Manual updates. * Documented nix-{pack,unpack}-closure. commit 4ad6fb7ea3e18361b6021a23a7401af4085d3602 Author: Eelco Dolstra Date: Wed Sep 27 21:04:07 2006 +0000 * Fix setuid builds. commit 015ac7c7da6dfc93d287b89e443648656a88665d Author: Eelco Dolstra Date: Wed Sep 27 13:27:26 2006 +0000 * Release notes. commit a9a6356ffceeb346b9de1f7640932a27bf90ce1d Author: Eelco Dolstra Date: Wed Sep 27 12:43:00 2006 +0000 * Release notes. commit e47d42536fbee59598951f1e007b7fa5884459e7 Author: Eelco Dolstra Date: Tue Sep 26 09:57:27 2006 +0000 * Release notes. commit 5ca45d085e0ecf44f5362272b89a8532c2fffdc8 Author: Eelco Dolstra Date: Mon Sep 25 15:11:59 2006 +0000 * Use "propagated-user-env-packages", not "propagated-build-inputs" for packages that should be propagated to the user environment. commit 02f2335712c6448b10f8a2828a22c663bf8d9579 Author: Eelco Dolstra Date: Mon Sep 25 15:07:45 2006 +0000 * Propagated packages now have lower priority; they are symlinked *after* the packages that have been explicitly installed, and collisions are ignored. commit 3632019b737d1c570a3c30f4f3f07763b5b1d23c Author: Eelco Dolstra Date: Mon Sep 25 14:00:59 2006 +0000 * Quick hack to let nix-install-package set the package name properly (e.g., "java-front-0.9pre15899" instead of "java-front"; particularly important when doing upgrades later on). commit d43565c3e837feea478aaa71bad7e0a92c1911f0 Author: Eelco Dolstra Date: Mon Sep 25 11:11:16 2006 +0000 * In `nix-channel --update', skip manifests that assume a Nix store at a different location than the user's. This makes channels usable as a source deployment mechanism for people who install Nix under non-standard prefixes. (NIX-57) commit 68ae953d8a492061bcda7c4d7bf2f5b9432f791c Author: Eelco Dolstra Date: Mon Sep 25 10:44:27 2006 +0000 * Clean up calls to system(). commit 76c971009149f73453ccec66392625f2b67f8785 Author: Eelco Dolstra Date: Mon Sep 25 10:29:25 2006 +0000 * Use builtins.toPath. commit e347033f718e23d1ae6821207124465fedc73db1 Author: Eelco Dolstra Date: Sun Sep 24 21:39:57 2006 +0000 * The result of a concatenation with a derivation on the left-hand side should be a path, I guess. * Handle paths that are in the store but not direct children of the store directory. * Ugh, hack to prevent double context wrapping. commit 0e705391dbe5340154d59106e591671923d107d0 Author: Eelco Dolstra Date: Sun Sep 24 18:23:32 2006 +0000 * Primop `toPath' to convert a string to a path. * Primop `pathExists' to check for path existence. commit e47e0c2dbe808f299eb912da94640b95954703f7 Author: Eelco Dolstra Date: Sun Sep 24 17:48:41 2006 +0000 * Builtin function `getEnv' for getting environment variables. commit df8873e14ad071812e27f38b69783f04dbae5f44 Author: Eelco Dolstra Date: Sun Sep 24 15:21:48 2006 +0000 * lessThan primitive for integer comparison. commit 2ab4bc44c780d2e28647f7559664675b756f38b9 Author: Eelco Dolstra Date: Fri Sep 22 15:29:21 2006 +0000 * Builtin function `add' to add integers. * Put common test functions in tests/lang/lib.nix. commit d315210612a8d5eb52654407903544b72222130b Author: Eelco Dolstra Date: Fri Sep 22 14:55:19 2006 +0000 * Added a builtin function `isList' to test whether a value is a list. With this primitive, a list-flattening function can be implemented (NIX-55, example is in tests/lang/eval-okay-flatten.nix). commit c02a44183fcff7c28cfed1c84c142cc2cf80f167 Author: Eelco Dolstra Date: Fri Sep 22 14:46:36 2006 +0000 * Builtin functions `head' and `tail' to return the head and tail of list. Useful for lots of things, such as implementing a fold function (see NIX-30, example is in tests/lang/eval-okay-list.nix). commit 8a1ab709a47f0896cb5b47521e31c8c27f88b2b3 Author: Eelco Dolstra Date: Fri Sep 22 14:31:55 2006 +0000 * New builtin functions builtins.{hasAttr, getAttr} to check for attribute existence and to return an attribute from an attribute set, respectively. Example: `hasAttr "foo" {foo = 1;}'. They differ from the `?' and `.' operators in that the attribute name is an arbitrary expression. (NIX-61) commit 666babbbfa2fc168b8d511a35065d352b4979dae Author: Eelco Dolstra Date: Fri Sep 22 13:10:30 2006 +0000 * Use a bounded amount of memory in scanForReferences() by not reading regular files into memory all at once. commit 385c6f87373303f6e4c9f4e67e02507641a268f2 Author: Eelco Dolstra Date: Fri Sep 22 12:07:41 2006 +0000 * Supply the 64-bit ATerm patch, but don't apply it (since that requires rerunning Autoconf/Automake). Interested users should do that themselves. commit d22d7565f3a1848552f9459e18cb4be4e6d08018 Author: Eelco Dolstra Date: Fri Sep 22 11:28:23 2006 +0000 * Don't allocate the buffer twice. commit b43aeadbc9a42c845a50c28ceb1c148e39e77cb9 Author: Eelco Dolstra Date: Fri Sep 22 11:13:35 2006 +0000 * Don't allocate more than SIZE_MAX bytes. commit 4cab35d1a691009b43fb0c47574ae0e4baa0b65d Author: Eelco Dolstra Date: Fri Sep 22 11:13:12 2006 +0000 * Build with -D_FILE_OFFSET_BITS=64 to support files >= 2^31 bytes (NIX-22). commit 25df5017046ca5d4f753787532b747cb2c44fec6 Author: Eelco Dolstra Date: Thu Sep 21 19:06:34 2006 +0000 * GC options in nix-store --help (NIX-15). commit 0bd5eb71a0a23b27a02af591ba46e4cf2c34aa04 Author: Eelco Dolstra Date: Thu Sep 21 18:54:08 2006 +0000 * `nix-install-package --url': install from a URL (NIX-12). * `nix-install-package --help' (NIX-9). * `nix-install-package --non-interactive': don't prompt or pause. * Tests for nix-install-package. * Security fixes: filter the values obtained from the nixpkg. commit 4e91d8621f6620f8b15535002309882fd7794a1f Author: Eelco Dolstra Date: Thu Sep 21 18:52:05 2006 +0000 * Fix comment. commit ee5040421ff442ec62db25f35874d9a27f9a646f Author: Eelco Dolstra Date: Thu Sep 21 11:29:14 2006 +0000 * Try konsole and gnome-terminal in addition to xterm. commit 1bdc152931b2da66d896199e22defa70eaec9eff Author: Eelco Dolstra Date: Wed Sep 20 16:36:29 2006 +0000 * Shut up a warning. commit 1b804f88e44e7f6760e9c43e329a8a6eb368c52e Author: Eelco Dolstra Date: Wed Sep 20 16:23:14 2006 +0000 * Absolute path to rm (NIX-51). * Don't hardcore /nix/bin and /nix/store. commit 0623359fbc67c421bf76b7433f92c7ef58050321 Author: Eelco Dolstra Date: Wed Sep 20 16:15:32 2006 +0000 * Print a better error message for wrong hashes (NIX-49). commit 22d13d6ec27b02f98ca4e398fbae4f3273e97794 Author: Eelco Dolstra Date: Wed Sep 20 15:28:47 2006 +0000 * Check for patch (NIX-59). commit 947e64578969e95e96157c7e2e52fd7299027184 Author: Eelco Dolstra Date: Wed Sep 20 15:14:19 2006 +0000 * Hide warnings about a missing "lsof" (NIX-54). commit a060adf165e24a585da0301e88ad41e674f3e9db Author: Eelco Dolstra Date: Wed Sep 20 15:04:04 2006 +0000 * Use paths, not strings, when calling the function that generates NARs. Fixes the impurity of nix-push (NIX-21). * Better help. commit 7dd342e482b230d0042f8f2dee6ccb44232a3d3b Author: Eelco Dolstra Date: Tue Sep 19 16:40:22 2006 +0000 * Doh. commit ee6cf99660bbef843145731fbcdce9880c3bdb21 Author: Eelco Dolstra Date: Tue Sep 19 16:14:15 2006 +0000 * Doh! Of course we have to take execute permission into account. * Restore the mtime on modified directories. commit 6dbed1bf38cd881ebf13aae39a4d988e4bd57f79 Author: Eelco Dolstra Date: Tue Sep 19 14:58:35 2006 +0000 * `optimise-store.pl' reduces disk space consumption by hard-linking all identitical files in the Nix store to each other. (Previously it only computed the size that would be saved by doing so.) commit 07cec27848014244c8f62985c5c0eb045bc86634 Author: Eelco Dolstra Date: Tue Sep 19 14:27:28 2006 +0000 * Cleanups. commit 9488ae7357b718e09362c22f075cc5553c758214 Author: Eelco Dolstra Date: Tue Sep 19 13:53:35 2006 +0000 * `show-duplication.pl', a small utility that shows the amount of package duplication present in (e.g.) a profile. It shows the number of instances of each package in a closure, along with the size in bytes of each instance as well as the "waste" (the difference between the sum of the sizes of all instances and the average size). $ ./show-duplication.pl /nix/var/nix/profiles/default gcc 11 3.3.6 19293318 3.4.4 21425257 ... average 14942970, waste 149429707 coreutils 6 ... average package duplication 1.87628865979381, total size 3486330471, total waste 1335324237, 38.3017114443825% wasted This utility is useful for measuring the cost in terms of disk space of the Nix approach. commit e0afaf18576e8c04110f4ae8499a311cae261215 Author: Eelco Dolstra Date: Thu Sep 14 22:48:59 2006 +0000 * Wow, that bug has been there since r764. commit 86cbd93ec1e439fba3e33016272db45d9597fba4 Author: Eelco Dolstra Date: Thu Sep 14 22:33:53 2006 +0000 * nix-env --switch-generation / --list-generations / --delete-generations: lock the profile to prevent (extremely unlikely) race conditions. commit 5c38c863bdb6904f28a929b97e91d283e29aea70 Author: Eelco Dolstra Date: Thu Sep 14 22:30:33 2006 +0000 * Fix a huge gaping hole in nix-env w.r.t. the garbage collector. Nix-env failed to call addPermRoot(), which is necessary to safely add a new root. So if nix-env started after and finished before the garbage collector, the user environment (plus all other new stuff) it built might be garbage collected, leading to a dangling symlink chain in ~/.nix-profile... * Be more explicit if we block on the GC lock ("waiting for the big garbage collector lock..."). * Don't loop trying to create a new generation. It's not necessary anymore since profiles are locked nowadays. commit f00bc4c94ca4122d432ae516f8d1d7b405d5d05e Author: Eelco Dolstra Date: Tue Sep 12 09:29:28 2006 +0000 * "Too many links" error. commit 01d169f817649796aad94180beadbf54bb636161 Author: Eelco Dolstra Date: Mon Sep 11 13:05:15 2006 +0000 * Support `++'. * More follow restrictions on layout. commit feb63da431eae72087fb57d723e62573ee0c4e14 Author: Eelco Dolstra Date: Fri Sep 8 09:31:07 2006 +0000 * Remove debug message. commit a04a65d7a5ef904ff8465bd4e63e17a88d75be2f Author: Eelco Dolstra Date: Wed Sep 6 14:29:49 2006 +0000 * Release notes. commit 2e210b2387904ada0417ad5a7502e4e40b852e02 Author: Eelco Dolstra Date: Wed Sep 6 14:23:04 2006 +0000 * Convenience option `nix-collect-garbage -d' (--delete-old): removes old generations of *all* profiles in /nix/var/nix/profiles, then runs the garbage collector. Quick way to get rid of all old stuff. Of course, one cannot roll back to earlier points in time after this. commit 89ac8db74f1241c56b05f579cc1e04056de1a6ef Author: Eelco Dolstra Date: Tue Sep 5 11:34:50 2006 +0000 * Package the include directory. commit a89a2015981ed32354ff1cc29ea41ae8d0221fbe Author: Eelco Dolstra Date: Tue Sep 5 10:32:47 2006 +0000 * Missing #include. commit fc195519b5dfbb8e7901cf6672fb4af36df9b350 Author: Eelco Dolstra Date: Tue Sep 5 08:54:48 2006 +0000 * Sone missing #includes. commit bafc1690fc4a2a2c3ff81ff1c1a677f208d3b1b7 Author: Eelco Dolstra Date: Mon Sep 4 22:55:28 2006 +0000 * Move setuid stuff to libutil. * Install libexpr header files. commit e5a6c09b12a9a68ba604d4e95adf28482ae8fc8d Author: Eelco Dolstra Date: Mon Sep 4 22:41:36 2006 +0000 * Install header files in /nix/include/nix. commit 4be5443882cfbe7c2aa09b1c373c220400a5133f Author: Eelco Dolstra Date: Mon Sep 4 22:08:40 2006 +0000 * Remove unnecessary inclusions of aterm2.h. commit 2382a729e07ae09abb278cc28b137b9c4060101e Author: Eelco Dolstra Date: Mon Sep 4 21:50:39 2006 +0000 * Don't need extern "C". commit e3ce954582f56b9d853ea379c783cf6cd5571c83 Author: Eelco Dolstra Date: Mon Sep 4 21:36:15 2006 +0000 * Compile the lexer as C++ code. Remove all the redundant C/C++ marshalling code. commit 75068e7d753cf6cbe45a4bf294000dca9bd41d8b Author: Eelco Dolstra Date: Mon Sep 4 21:06:23 2006 +0000 * Use a proper namespace. * Optimise header file usage a bit. * Compile the parser as C++. commit aab88127321344d5818d823bff515d127108d058 Author: Eelco Dolstra Date: Mon Sep 4 15:12:24 2006 +0000 * Store the Nix libraries in ${libdir}/nix instead of ${libdir}. commit 7974aae81ced67b2aee0b537a37d813f6c67a1ec Author: Eelco Dolstra Date: Fri Sep 1 12:07:31 2006 +0000 * New primop: builtins.toFile, which writes a string into the store and returns its path. This can be used to (for instance) write builders inside a Nix expression, e.g., stdenv.mkDerivation { builder = " source $stdenv/setup ... "; ... } commit de90fdf908f2504e1a89a5d4660552cbcc1a15d5 Author: Eelco Dolstra Date: Fri Sep 1 12:04:06 2006 +0000 * Allow "$" in strings as long as they are not followed by "{". (Too bad flex doesn't have lexical restrictions, the current solution isn't quite right...) commit c9586b6c3f32b22eec8791fd9b49c81ec3f5fcf6 Author: Eelco Dolstra Date: Fri Sep 1 12:02:39 2006 +0000 * Fix race condition in the test. commit c25f688e237cbd3329b2479202ad7a6a5e438b8a Author: Eelco Dolstra Date: Thu Aug 31 15:38:43 2006 +0000 * Doh! Doh! Doh! commit 354d58b3d71d8b3723ff3cb6e8311469e9548417 Author: Eelco Dolstra Date: Thu Aug 31 11:40:39 2006 +0000 * Better error checking. commit f93f7b75be7851affd1288dc36d6d4c4f0d43743 Author: Eelco Dolstra Date: Wed Aug 30 13:10:04 2006 +0000 * Okay, that's a bit harder than expected. commit dce1afdc67b36e1b06d03c541758cb3cd97ccedd Author: Eelco Dolstra Date: Wed Aug 30 12:25:27 2006 +0000 * TDD: == should do a deep equality test, i.e., it should strictly evaluate its arguments. commit 3151bdea55ceb341b08998d2b29d9451e81c2143 Author: Eelco Dolstra Date: Wed Aug 30 12:00:27 2006 +0000 * Uninitialised variable. commit 547b119f25dea97ff06cf754f2720e11b50f079f Author: Eelco Dolstra Date: Tue Aug 29 15:40:49 2006 +0000 * Support singleton values and nested lists again in `args', but print a warning. commit 2132d9ddeba14ea2ddcbb16fa51ddb16c45c3c6a Author: Eelco Dolstra Date: Tue Aug 29 15:29:38 2006 +0000 * Fix the ~ operator. commit 1f6616dabff48028b2b08fc50889707928201ea6 Author: Eelco Dolstra Date: Tue Aug 29 15:29:19 2006 +0000 * Backwards compatibility test for ~. commit 1ec9f55741ae54f5e618e248ee49aff132017247 Author: Eelco Dolstra Date: Mon Aug 28 21:47:42 2006 +0000 * In toString, deal with nested lists properly (i.e., flatten them). commit 1fca76870b7a96d1eb33abb8ad4e4cc5ba656253 Author: Eelco Dolstra Date: Mon Aug 28 13:31:06 2006 +0000 * Removed processBinding, instead we now apply toString to all derivation attributes to flatten them into strings. This is possible since string can nowadays be wrapped in contexts that describe the derivations/sources referenced by the evaluation of the string. commit 8a6080eb1400b9b7414e2ec8b995268315448cb5 Author: Eelco Dolstra Date: Sat Aug 26 16:48:01 2006 +0000 * Refactoring. commit 4b66cebe7bf1a8c03fb8f1e0052c19e91820c66c Author: Eelco Dolstra Date: Fri Aug 25 17:09:55 2006 +0000 * Remove those storePath attribute sets, we don't need 'em. commit e5678b3435d44a610517246f95c7626d36965389 Author: Eelco Dolstra Date: Fri Aug 25 16:23:42 2006 +0000 * Map "ppc" to "powerpc" so that Linux on PowerPC will be reported as "powerpc-linux". commit e64c4f5742dbe830ab9048aeef386a4eb0c62622 Author: Eelco Dolstra Date: Fri Aug 25 13:36:17 2006 +0000 * Doh! (NIX-58) commit bf738f00707d57a1e8ecbdf77b68df84f710b53b Author: Eelco Dolstra Date: Fri Aug 25 12:14:57 2006 +0000 * Honour DESTDIR so that bzip2/bunzip2 get installed in the right location when building RPMs (fixes NIX-58). commit 3e8dccf6ab0918e89c4275ea9bf454d34e01534b Author: Eelco Dolstra Date: Thu Aug 24 15:02:39 2006 +0000 * Escape newlines in XML attributes to prevent them from being normalised away. commit 215ec2ddc6088be2291722a544c6ab5a1b00a5a1 Author: Eelco Dolstra Date: Thu Aug 24 14:34:29 2006 +0000 * New primop __toXML (or builtins.toXML) to convert an expression to an XML representation stored in a string. This should be useful to pass structured information to builders. commit f793caf93674350f8c1e6fa740ab6cce649d0db8 Author: Eelco Dolstra Date: Thu Aug 24 14:16:55 2006 +0000 * Refactoring. commit da25d80152fb6e51fe695dcd2ebaa4e00a7ee646 Author: Eelco Dolstra Date: Thu Aug 24 14:03:39 2006 +0000 * Strict evaluation and XML printing of lists. commit 943ab38a0d0969004de231a6b3e89df88ffc6ccf Author: Eelco Dolstra Date: Thu Aug 24 13:39:22 2006 +0000 * Refactoring: move strictEval to libexpr. commit f41297fdcecaa1ba12d238d1754457d319426579 Author: Eelco Dolstra Date: Wed Aug 23 16:33:21 2006 +0000 * Allow --arg in nix-env as well, example: $ nix-env -qa --system-filter \* --arg system '"powerpc-darwin"' to override the system from the default value (__currentSystem in all-packages.nix). commit 9638f3f3930bffab8a547ec59502ae72e203d9ff Author: Eelco Dolstra Date: Wed Aug 23 16:20:14 2006 +0000 * Pass the autoArgs to findAlongAttrPath so that "nix-instantiate foo.nix -A attr --arg name value" will work if (name, value) is needed in the evaluation leading up to "attr". commit b19cebc513c2d513ee1f91b5ce12f30c5dd095f2 Author: Eelco Dolstra Date: Wed Aug 23 15:46:27 2006 +0000 * Quotes. commit 38f18aa6d418515e42b688fa9b3e4f3ab61bb89e Author: Eelco Dolstra Date: Wed Aug 23 15:46:00 2006 +0000 * New primop: abort "error message". commit 4a053bfdfd85915a2a659a337bd171bc22c49138 Author: Eelco Dolstra Date: Wed Aug 23 14:39:11 2006 +0000 * A new primop `builtins', which returns an attribute set containing all the primops. This allows Nix expressions to test for new primops and take appropriate action if they're not available. For instance, rather than calling a primop `foo' directly, they could say `if builtins ? foo then builtins.foo ... else ...'. commit 68515b5a96d0d7c114570434f605e5077b7d3166 Author: Eelco Dolstra Date: Tue Aug 22 13:19:06 2006 +0000 * Release notes. commit 561a07f51d9710ecea006b18463c8119e04d3806 Author: Eelco Dolstra Date: Tue Aug 22 13:18:51 2006 +0000 * Revert unintentional commit. commit 93d9797eda419cd9f9fc059af3e1a765adeb50dd Author: Eelco Dolstra Date: Tue Aug 22 09:34:38 2006 +0000 * Urgh (see NIX-56). commit 1a9a1f2768bac5defe4c2e39e5a9ccdee0e05d55 Author: Eelco Dolstra Date: Mon Aug 21 16:05:11 2006 +0000 * Convert to DocBook 5. * Use Jing for RelaxNG validation, xmllint seems buggy. commit cc0505f033f9d7f55837dca7b3bb4fb3d2969afb Author: Eelco Dolstra Date: Thu Aug 17 12:21:39 2006 +0000 * Distribute *.exp.xml. commit 4874fd2d9a698170adfd22c69e8e38b5afb7d03c Author: Eelco Dolstra Date: Thu Aug 17 11:28:29 2006 +0000 * Test for `nix-instantiate --eval-only --xml'. commit 24e234a2fabd8930f1ef71a5bb03010725d0773a Author: Eelco Dolstra Date: Thu Aug 17 08:53:08 2006 +0000 * Print attributes in sorted order, rather than the arbitrary order produced by ATermMap. Necessary for testing. * `--strict' should also work on stdin. commit 22ba63df162d3ac980f5c33210929177e0a3dfe0 Author: Eelco Dolstra Date: Wed Aug 16 21:59:53 2006 +0000 * More XML output. `--strict' to strictly evaluate attribute sets and so on. * Removed `--print-args', it's subsumed by `--eval-only --xml'. commit 18e4ac0fc6bd1bc01d92d011e4629cacc3bec016 Author: Eelco Dolstra Date: Wed Aug 16 10:32:30 2006 +0000 * `nix-instantiate --{eval|parse}-only --xml': print an XML representation instead of an ATerm. * Indent XML output. commit fe101fa7851c3eccb79441ed7f5805e13934254f Author: Eelco Dolstra Date: Wed Aug 16 10:29:43 2006 +0000 * Meh. commit 267064273301ee9547589fd5874eee693415352f Author: Eelco Dolstra Date: Wed Aug 16 10:28:44 2006 +0000 * Handle carriage returns. Fixes NIX-53. commit bfe19b3c3728d90cad7575c5d2571d48f0ef0d14 Author: Eelco Dolstra Date: Wed Aug 16 10:23:02 2006 +0000 * A test for NIX-53. commit 3e5b68068bf5cfdc671a2900eeb0dc70fae49cf6 Author: Martin Bravenboer Date: Tue Aug 15 21:37:48 2006 +0000 On cygwin, disable the check that the output is not group or world writable. File permissions on Cygwin are rather complex, and in this case this check introduced a problem with build jobs invoke from outside of Cygwin (MSYS). It seemed almost impossible to fix the permissions of the directory, so for now this safety check is disabled on Cygwin. commit 7455fd88356fdb58db3fbf01c68de86b06c18747 Author: Eelco Dolstra Date: Mon Aug 14 14:24:18 2006 +0000 * Put the value in an attribute. commit 4250b641d8e8edc4cb7def9bc463c7e4ff82e144 Author: Eelco Dolstra Date: Fri Aug 11 20:26:49 2006 +0000 * `nix-store --gc --print-dead': print the total size of the store objects that would be freed. commit 92f7dfa5b73e44f7584eaed726927450a29a48b8 Author: Eelco Dolstra Date: Fri Aug 11 20:15:20 2006 +0000 * Don't assume that paths returned by the runtime root finder are valid. commit d19b6521fc5f28f821562f2f93cf9c772a5d4582 Author: Eelco Dolstra Date: Thu Aug 10 20:19:13 2006 +0000 * New configuration setting `build-max-jobs' which sets the default for the `-j' flag (i.e., the maximum number of jobs to execute in parallel). Useful on multi-processor machines. commit 3e239a37ff6f19f2072f70881f8bce748d447c68 Author: Eelco Dolstra Date: Wed Aug 9 19:37:23 2006 +0000 * file:/ -> file:// commit f1aa71a92f9914ac04141d9d0338391acedd6dea Author: Eelco Dolstra Date: Wed Aug 9 15:12:34 2006 +0000 * Fix the help message wrt --attr. commit a18d02e0b076a8a936c3c1660d93f941a9f3183f Author: Eelco Dolstra Date: Wed Aug 9 15:08:47 2006 +0000 * Print a warning that the subpath operator (~) is deprecated. commit c0bfcbdd45bfe3c45ab8bf188df926d214675a18 Author: Armijn Hemel Date: Tue Aug 8 15:42:33 2006 +0000 rework the --target flag. If this flag is used, a URI should be given. Default values are not changed. commit a0607be7f4ca2d54332cd9e557b21f6ed7a763d5 Author: Eelco Dolstra Date: Mon Aug 7 19:48:38 2006 +0000 * Workaround for a bug (?) in GCC 2.95. commit 5a6b45e2523c29c215f77135c6866baa83f1a7d5 Author: Eelco Dolstra Date: Mon Aug 7 18:22:57 2006 +0000 * In nar.nix, path -> storePath, otherwise we get a collision between environment variable names on Cygwin (where they are case insensitive). commit a61129c48cfc11f1b836f42e178aaf231c1fed82 Author: Armijn Hemel Date: Sat Aug 5 00:33:52 2006 +0000 add coreutils to the default PATH for this scripts, so we know for sure we have tools like rm, mkdir, and so on commit f1947cce9375745b63f7f0512fd1bd4a0f5c1639 Author: Armijn Hemel Date: Sat Aug 5 00:31:04 2006 +0000 prevent doing recursive chroots, by unsetting NIX_ROOT in the scripts. commit 1854f84e830a5282ae1ad1d0c85ed641af6bcf33 Author: Eelco Dolstra Date: Fri Aug 4 17:07:13 2006 +0000 * Fix a few warnings. commit dcff8cdb76b37da8978fecee3398d3b541d11ccb Author: Eelco Dolstra Date: Fri Aug 4 16:01:26 2006 +0000 * Weird issue on Cygwin with the include file order. commit f4a502a09a8f4dd0f4ac393798e66f0df03937d5 Author: Eelco Dolstra Date: Fri Aug 4 11:51:46 2006 +0000 * Use old-school pipe opens; the new style is Perl >= 5.8.0. commit 981eff065b8c5b8833ecb81e29b57944b493be01 Author: Eelco Dolstra Date: Fri Aug 4 11:45:50 2006 +0000 * Remove the dependency on `date', use strftime instead. commit 339e6f0e1d8a8eddcaa58ceb3e7396eca9714087 Author: Eelco Dolstra Date: Thu Aug 3 15:52:09 2006 +0000 * `nix-env -q --xml': show query result in XML format for easier automated processing. commit 0e267e2625dba2c771996bcf537d1ebb6956ba58 Author: Eelco Dolstra Date: Thu Aug 3 14:49:57 2006 +0000 * `nix-instantiate --print-args': produce XML output so that the result can be used more easily by scripts. commit 4750f6c5ed8f74683ebaa013079e24598a753cbe Author: Eelco Dolstra Date: Thu Aug 3 13:21:21 2006 +0000 * Simple class for writing XML files. commit fcb784051f5a2d502951722b09cb714d3b397ff4 Author: Armijn Hemel Date: Thu Aug 3 11:48:09 2006 +0000 urgh...for some weird reason this one-liner was not in svn. PEBKAC! commit a29b64a231468174dcc693979fe40bd482b040b4 Author: Eelco Dolstra Date: Tue Aug 1 13:50:10 2006 +0000 * Better error checking. commit 4fde308ec047df9691bbfb6f6c1b1fd8d56e8404 Author: Armijn Hemel Date: Tue Aug 1 13:15:55 2006 +0000 add a flag --target, so we can override the URL in the MANIFEST file. This is only for local copies (so file:///) commit 601a8eab79bd2822235bcf508574be668a036f18 Author: Eelco Dolstra Date: Tue Aug 1 12:00:37 2006 +0000 * Ugh. Darwin's chmod insists that flags come before the mode specification. commit 6ac237e242260385168046ad95ebc7db2f3538b3 Author: Eelco Dolstra Date: Tue Aug 1 09:43:41 2006 +0000 * Show some progress. commit 4661282fde9f37780877fbeeb34b06b0c221e6bf Author: Eelco Dolstra Date: Fri Jul 28 16:03:28 2006 +0000 * `nix-instantiate ... --arg NAME VALUE': allow arguments to be passed to functions from the command line. * nix-build: started removing backticks. commit c11839d7b24993f9639d59f9fa3420e8ccc22e02 Author: Eelco Dolstra Date: Fri Jul 28 14:01:29 2006 +0000 * `nix-instantiate --print-args': print out the valid values for functions arguments that have a domain. commit ca2238cf818e27ebb663c83a9fe9ae7f58eb830f Author: Eelco Dolstra Date: Wed Jul 26 15:05:15 2006 +0000 * Refactoring: get the selection path stuff out of getDerivations() and put it into a separate function findAlongAttrPath(). commit 2317d8f6712b2d4e249b8b1206f9e0a9c4269fc0 Author: Eelco Dolstra Date: Tue Jul 25 21:21:50 2006 +0000 * `nix-instantiate --print-args' prints out the arguments of a top-level function. commit 0e6dc72a7a4d29b7f1a1458670581a29d573e479 Author: Eelco Dolstra Date: Tue Jul 25 16:40:38 2006 +0000 * Applied rbroek's patch from the branch at https://svn.cs.uu.nl:12443/repos/trace/buildfarm-control/trunk/ext/nix/, with some modifications. This allows `nix-env -qa' to show the attribute path that can be used to unambiguously install a package using `nix-env -i -A'. Example: $ nix-env -f top-level/all-packages.nix -qaA subversion xorg-server subversionWithJava subversion-1.2.3 subversion subversion-1.3.2 subversion14 subversion-1.4.0pre-rc1 xorg.xorgserver xorg-server-1.1.0 commit b11aeb2c4bce28dca0f0b266eff732ea80628aed Author: Eelco Dolstra Date: Tue Jul 25 13:15:23 2006 +0000 * Doh. commit 5744dd548039b9a8666a414dcb66629322e5af21 Author: Eelco Dolstra Date: Tue Jul 25 11:53:22 2006 +0000 * Support the --attr / -A flag in nix-env as well. So now we can do, e.g., $ nix-env -i -A subversion xorg.xorgserver The main advantage over using symbolic names is that using attribute names is unambiguous and much, much faster. commit 7a3a5d1608254565030ae8ceb593605962a2614e Author: Eelco Dolstra Date: Mon Jul 24 16:49:28 2006 +0000 * When there is a domain check, we have to evaluate the argument. Can't be lazy! commit f4c5531d928caadee75d66bba40994f55f839be7 Author: Eelco Dolstra Date: Mon Jul 24 16:35:34 2006 +0000 * New language feature: domain checks, which check whether a function argument has a valid value, i.e., is in a certain domain. E.g., { foo : [true false] , bar : ["a" "b" "c"] }: ... This previously could be done using assertions, but domain checks will allow the buildfarm to automatically extract the configuration space from functions. commit 88acffa20ac45fd13b65a1d9143e0400ae0bde47 Author: Eelco Dolstra Date: Mon Jul 24 16:19:08 2006 +0000 * `touch' might not be in $PATH. commit b545c669a0d6b6ab7b1aa56560001e43fe9c0956 Author: Eelco Dolstra Date: Mon Jul 24 15:50:29 2006 +0000 * Tests for domain checks. commit 57751fdb55ad04d82542165417511d26304cadc2 Author: Eelco Dolstra Date: Mon Jul 24 15:16:03 2006 +0000 * Refactoring to support domain checks. commit 9c3099d3286b7bc8582b1685ba1917db409cac0c Author: Eelco Dolstra Date: Fri Jul 21 13:21:43 2006 +0000 * Purify `make check'. commit 7adaa6d4466063893c9ac6b5b7d71c423be34b69 Author: Eelco Dolstra Date: Fri Jul 21 12:46:54 2006 +0000 * Test for runtime root finding. commit dcded7da4704ae66ebbb4343597868a7eb992aa7 Author: Eelco Dolstra Date: Fri Jul 21 12:28:25 2006 +0000 * Don't try to do DNS lookups. commit a4273156c43db7325d27cb21e460b57a998ee882 Author: Eelco Dolstra Date: Thu Jul 20 13:21:37 2006 +0000 * Use $(libexecdir) to find find-runtime-roots.pl. commit 410760c5ab696779bfd26bbd8026827ec436a201 Author: Eelco Dolstra Date: Thu Jul 20 12:58:51 2006 +0000 * Doh. commit ee2cf45d76a12542fa7c29563cfd9a67524479d8 Author: Eelco Dolstra Date: Thu Jul 20 12:19:55 2006 +0000 * Use debug(). commit eca30e12e1c970e4e82ad8fec45d9e2db26b236d Author: Eelco Dolstra Date: Thu Jul 20 12:18:10 2006 +0000 * svn:ignore. commit c15f544356dfebf6d08887e73fa156d4e70e2bbc Author: Eelco Dolstra Date: Thu Jul 20 12:17:25 2006 +0000 * Call find-runtime-roots.pl from the garbage collector to prevent running applications etc. from being garbage collected. commit ebcccbd3581d34d7fefb975c0255a39a3e39e122 Author: Eelco Dolstra Date: Wed Jul 19 16:49:59 2006 +0000 * Added a tool to find additional roots for the garbage collector, such as open files, current directories, mmaped files, etc. This is inherently unportable, but it's easy to adapt this script to other platforms. Currently we call `lsof' and try to read various bits in /proc/NNN. The goal is to prevent the garbage collector from removing store paths that are no longer reachable from a permanent root but that are still in use (for instance, after the user has done "nix-env -e" on a running program). commit 88e54153dce2cdba9a075d9dbc81ad81e7e73435 Author: Eelco Dolstra Date: Wed Jul 19 15:49:29 2006 +0000 * Add a precise test for hashDerivatioModulo. commit 4f3725b167cc0080c570a814e28c6181ef5c7f52 Author: Eelco Dolstra Date: Wed Jul 19 15:36:15 2006 +0000 * Better error messages (especially wrt types). commit e10b830251af37951109113d88ddf203ae95645c Author: Eelco Dolstra Date: Tue Jul 11 10:29:52 2006 +0000 * Doh! Of couse we cannot memoize across scopes. commit 2b4b0658fa3f959f3b25dc75a3aa0a9814e63962 Author: Eelco Dolstra Date: Mon Jul 10 17:35:00 2006 +0000 * This expression has an undefined variable which isn't detected, so evaluation fails: error: impossible: undefined variable `gcc' commit d51aede4afeb49182879f257b56394b70938028f Author: Eelco Dolstra Date: Thu Jul 6 15:30:37 2006 +0000 * Allow the canonical system name to be specified at runtime in the Nix config file. commit a945fb7905597ff67f285b39004f607f737b14e9 Author: Eelco Dolstra Date: Tue Jun 27 12:17:25 2006 +0000 * `nix-env --upgrade --eq': only upgrade if the old version is equal to the new version. This is actually useful. commit f4a3a280dbd5c723d13cf74d71aab1993d0f0a9e Author: Eelco Dolstra Date: Thu Jun 22 13:01:42 2006 +0000 * Apply the ATerm aliasing patch so that Nix works correctly with gcc 4.1.x. commit dbf6d7e783ff86c60d39f5000e341082d2604e85 Author: Eelco Dolstra Date: Tue Jun 20 17:48:10 2006 +0000 * Concurrent GC on Cygwin. commit cc51f9c539a3822c84a2285efcec11b577727234 Author: Eelco Dolstra Date: Mon Jun 19 16:35:35 2006 +0000 * Oops. commit 5bb3444032ad92b98a4a58051fec1f2b31d2e3da Author: Eelco Dolstra Date: Mon Jun 19 16:24:15 2006 +0000 * _exit() doesn't seem to work right on Cygwin. commit b35735d8b28af206fa0b293c796bf44c62dde678 Author: Eelco Dolstra Date: Mon Jun 19 14:43:13 2006 +0000 * On Windows we cannot delete open (lock) files, so we delete lock files after we've closed them. Since this only succeeds if the lock is no longer opened by any process, the token trick used on Unix is not necessary. commit 0e783e557941f77d5b4bcf2a6c6423ed583991a2 Author: Eelco Dolstra Date: Mon Jun 19 14:37:35 2006 +0000 * Write messages to stderr in a slightly more atomic way. Useful when there are several parallel processes. commit d7f40357e328c54694edd24e5b2687fe5789528e Author: Eelco Dolstra Date: Fri Jun 16 13:27:36 2006 +0000 * Skip this test on Cygwin, too slow (and doesn't test anything Cygwin-specific). commit c937b736227384e6c2f4f477796fc3ce02d1229a Author: Eelco Dolstra Date: Fri Jun 16 10:13:03 2006 +0000 * Show when we're blocked waiting for a lock. commit 588cb0eade0c14acdf4a20dfec5678715cc6542e Author: Eelco Dolstra Date: Thu Jun 15 11:56:49 2006 +0000 * In `nix-env -i|-u|-e', lock the profile to prevent races between concurrent nix-env operations on the same profile. Fixes NIX-7. commit 49de87132f3f1685fcdd4157f89ca817647028b0 Author: Eelco Dolstra Date: Thu Jun 15 09:16:55 2006 +0000 * Removed. commit 48e4a3231b5c3b5b91305b246aec7e7c07fe291d Author: Eelco Dolstra Date: Wed Jun 14 13:31:23 2006 +0000 commit b454977909f31cf560518042f22d930c375caaac Author: Eelco Dolstra Date: Wed Jun 14 11:53:55 2006 +0000 * Fix for a problem with BSD's group ownership semantics when the user is not in the "wheel" group. commit 3a68622dda35d448d1baa61825edda45ca846b97 Author: Eelco Dolstra Date: Wed Jun 14 11:52:22 2006 +0000 * Oops. commit 370af25efff8be8582bb810c9e4d980989668ffb Author: Rob Vermaas Date: Wed Jun 7 15:27:17 2006 +0000 * Fix for a locking bug in Berkeley DB on Cygwin. commit 23960e92df736d3c87db861fcaf2dd7981cfc4ad Author: Eelco Dolstra Date: Thu Jun 1 18:13:33 2006 +0000 * Minor cleanup. commit 2d456fc35a57f3433ce228433dc8c034359cb605 Author: Eelco Dolstra Date: Wed May 31 11:50:14 2006 +0000 * On Cygwin, set the system type to i686-cygwin, and disable dynamic linking. commit bb84984f3ff1fa8fbf3842c1331c4bb660a2714a Author: Eelco Dolstra Date: Wed May 31 10:58:47 2006 +0000 * svn:ignore. commit 50fe85f016d2d9cb6be512918d648f6376932903 Author: Eelco Dolstra Date: Wed May 31 09:51:45 2006 +0000 * For fixed-output derivations, pass the environment variables listed in the attribute variable `impureEnvVars' from the caller to the builder. commit 04cf72287bc27e4eca69d527ce44a88b7fcbebb2 Author: Eelco Dolstra Date: Wed May 31 09:24:54 2006 +0000 * This may be useful in the future. commit 1390ce4142d511b284b354f984d84fdb12ae850b Author: Eelco Dolstra Date: Tue May 30 11:37:21 2006 +0000 * Not all platforms have sys/select.h. commit b1c63dc36230bfe4ac4d128f6647846a995feb40 Author: Eelco Dolstra Date: Tue May 30 11:31:33 2006 +0000 * Don't use badTerm, it gives awful error messages. commit c7d9397fc911997ff10192662bfdaf419167b142 Author: Eelco Dolstra Date: Mon May 29 21:53:58 2006 +0000 * Handle $PATHs with spaces. commit 58b4198ed8134ec246c0d0689ac46667fc389a97 Author: Eelco Dolstra Date: Mon May 29 20:46:51 2006 +0000 * Disable the concurrent garbage collector on Cygwin for now. commit d764409d9714562f74b378f3eea666528aae3130 Author: Eelco Dolstra Date: Wed May 24 13:23:20 2006 +0000 * Some Cygwin fixes. commit b5988004d64d6c533e8bb09732a6f7cd4fb1194f Author: Eelco Dolstra Date: Fri May 12 11:47:45 2006 +0000 * Support for srcdir != builddir (NIX-41). commit 9d72bf8835f3012169aaa88ec608172d5a056b9e Author: Eelco Dolstra Date: Thu May 11 02:19:43 2006 +0000 * 64-bit compatibility fixes (for problems revealed by building on an Athlon 64 running 64-bit SUSE). A patched ATerm library is required to run Nix succesfully. commit e3c07782d124cdd8d0aab2b498225cdca28cad66 Author: Eelco Dolstra Date: Mon May 8 20:00:28 2006 +0000 * Remove old manifests in `nix-channel --update'. commit c54287eafe8435e71634df3957cd5e30b97bb6a6 Author: Eelco Dolstra Date: Mon May 8 15:15:13 2006 +0000 * GCC 2.95 compatibility. commit 8b5aa91aa7da149c0a734bd7a3353658aded9838 Author: Eelco Dolstra Date: Mon May 8 14:00:39 2006 +0000 commit 5cabd47394a5bb3076f3f5b5a98425665cddef23 Author: Eelco Dolstra Date: Mon May 8 12:52:47 2006 +0000 * Allow function argument default values to refer to other arguments of the function. Implements NIX-45. commit 310e605995dc104bee29d330ac135e3e2bb82f97 Author: Eelco Dolstra Date: Mon May 8 10:00:37 2006 +0000 * Show evaluation stats when NIX_SHOW_STATS=1. commit 0832956089516d32371060c98df4f8d0cbff2b0f Author: Eelco Dolstra Date: Thu May 4 12:21:08 2006 +0000 * Use the new ATermMap. commit 9840368cad6088e4221fb323202861c97d70bb37 Author: Eelco Dolstra Date: Thu May 4 09:22:29 2006 +0000 * Iterators. commit 6980544467b42aaefc5b588d8be2f1d7a2badef3 Author: Eelco Dolstra Date: Thu May 4 08:32:30 2006 +0000 * Keep some statistics about memory allocation. commit b803fb95cbce33cf37496e1fc947d9721714de44 Author: Eelco Dolstra Date: Wed May 3 23:17:42 2006 +0000 * Maintain the count field properly. commit db0d865ec4fb646856731000d540d968011f4daf Author: Eelco Dolstra Date: Wed May 3 23:07:38 2006 +0000 * New ATermMap, seems more-or-less finished. commit 052cefe1bdb6be0257ef2f1c1f128b7e635814ed Author: Eelco Dolstra Date: Wed May 3 17:29:48 2006 +0000 * Started hacking on a ATermTable replacement, since ATermTable uses gigantic amounts of memory --- 65536 bytes per table at least --- which makes it unsuitable for representing short-lived substitution tables and attribute sets. commit d300b4383dabb007db08c7165fb327c12dbe8e71 Author: Eelco Dolstra Date: Tue May 2 21:58:46 2006 +0000 * Optimise null-ary term builders. Also declare all term builder functions as pure, which might improve performance a bit. commit 68174bdc7d68746c5471e87bb74909c552e98644 Author: Eelco Dolstra Date: Tue May 2 21:39:02 2006 +0000 * Use a linked list of substitutions. This reduces the amount of copying. commit c791e94aee07ad98ec29df18498ad85241e1e96d Author: Eelco Dolstra Date: Tue May 2 17:51:50 2006 +0000 * Removed a bunch of ATreverses. commit b52e71191094f564d7b7484b89e47e710bb94bdc Author: Eelco Dolstra Date: Tue May 2 17:12:03 2006 +0000 * Huge reduction in memory use (2/3 or so on large nix-env -qas operations): share ATermMaps between DrvInfos. commit 11ae2d1e7af05c3410a368338c7d13a49c2d2ccd Author: Eelco Dolstra Date: Tue May 2 14:07:28 2006 +0000 * Memory reduction: replaced expensive calls to ATmakeApplList by ATmakeApplArray, and got rid of ATreverse in substitute(). commit dc719e6ba57fc877574bd3bc023a25676c555b3c Author: Eelco Dolstra Date: Tue May 2 13:39:55 2006 +0000 * Some preliminaries towards NIX-45. commit ae55e79541ffbce7a051794d6d25e9e8c7b63b2d Author: Eelco Dolstra Date: Tue May 2 11:20:55 2006 +0000 * More tests. commit dca43ef795c0589d47620241823393c739b99498 Author: Eelco Dolstra Date: Tue May 2 11:15:04 2006 +0000 * Tests for NIX-45. commit 7276e194eefc807600e1dcd10566a57e557ed1ad Author: Eelco Dolstra Date: Mon May 1 15:29:46 2006 +0000 * Disallow unescaped $ in string literals. commit 0064599a27ec44880e4ff6fa19f453e610b5ef07 Author: Eelco Dolstra Date: Mon May 1 14:01:47 2006 +0000 * String interpolation. Expressions like "--with-freetype2-library=" + freetype + "/lib" can now be written as "--with-freetype2-library=${freetype}/lib" An arbitrary expression can be enclosed within ${...}, not just identifiers. * Escaping in string literals: \n, \r, \t interpreted as in C, any other character following \ is interpreted as-is. * Newlines are now allowed in string literals. commit 6cecad2be0f7ced82658ec2a86bcf61583487959 Author: Eelco Dolstra Date: Mon May 1 09:56:56 2006 +0000 * Allow string concatenations involving derivations, e.g., configureFlags = "--with-freetype2-library=" + freetype + "/lib"; commit cce31b739c6d3e381824ac6fde3f06ccb02782af Author: Eelco Dolstra Date: Sat Apr 29 11:54:45 2006 +0000 * svn:ignore commit 6fca1b82ae39dd45bdd155c7211dc16629a5e11a Author: Eelco Dolstra Date: Tue Apr 25 16:41:06 2006 +0000 * Change this to LGPL to keep the government happy. commit de8f2d061ca7646521b67fcbde5b474abaf9438b Author: Eelco Dolstra Date: Tue Apr 25 11:52:24 2006 +0000 * Install only the header file and libraries from Berkeley DB. commit e18c93169c35dba6863ffb9fb51c7b775bac9d89 Author: Eelco Dolstra Date: Tue Apr 25 11:33:27 2006 +0000 * Create libexec. commit 0748331b708deec8319a3e0dcb075b4c396b5665 Author: Eelco Dolstra Date: Tue Apr 25 10:57:08 2006 +0000 * Typo. commit 03162f8f477fb7634edbf53ad4e9dfca433dd9d9 Author: Eelco Dolstra Date: Tue Apr 25 10:45:53 2006 +0000 * Unless --with-bzip2 is specified, use a copy of bzip2 in the externals directory. This is in particular useful because though most systems have bzip2/bunzip2, they don't always have libbz2, which we need for bsdiff/bspatch. commit ef2d4a2da9c14c15985bdd27c02d2d30093a3e56 Author: Eelco Dolstra Date: Fri Mar 24 14:02:44 2006 +0000 * Print a more useful stack trace when an error occurs deep in the derivation dependency graph. commit b69e4693287d481ee75f948227a2c508391ef055 Author: Eelco Dolstra Date: Thu Mar 23 16:43:07 2006 +0000 * In `nix-env', look for derivations inside attribute sets that have the `recurseForDerivations' attribute set to `true'. commit 49ce8b57ddc459faef8192be04f69b9e777afc75 Author: Eelco Dolstra Date: Thu Mar 23 16:37:49 2006 +0000 * Hm. commit 20675feeab7501bd9ca78a699509b4de89885ec9 Author: Eelco Dolstra Date: Wed Mar 15 12:58:22 2006 +0000 * Update copyright. commit 05bb644890b2c5b46f1e69072873a276dccaa191 Author: Eelco Dolstra Date: Tue Mar 14 16:35:01 2006 +0000 * Allow the resulting symlink of nix-build to be named, e.g., $ nix-build .../i686-linux.nix -A apacheHttpd -o apache commit fdea084c365083a65eb363973400416107b5e32b Author: Eelco Dolstra Date: Fri Mar 10 22:27:26 2006 +0000 * Allow `make check' to work in directories that have symlink components. commit 37d1b1cafd17a18dc7dbef3b4ba7fb204158d58b Author: Eelco Dolstra Date: Fri Mar 10 16:20:42 2006 +0000 * `nix-env -qa --description' shows human-readable descriptions of packages (provided that they have a `meta.description' attribute). E.g., $ ./src/nix-env/nix-env -qa --description gcc gcc-4.0.2 GNU Compiler Collection, 4.0.x (cross-compiler for sparc-linux) gcc-4.0.2 GNU Compiler Collection, 4.0.x (cross-compiler for mips-linux) gcc-4.0.2 GNU Compiler Collection, 4.0.x (cross-compiler for arm-linux) gcc-4.0.2 GNU Compiler Collection, 4.0.x commit a33fb2d28738376d377ea8473f6cffc39bc784c4 Author: Eelco Dolstra Date: Fri Mar 10 16:14:30 2006 +0000 * Oops. commit 2b3b6c9b3428856b215545efd3abb9b8f42cf8b4 Author: Eelco Dolstra Date: Fri Mar 10 16:14:13 2006 +0000 * In theory, this should reduce the number of ATermMap re-allocations. commit 4ada6db1fc9cee9c0e51fb54af8770dd28243dff Author: Eelco Dolstra Date: Fri Mar 10 10:24:46 2006 +0000 * `nix-env -q' now accepts arguments that allow specific derivations to be queried, e.g., `nix-env -qa firefox'. This does require the argument '*' to be passed if one wants information about all derivations, so the old `nix-env -qa' now is `nix-env -qa "*"'. commit 9811815429f613b4ab64794a3b95144f9aa5b41d Author: Eelco Dolstra Date: Fri Mar 10 09:41:28 2006 +0000 * Write messages to stderr, not stdout. commit 18c321308d2e71db7355a83200c0ef4d00900d0b Author: Eelco Dolstra Date: Thu Mar 9 17:07:25 2006 +0000 * Ugh, printHash() was very inefficient because it used ostringstreams. Around 11% of execution time was spent here (now it's 0.5%). commit b90c00e63fb476d8587ca29f15cbe8008760a584 Author: Eelco Dolstra Date: Thu Mar 9 15:10:01 2006 +0000 * Regression: semantics of the result of getDerivation() changed. commit 922697c8b27570b6c76a472266507b73f6b79f7f Author: Eelco Dolstra Date: Thu Mar 9 15:09:18 2006 +0000 * Big speedup (factor > 2.5) in all nix-env operations that do actual instantiation, e.g. "nix-env -i" and "nix-env -qas" (but not "nix-env -qa"). It turns out that many redundant calls to addToStore(path) were made, which reads and hashes the entire path. For instance, the bash bootstrap binary in Nixpkgs would be read and hashed many times. As a result nix-env would spend around 92% of its time in the function sha256_block (according to callgrind). Some simple memoization fixes this. commit 6dca5c9099b92b6a93071197aa606a31ccd83a37 Author: Eelco Dolstra Date: Wed Mar 8 16:03:58 2006 +0000 * When obtaining derivations from Nix expressions, ignore all expressions that cause an assertion failure (like `assert system == "i686-linux"'). This allows all-packages.nix in Nixpkgs to be used on all platforms, even if some Nix expressions don't work on all platforms. Not sure if this is a good idea; it's a bit hacky. In particular, due to laziness some derivations might appear in `nix-env -qa' but disappear in `nix-env -qas' or `nix-env -i'. Commit 5000! commit 9088dee9e265db8176b61e53ac43a916fdd34a3d Author: Eelco Dolstra Date: Wed Mar 8 14:11:19 2006 +0000 * Some refactoring of the exception handling code so that we can catch Nix expression assertion failures. commit fa72ae1e9cad0dded28b965fe97293bbeeac031e Author: Eelco Dolstra Date: Mon Mar 6 14:40:10 2006 +0000 * GCC 4.1 compatibility. commit c8bfb11b34e4b8d3cfd714c54e7436c80e4d72ef Author: Eelco Dolstra Date: Mon Mar 6 11:21:15 2006 +0000 * `nix-env (-i|-u) --dry-run' now shows exactly which missing paths will be built or substituted. commit 7ba1fd2029c1290d89f0218157e597885926ca80 Author: Eelco Dolstra Date: Mon Mar 6 11:04:39 2006 +0000 * Regularise help text a bit. commit 120f00c04fcc1cf1239e88b605f34da551e0bacf Author: Eelco Dolstra Date: Fri Mar 3 14:25:07 2006 +0000 * More online help. commit 2d54312f876c4810db4c3c0006bace686db4948b Author: Eelco Dolstra Date: Fri Mar 3 14:15:02 2006 +0000 * Rewrote nix-build in Perl, since sh is just too limited (turns out that arrays are a bash extension, so it didn't work on FreeBSD). Also fixes NIX-8 (readlink(1) dependency). commit 78d84f5631eb1d0e4b665dbaacbbb1669ba899f7 Author: Eelco Dolstra Date: Wed Mar 1 18:26:21 2006 +0000 * Tests for fixed-output derivations (and attribute selection, incidentally). commit 2167bf6b72dde2bb574ac72da0fad145504a4d3f Author: Eelco Dolstra Date: Wed Mar 1 18:11:41 2006 +0000 * Tests to prevent a repeat of the parseHash32 debacle. commit 70dee0f8ca9d7236008e161d1d1210b945ec832e Author: Eelco Dolstra Date: Wed Mar 1 18:05:47 2006 +0000 * Flags `--to-base32' and `--to-base16' to convert between hex and base-32 hashes. commit e136532800113902432c451f0a38bf6d77e5801a Author: Eelco Dolstra Date: Wed Mar 1 17:59:08 2006 +0000 * Ouch, parseHash32 was completely broken. All digits >= 4 were parsed as 4. For a moment I worried that printHash32 was broken, and that would have been really, *really* bad ;-) commit 74166f2f44a9d2de6dc7862a99e9c2f2bcc9b54b Author: Eelco Dolstra Date: Wed Mar 1 17:44:28 2006 +0000 * db.hh shouldn't depend on the Berkeley DB headers. commit 1bdceb421fe0082213e012362c1ac6a47ee6e4bb Author: Eelco Dolstra Date: Wed Mar 1 16:52:55 2006 +0000 * Doh! commit d822bf32e470e46a3634638fee3c4b1472d2cd26 Author: Eelco Dolstra Date: Wed Mar 1 16:36:35 2006 +0000 * Close the database before the destructor runs. commit fa95f4be3f4df6ebe4d49ec57a66129f645e36c7 Author: Eelco Dolstra Date: Wed Mar 1 16:26:13 2006 +0000 * More test coverage. commit 80b5c7168436d4fa34952c2d7d8c26d9894afe3e Author: Eelco Dolstra Date: Wed Mar 1 16:03:32 2006 +0000 * Doh! commit e3daee919d0335d2c41fc556ff55d8289ade10d0 Author: Eelco Dolstra Date: Wed Mar 1 15:46:22 2006 +0000 * Test `nix-store -q --binding'. commit ea9c35d3cc2ef65643718e696007ba3569099e1e Author: Eelco Dolstra Date: Wed Mar 1 15:43:37 2006 +0000 * Test `nix-store --add' and `nix-store -q --hash'. commit 30d051ff14d5a0f8912c9ba3c3a6ca97c2b7dbf0 Author: Eelco Dolstra Date: Wed Mar 1 15:40:01 2006 +0000 * New suppressions. commit b6780b9e1079cdb3eec2aedcd7d9e510edfd95f8 Author: Eelco Dolstra Date: Wed Mar 1 14:39:42 2006 +0000 * Uninitialised variable. Fixes the --delete test. commit b602d2dfdf79d5e00595f78701b54339e15bf7d8 Author: Eelco Dolstra Date: Wed Mar 1 14:39:10 2006 +0000 * Wrong delete. Thanks valgrind. commit b90787290df216f511ec296c85390e645ca1e89f Author: Eelco Dolstra Date: Wed Mar 1 14:26:03 2006 +0000 * TDD! Woohoo! commit 089c41a0c2ecf91c55495547a5462d75f36be5f4 Author: Eelco Dolstra Date: Wed Mar 1 14:17:00 2006 +0000 * Oops! commit ca0b23c831e28ef344e71ffd342452700b1b9109 Author: Eelco Dolstra Date: Wed Mar 1 14:00:27 2006 +0000 * Test the nix-store --gc subflags. commit 5cb6c42088347bf7ba513cdd68b20c91035c7db9 Author: Eelco Dolstra Date: Wed Mar 1 13:49:12 2006 +0000 * Test nix-build. This also tests indirect roots. commit 8cd646b6af87dad97d326e5f0d7b1e9ecff17c97 Author: Eelco Dolstra Date: Wed Mar 1 13:33:12 2006 +0000 * Clear the substitutes prior to running the test. commit e48bd8c8b50e48db297e49fb325a94e854d6bdad Author: Eelco Dolstra Date: Wed Mar 1 13:25:08 2006 +0000 * Add a test for nix-log2xml. commit 458820df6cb976e0642c67ca775d8e7095c091f2 Author: Eelco Dolstra Date: Wed Mar 1 13:24:47 2006 +0000 * Generate valid HTML. commit 6b8bb8d74ab500eb6dddecbdf578c9cdf14a748c Author: Eelco Dolstra Date: Wed Mar 1 12:51:39 2006 +0000 * Remove dead code. commit 84c4631221bc65643830173b4affe58b0dc58202 Author: Eelco Dolstra Date: Wed Mar 1 12:51:18 2006 +0000 * Simplification. commit a4c63c6e8e161d55778b797e566d9eca7c47f34f Author: Eelco Dolstra Date: Wed Mar 1 12:15:33 2006 +0000 * Make it easy to run individual tests from the command line. commit 85793fa438847974330123a8d4160283fcfa18f7 Author: Eelco Dolstra Date: Fri Feb 24 17:10:38 2006 +0000 * Remove debug statement. commit e2f16b9cae0f9904daeb94ac0ecee1fd9ae2c9b1 Author: Eelco Dolstra Date: Fri Feb 24 16:05:55 2006 +0000 * A script to remove from a manifest those patches whose base or target no longer applies to any available release. This is a partial fix for NIX-34 (when producing linear patch sequences between releases, the number of patches grows without bound). commit 5168f9bb005aa0d25cb31fdd7aba1bac951b2251 Author: Eelco Dolstra Date: Fri Feb 24 16:02:36 2006 +0000 * Canonicalise manifests a bit by sorting them. commit 9d3bee50ad9e52cd46eefe06a4c6b55794e83a9d Author: Eelco Dolstra Date: Wed Feb 22 15:20:11 2006 +0000 * Aha! commit 17f39049cf13450c86b62a5782f28e678849bc33 Author: Eelco Dolstra Date: Wed Feb 22 15:09:47 2006 +0000 * WTF? commit 43fa1c20e7e98819925b16d60d6b7c9e87c93fca Author: Eelco Dolstra Date: Wed Feb 22 14:35:19 2006 +0000 * Separate the cache reading code. commit 928cce592279615fbe7b29fc0f47bb2506297116 Author: Eelco Dolstra Date: Wed Feb 22 14:13:02 2006 +0000 * Directory for nix.cs.uu.nl manifest / cache maintenance scripts. commit fcec32a2c56589da9224aa62daf94c6492250015 Author: Eelco Dolstra Date: Wed Feb 22 14:10:02 2006 +0000 * Use right directories for NAR files and patches. * Print errors to STDERR. commit f0d6318dd1227dff81b84d62796371904e5c5b5f Author: Eelco Dolstra Date: Wed Feb 22 14:02:44 2006 +0000 * More tests. commit ddb78dfc3d209f96101da242f90e5031918af355 Author: Eelco Dolstra Date: Wed Feb 22 13:55:41 2006 +0000 * Check whether "nix-store -q --graph" generates a valid dot graph. * Test "nix-store -q --tree" as well. commit 46f0cb08692713954a4d452da6d7c07e17eb0cac Author: Eelco Dolstra Date: Fri Feb 17 18:11:45 2006 +0000 * In "nix-env -i", print a warning if there are multiple derivations with the same name *and* version number, and pick the first one (this means that the order in which channels appear in ~/.nix-channels matters). E.g.: $ nix-env ii aterm warning: there are multiple derivations named `aterm-2.4.2'; using the first one installing `aterm-2.4.2' commit 7a3e715980c3fcd84b6d12f54a18a920ebba208d Author: Eelco Dolstra Date: Fri Feb 17 17:47:54 2006 +0000 * Fix for NIX-31: "nix-env -i foo" installing all derivations named foo. Now it will only install the one with the highest version number. commit 58fc420b365b8f8d6faaa332ab3ba4e97ad584e0 Author: Eelco Dolstra Date: Fri Feb 17 17:05:34 2006 +0000 * And another test. commit 4ddd5ff39cddf46acb23eedc9638f9709da0c47d Author: Eelco Dolstra Date: Fri Feb 17 17:03:19 2006 +0000 * Regression test for NIX-31. commit 889ef564fd0aca2814659f28fc7b9dc0191a6656 Author: Eelco Dolstra Date: Fri Feb 17 16:26:28 2006 +0000 * Fix the infamous NIX-17: nix-env -i prints misleading messages ("installing `foo'" followed by "uninstalling `foo'"). commit 345a95afe9e265bc433eea46c32c507ea84a72a4 Author: Eelco Dolstra Date: Thu Feb 16 13:58:10 2006 +0000 * Allow the size of the GC reserved file to be specified in nix.conf through the new `gc-reserved-space' option. commit 651ab439cf5b0c6ab2044257a30b0d94406d57d3 Author: Eelco Dolstra Date: Thu Feb 16 13:19:15 2006 +0000 * A simple hack to fix NIX-18: the garbage collector cannot run when the disk is full (because to delete something from the Nix store, we need a Berkeley DB transaction, which takes up disk space). Under normal operation, we make sure that there exists a file /nix/var/nix/db/reserved of 1 MB. When running the garbage collector, we delete that file before we open the Berkeley DB environment. commit d6f586d0eaa9344a99248cc4dfb7825972f2a174 Author: Eelco Dolstra Date: Mon Feb 13 19:52:43 2006 +0000 * Optional switch "--with-openssl=" to use OpenSSL's implementations of MD5, SHA-1 and SHA-256. The main benefit is that we get assembler-optimised implementations of MD5 and SHA-1 (though not SHA-256 (at least on x86), unfortunately). OpenSSL's SHA-1 implementation on Intel is twice as fast as ours. commit e8475bbd5b0c5505bb0536929e89efc8b0d4da5c Author: Eelco Dolstra Date: Mon Feb 13 18:00:08 2006 +0000 * Use a union. commit 2d2e28d02c18668856b7d55fad40cac4f875fa3e Author: Eelco Dolstra Date: Mon Feb 13 13:09:23 2006 +0000 * Override YYMALLOC and YYFREE so that we can call AT[un]protectMemory on the Bison parse stack. Otherwise, a garbage collect during parsing could lead to a crash. commit 0ca0a4da9f63c8c036d82c2366f4c794bcd327d2 Author: Eelco Dolstra Date: Mon Feb 13 12:48:59 2006 +0000 * Valgrind suppressions for the ATerm library. The ATerm library uses a conservative garbage collector that scans the stack and parts of the heap for pointers to ATerms. This scan can touch uninitialised memory, which is harmless. Use: $ valgrind --suppressions=aterm-gc.supp ... commit da0a6b6499ea89bc9858d32970da8f26c5f3c56b Author: Eelco Dolstra Date: Sun Feb 12 21:00:36 2006 +0000 * Doh. commit 982399bb144ca1c6d21834fd9a6f61b49db1bfce Author: Eelco Dolstra Date: Fri Feb 10 17:37:35 2006 +0000 * Enable the --attr in nix-build as well (and add -A as an alias). Example: $ nix-build ./all-packages.nix -A xlibs.libX11 So finally it's easy to perform a test build of a Nix expression! commit c6120352b3fd25380ff21726982e22b97ee43e0b Author: Eelco Dolstra Date: Fri Feb 10 17:25:59 2006 +0000 * In nix-instantiate, allow us to specify a "path" to the derivation(s) we're interested, e.g., $ nix-instantiate ./all-packages.nix --attr xlibs.libX11 List elements can also be selected: $ nix-instantiate ./build-for-release.nix --attr 0.subversion This allows a non-ambiguous specification of a derivation. Of course, this should also be added to nix-env and nix-build. commit b505f9eaf57c7badeacb176a1946b5f5f145f816 Author: Eelco Dolstra Date: Fri Feb 10 15:29:17 2006 +0000 * Document that nix-instantiate can read from stdin. commit 9e51abc7dc13ece2a561cdd41c0304cffbba67d4 Author: Eelco Dolstra Date: Fri Feb 10 15:28:47 2006 +0000 * Make --parse-only work when *not* reading from stdin. commit f848a457391488544abc6b405d33ab5334eb19d0 Author: Eelco Dolstra Date: Fri Feb 10 15:14:57 2006 +0000 * Cleanup: use the code shared with nix-env. commit 4eb637c799bddfcff7661164f98cd604fe4120f5 Author: Eelco Dolstra Date: Wed Feb 8 16:15:07 2006 +0000 * When querying all derivations, filter out syntactically equal derivations. commit 8688e83194c11f66df2d38dfa9b274d2216773b2 Author: Eelco Dolstra Date: Wed Feb 8 15:22:30 2006 +0000 * When evaluating, automatically call functions with default arguments. commit f8aadf14c3426f7ab2b7a934b602f812bcc5b8ae Author: Eelco Dolstra Date: Wed Feb 8 15:21:57 2006 +0000 * Test-driven development, woohoo! nix-env should work on functions, provided that all arguments have defaults. commit 287d0ef41c347d91c0cd2f74ab4e48df7c125cc8 Author: Eelco Dolstra Date: Wed Feb 8 14:32:33 2006 +0000 * Oops, fix breakage. commit e771e59178f42fd1c6005c8a35f2ecfebf0e4ce4 Author: Eelco Dolstra Date: Wed Feb 8 14:32:06 2006 +0000 * Tests for nix-env, finally! commit 39f50db731bb1924d3c18b153dfe4258208b8812 Author: Eelco Dolstra Date: Wed Feb 8 13:21:16 2006 +0000 * Refactoring: move derivation evaluation to libexpr. commit 4db4b61380d94c2626b7c4ee2e613b6b6223f803 Author: Eelco Dolstra Date: Tue Feb 7 14:47:26 2006 +0000 * Don't install nix.conf (so it won't be overriden when you upgrade an RPM). commit 81de538e46c154267c4fb7e87cf6804aed63f3df Author: Eelco Dolstra Date: Fri Feb 3 14:20:59 2006 +0000 * Use setsid instead of setpgrp in child processes. This not only creates a new process group but also a new session. New sessions have no controlling tty, so child processes like ssh cannot open /dev/tty (which is bad). commit b90daaaf6c1f52fe93f4f845da20b122cfea2936 Author: Eelco Dolstra Date: Thu Feb 2 16:27:31 2006 +0000 * When killing a build hook, kill the entire process group (as intended). This ensures that any ssh child processes to remote machines are also killed, and thus the Nix process on the remote machine also exits. Without this, the remote Nix process will continue until it exists or until its stdout buffer gets full and it locks up. (Partially fixes NIX-35.) commit 6e2eaaec96e96ce593dd1e38d03fcf8d1f62eb55 Author: Eelco Dolstra Date: Wed Feb 1 17:28:13 2006 +0000 * Print a better error message when writing the patched file (e.g., "No space left on device" instead of "Success"). Reported by Karina Olmos. commit d9d6ff9f8eb4269bb697912154ef9d6d96ab1481 Author: Eelco Dolstra Date: Wed Feb 1 16:49:52 2006 +0000 * Doh. commit 8291f6d96845163850a2451fff4a03a292fa71b6 Author: Eelco Dolstra Date: Wed Feb 1 16:48:49 2006 +0000 * bsdiff updated to 4.3. This makes Nix depend on libbz2. commit 9e4ffc43a2a6b67643765efd48198f218fcf0530 Author: Eelco Dolstra Date: Wed Feb 1 16:47:51 2006 +0000 * The "S" bit should be based on the output path, not the derivation path. commit 3eba483692f6c353dd20341b9d3fea144271ba69 Author: Eelco Dolstra Date: Wed Feb 1 14:52:58 2006 +0000 * Use Berkeley DB 4.4.20. commit 151f10dbc758a8bbc15bd941bd10bfdfe4c925a2 Author: Eelco Dolstra Date: Wed Feb 1 12:41:54 2006 +0000 * Add @bindir@. commit 83424eb71b2c9656061b01617230e433a4b27d83 Author: Eelco Dolstra Date: Thu Jan 26 23:18:46 2006 +0000 * Don't force a build of derivations. commit db2275cb9968fc337bfac14805651d6c78c7213a Author: Eelco Dolstra Date: Thu Jan 26 23:18:26 2006 +0000 * Oops, the "I" bit in "nix-env -qas" was broken. Reported by Nicolae Vintila. commit 1029716a8a8934fe1f0502e3da0d65646f45c911 Author: Eelco Dolstra Date: Thu Jan 19 15:35:34 2006 +0000 * Don't show cycles, they're not very useful. commit e4d4969ae929682aea936e035cc24d56949a82ba Author: Eelco Dolstra Date: Thu Jan 12 15:17:51 2006 +0000 * New tools nix-pack-closure and nix-unpack-closure. These provide a useful way to transfer the closure of a store path to another machine. These commands provide functionality previously possible through `nix-push --copy'. However, they are much more convenient in many situations (though possibly less efficient). Example: $ nix-pack-closure /nix/store/hj232g1r...-subversion-1.3.0 > svn.closure (on another machine:) $ nix-unpack-closure < svn.closure Note that Subversion is added to the store, but not installed into a user environment. One should do `nix-env -i /nix/store/hj232g1r...-subversion-1.3.0' for that. Another example: copy the application Azureus to the machine `scratchy' through ssh: $ nix-pack-closure $(which azureus) | ssh scratchy nix-unpack-closure commit 5b527901ae625675f525dd65b82f90bcb2001afd Author: Eelco Dolstra Date: Mon Jan 9 14:52:46 2006 +0000 * dirOf: return "/", not "", for paths in the root directory. Fixes NIX-26. commit 04be39734f6a5fe2e724a0c7b813ea1dd6ed3a29 Author: Eelco Dolstra Date: Sun Jan 8 17:16:03 2006 +0000 * Resolve all symlink components in the location of the temporary build directory (TMPDIR, i.e., /tmp). Fixes NIX-26. commit 0f8d3c871bfad0f83f4469c26aaa37927a525fe0 Author: Eelco Dolstra Date: Sun Dec 25 11:29:12 2005 +0000 * More GCC 2.95 compatibility. commit 52d20ef124bafc51d982b34d127e7d9524d1a409 Author: Eelco Dolstra Date: Sun Dec 25 02:02:29 2005 +0000 * Hack around a GCC 2.95 bug. commit 1440419b45dec876497b982f945bcfff8d0aea4b Author: Eelco Dolstra Date: Sat Dec 24 23:32:59 2005 +0000 * GCC 2.95 compatibility. commit 1d2460ee5da0f026807ac645aebdd8ab811058cd Author: Eelco Dolstra Date: Sat Dec 24 23:22:05 2005 +0000 * Documentation fixes. commit f96d2dea266760e5587356e72d1cadaace5f7d5b Author: Eelco Dolstra Date: Fri Dec 23 21:36:44 2005 +0000 * Added a flag `--ignore-liveness' to `nix-store --delete'. It deletes a path even if it is reachable from a root. However, it won't delete a path that still has referrers (since that would violate store invariants). Don't try this at home. It's a useful hack for recovering from certain situations in a somewhat clean way (e.g., holes in closures due to disk corruption). commit 4b9e7f59ca14c3de7b0cfdaebca98fa2639bbbf9 Author: Eelco Dolstra Date: Fri Dec 23 21:08:42 2005 +0000 * Revived the old "nix-store --delete" operation that deletes the specified paths from the Nix store. However, this operation is safe: it refuses to delete anything that the garbage collector wouldn't delete. commit 3c5619c7e496b0ce7b7bc16cbcf11668cf7a69fb Author: Eelco Dolstra Date: Thu Dec 15 21:11:55 2005 +0000 * Begin release notes. commit 530b27df1e71852580d8b0d474543aeffe65618f Author: Eelco Dolstra Date: Thu Dec 15 21:11:39 2005 +0000 * `nix-store --gc' prints out the number of bytes freed on stdout (even when it is interrupted by a signal). commit 5144f750c471cdb629750e96ddc913fb01fb9eef Author: Eelco Dolstra Date: Thu Dec 15 17:04:02 2005 +0000 * Typo. commit b1eed6b5862644fe8fdb8b7d3897fdcf227abe71 Author: Eelco Dolstra Date: Thu Dec 15 16:53:21 2005 +0000 * Split the database upgrade into multiple transactions to prevent Berkeley DB from running out of locks. commit 11a8dc76d6262c8da601cf640516b9e9669850a2 Author: Eelco Dolstra Date: Thu Dec 15 13:45:10 2005 +0000 * Doh! commit ab5c6bb3a3deef29c6fe0a86017d35bc4f3de506 Author: Eelco Dolstra Date: Tue Dec 13 21:04:48 2005 +0000 * Change `referer' to `referrer' throughout. In particular, the nix-store query options `--referer' and `--referer-closure' have been changed to `--referrer' and `--referrer-closure' (but the old ones are still accepted for compatibility). commit d87549c1c7bb6f85ff0a019b33b315ace0013e6b Author: Eelco Dolstra Date: Mon Dec 12 19:14:38 2005 +0000 * Automatically delete the old referers table. commit 8463f27d8cd09d54648de21c747f895cdb558f83 Author: Eelco Dolstra Date: Mon Dec 12 18:24:42 2005 +0000 * Fix NIX-23: quadratic complexity in maintaining the referers mapping. The referer table is replaced by a referrer table (note spelling fix) that stores each referrer separately. That is, instead of having referer[P] = {Q_1, Q_2, Q_3, ...} we store referer[(P, Q_1)] = "" referer[(P, Q_2)] = "" referer[(P, Q_3)] = "" ... To find the referrers of P, we enumerate over the keys with a value lexicographically greater than P. This requires the referrer table to be stored as a B-Tree rather than a hash table. (The tuples (P, Q) are stored as P + null-byte + Q.) Old Nix databases are upgraded automatically to the new schema. commit 18bbcb1214caf75c0190e610d7eb34e971366c7c Author: Eelco Dolstra Date: Sun Dec 11 19:25:48 2005 +0000 * Add a test to demonstrate the quadratic complexity of referrer (de)registration, in particular garbage collection (NIX-23). commit a33b561a6b2e5cbc805f903817a3a3d5df03b747 Author: Eelco Dolstra Date: Fri Dec 9 22:55:07 2005 +0000 * Use Berkeley DB 4.4's process registry feature to recover from crashed Nix instances, and toss out our own recovery code. commit eb268a7f959ff558fcbb72f2c2c3b3c3df97eb6a Author: Eelco Dolstra Date: Thu Dec 8 22:14:15 2005 +0000 * Apply the patch. commit dfffd9256813701e64685227bdfb75f0a694c70d Author: Eelco Dolstra Date: Thu Dec 8 18:18:20 2005 +0000 * A patch to make the DB_REGISTER feature work when debug info is not on. commit 760264bffe7f233f7c1fd5e9fccb9b3c189afd58 Author: Eelco Dolstra Date: Tue Dec 6 15:00:04 2005 +0000 * Require Berkeley DB 4.4. * Checkpoint after an upgrade. commit dc528128cc5230c9eb7da0abb0a791f94e0e3b56 Author: Eelco Dolstra Date: Thu Nov 17 13:58:23 2005 +0000 * FreeBSD compatibility fix. commit 44409f52c1984542d1e565b55e5b94f29c686c7b Author: Eelco Dolstra Date: Thu Nov 17 11:58:22 2005 +0000 * "Fix" the test, since we cannot feasibly support the intended semantics. commit b7f008fc353ea05c423fb571047144052ce691c3 Author: Eelco Dolstra Date: Wed Nov 16 08:27:06 2005 +0000 * Did something useful while waiting at IAD: reference scanning is now much faster. commit 9311ab76a523de516b6bc98afda9e4b790225514 Author: Eelco Dolstra Date: Fri Nov 4 15:34:09 2005 +0000 * Install signal handlers for SIGTERM and SIGHUP. This ensures that Nix is properly shut down when it receives those signals. In particular this ensures that killing the garbage collector doesn't cause a subsequent database recovery. commit 5bf939885a8bfca9b66a2440bf52330c5fde6477 Author: Eelco Dolstra Date: Fri Nov 4 15:17:05 2005 +0000 * Memoise checkVarDefs since internally produced terms (i.e., not the result of parsing) can have very heavy sharing, causing exponential complexity if we naively recurse into them. ATerms are graphs, not trees! commit 1f285cf5563047f236213c8eadc91324b69af42b Author: Eelco Dolstra Date: Fri Nov 4 14:50:33 2005 +0000 * Scoping bug in `with'. commit 221c79013f105612222cd7df3415bf63abcc7412 Author: Eelco Dolstra Date: Sat Oct 29 18:17:45 2005 +0000 * Turn off build hooks in nix-push because of an impurity (NIX-21). commit f0856fd905ea727e88f3fc14d3c717679ce8359b Author: Rob Vermaas Date: Sat Oct 29 15:44:02 2005 +0000 * Repair the referers table from the references table. commit 92d599c6a7e7d197fa41167967860628b0f51e60 Author: Eelco Dolstra Date: Thu Oct 20 16:58:34 2005 +0000 * Prevent uids from being used for more than one build simultaneously. We do this using exclusive locks on uid files in /nix/var/nix/userpool, e.g., /nix/var/nix/userpool/123 for uid 123. commit e932c40f8e1fb6aa6edb155fbca1c1273798a20e Author: Eelco Dolstra Date: Wed Oct 19 14:27:44 2005 +0000 * Oops. Fixed-output derivations were broken. commit 1b43fbd8e4c97dfed5f0679feccdb7ff576f6bbe Author: Eelco Dolstra Date: Tue Oct 18 14:09:43 2005 +0000 * Oops, that should be Berkeley DB 4.3. Reported by Gerco Ballintijn. commit 13b089c890bac229e7c3accfd9299f3fdac95e27 Author: Eelco Dolstra Date: Mon Oct 17 17:43:21 2005 +0000 * Also kill all processes of the build user after the build. This is critical to prevent certain kinds of 0wnage. commit f1b3a418fa86e3204c47d4b33873b57a19e9f47c Author: Eelco Dolstra Date: Mon Oct 17 17:35:37 2005 +0000 * Before starting a build under some uid, kill all current processes running under that uid. commit 439823ae803444052442ad6ceb7191ba22cbc4cf Author: Eelco Dolstra Date: Mon Oct 17 16:59:25 2005 +0000 * Check that the build result is owned by the build user, and that nobody else has write permission to the build result. This catches most hack attempts. commit 7ef574e5d0568a27a3f30b68af6d0a744aff90ff Author: Eelco Dolstra Date: Mon Oct 17 16:52:29 2005 +0000 * Don't use FIFOs to make Nix create the output path on behalf of the builder. Instead, require that the Nix store has sticky permission (S_ISVTX); everyone can created files in the Nix store, but they cannot delete, rename or modify files created by others. commit 32282abceaebbe574fa83c074aa8dbff19f937bb Author: Eelco Dolstra Date: Mon Oct 17 15:33:24 2005 +0000 * Beginning of secure multi-user Nix stores. If Nix is started as root (or setuid root), then builds will be performed under one of the users listed in the `build-users' configuration variables. This is to make it impossible to influence build results externally, allowing locally built derivations to be shared safely between users (see ASE-2005 paper). To do: only one builder should be active per build user. commit 15ff877438a57936d620622cee8fb98cea607d08 Author: Armijn Hemel Date: Tue Oct 11 17:30:57 2005 +0000 add @coreutils@ to correctly use coreutils to create a profile. This is needed for NixOS, where we might not know our PATH in advance. commit 0f133ae8d280c33db21d0aab7269c647de016b23 Author: Eelco Dolstra Date: Tue Oct 11 12:41:12 2005 +0000 * Use ATerm 2.4.2. commit dfbf520ec2748b17638fdc5a911f7b091f1b74a6 Author: Eelco Dolstra Date: Thu Oct 6 15:51:59 2005 +0000 * Swap the system and version comparion columns. commit 62412c5874583364a95eece820744bed53d155cf Author: Eelco Dolstra Date: Thu Oct 6 15:51:43 2005 +0000 * Document `nix-env --compare-versions'. commit cec2be64f36dce184986cbe69adf80a3fac6985a Author: Eelco Dolstra Date: Thu Oct 6 15:01:46 2005 +0000 * Only colorise if we are attached to a terminal. commit b87b9c0d1fcbce045f05379d0efe9ae14d0f87e6 Author: Eelco Dolstra Date: Thu Oct 6 14:44:54 2005 +0000 * New query option: `--compare-versions' or `-c' to compare installed versions to available versions, or vice versa. For example, the following compares installed versions to available versions: $ nix-env -qc autoconf-2.59 = 2.59 automake-1.9.4 < 1.9.6 f-spot-0.0.10 - ? firefox-1.0.4 < 1.0.7 ... I.e., there are newer versions available (in the current default Nix expression) for Automake and Firefox, but not for Autoconf, and F-Spot is missing altogether. Conversely, the available versions can be compared to the installed versions: $ nix-env -qac autoconf-2.59 = 2.59 automake-1.9.6 > 1.9.4 bash-3.0 - ? firefox-1.0.7 > 1.0.4 ... Note that bash is available but no version of it is installed. If multiple versions are available for comparison, then the highest is used. E.g., if Subversion 1.2.0 is installed, and Subversion 1.1.4 and 1.2.3 are available, then `nix-env -qc' will print `< 1.2.3', not `> 1.1.4'. If higher versions are available, the version column is printed in red (using ANSI escape codes). commit 0e0041b2b674e94ae7846474c536ad49239f9e36 Author: Eelco Dolstra Date: Wed Oct 5 13:01:45 2005 +0000 * Update NEWS in the root directory properly. commit 0e38578433f5626a33647d8d1332affe1b10b94c Author: Eelco Dolstra Date: Wed Oct 5 09:42:13 2005 +0000 * log2xml -> nix-log2xml. commit d47e03fccd1807edb6199cbe0736872d0db3b017 Author: Eelco Dolstra Date: Wed Oct 5 09:37:58 2005 +0000 * Install the XSL stylesheets for log to html conversion. commit ed4de220d29414be504a9f73bf86e0cef2e8dfba Author: Eelco Dolstra Date: Wed Sep 28 09:00:07 2005 +0000 * Use "source" instead of ".". commit ebfe57166dcf14b0033b4f3d3be3bb1289a19c07 Author: Eelco Dolstra Date: Thu Sep 22 17:23:43 2005 +0000 * Lets not go wild with templates. commit 4578a490ce5a5a6325b4ff2b8f44468464de2d94 Author: Eelco Dolstra Date: Thu Sep 22 15:43:22 2005 +0000 * Parse multi-valued options. commit fbedf6056eb2acb5049b0372350b2c93b8185ab7 Author: Eelco Dolstra Date: Thu Sep 22 12:23:22 2005 +0000 * Merge release notes. commit 607a2f01e6e171ab31c31aef3220dc69736309c7 Author: Eelco Dolstra Date: Wed Sep 21 17:14:52 2005 +0000 * Remove other uses of IPC::Open2. commit 95304172a581a1052a3b6bcda2ef1a8531f88949 Author: Eelco Dolstra Date: Wed Sep 21 17:06:06 2005 +0000 * Don't use IPC::Open2, it has a subtle race bug on Mac OS X 10.4. If the parent runs before the child, it closes some pipe file descriptors which causes the child to fail due to a bad file descriptor. So we just use the normal open() function instead. This fixes NIX-14 (intermittent nix-pull failures). commit a864aca44cf2eb0b6b39f5e06ac4112250a05358 Author: Eelco Dolstra Date: Wed Sep 21 17:02:48 2005 +0000 * This doesn't parse for now. commit 8d06842a761bab72a2886420c6c47f9daedf30e3 Author: Eelco Dolstra Date: Wed Sep 21 12:19:39 2005 +0000 * Configuration options for trusted local builds. commit 89cd0f57b174ec4dc7e0a4e6015ed401272d9aad Author: Eelco Dolstra Date: Wed Sep 21 11:12:43 2005 +0000 * Use -all_load on Mac OS X. commit ef9e2c8e733c4cd4f98ebc704527a54588f4a3ca Author: Eelco Dolstra Date: Tue Sep 20 16:14:00 2005 +0000 * Typo. commit 25d217684b06b368923d8f683c9b561cdfded255 Author: Eelco Dolstra Date: Sun Sep 18 20:27:02 2005 +0000 * Use a statically linked ATerm library and build it at -O1, since higher optimisation levels cause statically linked libraries to barf. commit f4fe3bd5b1b92007f2023f841a468c64592b6fd0 Author: Eelco Dolstra Date: Fri Sep 16 13:47:03 2005 +0000 * Bump the version number to 0.10. commit db1a4227a3303d6bda5ea0f28716ca9141a5b25e Author: Eelco Dolstra Date: Fri Sep 16 11:28:29 2005 +0000 * Updated release notes. commit c28b8eb6996ee1fa6cf0755dcb745b7382650011 Author: Eelco Dolstra Date: Fri Sep 16 10:35:48 2005 +0000 * svn:ignores. * Add missing file to dist. commit 6f044ab39ceec0a53ccc6995d0c0ec43603ba9b9 Author: Eelco Dolstra Date: Fri Sep 16 09:05:54 2005 +0000 * svn:ignore. commit d34fa9a6cc62f8a98a64a269843f0480ceaed8b2 Author: Eelco Dolstra Date: Fri Sep 16 09:05:18 2005 +0000 * Remove dead file. commit 846b53bde42614e30bbb260d4ba97140eb503f49 Author: Eelco Dolstra Date: Fri Sep 16 09:03:24 2005 +0000 * Set the current directory to something well-defined. Might help in setuid installations. commit 5c0770ac847e3eb0ed004b75a52e2a94463b550f Author: Eelco Dolstra Date: Fri Sep 16 08:47:34 2005 +0000 * Include the release notes in the manual. commit 1b62c2eba3f735c8e31200446735f53568a12ff3 Author: Eelco Dolstra Date: Thu Sep 15 20:29:08 2005 +0000 * Force release notes in ASCII, not UTF-8. commit d1d027199672f514253cbd7ddef1903fdf2c3710 Author: Eelco Dolstra Date: Thu Sep 15 15:21:57 2005 +0000 * Check for w3m. commit 7f384d9c1b4699af2e2ea71c644d6e9bd72be581 Author: Eelco Dolstra Date: Thu Sep 15 15:21:35 2005 +0000 * Use a proper temporary directory. commit 896c0b92f35c61079050beec483587f10fd79ad5 Author: Eelco Dolstra Date: Thu Sep 15 09:18:21 2005 +0000 * This is not a GNU project :-P commit 5818e8eeaf91789d997cdbc1b62b4f9888354215 Author: Eelco Dolstra Date: Wed Sep 14 18:51:02 2005 +0000 * Remove dead code. commit 025086edeaa6fc39ee8b5bc6fcad3cc64c2fd0c2 Author: Eelco Dolstra Date: Wed Sep 14 18:50:45 2005 +0000 * Release notes in Docbook; ASCII release notes (i.e., the `NEWS' file) is now generated from that using `w3m' and some XSL hackery. commit ed1db42915dc13cff9b940ae2b12ff9e38b28961 Author: Eelco Dolstra Date: Wed Sep 14 11:41:59 2005 +0000 * List concatenation must be right-associative for efficiency. commit deb75bb414c6c7a6d1209efd86738fdd147db13d Author: Eelco Dolstra Date: Tue Sep 13 15:54:36 2005 +0000 * Remove debugging code. commit 116e939d5731f89821a6777fb2b458508fd85e29 Author: Eelco Dolstra Date: Tue Sep 13 14:07:22 2005 +0000 * More debugging. commit 55b84357a1859f5606c655ca52b44591c986cb7f Author: Eelco Dolstra Date: Tue Sep 13 13:17:14 2005 +0000 * Debugging. commit cf2bb91ec8abd866ff69cb1d20b3549381bd4577 Author: Eelco Dolstra Date: Tue Sep 13 13:17:01 2005 +0000 * Missing #include. commit 699073c337d022aa32eac6e840035dbd324d5120 Author: Eelco Dolstra Date: Tue Sep 13 10:57:24 2005 +0000 * Release notes. commit cb44aa03b85c3622b3ffe5879e73f46ce78ffba0 Author: Eelco Dolstra Date: Thu Sep 1 20:48:18 2005 +0000 * Use aterm 2.4. commit 2bcd65ecf6a8505ade08aa39efe41a0361eaf84a Author: Eelco Dolstra Date: Thu Sep 1 18:14:04 2005 +0000 * `nix-env -e' corrupts memory due to incorrect use of iterators. Reported by Rob Vermaas. commit e1a6fb787059848c815a8154da23b7da794c6231 Author: Eelco Dolstra Date: Sun Aug 14 14:00:39 2005 +0000 * `dependencyClosure' now allows a search path, e.g., dependencyClosure { ... searchPath = [ ../foo ../bar ]; ... } * Primop `dirOf' to return the directory part of a path (e.g., dirOf /a/b/c == /a/b). * Primop `relativise' (according to Webster that's a real word!) that given paths A and B returns a string representing path B relative path to A; e.g., relativise /a/b/c a/b/x/y => "../x/y". commit 08c53923dba9c7fe6c2676be862744dc1f90f660 Author: Eelco Dolstra Date: Sun Aug 14 12:38:47 2005 +0000 * A primitive operation `dependencyClosure' to do automatic dependency determination (e.g., finding the header files dependencies of a C file) in Nix low-level builds automatically. For instance, in the function `compileC' in make/lib/default.nix, we find the header file dependencies of C file `main' as follows: localIncludes = dependencyClosure { scanner = file: import (findIncludes { inherit file; }); startSet = [main]; }; The function works by "growing" the set of dependencies, starting with the set `startSet', and calling the function `scanner' for each file to get its dependencies (which should yield a list of strings representing relative paths). For instance, when `scanner' is called on a file `foo.c' that includes the line #include "../bar/fnord.h" then `scanner' should yield ["../bar/fnord.h"]. This list of dependencies is absolutised relative to the including file and added to the set of dependencies. The process continues until no more dependencies are found (hence its a closure). `dependencyClosure' yields a list that contains in alternation a dependency, and its relative path to the directory of the start file, e.g., [ /bla/bla/foo.c "foo.c" /bla/bar/fnord.h "../bar/fnord.h" ] These relative paths are necessary for the builder that compiles foo.c to reconstruct the relative directory structure expected by foo.c. The advantage of `dependencyClosure' over the old approach (using the impure `__currentTime') is that it's completely pure, and more efficient because it only rescans for dependencies (i.e., by building the derivations yielded by `scanner') if sources have actually changed. The old approach rescanned every time. commit 714b7256cd5a6783813c3d3a7468f36ba637f567 Author: Eelco Dolstra Date: Sun Aug 14 10:19:55 2005 +0000 * Cleanup; sync with thesis. commit 039936567539c1d6d7a3b824b94726b3fed3343b Author: Eelco Dolstra Date: Sun Aug 14 10:09:56 2005 +0000 * nix-hash: option `--truncate' to truncate the hash to 160 bits. Hmm, kind of ad hoc ;-) commit 2fd22c63600a3c91d25316b566fc00aa2415bfee Author: Eelco Dolstra Date: Mon Aug 1 13:39:56 2005 +0000 * Add .libs to svn:ignore. Commit 3500 ;-) commit c680f835c9bf3e357fbe6c655b721da68946c90a Author: Eelco Dolstra Date: Mon Aug 1 13:39:19 2005 +0000 * Escape ASCII characters < 32 to Unicode FFFD (REPLACEMENT CHARACTER) so that we don't produce un-wellformed XML. commit f450c8ea2f0917f3a8df77d8c849eed713f96cbd Author: Eelco Dolstra Date: Mon Aug 1 13:24:04 2005 +0000 * Oops. XSL stylesheet to mark errors. commit 800a6ff845ff951ff54a43fd4098b2e505f6eb02 Author: Eelco Dolstra Date: Mon Aug 1 13:23:43 2005 +0000 * Mark error lines in red, and expand subtrees containing errors automatically. commit 78c72bf10eee4db5f2eb3f7caba8f46e5be51a0e Author: Eelco Dolstra Date: Mon Aug 1 07:30:35 2005 +0000 * channels -> channels-v3, catamaran -> nix.cs.uu.nl. commit 991a130b1e71b3b849b3640264f8834d6e13da22 Author: Eelco Dolstra Date: Mon Jul 25 15:05:34 2005 +0000 * Added a list concatenation operator: [1 2 3] ++ [4 5 6] => [1 2 3 4 5 6] commit e6899794ae9ce3924b818721d5caff463bccd60c Author: Eelco Dolstra Date: Mon Jul 25 10:10:24 2005 +0000 * Add $prefix/lib to the RPM. commit 33efb52e022a815d88f79e31edd5209837cbee3c Author: Eelco Dolstra Date: Mon Jul 25 07:25:18 2005 +0000 * Hack to get around the libtool wrapper script around nix-store not working when PATH is unset. commit 3fae65d4ccea78eeb0aef5acb4b613a0547a4c6d Author: Eelco Dolstra Date: Fri Jul 22 20:37:39 2005 +0000 * Adhockery. commit 4c20a0829304631cf7282937bd6a0789701f40a4 Author: Eelco Dolstra Date: Fri Jul 22 14:52:45 2005 +0000 * Build dynamic libraries. commit 1a67154d416d3408ac35ddb5a197d1b76f57aab8 Author: Eelco Dolstra Date: Tue Jul 19 12:00:38 2005 +0000 * Release notes. commit 0f827cc6076ae3c395537a0c9bd806b0d42947c2 Author: Eelco Dolstra Date: Tue Jul 19 11:48:05 2005 +0000 * Prevent repeated wrapping of closed terms (closed(closed(closed(...)))) since this reduces performance by producing bigger terms and killing caching (which incidentally also prevents useful infinite recursion detection). commit 2135e7c0417b366b4161d01ebf794d25e96b61ba Author: Eelco Dolstra Date: Sat Jul 16 23:19:20 2005 +0000 * Wat cleanups. commit 6f82a78de7ac02ec5665f17248c4fe98bd4f5847 Author: Eelco Dolstra Date: Sat Jul 16 21:38:15 2005 +0000 * Define paths using regexps, as is done in the Flex definition. commit 6f91f02f757f069b939b09eed51ff95de850b2c9 Author: Eelco Dolstra Date: Sat Jul 16 20:43:58 2005 +0000 * Make the rejects a bit more compact. * Add lexical restrictions for keywords. commit 9590009a74a99100f6718f108098c066e4a0204f Author: Eelco Dolstra Date: Sat Jul 16 15:41:27 2005 +0000 * Fix ambiguity. commit f797cb5855d149c679525f55b1558a5dcc27d996 Author: Eelco Dolstra Date: Sat Jul 16 14:07:35 2005 +0000 * Revive and update the SDF grammar for Nix expressions. commit a5ceb5bc0b2d7fd796cb49e29d45bf568dc0df2f Author: Eelco Dolstra Date: Wed Jul 13 17:39:10 2005 +0000 * nix-build: default to `./default.nix' if no paths are specified. So when using Nix as a build tool, you can just say `nix-build' and it will build the top-level derivation defined in `default.nix'. commit d4879b4dfe05708eb174129141299fb343ceb946 Author: Eelco Dolstra Date: Tue Jul 12 16:08:10 2005 +0000 * Add curl to the RPM dependencies. Should fix NIX-11. commit 22d3587f3b850e8fc34add4d8e62911c6598ad78 Author: Eelco Dolstra Date: Tue Jul 12 16:06:25 2005 +0000 * In nix-instantiate, at top-level, call functions that have arguments with default values automatically. I.e., e -> e {}. This feature makes convenience expressions such as pkgs/system/i686-linux.nix in Nixpkgs obsolete, since we can just do $ nix-instantiate ./pkgs/system/all-packages.nix since all-packages.nix takes a single argument (system) that has a default value (__thisSystem). commit 928a7c06dc830455c246e1ccb8fd980c882b1637 Author: Eelco Dolstra Date: Sat Jun 18 14:20:24 2005 +0000 * Don't create patches for archives >= 150 MB because bsdiff can't handle it. It crashed on the 234 MB tetex archive. Probably we will never be able to handle archives of that size on 32-bit machines (because bsdiff does everything in memory requiring max(17*n,9*n+m)+O(1) bytes, so the address space simply isn't there). commit 040140dd1c3c11e3aa1ca486c3f3596cbe99c008 Author: Eelco Dolstra Date: Wed May 18 17:19:21 2005 +0000 * Added a primop `removeAttrs' to remove attributes from a set, e.g., `removeAttrs attrs ["x", "y"]' returns the set `attrs' with the attributes named `x' and `y' removed. It is not an error for the named attributes to be missing from the input set. commit 109cde670629a0f022de1d875b55bb2f5243b271 Author: Eelco Dolstra Date: Tue May 10 14:56:10 2005 +0000 * Ignore (with a warning) invalid garbage collector roots. commit c09e47c68f6d32d78df482929295ac0acaf6b387 Author: Eelco Dolstra Date: Tue May 10 14:43:17 2005 +0000 * Some svn:ignores. commit 8be1db899ec3b2e6270da06421e2c055f874c3b8 Author: Eelco Dolstra Date: Tue May 10 14:24:48 2005 +0000 * Another typo. commit cbc8d083acce04a1be6bce23f97956c4c87bbcda Author: Eelco Dolstra Date: Tue May 10 14:22:36 2005 +0000 * Make unpacking of patch sequences much faster by not doing redundant unpacking and repacking of intermediate paths. commit 456f3251d2af6e7f4e21f317e217c035d9d6f967 Author: Eelco Dolstra Date: Tue May 10 14:21:46 2005 +0000 * Typo. commit 9ec7e58aa44d413df071a07aae45e4c32b331274 Author: Eelco Dolstra Date: Mon May 9 17:55:35 2005 +0000 * Handle store path arguments in `nix-env -i' correctly again. commit bfe4875a5e1058462345cd791061a332e510e033 Author: Eelco Dolstra Date: Mon May 9 15:30:13 2005 +0000 * Use Berkeley DB 4.3.38. commit 8f57634c1457ced226942024c31e8c3759b1655b Author: Eelco Dolstra Date: Mon May 9 15:25:47 2005 +0000 * Automatically upgrade the Berkeley DB environment if necessary. commit 88dea78cdfbbf584d8d1de51a7660654de464530 Author: Eelco Dolstra Date: Mon May 9 09:58:00 2005 +0000 * Crazy: don't use real hashes of real components in examples, since they cause Nix builds to have unnecessary retained dependences (e.g., on Subversion). commit edd145d2fb2960fab414bfe2c4a1221b976815ea Author: Eelco Dolstra Date: Sun May 8 10:32:09 2005 +0000 * Lazily compute the derivation and output paths of derivations. This makes most query and installation operations much faster (e.g., `nix-env -qa' on the current Nixpkgs is about 10 times faster). commit 426593162ee4b22443dfca428083047ca1e39ac7 Author: Eelco Dolstra Date: Sun May 8 10:28:19 2005 +0000 * ATermMap needs an assignment operator, otherwise we are screwed. commit 77557a6f06500e0a464f54c7b4b4f5162d0359bc Author: Eelco Dolstra Date: Sat May 7 21:48:49 2005 +0000 Commit 3000! * Make the `derivation' primitive much more lazy. The expression `derivation attrs' now evaluates to (essentially) attrs // { type = "derivation"; outPath = derivation! attrs; drvPath = derivation! attrs; } where `derivation!' is a primop that does the actual derivation instantiation (i.e., it does what `derivation' used to do). The advantage is that it allows commands such as `nix-env -qa' and `nix-env -i' to be much faster since they no longer need to instantiate all derivations, just the `name' attribute. (However, `nix-env' doesn't yet take advantage of this since it still always evaluates the `outPath' and `drvPath' attributes). Also, this allows derivations to cyclically reference each other, for example, webServer = derivation { ... hostName = "svn.cs.uu.nl"; services = [svnService]; }; svnService = derivation { ... hostName = webServer.hostName; }; Previously, this would yield a black hole (infinite recursion). commit 6057b51835596ed282a2ad11f6f6fb8bdec13f7f Author: Eelco Dolstra Date: Sat May 7 21:33:31 2005 +0000 * Don't try to register GC roots in read-only mode. commit 6c88d67780c1f009f6ffce46d95f5195c82790f6 Author: Eelco Dolstra Date: Sat May 7 15:45:38 2005 +0000 * Build .tar.bz2 files in `make dist'. commit d8cda7c3dc8e0fa38694ccdd8b93786ffad72deb Author: Eelco Dolstra Date: Fri May 6 14:43:14 2005 +0000 * Mac OS X (and POSIX) doesn't have readlink. commit 52a2f41320d1fe35ceccaef35db9fd661f8bffb6 Author: Eelco Dolstra Date: Wed May 4 16:33:20 2005 +0000 * Include some required header files. commit 26fd28432d61a88dcef5f3f79657c2caa9461a78 Author: Eelco Dolstra Date: Wed May 4 16:32:54 2005 +0000 * FreeBSD 4.x doesn't have stdint.h, use inttypes.h instead (which is also part of ISO C). commit 5dea0622d1d673bf60f47781c33f343ce9979a7f Author: Eelco Dolstra Date: Wed May 4 16:31:49 2005 +0000 * Idem (constness fix). * `compare' in GCC 2.95 is broken. commit 4a266e35d4c756af6163a314585e55ecb65a4c0c Author: Eelco Dolstra Date: Wed May 4 16:31:24 2005 +0000 * GCC 2.95 compatibility fix in constness; strangely, I think this should not have worked at all. commit d7b3cdbd9142ed702a98ebb6a3f6759410d27773 Author: Eelco Dolstra Date: Wed May 4 16:30:35 2005 +0000 * GCC 2.95 compatibility. Prevents internal compiler error in member template friends. commit ae6d9033a1c6b0b863b94c239c35a2df1a58948a Author: Eelco Dolstra Date: Wed May 4 16:29:44 2005 +0000 * The eof() state isn't guaranteed to be set non-lazily. GCC 2.95 compatibility fix. commit d8a31da1ea418de9c1fb7968b95d74d700a7a54f Author: Eelco Dolstra Date: Wed May 4 16:28:39 2005 +0000 * Use `$(MAKE)' instead of `make' for systems where `make' isn't GNU make (such as FreeBSD). commit 36fb29f8f0317144a0074d7b6689912a4dc40325 Author: Eelco Dolstra Date: Mon May 2 15:25:28 2005 +0000 * Merge remaining stuff from the nix-make branch. * Add support for the creation of shared libraries to `compileC', `link', and `makeLibrary'. * Enable the ATerm library to be made into a shared library. commit 02f2da01426b338c75051397dcbdcb0c75913670 Author: Eelco Dolstra Date: Mon May 2 14:44:58 2005 +0000 * Merging from nix-make branch: - Add __currentTime primitive (dangerous!). - Allow imports of derivations. commit 6842bc9ac4fda9e4ef6b7e71d23b5050357bc1cc Author: Eelco Dolstra Date: Sun May 1 09:36:28 2005 +0000 * Be quiet when untarring a channel file. commit f913283570aabb2e968a4f6bd06f74c03a5d772c Author: Eelco Dolstra Date: Wed Apr 13 09:20:27 2005 +0000 * Remove redundant message. commit 9f3601a36cbc4a3c322f48c5ec3487df441105bc Author: Eelco Dolstra Date: Tue Apr 12 10:51:38 2005 +0000 * Argh! The patch downloader was broken due to the renaming of the `--isvalid' flag in nix-store. commit f3660b1c8cba8e701689c82fc3fcaf3a3b8283da Author: Eelco Dolstra Date: Tue Apr 12 10:51:00 2005 +0000 * Garbage collector fix: allow deletion of paths that have invalid (but substitutable) referers. commit d5219a351af4429ce0ca339940b7ae81717df4a6 Author: Eelco Dolstra Date: Tue Apr 12 10:07:02 2005 +0000 * Damn. Disable the USE heuristic for now, since the deriver in the database isn't always in the manifest (so the reference graph cannot be reconstructed fully). commit 1d86790910c204f074626916e8d17508d8d633be Author: Eelco Dolstra Date: Mon Apr 11 13:04:54 2005 +0000 * Bump the version number to 0.9. commit bc5e26dcda9e264bf8d873e30a3ad530003a0d7b Author: Eelco Dolstra Date: Mon Apr 11 11:34:49 2005 +0000 * Mark date. commit cab7816b56f75dab579c75f8178e7dd20773b1a2 Author: Eelco Dolstra Date: Mon Apr 11 08:07:41 2005 +0000 * Slightly nicer message. commit 82d771f6e66e3f8a7101574d9c606553b490fe71 Author: Eelco Dolstra Date: Sun Apr 10 20:54:21 2005 +0000 * Manual updates. commit c9c58dba55fc9e46375bb67fdc9e2b55ef3805ff Author: Eelco Dolstra Date: Sun Apr 10 17:38:19 2005 +0000 * Primop `__currentSystem' to return the current platform identifier. commit b4b51c9f933055e416505e54e446cc27f5f27f56 Author: Eelco Dolstra Date: Sat Apr 9 19:31:12 2005 +0000 * NEWS. commit fb45b0f5482546b98c984fb9fa753332ba84f72d Author: Eelco Dolstra Date: Sat Apr 9 17:16:00 2005 +0000 * Document nix-channel. commit c702dfca3f5a437866faf190ce7b0869fd1058cb Author: Eelco Dolstra Date: Fri Apr 8 13:48:41 2005 +0000 * nix-store: `--substitute' -> `--register-substitutes'. commit 8b70f138e02d62214715f144b133bf1b981911df Author: Eelco Dolstra Date: Fri Apr 8 13:00:38 2005 +0000 * Lots of manual updates, in particular the new `nix-store --query' options were documented, as well as the Nix configuration file. commit 4271385a73d5e073ddfa7e4a75ab0ae5bef50439 Author: Eelco Dolstra Date: Fri Apr 8 12:57:16 2005 +0000 * Make `nix-store --query --tree' work on non-derivations (i.e., on any store path). commit 90905634edbbf55447f2eebd84524e556b3f0750 Author: Eelco Dolstra Date: Fri Apr 8 09:28:50 2005 +0000 * Doh. commit b9d8ecbc6a76779d0c63729a21628965cafcc4cc Author: Eelco Dolstra Date: Thu Apr 7 15:51:27 2005 +0000 * More doc updates. commit 7d876f8fa7b6c3ce120a66b59f69b70ae526538b Author: Eelco Dolstra Date: Thu Apr 7 14:35:44 2005 +0000 * Get rid of fetchurl, we don't need it anymore. commit 10c429c757625c4c36319751f6d87b8990677c1f Author: Eelco Dolstra Date: Thu Apr 7 14:35:01 2005 +0000 * If store paths are specified as sources in Nix expressions, don't copy them, but use them directly. commit f9848d4f3122b8a43b69d53277b606806bdba9dd Author: Eelco Dolstra Date: Thu Apr 7 14:33:32 2005 +0000 * Support base-32 hash representations. commit c815aff21b668f5fe7bbd04086a988df51281840 Author: Eelco Dolstra Date: Thu Apr 7 14:01:51 2005 +0000 * `nix-store --add-fixed' to preload the outputs of fixed-output derivations. This is mostly to simplify the implementation of nix-prefetch-{url, svn}, which now work properly in setuid installations. * Enforce valid store names in `nix-store --add / --add-fixed'. commit 57d023a184bdc2f30cd7052c157e43ba1bca8288 Author: Eelco Dolstra Date: Thu Apr 7 10:47:58 2005 +0000 * More manual updates. commit f1ae10b992cf8b3b5f13c5bf69f264872c0a4f4f Author: Eelco Dolstra Date: Thu Apr 7 09:36:35 2005 +0000 * Build hook documentation. * nix-store options. commit 806b91f1040d75ca5331445272ecc46adac1c9ef Author: Eelco Dolstra Date: Thu Apr 7 08:17:04 2005 +0000 * GC docs. commit 128c174295680097b28d5f578873ded2696caf40 Author: Eelco Dolstra Date: Tue Apr 5 15:28:30 2005 +0000 * Manual updates. commit 229252941aeef2bf2292bf3bb47aa477727d03f2 Author: Eelco Dolstra Date: Tue Apr 5 11:30:56 2005 +0000 * Some GC documentation. commit 6c8cf567b824ddb267578ce0105d374cae755420 Author: Eelco Dolstra Date: Tue Apr 5 11:29:46 2005 +0000 * Use `--nonet' flag. commit 31e140d70be780d410e697c0ed12b6d84da2cd04 Author: Eelco Dolstra Date: Mon Apr 4 15:18:19 2005 +0000 * I said it couldn't be done. I was wrong. commit 4a83c12c5db250ca0946497420d3e5cac1fbcd57 Author: Eelco Dolstra Date: Fri Apr 1 15:34:23 2005 +0000 * Added a glossary to the manual. commit 6f788880b692834655c8679ed58e9131ca2fdfa1 Author: Eelco Dolstra Date: Sat Mar 26 22:06:57 2005 +0000 * Re-enable dot graph generation. commit 298dd487bb7bc0e0f4f12a3df91906263e506db4 Author: Eelco Dolstra Date: Fri Mar 25 14:31:12 2005 +0000 * When finding live paths, the deriver need not be valid. commit ebe342c9c14a06bdc90096847529e744265fae3a Author: Eelco Dolstra Date: Fri Mar 25 14:30:01 2005 +0000 * Better error checking. commit 7eaf0387639b3108f2351c513801b0d4e0b18be4 Author: Eelco Dolstra Date: Fri Mar 25 14:21:49 2005 +0000 * `nix-store --verify': repair bad referer mappings. commit c6178f0b038097584cbbac970ebdb3772de27763 Author: Eelco Dolstra Date: Thu Mar 24 17:46:38 2005 +0000 * Create missing log and temproots directories automatically (reported by Rob). commit d1487d9015222c33680c7727c31e3b499c620610 Author: Eelco Dolstra Date: Thu Mar 24 14:07:02 2005 +0000 * This is a better location to keep the blacklist, since it can evolve separately from Nix or Nixpkgs. commit 009752ca70f2db7775d279d46dd7cf1b127fad88 Author: Eelco Dolstra Date: Thu Mar 24 13:44:47 2005 +0000 * Blacklist Firefox 1.0.1. commit cff6bc06df81d325b0c99c98cb28ab54b8d8c597 Author: Eelco Dolstra Date: Wed Mar 23 19:18:22 2005 +0000 * Fix endianness bug. commit 590e5a0d654c2ba85839978eb4ee69e5a4678e6a Author: Eelco Dolstra Date: Wed Mar 23 17:13:42 2005 +0000 * Add a test for base-32 encoding of hashes since it seems to be broken on Mac OS X. commit 0df9f08078e0588b3bb699465263aa3b80deb771 Author: Eelco Dolstra Date: Wed Mar 23 13:16:36 2005 +0000 * Export the references graph to the build hook. commit 3f236f01ae7e9abe58a591071698a9a9840af7c2 Author: Eelco Dolstra Date: Wed Mar 23 13:07:28 2005 +0000 * `nix-store --register-validity': allow a path to refer to a path listed later in the list of new valid paths. commit a04c62e0c4f0f8d3bd9cda21173a0193be9eda8a Author: Eelco Dolstra Date: Wed Mar 23 12:06:57 2005 +0000 * Canonicalise path meta-data in `nix-store --register-validity'. commit f20f08156031f04a60025bc7a41dd3fcc117baa7 Author: Eelco Dolstra Date: Wed Mar 23 11:25:20 2005 +0000 * nix-store: `--isvalid' -> `--check-validity', `--validpath' -> `--register-validity'. * `nix-store --register-validity': read arguments from stdin, and allow the references and deriver to be set. commit a1e00bf6aa8eb581ff4d47a6287800cf224c6a41 Author: Eelco Dolstra Date: Mon Mar 21 16:28:58 2005 +0000 * Remove non-POSIX flag. commit ab75a50ba43a2e8c82eb85142134b27a2d7ed0eb Author: Eelco Dolstra Date: Mon Mar 21 10:06:11 2005 +0000 * Fink compatibility. commit 7272c3f8178b6509e6d949b1e7538bbde49de58a Author: Eelco Dolstra Date: Fri Mar 18 09:43:25 2005 +0000 * Ignore hash conflicts in gc-releases.pl. commit 67eff20906899e315a6fbbaab02f18326ac5afb8 Author: Eelco Dolstra Date: Thu Mar 17 10:30:53 2005 +0000 * Manual updates. commit ad3121a52dacba417387df543df573816cd15b55 Author: Eelco Dolstra Date: Wed Mar 16 16:45:29 2005 +0000 * Documented common environment variables. commit f982df3cd766072fdb9d36ba6501eaa246381092 Author: Eelco Dolstra Date: Wed Mar 16 14:40:48 2005 +0000 * Update the user environments figure to show multiple profiles and users. * Change to base-32 hashes. commit afc3a7b79be9f7aa3dea83633cd1c7c64b484beb Author: Eelco Dolstra Date: Wed Mar 16 10:46:33 2005 +0000 * Automake 1.9 compatibility. commit 693ff4f6bff7c2f2f708d908dcbf52fc402c62ba Author: Eelco Dolstra Date: Tue Mar 15 15:42:11 2005 +0000 * Some more updates. commit 62dbfbc45bd4e58b88ae21c21b80db16b257711a Author: Eelco Dolstra Date: Tue Mar 15 14:38:22 2005 +0000 * Remove Docbook EBNF dependency. commit e30133469665d02588118594d4db8b6148249cd7 Author: Eelco Dolstra Date: Tue Mar 15 13:55:41 2005 +0000 * XInclude all the way. commit b376565b86717c4da2bdea5ee0bc73978ff9bc78 Author: Eelco Dolstra Date: Tue Mar 15 13:21:32 2005 +0000 * Manual updates. commit bacd3a6cfa3af1879ef01e693178c74839d66f70 Author: Eelco Dolstra Date: Tue Mar 15 12:03:15 2005 +0000 * Purify all corepkgs builders. commit e52ae1c0ffed6af893438cb456c5c38a272c8b21 Author: Eelco Dolstra Date: Tue Mar 15 11:12:48 2005 +0000 * Use SHA-256 for nix-push. commit 155c91b335c4041db5c9e83b8314757bdf7137b8 Author: Eelco Dolstra Date: Mon Mar 14 18:56:02 2005 +0000 * Upgrade information. commit 5675d5f48819b84e297d3577d6e9b1694f9b6192 Author: Eelco Dolstra Date: Mon Mar 14 18:55:46 2005 +0000 * Idem. commit 6fb5f7e532bf43ecf02004a4010496e9f98d09bc Author: Eelco Dolstra Date: Mon Mar 14 18:55:29 2005 +0000 * Pass `--base32' unless using MD5. commit c757d16c8c180bc8a7d74494a2fc92aee7993631 Author: Eelco Dolstra Date: Mon Mar 14 18:54:40 2005 +0000 * Bug in clearSubstitutes(). commit bb2e53699fb413d5808ee285d2194a33006a19b8 Author: Eelco Dolstra Date: Mon Mar 14 17:05:42 2005 +0000 * Parse new hash format properly. commit 5863f2472233ac3991bbd5e659b990f662b340d2 Author: Eelco Dolstra Date: Mon Mar 14 17:05:20 2005 +0000 * Print SHA-1 hashes in base-32 by default. commit bd333b939cc2fd2006466507ffc78976f85323b5 Author: Eelco Dolstra Date: Mon Mar 14 16:46:19 2005 +0000 * Prefix hash algorithm in patch generator too. commit 8eff18cd4321f6282e3880da09010ccc9242962e Author: Eelco Dolstra Date: Mon Mar 14 15:09:53 2005 +0000 * Set NAR name to content hash; previous nix-push names were not unique. * Drop `hashAlgo' attribute in manifests; prefix hashes with the hash algorithm instead. commit 1562dfe9bad119e58296f35c1982fc539a97ac30 Author: Eelco Dolstra Date: Mon Mar 14 14:03:41 2005 +0000 * Script to garbage collect nix-push directories. It prints out all file names in the directory not included in any of the manifests specified on the command line. commit 012b812698e9b2d8cdb43ffd41e46cc160256d77 Author: Eelco Dolstra Date: Fri Mar 11 18:35:58 2005 +0000 * Preliminary NEWS for 0.8. commit 536f3241775c21566d68a0581c78154a908da35f Author: Eelco Dolstra Date: Fri Mar 11 15:27:37 2005 +0000 * nix-install-package: install outPath, not drvPath, for now. * nix-prefecth-url: print out in base-16. commit 08df4436182a12a25aa45fcab2a13dbe71f7f10a Author: Eelco Dolstra Date: Thu Mar 10 11:33:46 2005 +0000 * Check for duplicate attributes and formal parameters in Nix expressions. commit 97c93526da4dfba1b92a11fb8522c07456d9e1ec Author: Eelco Dolstra Date: Mon Mar 7 16:26:05 2005 +0000 * In the checker, do traversals of the dependency graph explicitly. A conditional expression in the blacklist can specify when to continue/stop a traversal. For example, in we traverse the dependency graph, not following the dependencies of `fetchurl' derivations (as indicated by the presence of an `outputHash' attribute - this is a bit ugly). The resulting set of paths is scanned for a fetch of a file with the given hash, in this case, the hash of zlib-1.2.1.tar.gz (which has a security bug). The intent is that a dependency on zlib is not a problem if it is in a `fetchurl' derivation, since that's build-time only. (Other build-time uses of zlib *might* be a problem, e.g., static linking.) commit bfbc55cbc6b72aa14805131553c6b2547d3b6ee7 Author: Eelco Dolstra Date: Mon Mar 7 14:54:52 2005 +0000 * Use XML::LibXML. commit 543d7a41dcb76406e433fde7f5e26c61ac65cc3c Author: Eelco Dolstra Date: Mon Mar 7 13:27:56 2005 +0000 * Automatically add propagated build inputs to user environments. Maybe this is a bad idea. commit 9a7f95882c5e32ad5c41799016f749964221cad4 Author: Eelco Dolstra Date: Fri Mar 4 11:12:48 2005 +0000 * Basic blacklist checker. Each element in a user environment is checked against every item in a blacklist. commit 4bbdcfbb45112fc3b025f0feff7b995ee373b091 Author: Eelco Dolstra Date: Thu Mar 3 13:58:02 2005 +0000 * Don't use fork() in copyPath(), but a string buffer. commit 9e6bca876518fbcd32c67d72721310f6b60f6f75 Author: Eelco Dolstra Date: Thu Mar 3 13:10:52 2005 +0000 * Channel fix. commit 86cb3cc55468a9e83e3646acedfaedb6a0253b05 Author: Eelco Dolstra Date: Thu Mar 3 13:10:44 2005 +0000 * Increase Berkeley DB limits a bit more. * Maintain the cleanup invariant in clearSubstitutes(). commit 0107fba48e9466855af2ed8fc84edfec2e0de1ee Author: Eelco Dolstra Date: Wed Mar 2 15:57:35 2005 +0000 * Concept for a simple blacklist. commit 07b4399fb6f04d0cae58b8cf0a13efeeaf9d590b Author: Eelco Dolstra Date: Wed Mar 2 15:57:06 2005 +0000 * `nix-store -q --hash' to quickly query the hash of the contents of a store path (which is stored in the database). commit 9e50e648a47c1ef3b734bf12945c8b29a8c8f9f8 Author: Eelco Dolstra Date: Tue Mar 1 11:27:38 2005 +0000 * Doh! commit 8d364e5baa53060fb039d8d30f96520781625efe Author: Eelco Dolstra Date: Tue Mar 1 11:27:22 2005 +0000 * Add missing file to dist. commit db322a47ffb17be3f75ea864e0732d8f948aaf19 Author: Eelco Dolstra Date: Tue Mar 1 10:33:55 2005 +0000 * Use a weighted use heuristic to disambiguate between multiple occurances of a component. If the shortest path distance between a component P and Q in the referers graph is D, then the contribution of Q to the use of P is 1 / R^D, where R >= 1, typically 2. This expresses that distant indirect uses are less important than nearby uses. For instance, this can disambiguate between the bootstrap GCC in Nixpkgs and the GCC of the final stdenv (the former has more uses, but they are further away), and between the GCC of the final stdenv and the GCC+G77 build (the latter has very few uses). commit 2c4302dd7a437c3153d6de704fb5ddec004ea308 Author: Eelco Dolstra Date: Mon Feb 28 14:12:06 2005 +0000 * Added a disambiguation heuristic: if two components have the same name but differ to much in sice (by more than a factor of 3), then never generate a patch. commit 8376fff1518415a0d48b34e91298c846b0ab6b95 Author: Eelco Dolstra Date: Fri Feb 25 16:12:52 2005 +0000 * Add a version number to manifests. commit 8d3c346559a2528e4606d8a5b61c8a4d5457697d Author: Eelco Dolstra Date: Fri Feb 25 15:58:00 2005 +0000 * Pause if errors occur. commit 6bafeafb884d72ac920ec667eeea143309ed64b5 Author: Eelco Dolstra Date: Fri Feb 25 15:42:52 2005 +0000 * nix-install-package: Use the new (trivial) package format generated by the build farm. See e.g., http://catamaran.labs.cs.uu.nl/dist/nixpkgs-0.8/nixpkgs-0.7pre2302/; the user can click on packages, and they will be installed (assuming the `application/nix-package' MIME type has been associated with `nix-install-package'). Nix expressions are no longer involved: a "package" is just a pointer to a manifest, and the top-level store derivation to be added to the user environment. This makes these packages independent from Nix expression evolution. Note that we install the store derivation ($drvPath), not the resulting output path ($outPath). This is equivalent, except that installing the derivation maintains the back-link from the output path to the derivation that built it. This is useful for maintenance. * Automatically re-exec in an xterm so that the user sees something when `nix-install-package' is run from a browser. commit 3259ae58119b93ca48a267ec90d7e1efb929fef8 Author: Eelco Dolstra Date: Thu Feb 24 17:36:42 2005 +0000 * Properly specify the hash algorithm in the manifests, and read it too. * Change the default hash for nix-prefetch-url back to md5, since that's what we use in Nixpkgs (for now; a birthday attack is rather unlikely there). commit 95e870a113e98bf23222535d842e525021a15f10 Author: Eelco Dolstra Date: Thu Feb 24 14:06:18 2005 +0000 * (Unnecessary) refactoring. commit bfaf83a0fd19cec3354a0d957ae5c58040f75c56 Author: Eelco Dolstra Date: Wed Feb 23 11:19:27 2005 +0000 * When multiple derivations are specified in `nix-store -r', don't continue building when one fails unless `--keep-going' is specified. * When `--keep-going' is specified, print out the set of failing derivations at the end (otherwise it can be hard to find out which failed). commit 3a2c3f0cf265075b130d9d2a25b9c8334c560b33 Author: Eelco Dolstra Date: Tue Feb 22 21:14:41 2005 +0000 * Support for fixed-output hashes over directory trees (i.e., over the NAR dump of the path). commit eda2c3c2537562e3b18c02a47b19e47ba3d37598 Author: Eelco Dolstra Date: Tue Feb 22 15:23:24 2005 +0000 * Compatibility hack so that Nixpkgs can continue to do hash checking in `fetchurl' in Nix <= 0.7, but doesn't in Nix 0.8. commit 3c1630131e26efc90164bd8ca57870d9c4ad402b Author: Eelco Dolstra Date: Fri Feb 18 09:50:20 2005 +0000 * Subtle bug in the builder: if a subgoal that is instantiated multiple times is also a top-level goal, then the second and later instantiations would never be created because there would be a stable pointer to the first one that would keep it alive in the WeakGoalMap. * Some tracing code for debugging this kind of problem. commit 398463a72adf95b29bd86ba2ea66a08ed4e49541 Author: Eelco Dolstra Date: Fri Feb 18 08:40:52 2005 +0000 * `make check' fix. commit e0181f56be2384b4ed93c0cacd5b2bbd13795dba Author: Eelco Dolstra Date: Thu Feb 17 15:57:46 2005 +0000 * `nix-store -q --tree' shows a tree representing the dependency graph of the given derivation. Useful for getting a quick overview of how something was built. E.g., to find out how the `baffle' program in your user environment was built, you can do $ nix-store -q --tree $(nix-store -qd $(which baffle)) Tree nesting depth is minimised (?) by topologically sorting paths under the relation A < B iff A \in closure(B). commit 74ab0695b5bec5c7239744a89df5b2a7112e916b Author: Eelco Dolstra Date: Thu Feb 17 15:48:50 2005 +0000 * Compatibility hack with older user environments. commit 8a3a96dd5b009d337c0cd12b58a41c943d0aa516 Author: Eelco Dolstra Date: Thu Feb 17 13:55:18 2005 +0000 * Switch to the calling user context for some more operations in a setuid installation. commit 88273f9574fc137301b6a65669eb20f18d7a3b61 Author: Eelco Dolstra Date: Thu Feb 17 13:54:45 2005 +0000 * Put build logs in $prefix/var/nix/log/drvs/. commit fb5dae8694acbabab68aaccbc64796719fcb7b02 Author: Eelco Dolstra Date: Thu Feb 17 10:06:12 2005 +0000 * Fix nix-channel. * Add `--help' flag; fixes NIX-5. * Add `--remove' flag; fixes NIX-6. * Add `--list' flag. commit 202d5bbda578fcc8ff564c107f5f9dcfd5b1bc2b Author: Eelco Dolstra Date: Tue Feb 15 12:05:47 2005 +0000 * Compatibility with older GCCs. commit e17910cfb5ddeca2c136bc0a951318beea2e8a13 Author: Eelco Dolstra Date: Tue Feb 15 10:49:31 2005 +0000 * And yet another installation source: the ability to copy user environment elements from one user environment to another, e.g., $ nix-env -i --from-profile /nix/var/nix/profiles/other-profile aterm copies the `aterm' component installed in the `other-profile' to the user's current profile. commit 0083562f759223f3ef7ace4f269137cf68bf1295 Author: Eelco Dolstra Date: Tue Feb 15 09:39:12 2005 +0000 * Fix broken GC test. commit 8992fce3da844e3cfc7cbc563cbf5313980c16dd Author: Eelco Dolstra Date: Mon Feb 14 17:35:10 2005 +0000 * It is now possible to add store derivations or paths directly to a user environment, e.g., $ nix-env -i /nix/store/z58v41v21xd3ywrqk1vmvdwlagjx7f10-aterm-2.3.1.drv or $ nix-env -i /nix/store/hsyj5pbn0d9iz7q0aj0fga7cpaadvp1l-aterm-2.3.1 This is useful because it allows Nix expressions to be bypassed entirely. For instance, if only a nix-pull manifest is provided, plus the top-level path of some component, it can be installed without having to supply the Nix expression (e.g., for obfuscation, or to be independent of Nix expression language changes or context dependencies). commit e446d342b77e0babb200afd6b6275df2c70cfaee Author: Eelco Dolstra Date: Mon Feb 14 17:07:43 2005 +0000 * Added an installation source `--from-expression' (or `-E') to install derivations from a Nix expression specified on the command line. This is particularly useful for disambiguation if there are multiple derivations with the same name. For instance, in Nixpkgs, to install the Firefox wrapper rather than the plain Firefox component: $ nix-env -f .../i686-linux.nix -i -E 'x: x.firefoxWrapper' The Nix expressions should be functions to which the default Nix expression (in this case, `i686-linux.nix') is passed, hence `x: ...'. This might also be a nice way to deal with high-level (user-level) variability, e.g., $ nix-env -f ./server.nix -i -E 'x: x {port = 8080; ssl = false;}' commit 0cb016c209a6cbfc57a93a3f353a556924d31b50 Author: Eelco Dolstra Date: Mon Feb 14 16:16:02 2005 +0000 * Refactoring. Hope this doesn't break the semantics of `-u' ;-) commit a04a5de8f70e5c34be0f0f7ea3c6f2cd50d56982 Author: Eelco Dolstra Date: Mon Feb 14 14:16:56 2005 +0000 * Implement the `gc-keep-derivations' global configuretion flag. commit 6a8ef36fe62c1b53572b0cf64685ece6190b22e5 Author: Eelco Dolstra Date: Mon Feb 14 13:07:09 2005 +0000 * Global configuration option `env-keep-derivations' to store pointer to derivations in user environments. Nice for developers (since it prevents build-time-only dependencies from being GC'ed, in conjunction with `gc-keep-outputs'). Turned off by default. commit b0aba6ec2ac09d5ecdf0068b91010cdee1caae9d Author: Eelco Dolstra Date: Mon Feb 14 10:44:57 2005 +0000 * Don't keep the derivation symlink when creating profile generations. commit 32429142cd267196d68b6706b5d340d03c0a1dc2 Author: Eelco Dolstra Date: Mon Feb 14 09:53:11 2005 +0000 * Type error in constructor call (caught by GCC 3.3, but not 3.4!). commit 20ce2642fc0052a9f70faf194cc0c31d3f88926e Author: Eelco Dolstra Date: Fri Feb 11 16:56:45 2005 +0000 * Refactoring to support different installation sources in nix-env. * Set the references for the user environment manifest properly. * Don't copy the manifest (this was accidental). * Don't store derivation paths in the manifest (maybe this should be made optional). This cleans up the semantics of nix-env, which were weird. * Hash on the output paths of activated components, not on derivation paths. This is because we don't know the derivation path of already installed components anymore, and it allows the installation of components by store path (skipping Nix expressions entirely). * Query options `--out-path' and `--drv-path' to show the output and derivation paths of components, respectively (the latter replaces the `--expr' query). commit 80870d9291813f265a6e078c92aa535ef0b70a47 Author: Eelco Dolstra Date: Fri Feb 11 16:03:47 2005 +0000 * Input sources should be in the set of all referenceable paths too. commit 3a99616968a7ffcc8f51bda7a781d3233aa9b428 Author: Eelco Dolstra Date: Wed Feb 9 14:37:24 2005 +0000 * Commit more often to prevent out-of-memory errors. commit 98df735b5149bc1e39ce6b0bae13fbf7cebcdc05 Author: Eelco Dolstra Date: Wed Feb 9 12:57:13 2005 +0000 * Propagate the deriver of a path through the substitute mechanism. * Removed some dead code (successor stuff) from nix-push. * Updated terminology in the tests (store expr -> drv path). * Check that the deriver is set properly in the tests. commit 582e01c06f9ecee25a31c34562926b41dc2856eb Author: Eelco Dolstra Date: Wed Feb 9 09:50:29 2005 +0000 * Automatically upgrade <= 0.7 Nix stores to the new schema (so that existing user environments continue to work). * `nix-store --verify': detect incomplete closures. commit c5474398433225e40c8868b0952aebe36da2c849 Author: Eelco Dolstra Date: Tue Feb 8 13:48:53 2005 +0000 * Subflag in `--verify': `nix-store --verify --check-contents' checks that the contents of store paths has not changed by comparing hashes of their current contents to the hashes stored in the database. commit 3d74274b37a0f3b841ad860143f9c17401c3d7c4 Author: Eelco Dolstra Date: Tue Feb 8 13:23:55 2005 +0000 * Updated `nix-store --verify' to the new schema. commit 60feff82cf4dd89c9039914c5b3ef8e1b8acf8e7 Author: Eelco Dolstra Date: Tue Feb 8 13:00:39 2005 +0000 * Set umask to prevent permission problems. commit 48ebe4527e5af974832bc39f15fcd46ac740effa Author: Eelco Dolstra Date: Tue Feb 8 11:40:19 2005 +0000 * Better error reporting in readmanifest. * Use force flag in `mv' to prevent silly interactive questions (this happens with shared Nix stores). commit fbc434ee4c39e7516f3634371442899864786584 Author: Eelco Dolstra Date: Mon Feb 7 14:32:44 2005 +0000 * `nix-store -qb' to query derivation environment bindings. Useful for finding build-time dependencies (possibly after a build). E.g., $ nix-store -qb aterm $(nix-store -qd $(which strc)) /nix/store/jw7c7s65n1gwhxpn35j9rgcci6ilzxym-aterm-2.3.1 * Arguments to nix-store can be files within store objects, e.g., /nix/store/jw7c...-aterm-2.3.1/bin/baffle. * Idem for garbage collector roots. commit 450c358e2055488897349bf50951cce16ad9bc90 Author: Eelco Dolstra Date: Mon Feb 7 13:40:40 2005 +0000 * Maintain a database table (`derivers') that maps output paths to the derivation that produced them. * `nix-store -qd PATH' prints out the derivation that produced a path. commit a37338815de6affd44f927712143f626c8e6d79d Author: Eelco Dolstra Date: Tue Feb 1 22:07:48 2005 +0000 * A GC setting `gc-keep-outputs' to specify whether output paths of derivations should be kept. commit 2e6bf723e4d63d661d26443a4477a040a96c7257 Author: Eelco Dolstra Date: Tue Feb 1 20:53:14 2005 +0000 * Added a global configuration file (/nix/etc/nix/nix.conf). It contains options for the garbage collector right now, but other stuff can be added here later. commit 9f6835c2829310f3c58abb39002a4a580e3ae35e Author: Eelco Dolstra Date: Tue Feb 1 17:52:11 2005 +0000 * Remove debug code. commit c3981d81f65eda945f7a48d10ce7600fc0419f58 Author: Eelco Dolstra Date: Tue Feb 1 17:50:48 2005 +0000 * Make check fixes. commit 65b6c8ab4c7832abdad46a29ce2ef18d289b2471 Author: Eelco Dolstra Date: Tue Feb 1 15:05:32 2005 +0000 * Move root finding from `nix-collect-garbage' to `nix-store --gc'. This was necessary becase root finding must be done after acquisition of the global GC lock. This makes `nix-collect-garbage' obsolete; it is now just a wrapper around `nix-store --gc'. * Automatically remove stale GC roots (i.e., indirect GC roots that point to non-existent paths). commit 630ae0c9d7f65a2d6bef85a5194b4d704e54eded Author: Eelco Dolstra Date: Tue Feb 1 13:48:46 2005 +0000 * nix-build: use an indirection scheme to make it easier for users to get rid of GC roots. Nix-build places a symlink `result' in the current directory. Previously, removing that symlink would not remove the store path being linked to as a GC root. Now, the GC root created by nix-build is actually a symlink in `/nix/var/nix/gcroots/auto' to `result'. So if that symlink is removed the GC root automatically becomes invalid (since it can no longer be resolved). The root itself is not automatically removed - the garbage collector should delete dangling roots. commit dcc37c236c66ba463bd61fec23d046485d8a412f Author: Eelco Dolstra Date: Tue Feb 1 12:36:25 2005 +0000 * nix-store, nix-instantiate: added an option `--add-root' to immediately add the result as a permanent GC root. This is the only way to prevent a race with the garbage collector. For instance, the old style ln -s $(nix-store -r $(nix-instantiate foo.nix)) \ /nix/var/nix/gcroots/result has two time windows in which the garbage collector can interfere (by GC'ing the derivation and the output, respectively). On the other hand, nix-store --add-root /nix/var/nix/gcroots/result -r \ $(nix-instantiate --add-root /nix/var/nix/gcroots/drv \ foo.nix) is safe. * nix-build: use `--add-root' to prevent GC races. commit a6b65fd5e107416588a6572a88518d8816abcb12 Author: Eelco Dolstra Date: Tue Feb 1 09:54:56 2005 +0000 * Get rid of hardcoded paths. commit 06b44242860d62e12f9abe018c6f974ceaa30bb9 Author: Eelco Dolstra Date: Tue Feb 1 09:23:38 2005 +0000 * Add missing files to dist. * Fix GC and substitute bugs related to self-references. Add a regression test. commit 32fa82a56a2c4a937c91f72be16339b4ddf7cdf1 Author: Eelco Dolstra Date: Mon Jan 31 22:23:49 2005 +0000 * Acquire a global GC lock to prevent new temporary root files from being created after the garbage collector has read the temproots directory. This blocks the creation of new processes, but the garbage collector could periodically release the GC lock to allow them to run. commit 89c9bc11abc02cc746838bfef101e5fecc59a6c5 Author: Eelco Dolstra Date: Mon Jan 31 22:01:55 2005 +0000 * Add a test for a more subtle race: a process starting after the temporary root files have been read but creating outputs before the store directory has been read. commit 207bdcbe86bac5fb9e650d26b22ae33c667151e4 Author: Eelco Dolstra Date: Mon Jan 31 21:20:59 2005 +0000 * Automatically remove temporary root files. commit 252c9c91abe146e9c6b16d795c6566df4adafe56 Author: Eelco Dolstra Date: Mon Jan 31 14:00:43 2005 +0000 * Topologically sort paths under the references relation to ensure that they are deleted in an order that maintains the closure invariant. * Presence of a path in a temporary roots file does not imply that all paths in its closure are also present, so add the closure. commit 33c5d23b814e16687808d5f2d79798fef7dc2a8a Author: Eelco Dolstra Date: Mon Jan 31 12:19:53 2005 +0000 * Don't delete active lock files. commit 1328aa33077fd1cf84869e366c82b8ea1d1abb5d Author: Eelco Dolstra Date: Mon Jan 31 10:27:25 2005 +0000 * Start of concurrent garbage collection. Processes write temporary roots to a per-process temporary file in /nix/var/nix/temproots while holding a write lock on that file. The garbage collector acquires read locks on all those files, thus blocking further progress in other Nix processes, and reads the sets of temporary roots. commit a7668411a10c79ad40c9c18caf2570d5c9f52182 Author: Eelco Dolstra Date: Fri Jan 28 20:36:46 2005 +0000 * Add a test to check whether concurrent garbage collection (i.e., running the collector while builds are in progress) works correctly. The test currently fails. commit 22cfdfa2460921a282fc924cce5fb26378b9fc9d Author: Eelco Dolstra Date: Fri Jan 28 13:19:16 2005 +0000 * Use NIX_STORE environment variable to locate the store (in addition to NIX_STORE_DIR) so that Nix invocations in builders in `make check' work correctly if the store doesn't exist. commit 9ab0bc9395e8e9af453b649142c98242bb890ac8 Author: Eelco Dolstra Date: Fri Jan 28 11:05:56 2005 +0000 * Another horrible `make check' hack. commit 0ea8b6993a76a24afb1a1f38699d80193249fa71 Author: Eelco Dolstra Date: Fri Jan 28 11:05:46 2005 +0000 * Only invalidate paths when they are in fact valid. commit ac2f665853331088b5b48f9edad609df9f79f78f Author: Eelco Dolstra Date: Thu Jan 27 19:15:12 2005 +0000 * Set execute permission. commit a85d1849af4ce25cb283a62e4ba9e3d5ccf92c25 Author: Eelco Dolstra Date: Thu Jan 27 19:00:48 2005 +0000 * Missing dependency; only a problem when building from Subversion. commit e5c16c95829f4f14763ba1f66f6e26f5f1792b29 Author: Eelco Dolstra Date: Thu Jan 27 17:48:50 2005 +0000 * Add missing substitutes files to dist. * Add a garbage collector test. commit 8a3eef22e38136513370f0dfb3cf7866ec2abaa3 Author: Eelco Dolstra Date: Thu Jan 27 17:48:14 2005 +0000 * Fix deadlock. commit c60a4943ba913a282a35b18e725b69859270dc22 Author: Eelco Dolstra Date: Thu Jan 27 16:18:39 2005 +0000 * Update referers mappings when updating/clearing the references mapping. * Do things in the right order in invalidatePath(). commit 4e37548a1ed23bc46aa803257608b6e66ee00879 Author: Eelco Dolstra Date: Thu Jan 27 15:31:49 2005 +0000 * Remove deleted files from EXTRA_DIST (again). commit c505702265833a762d681952bcc72562d64a242e Author: Eelco Dolstra Date: Thu Jan 27 15:21:29 2005 +0000 * Fix and simplify the garbage collector (it's still not concurrent, though). In particular it's now much easier to register a GC root. Just place a symlink to whatever store path it is that you want to keep in /nix/var/nix/gcroots. commit 59682e618805701f9c249736514df6db457895f9 Author: Eelco Dolstra Date: Thu Jan 27 12:19:25 2005 +0000 * Make lock removal safe by signalling to blocked processes that the lock they are waiting on has become stale (we do this by writing a meaningless token to the unlinked file). commit a24b78e9f1a7326badb6c38d5d63aeb6ccdf9970 Author: Eelco Dolstra Date: Tue Jan 25 21:28:25 2005 +0000 * Maintain the references/referers relation also for derivations. This simplifies garbage collection and `nix-store --query --requisites' since we no longer need to treat derivations specially. * Better maintaining of the invariants, e.g., setReferences() can only be called on a valid/substitutable path. commit 2a2756b85643de6355b7b9e3cc47574e7df82303 Author: Eelco Dolstra Date: Tue Jan 25 20:27:40 2005 +0000 * Simplification: registerSubstitutes -> registerSubstitute. We no longer need the former since there we no longer have the substitutes-rev table (which triggered a O(n^2) cost in updating them). commit a9340fa67222bf7ab9057d132af387031b00997d Author: Eelco Dolstra Date: Tue Jan 25 17:25:20 2005 +0000 * Remove removed files from EXTRA_DIST. commit 498f4915cc9dc461b18789288063759e0aded805 Author: Eelco Dolstra Date: Tue Jan 25 17:24:14 2005 +0000 * Re-enable all tests. commit 066da4ab852ebe4288536149824ea175dc36cad4 Author: Eelco Dolstra Date: Tue Jan 25 17:08:52 2005 +0000 * Really fix the substitute mechanism, i.e., ensure the closure invariant by registering references through the manifest. * Added a test for nix-pull. commit c6290e42bc8890e2036013773a98e3551352c91a Author: Eelco Dolstra Date: Tue Jan 25 13:00:12 2005 +0000 * Fix the `--fallback' switch. * Fix the substitutes tests. commit 581fc477838e9cf9e5d9657920ef63ea836050ee Author: Eelco Dolstra Date: Tue Jan 25 11:55:43 2005 +0000 * Fix the build hook mechanism; pass the pointer graph to the hook. commit 52bf9b86bb79369b7f7b5b8a5726b83ee154da6a Author: Eelco Dolstra Date: Tue Jan 25 11:18:03 2005 +0000 * In nix-store: added query `--referers-closure' that returns the closure of the referers relation rather than the references relation, i.e., the set of all paths that directly or indirectly refer to the given path. Note that contrary to the references closure this set is not fixed; it can change as paths are added to or removed from the store. commit 80faa2f98af8616ab89ac2af63431b887a84fb32 Author: Eelco Dolstra Date: Tue Jan 25 10:55:33 2005 +0000 * In nix-store: change `--build' back to `--realise'. Also brought back the query flag `--force-realise'. * Fixed some of the tests. commit 6a0a2d559336b3a7a165fb0f87f5e70caa9d8d72 Author: Eelco Dolstra Date: Thu Jan 20 16:01:07 2005 +0000 * Terminology fixes. commit 6bb5efadeceb8c4666c227a44113709bb47d23cb Author: Eelco Dolstra Date: Thu Jan 20 15:25:01 2005 +0000 * Ensure that derivation names and sources don't end in `.drv'. commit 05f0430de1d8eeae222a1306d4d0f7f407c8ce7d Author: Eelco Dolstra Date: Thu Jan 20 14:10:19 2005 +0000 * Another change to low-level derivations. The last one this year, I promise :-) This allows derivations to specify on *what* output paths of input derivations they are dependent. This helps to prevent unnecessary downloads. For instance, a build might be dependent on the `devel' and `lib' outputs of some library component, but not the `docs' output. commit 6ff48e77f6da3c523a29c254b315d83e310290b3 Author: Eelco Dolstra Date: Wed Jan 19 21:55:02 2005 +0000 * Set the Perl search path properly (reported by Roy van den Broek). commit e0f4e587c3a5110f57fbf4e85e14fdc606b1eaf6 Author: Eelco Dolstra Date: Wed Jan 19 16:59:56 2005 +0000 * Nix-store queries `--references' and `referers' to query the pointer graph. That is, `nix-store --query --references PATH' shows the set of paths referenced by PATH, and `nix-store --query --referers PATH' shows the set of paths referencing PATH. commit 96de272b48f8e9bdabffddb699ed4f2292d4f1d7 Author: Eelco Dolstra Date: Wed Jan 19 16:39:47 2005 +0000 * Renamed `normalise.cc' -> `build.cc', `storeexprs.cc' -> `derivations.cc', etc. * Store the SHA-256 content hash of store paths in the database after they have been built/added. This is so that we can check whether the store has been messed with (a la `rpm --verify'). * When registering path validity, verify that the closure property holds. commit ef5f254a55a2d6db09d3d0549ed45701558027e0 Author: Eelco Dolstra Date: Wed Jan 19 15:02:02 2005 +0000 * `nix-store --build' now builds its arguments in parallel instead of sequentially (within the limits set by `--jobs'). This should greatly improve the utilisation of the build farm when doing Nixpkgs builds. commit 06c77bf7a861221d41b5db9fad3002f13a14ed0e Author: Eelco Dolstra Date: Wed Jan 19 14:36:00 2005 +0000 * Change extension `.store' to `.drv'. * Re-enable `nix-store --query --requisites'. commit 863dcff6c5ffc163010ec1f9e6819bb9aaaadc29 Author: Eelco Dolstra Date: Wed Jan 19 11:16:11 2005 +0000 * Started removing closure store expressions, i.e., the explicit representation of closures as ATerms in the Nix store. Instead, the file system pointer graph is now stored in the Nix database. This has many advantages: - It greatly simplifies the implementation (we can drop the notion of `successors', and so on). - It makes registering roots for the garbage collector much easier. Instead of specifying the closure expression as a root, you can simply specify the store path that must be retained as a root. This could not be done previously, since there was no way to find the closure store expression containing a given store path. - Better traceability: it is now possible to query what paths are referenced by a path, and what paths refer to a path. commit e9762e2d10c4a837e3d75d53e3a24452f07f47ec Author: Eelco Dolstra Date: Wed Jan 19 11:04:24 2005 +0000 * Support arities > 6. commit 6d493751c331e7b695f82e9c259423efa7741f59 Author: Eelco Dolstra Date: Tue Jan 18 11:15:50 2005 +0000 * Get --readonly-mode to work again. commit 32aac8748a1439289af6b80efe9d518e123d6cc7 Author: Eelco Dolstra Date: Mon Jan 17 19:01:48 2005 +0000 * Actually check that the result of fixed-output derivations matches the specified hash. commit f3dc2312501358e29b70bec977fd96f626c46392 Author: Eelco Dolstra Date: Mon Jan 17 16:55:19 2005 +0000 * Removed the `id' attribute hack. * Formalise the notion of fixed-output derivations, i.e., derivations for which a cryptographic hash of the output is known in advance. Changes to such derivations should not propagate upwards through the dependency graph. Previously this was done by specifying the hash component of the output path through the `id' attribute, but this is insecure since you can lie about it (i.e., you can specify any hash and then produce a completely different output). Now the responsibility for checking the output is moved from the builder to Nix itself. A fixed-output derivation can be created by specifying the `outputHash' and `outputHashAlgo' attributes, the latter taking values `md5', `sha1', and `sha256', and the former specifying the actual hash in hexadecimal or in base-32 (auto-detected by looking at the length of the attribute value). MD5 is included for compatibility but should be considered deprecated. * Removed the `drvPath' pseudo-attribute in derivation results. It's no longer necessary. * Cleaned up the support for multiple output paths in derivation store expressions. Each output now has a unique identifier (e.g., `out', `devel', `docs'). Previously there was no way to tell output paths apart at the store expression level. * `nix-hash' now has a flag `--base32' to specify that the hash should be printed in base-32 notation. * `fetchurl' accepts parameters `sha256' and `sha1' in addition to `md5'. * `nix-prefetch-url' now prints out a SHA-1 hash in base-32. (TODO: a flag to specify the hash.) commit d58a11e019813902b6c4547ca61a127938b2cc20 Author: Eelco Dolstra Date: Fri Jan 14 16:04:03 2005 +0000 * Shorten SHA-256 hashes used in store path name generation to 160 bits, then encode them in a radix-32 representation (using digits and letters except e, o, u, and t). This produces store paths like /nix/store/4i0zb0z7f88mwghjirkz702a71dcfivn-aterm-2.3.1. The nice thing about this is that the hash part of the file name is still 32 characters, as before with MD5. (Of course, shortening SHA-256 to 160 bits makes it no better than SHA-160 in theory, but hopefully it's a bit more resistant to attacks; it's certainly a lot slower.) commit 9530cc31700f68fd229eee69eabd2baa099f404a Author: Eelco Dolstra Date: Fri Jan 14 13:51:38 2005 +0000 * Start move towards SHA-256 hashes instead of MD5. * Start cleaning up unique store path generation (they weren't always unique; in particular the suffix ("-aterm-2.2", "-builder.sh") was not part of the hash, therefore changes to the suffix would cause multiple store objects with the same hash). commit a7b94e87d7d28f763a708876cba46c8f2484b526 Author: Eelco Dolstra Date: Fri Jan 14 13:50:09 2005 +0000 * Missing file. commit 9ee88bb2f2fed3bcf34eb5e5caadced2e77a85da Author: Eelco Dolstra Date: Fri Jan 14 13:50:00 2005 +0000 * Use absolute paths. commit 63791eb05b236afcea510d769a8943f8be3dbc9c Author: Eelco Dolstra Date: Fri Jan 14 12:03:04 2005 +0000 * Add SHA-256. * Tests for the various hashes. commit 37b51a9aa6d5d0fb97bad0d1a27d27304da277c2 Author: Eelco Dolstra Date: Fri Jan 14 10:16:33 2005 +0000 * Removed some dead code. commit 7e8961f72056f53ccf78eba0ee8c240bc2310ab8 Author: Eelco Dolstra Date: Thu Jan 13 17:39:26 2005 +0000 * Added SHA-1 support. `nix-hash' now has an option `--type sha1' to select SHA-1 hashing. commit 73992371a3bc16b27b22e53d5f7ae600dea9cf60 Author: Eelco Dolstra Date: Thu Jan 13 15:44:44 2005 +0000 * Refactoring to support SHA-1. commit d46b4262dc84689c3916583b91ed9fc6dafefdd6 Author: Eelco Dolstra Date: Wed Jan 12 13:23:12 2005 +0000 * Bump version number to 0.8. commit b17e7cf9794b406aa26dd2ccbe2f64c1ba981d99 Author: Eelco Dolstra Date: Wed Jan 12 10:40:59 2005 +0000 * Script to remove patches from manifests. commit 0bc41f632b22814514b1d6784fa02454febd2fd4 Author: Eelco Dolstra Date: Wed Jan 12 10:37:18 2005 +0000 * Print out less garbage. commit 7d75616f2ca4e72db7088767e052b66de5718a80 Author: Eelco Dolstra Date: Wed Jan 12 10:27:46 2005 +0000 * NEWS and manual update for release 0.7. commit 6af4a5a71ffee704c4760be4259d69bb7e21b870 Author: Eelco Dolstra Date: Wed Jan 5 09:58:12 2005 +0000 * Prototype store optimiser. It searched the Nix store for identical files and hard-links them to each other to save disk space. Currently it doesn't actually do the hard-linking, it just reports the amount of space saved if it did. commit a03397be4c176c142871e7337dfef7734cd508ca Author: Eelco Dolstra Date: Tue Jan 4 17:38:26 2005 +0000 * Cygwin compatibility. commit f28ea27d83741caf38b8ac7de317d13a2904f54a Author: Eelco Dolstra Date: Fri Dec 31 11:07:32 2004 +0000 * Remove old stuff. commit c53898cb650d14f9d888e28e48496e15db00fb47 Author: Eelco Dolstra Date: Fri Dec 31 11:07:12 2004 +0000 * If a patch already exists, it must still be included in the manifest. commit 35b76a81c42df1f07f4de711eb1bcf681eac3c3a Author: Eelco Dolstra Date: Thu Dec 30 17:19:47 2004 +0000 * More instrumentation (statistics go to /nix/var/log/nix/downloads). commit 3745cecc6a569f09a7fdb95363b2c7eeaf59b687 Author: Eelco Dolstra Date: Thu Dec 30 17:09:57 2004 +0000 * Fix handling of chained patches: don't skip patches if intermediate paths are missing, etc. commit 581bcb986f22e2d60f2c01b4be27f50d478df587 Author: Eelco Dolstra Date: Thu Dec 30 16:34:54 2004 +0000 * Some logging for evaluation. commit 6270aa727d63ce4a4d27280f233a55f4c67d8285 Author: Eelco Dolstra Date: Wed Dec 29 22:17:26 2004 +0000 * Propagate patches from the source distribution to the destination distribution insofar they are applicable. commit 4f07ebc67e74629724c441352a58b12143383129 Author: Eelco Dolstra Date: Wed Dec 29 22:08:48 2004 +0000 * Integrated bsdiff/bspatch 4.2 (from http://www.daemonology.net/bsdiff/bsdiff-4.2.tar.gz) into the source tree. The license is a bit peculiar, but it does allow verbatim copying, which is what we do here (i.e., so don't make any changes to the sources). commit 54d8f0858825e9ae4c8fdf54b7c2019edee05237 Author: Eelco Dolstra Date: Wed Dec 29 19:32:55 2004 +0000 * Reject patches larger than the full archives they produce. commit 2fdb27e7f21c99174d35556575e3d25bf2bdc23e Author: Eelco Dolstra Date: Wed Dec 29 19:04:21 2004 +0000 * Atomic file replacement is good. commit e1e9c036f9313ac6bf160dba67e694b7868f1567 Author: Eelco Dolstra Date: Wed Dec 29 18:58:15 2004 +0000 * A utility to generate patches between releases based on their manifests. commit 77fc1c6c5c4f662ab9b15ff09300f2a626597bc8 Author: Eelco Dolstra Date: Wed Dec 29 17:29:24 2004 +0000 * Use aterm 2.3.1. commit 9022cf9adfd3504e40d52fa2891663bf33fa2f9d Author: Eelco Dolstra Date: Tue Dec 28 21:12:00 2004 +0000 * A small utility to add the Size and NarHash fields to old manifests. commit 4bf58d53795d53331094e5cc83187602d8d37730 Author: Eelco Dolstra Date: Tue Dec 28 21:11:28 2004 +0000 * Added a function to write manifests. commit 3d1b2101ccfd34f15b108f54a563a616cb679109 Author: Eelco Dolstra Date: Mon Dec 20 16:38:50 2004 +0000 * Place manifests in /nix/var/nix/manifests. * Use the new patch downloader. commit 7eed57e784068ae6e2e9bf4409639067df467cd3 Author: Eelco Dolstra Date: Mon Dec 20 14:57:03 2004 +0000 * Sync with changed substitute mechanism. * Accept the NarHash line. * Clear substitutes in `nix-channel --update'. commit 96c3d8a61550545549dfa31c62e68d16f4e89c0c Author: Eelco Dolstra Date: Mon Dec 20 14:38:04 2004 +0000 * I love test sets. commit 8b9697e57596aaf142799ae6bec8bb53155dba78 Author: Eelco Dolstra Date: Mon Dec 20 14:16:55 2004 +0000 * An operation `nix-store --clear-substitutes' to remove all registered substitute mappings. commit fa9259f5f519386b4f32ac9490bc73459773e589 Author: Eelco Dolstra Date: Mon Dec 20 13:43:32 2004 +0000 * Simplify the substitute mechanism: - Drop the store expression. So now a substitute is just a command-line invocation (a program name + arguments). If you register a substitute you are responsible for registering the expression that built it (if any) as a root of the garbage collector. - Drop the substitutes-rev DB table. commit 015beb7cd04ee75d58bf09ef89816f9301cda646 Author: Eelco Dolstra Date: Fri Dec 17 13:46:07 2004 +0000 * Typo: genericBuilder -> genericBuild. commit 4d25b0b0bb9977598802b0d9647530f7c2fde430 Author: Eelco Dolstra Date: Thu Dec 16 15:31:50 2004 +0000 * Fix nix-pull. commit f4041cc175df8bc3fa5810948cc2a33eb1159a06 Author: Eelco Dolstra Date: Thu Dec 16 14:59:05 2004 +0000 * Commit old changed to bdiff.sh - but bdiff.sh is obsolete. commit 77970f8dafb540a598fd90ad360c42fbea36bf30 Author: Eelco Dolstra Date: Thu Dec 16 14:31:49 2004 +0000 * Remove `prebuilts.conf' file, it's not like anybody was using it. * Add /nix/var/nix/manifests directory. commit e3b051aeeb968528d918b6af6c1e1df0bd7de958 Author: Eelco Dolstra Date: Mon Dec 13 16:56:18 2004 +0000 * Include the size of the bzipped archive (necessary for computing the cheapest download path), as well as the hash of the contents of the path (necessary for checking patch applicability). commit 862f4c154e883611ba9dfefe921c87e6423075ea Author: Eelco Dolstra Date: Mon Dec 13 13:47:38 2004 +0000 * Patch deployment. `download.pl' (intended to be used in the substitute mechanism) creates a store path by downloading full NAR archives and/or patches specified in the available manifests. Any combination of present paths, full downloads, and patches can be used to construct the target path. In particular, patches can be chained in sequence; and full NAR archives of the target path can be omitted (i.e., patch-only deployment is possible). A shortest path algorithm is used to find the smallest set of files to be downloaded (the edge weights are currently file sizes, but one can imagine taking the network speed to the various source into account). Patches are binary deltas between two store paths. To be precise, they are the output of the `bsdiff' program applied to the NAR archives obtained by dumping (`nix-store --dump') the two store paths. The advantage of diff'ing NAR archives (and not, say, doing file-by-file diffs) is that file renames/moves are handled automatically. The disadvantage is that we cannot optimise creation of unchanged files (by hard-linking). commit dca48aed349375b8515a32ac58dce48f48f7264e Author: Eelco Dolstra Date: Mon Dec 13 13:35:36 2004 +0000 * Allow an optional hash to be provided. This prevents redundant fetches. commit 71926ee18803071e64754465faf3d57d6dc9bbda Author: Eelco Dolstra Date: Mon Nov 29 21:04:28 2004 +0000 * Print out statistics comparing our performance to bzip2. commit 13f77276d11610171bc7774406b65b6cb73d453a Author: Eelco Dolstra Date: Mon Nov 29 19:22:16 2004 +0000 * utime() follows symlinks, so don't change the mtime if the file is a symlink. commit eee6fe478e5a0275b2da382216a5b8ec24e04290 Author: Eelco Dolstra Date: Mon Nov 29 19:12:55 2004 +0000 * Proof-of-concept for binary patch deployment. commit f17553a212e726abdfc96af5657968c24a829d0d Author: Eelco Dolstra Date: Mon Nov 29 15:30:44 2004 +0000 * Remove debug statement. commit 4115d8d8ce29113d9cb4efe7018dfb11f8038978 Author: Eelco Dolstra Date: Mon Nov 29 15:09:29 2004 +0000 * Canonicalise metadata of all files in store paths (set the mtime to 0, set the mode to either 444 or 555, set the group to the default). commit 5d5318c2ff57a110883a0d404f3673c76cd491b4 Author: Eelco Dolstra Date: Sun Nov 14 14:00:45 2004 +0000 * Bump version number to 0.7. commit 9f8964a0622716e68935ce7e25e860a63f609f49 Author: Eelco Dolstra Date: Sun Nov 14 10:42:16 2004 +0000 * More manual fixes. commit 0b79a1208228298d3abda7c03153c1abec2406d4 Author: Eelco Dolstra Date: Sun Nov 14 00:24:57 2004 +0000 * Manual fixes. commit 54c7a870d5b6324462ea293e3e5a8bb59c7d5ac3 Author: Eelco Dolstra Date: Fri Nov 12 23:56:37 2004 +0000 * Document --delete-generations and other nix-env options. commit c2b0d6b02ffaaa6e47eb24c3dca30beeea387aff Author: Eelco Dolstra Date: Fri Nov 12 23:22:08 2004 +0000 * Document --eval-only and --parse-only options in nix-instantiate. commit 32c73268502e35af54953e23038018edb8ce5685 Author: Eelco Dolstra Date: Tue Nov 9 14:06:56 2004 +0000 * Typos. commit 92ee003dc985e6f8331270068b10ca52e9cef793 Author: Eelco Dolstra Date: Mon Nov 8 15:20:52 2004 +0000 * Fix broken format string. commit d6db574ec127757c05c24f53c71e4116caaa762b Author: Eelco Dolstra Date: Mon Nov 8 11:32:10 2004 +0000 * Check exit status of pipe elements. commit b8aaef5e4e25daa838157c7b3a8165b633901646 Author: Eelco Dolstra Date: Sun Nov 7 22:12:16 2004 +0000 * Documented the standard environment, including the generic builder. commit 2c3b29c5cabfafe340eda9104d34d28c2a4f2e90 Author: Eelco Dolstra Date: Sun Nov 7 20:36:45 2004 +0000 * Everything you always wanted to know about functions and derivations but were afraid to ask. commit ea6581b691136f8545e9ab48d9ad339ad7019333 Author: Eelco Dolstra Date: Sun Nov 7 20:36:10 2004 +0000 * Drop the grammar appendix. commit 09e7f06818bb29c19ce395876860e57444e836c7 Author: Eelco Dolstra Date: Sun Nov 7 20:30:02 2004 +0000 * Put something in here. commit 1bac7a10e64049361f4ebdb592aa07ad3dbb4c53 Author: Eelco Dolstra Date: Sun Nov 7 18:58:49 2004 +0000 * Operators, comments. commit 55b35d6d776e6f204d446fdadf9e30ed712f0899 Author: Eelco Dolstra Date: Sun Nov 7 13:53:07 2004 +0000 * Lets, inheritance, assertions. commit 0b1ee4802b00124e785693c84f508c4f9f3fffdd Author: Eelco Dolstra Date: Fri Nov 5 21:12:23 2004 +0000 * Typo fix. commit 5f0300d18c41234c0edb93e04b98e3473ad8021e Author: Eelco Dolstra Date: Fri Nov 5 21:11:01 2004 +0000 * Generic builders. commit 3e9d2038b46cc479a97f0c0e0f280b2f83b3c544 Author: Eelco Dolstra Date: Fri Nov 5 15:39:30 2004 +0000 * Start of language reference. commit 6ca9c7f0a91a2998ecd0063ff68f01e6eca12759 Author: Eelco Dolstra Date: Fri Nov 5 13:10:08 2004 +0000 * Finished GNU Hello walkthrough. commit 8b934694f27c309b6f39ae2dede8130dc591ed49 Author: Eelco Dolstra Date: Thu Nov 4 20:21:08 2004 +0000 * Manual: writing Nix expressions. commit feb3ceaee034cf5783264eb9dc6bd2dd62298341 Author: Eelco Dolstra Date: Thu Nov 4 20:20:39 2004 +0000 * Better error messages. commit cb7ccb528bbaeb30d09fbb41e57ab75d3121e1bc Author: Eelco Dolstra Date: Wed Nov 3 18:12:03 2004 +0000 * string2ATerm -> overloaded toATerm. commit 4cbd845aa491b5cf534f8c031d285fc454933868 Author: Eelco Dolstra Date: Wed Nov 3 16:51:09 2004 +0000 * Don't propagate our CFLAGS to the ATerm library since it breaks at -O2. commit 5f2c5a306cf59d3b2400aba5c1be403e4b6e79c5 Author: Eelco Dolstra Date: Tue Nov 2 08:25:29 2004 +0000 * chapter -> appendix. commit 0913f5a6151cd9ef84c6cd82fcc71c55699ddacb Author: Eelco Dolstra Date: Mon Nov 1 16:21:37 2004 +0000 * Section about channels. commit ee5dcfade2a1c5ee47313b4a971245ec6c07cfa2 Author: Eelco Dolstra Date: Mon Nov 1 16:03:35 2004 +0000 * Section about garbage collection. commit cbe8de592d747e603c8657247d280faf5eb584a3 Author: Eelco Dolstra Date: Mon Nov 1 12:02:44 2004 +0000 * Profiles section. commit b05a596d61a5e062fc07380f8e6421fcfcb37f07 Author: Eelco Dolstra Date: Sun Oct 31 17:08:48 2004 +0000 * Document setuid Nix installs. commit 0d80d237c5d817c60c420a8a7870e296f202c1b3 Author: Eelco Dolstra Date: Sun Oct 31 16:13:25 2004 +0000 * Add figures to `make install' / `make dist'. commit 2aa1f4717bdf9432a75f13088ec79644be9a7d88 Author: Eelco Dolstra Date: Sun Oct 31 12:01:16 2004 +0000 * Fix `File exists' errors if the `result' symlink exists but is dangling. commit f8ac8d1ec835cf070afd62c0cef14a81e9a49302 Author: Eelco Dolstra Date: Fri Oct 29 15:26:26 2004 +0000 * Began adding build farm docs. commit a69534fc217666d53a418605de0ebb0879cbb2f7 Author: Eelco Dolstra Date: Fri Oct 29 11:22:49 2004 +0000 * Drop ATmake / ATMatcher also in handling store expressions. commit ed09821859e8e585c8479a3c3bf95e76d518d66f Author: Eelco Dolstra Date: Wed Oct 27 13:12:58 2004 +0000 * Use `atdiff' instead of `cmp' for checking test output. * Don't use local file names in tests since they will produce different parse trees depending on the current directory. commit 3277c9432ab718c8b80c54b228f8d5fbf94fb033 Author: Eelco Dolstra Date: Wed Oct 27 13:00:31 2004 +0000 * Bug fix in parsing of /* ... */ comments; due to longest match regexp there could be only one such comment per file. commit 463e2817c55fbd5b026d7dd630541b990b82418a Author: Eelco Dolstra Date: Wed Oct 27 12:41:53 2004 +0000 * Remove ancient Fix tests. * Add automated Nix expression language tests. commit f09618b63a3e842adc59360c9bb4cf0ad37246ef Author: Eelco Dolstra Date: Wed Oct 27 10:24:44 2004 +0000 * Turn on read-only mode in queries. This prevents redundant store I/O. commit c7bea941b04710b4a4f1b64c1274207d355633dd Author: Eelco Dolstra Date: Wed Oct 27 10:05:51 2004 +0000 * Oops, I did it again. commit 210ab0296dc340e5dd0829e282ad02d5d36bca62 Author: Eelco Dolstra Date: Wed Oct 27 00:02:31 2004 +0000 * Add file to `make dist'. commit c52dda95a69e02cd62d5ddac6ecf2229fe0c478f Author: Eelco Dolstra Date: Tue Oct 26 23:30:18 2004 +0000 * Bug: check that term is an application. commit 5fe9222b36ad49d74c84edb04d6bc4a7d844be01 Author: Eelco Dolstra Date: Tue Oct 26 22:54:26 2004 +0000 * Don't use ATmake / ATmatch anymore, nor the ATMatcher class. Instead we generate data bindings (build and match functions) for the constructors specified in `constructors.def'. In particular this removes the conversions between AFuns and strings, and Nix expression evaluation now seems 3 to 4 times faster. commit eb8284ddaa66448d369647f68cb9f89b93a187de Author: Eelco Dolstra Date: Tue Oct 26 17:10:09 2004 +0000 * Evaluate argument to `import'. commit 033d7c65930c7613fa21510f03984d764fcdb7d3 Author: Eelco Dolstra Date: Tue Oct 26 17:04:55 2004 +0000 * Doh! commit 9fa07b376dd52ee8bbcc074e59d36af3f3f2536d Author: Eelco Dolstra Date: Tue Oct 26 17:01:35 2004 +0000 * String/path concatenation operator (`+'). commit ee401afad81dc7759c66829372826f98268ae606 Author: Eelco Dolstra Date: Tue Oct 26 16:59:36 2004 +0000 * Mode `--parse-only' to parse the input (on stdin, `-'), and print out the AST as an ATerm. * Mode `--eval-only' to parse and evaluate the input, and print the resulting normal form as an ATerm. Neither of these modes require store/DB write permission. commit 37d7abd69402f0e7a78d4d2f2d78996409a8563a Author: Eelco Dolstra Date: Mon Oct 25 16:54:56 2004 +0000 * New language feature: with expressions. The expression `with E1; E2' evaluates to E2 with all bindings in the attribute set E1 substituted. E.g., with {x = 123;}; x evaluates to 123. That is, the attribute set E1 is in scope in E2. This is particularly useful when importing files containing lots definitions. E.g., instead of let { inherit (import ./foo.nix) a b c d e f; body = ... a ... f ...; } we can now say with import ./foo.nix; ... a ... f ... I.e., we don't have to say what variables should be brought into scope. commit f4d44a002688262d33093494a7fea1bb11b97ac9 Author: Eelco Dolstra Date: Mon Oct 25 14:38:23 2004 +0000 * Allow certain operations to succeed even if we don't have write permission to the Nix store or database. E.g., `nix-env -qa' will work, but `nix-env -qas' won't (the latter needs DB access). The option `--readonly-mode' forces this mode; otherwise, it's only activated when the database cannot be opened. commit 3ade3e7721df981614bbb2420baeb84e58085967 Author: Eelco Dolstra Date: Mon Oct 25 13:51:34 2004 +0000 * Revert r1594 - it didn't solve the problem. Instead add svn-revision to distributions, which should fix it. commit 2248becfd3363a5de52ef6b10edf4c2d774bfa1e Author: Eelco Dolstra Date: Mon Oct 25 12:15:50 2004 +0000 * Make sure that the prerelease version is included in `--version'. commit 50b9caac14bff656b6705efbb09e15ba9dc22d22 Author: Eelco Dolstra Date: Thu Oct 21 09:22:16 2004 +0000 * Updated NEWS for the upcoming 0.6 release. commit 2155c0a673ee1d72a9961ec5e4a864b7c797ec44 Author: Eelco Dolstra Date: Wed Oct 20 14:42:38 2004 +0000 * Register channels as roots of the garbage collector (in $(localstatedir)/nix/gcroots/channels). * In setuid installations, create gcroots/tmp and gcroots/channels group-writable. commit 88888160d239ed68118ba1d5f94cad0a0ca7521f Author: Eelco Dolstra Date: Wed Oct 20 14:40:54 2004 +0000 * Fix nix-prefetch-url in setuid Nix installations. commit 99da51d4debda195d8d264b9c060fe4304359e4f Author: Eelco Dolstra Date: Wed Oct 20 14:05:48 2004 +0000 * Show error messages from curl. commit 2cd590d96c7bfa6843384073102099b545097c93 Author: Eelco Dolstra Date: Mon Oct 18 12:22:14 2004 +0000 * Instead of — use the actual Unicode character. By the way, to edit the manual, you should have something like (modify-coding-system-alist 'file "\\.xml\\>" 'utf-8) in your ~/.emacs. commit 692204e0c5565d14fce0a62527bf2b0b91f82753 Author: Eelco Dolstra Date: Thu Oct 14 16:43:09 2004 +0000 * Rewrite of package management stuff. commit d830b2c1df3b80a1dffec40cbea8e9af7d0e0a11 Author: Eelco Dolstra Date: Thu Oct 14 15:09:55 2004 +0000 * In `nix-env -q', sort derivations by name *without* case sensitivity. commit febd8bed1b341b56d58d43ebb09710504f997da9 Author: Eelco Dolstra Date: Thu Oct 14 11:55:12 2004 +0000 * Split overview chapter into a chapter on package management and a chapter on writing Nix expressions. commit 98c69e51728d18ff528b8873ef63c87dbe430772 Author: Eelco Dolstra Date: Thu Oct 14 11:54:41 2004 +0000 * Unindent. commit 371c57d8a7c0ee58de82f68c9dfb116cee7e00a9 Author: Eelco Dolstra Date: Wed Oct 13 15:35:47 2004 +0000 * Updated the quick start section. Use channels instead of downloading Nix expressions and calling nix-pull. This is so user-friendly that even a Mac user can do it! :-) commit 2b20701f7895101c8ef8c989fccf702081615120 Author: Eelco Dolstra Date: Wed Oct 13 15:08:35 2004 +0000 * Better introduction. * Set notes in a different color than warnings. commit 13172427806ad41fb3896c2e3ced1cf9672bb081 Author: Eelco Dolstra Date: Wed Sep 22 12:15:04 2004 +0000 * Make store objects created by substitutes read-only. commit 995d08208eb52dfa42451733c4b20add2730de9f Author: Niels Janssen Date: Sun Sep 19 15:53:37 2004 +0000 * prevent collision on log directory commit b357284a323b86b96828e38dcb2d86b67f172de5 Author: Eelco Dolstra Date: Sun Sep 12 19:08:57 2004 +0000 * Fallback didn't work for subderivations of an unnormalised the main derivation, since NormalisationGoal would first run a NormalisationGoal on the subderivation (a no-op, since in a situation where we need fallback the successor is known), and then runs a RealisationGoal on the normal form, which then cannot do a fallback because it doesn't know the derivation expression for which it is a normal form. Tossed out the 2-phase normalisation/realisation in NormalisationGoal and SubstitutionGoal since it's no longer needed - a RealisationGoal will run a NormalisationGoal if necessary. commit dcc433de47d4bf4a27fe63bc8996e946164ae885 Author: Eelco Dolstra Date: Fri Sep 10 13:32:08 2004 +0000 * Operation `--delete-generations' to delete generations of a profile. Arguments are either generation number, or `old' to delete all non-current generations. Typical use: $ nix-env --delete-generations old $ nix-collect-garbage * istringstream -> string2Int. commit c16be6ac92b86981e8e4bb6703e694b675a28b0d Author: Eelco Dolstra Date: Thu Sep 9 21:19:20 2004 +0000 * Remove write permission from store objects after they have been added to the store. Bug reported by Martin. commit 47f87072ad42338a9b6397a250abf2775d051d8e Author: Eelco Dolstra Date: Thu Sep 9 21:12:53 2004 +0000 * A very dirty hack to make setuid installations a bit nicer to use. Previously there was the problem that all files read by nix-env etc. should be reachable and readable by the Nix user. So for instance building a Nix expression in your home directory meant that the home directory should have at least g+x or o+x permission so that the Nix user could reach the Nix expression. Now we just switch back to the original user just prior to reading sources and the like. The places where this happens are somewhat arbitrary, however. Any scope that has a live SwitchToOriginalUser object in it is executed as the original user. * Back out r1385. setreuid() sets the saved uid to the new real/effective uid, which prevents us from switching back to the original uid. setresuid() doesn't have this problem (although the manpage has a bug: specifying -1 for the saved uid doesn't leave it unchanged; an explicit value must be specified). commit 5396304c73190c6898981caf653fc1b28be71f70 Author: Eelco Dolstra Date: Thu Sep 9 15:55:31 2004 +0000 * Use setre[ug]id() instead of setres[ug]id(), since the former is more common than the latter (which exists only on Linux and FreeBSD). We don't really care about dropping the saved IDs since there apparently is no way to quiry them in any case, so it can't influence the build (unlike the effective IDs which are checked by Perl for instance). commit e043fc7d0b68bedaabe236c2f2080a33bb967ee5 Author: Eelco Dolstra Date: Thu Sep 9 14:16:02 2004 +0000 * Set the umask to known value (0022). This is important in a setuid installation, since the calling user may have a more fascist umask (say, 0077), which would cause the store objects built by Nix to be unreadable to anyone other than the Nix user. commit 550d960586c1532ea1066b8df418c6629f0e7288 Author: Eelco Dolstra Date: Wed Sep 8 12:07:19 2004 +0000 * Hack for perl(readmanifest) dependency. commit 17c8252fc932874b7ca9b7269c96b178022302f2 Author: Eelco Dolstra Date: Mon Sep 6 10:05:21 2004 +0000 * Spec file options to create the Nix user and group in the RPM pre-install script. By default this is turned off; you should edit the spec file to enable it. commit fb28cfc86dff6bbacb71f69a862afd3384aee986 Author: Eelco Dolstra Date: Mon Sep 6 08:17:55 2004 +0000 * Add some variability to RPM spec files: allow setuid options to be set on the rpmbuild command line. commit 5c443b65501903f636b00b908bb8eb10e022402e Author: Eelco Dolstra Date: Tue Aug 31 16:13:10 2004 +0000 * Main the `substitutes-rev' table again, but now in a way that doesn't take \Theta(n^2) space/time complexity. commit c25f2883b149bf71931f963d29241fe012360633 Author: Eelco Dolstra Date: Tue Aug 31 10:50:08 2004 +0000 * Quadruple the Berkeley DB locking limits to get rid of out of memory errors while running `nix-store --verify'. commit fe122c5a15db5399a10fcfd97b3bbb97c782c8b8 Author: Eelco Dolstra Date: Mon Aug 30 11:51:36 2004 +0000 * Removed nrWaitees field. It was redundant with waitees.size() and could get out of sync if multiple input derivations mapped to the same closure expression (since waitees is a set). commit eb233e728f06ec2b5cbcfc85059fa91a1150f291 Author: Eelco Dolstra Date: Wed Aug 25 16:54:08 2004 +0000 * `--min-age' flag in nix-store and nix-collect-garbage to only delete unreachable paths that haven't been used for N hours. For instance, `nix-collect-garbage --min-age 168' only deletes paths that haven't been accessed in the last week. This is useful for instance in the build farm where many derivations can be shared between consecutive builds, and we wouldn't want a garbage collect to throw them all away. We could of course register them as roots, but then we'd to unregister them at some point, which would be a pain to manage. The `--min-age' flag gives us a sort of MRU caching scheme. BUG: this really shouldn't be in gc.cc since that violates mechanism/policy separation. commit fdec72c6cc720be899431c32f99221e8c4b88cd0 Author: Eelco Dolstra Date: Wed Aug 25 15:39:13 2004 +0000 * `nix-collect-garbage' now actually performs a garbage collection, it doesn't just print the set of paths that should be deleted. So there is no more need to pipe the result into `nix-store --delete' (which doesn't even exist anymore). commit 818047881e4906c670104851f69c3179ecc7fb1f Author: Eelco Dolstra Date: Wed Aug 25 11:43:49 2004 +0000 * Put the garbage collector in nix-store: operation `--gc', suboperations `--print-live', `--print-dead', and `--delete'. The roots are not determined by nix-store; they are read from standard input. This is to make it easy to customise what the roots are. The collector now no longer fails when store expressions are missing (which legally happens when using substitutes). It never tries to fetch paths through substitutes. TODO: acquire a global lock on the store while garbage collecting. * Removed `nix-store --delete'. commit 9994c1dd9fe19a3bb8f7bbddbcd5622c9c30d85b Author: Eelco Dolstra Date: Tue Aug 24 11:46:05 2004 +0000 * Validate derivation names. In particular don't allow spaces. * Drop support for the outPath attribute in derivations. commit 8f58733ef16bdefe3cdb004bea986b6a0b893331 Author: Eelco Dolstra Date: Fri Aug 20 15:47:58 2004 +0000 * The gid should also match. commit 1c90fabccc0b859d9a357c96bfbc0c19a4ce17da Author: Eelco Dolstra Date: Fri Aug 20 15:31:46 2004 +0000 * Unbreak programs that are not setuid (such as nix-hash). commit e77fbe0fa2f7c2cfaee734dba049f0d8dd3dae15 Author: Eelco Dolstra Date: Fri Aug 20 15:22:33 2004 +0000 * On systems that have the setresuid() and setresgid() system calls to set the real uid and gid to the effective uid and gid, the Nix binaries can be installed as owned by the Nix user and group instead of root, so no root involvement of any kind is necessary. Linux and FreeBSD have these functions. commit 2d35116c13e0c11210cb712f9ce6e8a38058f350 Author: Eelco Dolstra Date: Fri Aug 20 14:49:05 2004 +0000 * Setuid support for sharing a Nix installation between multiple users. If the configure flag `--enable-setuid' is used, the Nix programs nix-env, nix-store, etc. are installed with the setuid bit turned on so that they are executed as the user and group specified by `--with-nix-user=USER' and `--with-nix-group=GROUP', respectively (with defaults `nix' and `nix'). The setuid programs drop all special privileges if they are executed by a user who is not a member of the Nix group. The setuid feature is a quick hack to enable sharing of a Nix installation between users who trust each other. It is not generally secure, since any user in the Nix group can modify (by building an appropriate derivation) any object in the store, and for instance inject trojans into binaries used by other users. The setuid programs are owned by root, not the Nix user. This is because on Unix normal users cannot change the real uid, only the effective uid. Many programs don't work properly when the real uid differs from the effective uid. For instance, Perl will turn on taint mode. However, the setuid programs drop all root privileges immediately, changing all uids and gids to the Nix user and group. commit 8f1dcdfc0ae05c403fe59b592093d3e61e87f1b0 Author: Eelco Dolstra Date: Thu Aug 19 09:09:09 2004 +0000 * Make sure that no build hook is set by default in the tests. * Don't use `seq' - some primitive, obsolete operating systems (Darwin) don't have it. commit 1eddee59f22b56a4b098921083780990dc1f0468 Author: Eelco Dolstra Date: Wed Aug 18 12:19:06 2004 +0000 * The default verbosity level of all Nix commands is now lvlInfo. * Builder output is written to standard error by default. * The option `-B' is gone. * The option `-Q' suppresses builder output. The result of this is that most Nix invocations shouldn't need any flags w.r.t. logging. commit 937ce0cd214c12276a2c373b515dc2541d1582fd Author: Eelco Dolstra Date: Wed Aug 18 12:11:31 2004 +0000 * Flag `--no-link' suppresses symlinking to the output path. * Handle multiple derivations correctly. commit 966bd9d19fb43b6a6022572eb7d80c1e03bfaf3e Author: Eelco Dolstra Date: Fri Aug 13 09:57:51 2004 +0000 * WTF? More canonical system name problems ("athlon-linux" instead of "i686-linux"). commit 62fe5c4a22453c763e967f04bda062df8241c487 Author: Eelco Dolstra Date: Wed Aug 11 19:03:13 2004 +0000 * The predecessor of a successor need not be present. This in particular happens on distributed builds or when using push/pull. commit ae1a1efa410fa66a0afbfae25ad423feee4b1e77 Author: Eelco Dolstra Date: Thu Aug 5 14:53:27 2004 +0000 * Clean up the temporary directory for hook communication (and don't print out incorrect "build failed" messages). commit d8989b1fb482fc7b6f29945e5c3b8bb197f4539c Author: Eelco Dolstra Date: Wed Aug 4 11:27:53 2004 +0000 * Every real language has a `map' function. commit bbfdd64741546863c2412d780097b1fe2457395e Author: Eelco Dolstra Date: Wed Aug 4 10:59:20 2004 +0000 * Allow primops with more that 1 arguments. commit e3a50f7e25c552a78974fae684484d27a36b7c60 Author: Eelco Dolstra Date: Wed Aug 4 09:25:21 2004 +0000 * Creating a file nix-support/no-scan in the output path of a derivation disables scanning for dependencies. Use at your own risk. This is a quick hack to speed up UML image generation (image are very big, say 1 GB). It would be better if the scanner were faster, and didn't read the whole file into memory. commit 18ebd7b03071ebbb38cea9eca39a5e7e2e0cf2ea Author: Eelco Dolstra Date: Fri Jul 30 14:18:48 2004 +0000 * Doh! commit 5373aed1a8087a7f6f7e428f693d0f2d36d35eca Author: Eelco Dolstra Date: Fri Jul 30 14:17:05 2004 +0000 * Use ATerm 2.2. * Include bootstrap.sh in dist. commit 16c8b4c8e533292aef40b83a40eea2b0f621e534 Author: Eelco Dolstra Date: Fri Jul 30 13:45:13 2004 +0000 * A script to generate the Auto* stuff. commit e8a95108c0df56b95de9252e1cef1f74546f7f40 Author: Eelco Dolstra Date: Wed Jul 28 13:32:45 2004 +0000 * Nix-build places a symlink `result' in the current directory to the store object just built. commit 9bf7a5f516c9f6a9445e76d3166d173f5ab958bb Author: Eelco Dolstra Date: Sun Jul 18 21:08:24 2004 +0000 * Don't pass `--with-system'. commit 39eaecbc982246a511810be578ef1ebbe9fd3c10 Author: Eelco Dolstra Date: Sun Jul 18 21:07:27 2004 +0000 * Slightly better heuristic for picking the canonical system type. Now SuSE and Red Hat should yield the same type (`i686-linux'). Mac OS X should now give `powerpc-darwin' (i.e., the version number is gone). commit 064a36cb5454f32a45aac55f2a47532fc96dda25 Author: Eelco Dolstra Date: Fri Jul 9 13:06:12 2004 +0000 * Hardcode the system id to be `i686-linux'. commit c1a18f543e8f94568d085f88c66f0312c9d362d6 Author: Eelco Dolstra Date: Tue Jul 6 11:21:34 2004 +0000 * Fixed format string error. commit 056cd1d3b7778bbe177d74aea3aadca9e1a7be79 Author: Eelco Dolstra Date: Thu Jul 1 16:24:35 2004 +0000 * Don't go into a (sometimes infinite) loop calling the build hook. commit 638ce339a52da893693f667c8b330a2adefdd92a Author: Eelco Dolstra Date: Thu Jul 1 14:25:26 2004 +0000 * Nix-instantiate now accepts sets of derivations (just like nix-env). commit 292d6468ec73212a2ada3bd5f7f3f6e897f9086e Author: Eelco Dolstra Date: Thu Jul 1 13:56:56 2004 +0000 * Nix-env operations now by default filter out any derivations for system types other than the current system. I.e., `nix-env -i' won't install derivations for other system types, and `nix-env -q' won't show them. The flag `--system-filter SYSTEM' can be used to override the system type used for filtering (but not for building!). The value `*' can be used not to filter anything. commit 8f6254e8234c5f4a16b1b7d632065ebb0162b307 Author: Eelco Dolstra Date: Thu Jul 1 13:35:10 2004 +0000 * Align the columns in the output of `nix-env -q'. commit 593bc23d8b310b32b66227b36b72fd525087df83 Author: Eelco Dolstra Date: Thu Jul 1 13:13:37 2004 +0000 * Allow the system attribute of derivations to be queried in `nix-env -q'. * Queries can now be combined, e.g., `nix-env -q --status --system'. commit b584253af461b02f70ea3244a10d2569c85f2095 Author: Eelco Dolstra Date: Thu Jul 1 11:11:16 2004 +0000 * Include some missing headers. commit f5d5ffe536398fa1b0612a3613ed68734ebe8a60 Author: Eelco Dolstra Date: Tue Jun 29 09:41:50 2004 +0000 * Write build logs to disk again. commit 00aadf478b61264247df3c0c6e43304d9fa0c053 Author: Eelco Dolstra Date: Mon Jun 28 14:51:42 2004 +0000 * Use ATerm 2.1. commit 151e61fa5a94950d3701f6df0b40fa970e3cf320 Author: Eelco Dolstra Date: Mon Jun 28 14:40:26 2004 +0000 * By default, `nix-env -i' now deletes previously installed derivations with names matching the derivations being installed. The option `--preserve-installed / -P' overrides this behaviour. commit 4d2946c516aefd26daec8b2f4c4248e43ce85a62 Author: Eelco Dolstra Date: Mon Jun 28 13:51:24 2004 +0000 * In a realisation goal, check the result of the corresponding normalisation goal. commit 24286e15c9822833c39d268e521522b9933db28e Author: Eelco Dolstra Date: Mon Jun 28 13:37:05 2004 +0000 * `nix-env -u' now allows a specific version to be specified when upgrading. This fixes a bug reported by Martin: $ nix-env -i foo-1.0 $ nix-env -u foo-1.0 upgrading foo-1.0 to foo-1.1 commit 2746a879e23a97639b23fe6e5335e0cfcc7d5085 Author: Eelco Dolstra Date: Mon Jun 28 12:07:07 2004 +0000 * Typo. commit 91dc023665e22eb5637bf08c405e91ac9060c357 Author: Eelco Dolstra Date: Mon Jun 28 10:42:57 2004 +0000 * Added a switch `--fallback'. From the manual: Whenever Nix attempts to realise a derivation for which a closure is already known, but this closure cannot be realised, fall back on normalising the derivation. The most common scenario in which this is useful is when we have registered substitutes in order to perform binary distribution from, say, a network repository. If the repository is down, the realisation of the derivation will fail. When this option is specified, Nix will build the derivation instead. Thus, binary installation falls back on a source installation. This option is not the default since it is generally not desirable for a transient failure in obtaining the substitutes to lead to a full build from source (with the related consumption of resources). commit b113edeab780216b0590045b932be685d1399e9b Author: Eelco Dolstra Date: Fri Jun 25 15:36:09 2004 +0000 * A flag `--keep-going / -k' to keep building goals if one fails, as much as possible. (This is similar to GNU Make's `-k' flag.) * Refactoring to implement this: previously we just bombed out when a build failed, but now we have to clean up. In particular this means that goals must be freed quickly --- they shouldn't hang around until the worker exits. So the worker now maintains weak pointers in order not to prevent garbage collection. * Documented the `-k' and `-j' flags. commit e4883211f9482ec3255bd4e682635493e03466ca Author: Eelco Dolstra Date: Fri Jun 25 10:21:44 2004 +0000 * Don't throw an exception when a build fails. Just terminate the goal and allow the problem to be handled elsewhere (e.g., at top-level). commit 795d9f8b08a266ef99f9668f9b060db1282cd622 Author: Eelco Dolstra Date: Thu Jun 24 14:36:50 2004 +0000 * Obsolete. commit a29c8ac51ca813a34eebb497340807e4b274170c Author: Eelco Dolstra Date: Thu Jun 24 14:35:01 2004 +0000 * Add a test to check that when we cannot realise a closure expression, we should invalidate it and go back to the derivation for which it is a successor. commit ec326276217ad5b7761327da567f79bb5cc17f32 Author: Eelco Dolstra Date: Thu Jun 24 13:40:38 2004 +0000 * Multiple and/or failing substitutes now work. commit 8052aef4866e236ef0bb5d5675bbae330abb9b9b Author: Eelco Dolstra Date: Thu Jun 24 12:56:24 2004 +0000 * A test for multiple and/or failing substitutes. commit 66c7f347591c0c4e26e018672c487a3090e36e5e Author: Eelco Dolstra Date: Tue Jun 22 17:07:32 2004 +0000 * Arghhhhhh commit 05a5362d63dd2fc85bb74321244fc0e94689a4bf Author: Eelco Dolstra Date: Tue Jun 22 17:04:10 2004 +0000 * Some more diagnostics changes. commit d051cd40e16119ed441276f5b2cb74b7983062c3 Author: Eelco Dolstra Date: Tue Jun 22 15:17:04 2004 +0000 * Nix-instantiate can return multiple store expressions. commit 3093af58a7e9d3f0315a1a1040d3cfeaea051ba6 Author: Eelco Dolstra Date: Tue Jun 22 15:12:34 2004 +0000 * A utility script `nix-build' that builds Nix expressions and prints their output paths (and only that) on standard output. commit b302e5f63b96c945fa66d391c2d3165d7003a297 Author: Eelco Dolstra Date: Tue Jun 22 15:06:43 2004 +0000 * We don't really need this here. commit 83ae1723da5d905a24894a4a1edb25ffc77f6fc4 Author: Eelco Dolstra Date: Tue Jun 22 15:01:01 2004 +0000 * Well, it's better than printf. commit 72bc9a522f04cc8d8cb761a02bb9bf281b94567d Author: Eelco Dolstra Date: Tue Jun 22 14:48:59 2004 +0000 * Started making Nix's diagnostic messages a bit more useful. commit 5e2cf44a4d5d70f0dbed7b21257bd6d15538b3b2 Author: Eelco Dolstra Date: Tue Jun 22 11:03:41 2004 +0000 * Put WEXITSTATUS stuff somewhere else. commit 84007a09588b21487cbd3869bcb26c3e2c05b605 Author: Eelco Dolstra Date: Tue Jun 22 10:21:44 2004 +0000 * Reduce gratuitous cut & pasting. commit c9fbd2dfd51eebcb561f9b548c10c68ad89652e5 Author: Eelco Dolstra Date: Tue Jun 22 09:51:44 2004 +0000 * Wrapper class around pids. commit 155d7c8dfa46da054beaf37d6415d52613e2bb17 Author: Eelco Dolstra Date: Tue Jun 22 09:00:31 2004 +0000 * Substitutes should occupy a build slot. commit c4cb6ea2bc77f1f9239ce81ffc7a0fa6b540b1ab Author: Eelco Dolstra Date: Tue Jun 22 08:50:25 2004 +0000 * Refactoring. commit 88fb4f6e537ebea37fe0aaa4a2b044cf70d32178 Author: Eelco Dolstra Date: Mon Jun 21 12:20:47 2004 +0000 * Missing files added to `make dist'. commit 2db9748221ce285ac434c849eeed249950dd0d39 Author: Eelco Dolstra Date: Mon Jun 21 10:01:17 2004 +0000 * Remove debug output. commit 37ee6cef992c1a80e790a294b75db8c116be8bbb Author: Eelco Dolstra Date: Mon Jun 21 09:51:23 2004 +0000 * Adapted nix-pull to use the new substitute mechanism. commit 3f3a3ae87b3d72d52842d9a2ffe7010f5b0066b9 Author: Eelco Dolstra Date: Mon Jun 21 09:35:50 2004 +0000 * Acquire a lock on the output path when running a substitute. Also delete obstructing invalid paths. commit 72c857f0eb923c3126600a5c97bfb30fedd859c1 Author: Eelco Dolstra Date: Mon Jun 21 08:51:55 2004 +0000 * Ugh, nasty Heisenbug due to an uninitialiased variable. The bug only caused a crash if the program was *not* invoked with a high verbosity level. commit be1a917beb4577dd359a5e8ea17ca69dd228e6ae Author: Eelco Dolstra Date: Mon Jun 21 07:46:02 2004 +0000 * Remove obstructing invalid store paths add[Text]ToStore(). commit daf0a923c7c77300dfb09ee34c1ae31c87002a0e Author: Eelco Dolstra Date: Mon Jun 21 07:38:17 2004 +0000 * Wrap calls to registerSubstitute() in a single transaction to improve throughput. * Don't build the `substitute-rev' table for now, since it caused Theta(N^2) time and log file consumption when adding N substitutes. Maybe we can do without it. commit 15c60ca1b64a4e5dc874f60c764f0ccc8899d740 Author: Eelco Dolstra Date: Mon Jun 21 07:36:01 2004 +0000 * Disable calls to fsync() since Berkeley DB's DB_TXN_WRITE_NOSYNC flag doesn't seem to work as advertised. commit 112ee89501a936ad9c492780be6b63f53b2eb9ca Author: Eelco Dolstra Date: Sun Jun 20 19:17:54 2004 +0000 * Re-enable support for substitutes in the normaliser. * A better substitute mechanism. Instead of generating a store expression for each store path for which we have a substitute, we can have a single store expression that builds a generic program that is invoked to build the desired store path, which is passed as an argument. This means that operations like `nix-pull' only produce O(1) files instead of O(N) files in the store when registering N substitutes. (It consumes O(N) database storage, of course, but that's not a performance problem). * Added a test for the substitute mechanism. * `nix-store --substitute' reads the substitutes from standard input, instead of from the command line. This prevents us from running into the kernel's limit on command line length. commit bafb2357d1ab5f7aef8ce4495f5ab8b835359f63 Author: Eelco Dolstra Date: Sun Jun 20 19:08:59 2004 +0000 * README for the Emacs mode (written a while ago, but forgot to commit). commit 85ae78176520fbba0420e5dc772d76144b564605 Author: Eelco Dolstra Date: Sun Jun 20 13:37:51 2004 +0000 * Refactoring. commit 23bb902d1f65831d74a33051fdb8c0230b7a3e37 Author: Eelco Dolstra Date: Sat Jun 19 21:45:04 2004 +0000 * Re-enable build hooks. commit 41ec982f3132c32991a48a82735a036f844e7299 Author: Eelco Dolstra Date: Fri Jun 18 18:09:32 2004 +0000 * Big refactoring. Move to a much more explicitly state machine based approach. This makes it much easier to add extra complexity in the normaliser / realiser (e.g., build hooks, substitutes). commit 3454c685eec2aebe6f61f7deebc40162bab22e69 Author: Eelco Dolstra Date: Fri Jun 18 16:52:31 2004 +0000 * This is also useful. commit 6ba26f27c3665ec5f72638a8c658b0aa68068410 Author: Eelco Dolstra Date: Fri Jun 18 09:20:51 2004 +0000 * Shared (garbage collecting) pointers. Copied from Boost. commit 0b70231b9d9f2dfa5a9447fcd01fdb5c8f1fa0ea Author: Eelco Dolstra Date: Tue Jun 15 13:49:42 2004 +0000 * Refactoring. commit 1bc6afefac7af8d4c917e898d6670d9b9d7f29f1 Author: Eelco Dolstra Date: Tue Jun 8 13:21:03 2004 +0000 * Cleanup. commit e8411948ff9a2017d6c50093076a538a113de8c2 Author: Eelco Dolstra Date: Fri Jun 4 14:31:57 2004 +0000 * A Nix mode for Emacs. commit 5e4a2272bfb30f3e0e1d39a8cb7c6d2e7bfba161 Author: Eelco Dolstra Date: Tue May 18 14:52:35 2004 +0000 * Drain the output of the build hook to show error messages. Ugly hack. commit 19479899fb2f78f9cc1c40caf017a1bbeb6d8d3e Author: Eelco Dolstra Date: Tue May 18 12:57:26 2004 +0000 * Don't set the rpath here --- it's not portable. commit 1d08093b4894e4ded9eaf591a2547a74d33e1bfb Author: Eelco Dolstra Date: Tue May 18 09:45:46 2004 +0000 * Go back to the old way of generating the system name, and allow it to be specified in configure (using `--with-system=SYSTEM'). commit 8e9fd57ef9aa47214418212916e54c5644721335 Author: Eelco Dolstra Date: Tue May 18 09:45:18 2004 +0000 * setpgrp() is not POSIX (and on Mac OS X it's different than on Linux), so use setpgid(). commit ace8872706a1ddbefde39ee66f0746df6861cc11 Author: Eelco Dolstra Date: Fri May 14 12:24:29 2004 +0000 * execl() requires a terminating 0. * When a fast build wakes up a goal, try to start that goal in the same iteration of the startBuild() loop of run(). Otherwise no job might be started until the next job terminates. commit 4fc00cbec139487e63a7edf6225a8590ed58a9f3 Author: Eelco Dolstra Date: Thu May 13 22:52:37 2004 +0000 * Distributed builds and load balancing now seem to work pretty well. (Though the `build-remote.pl' script has a gigantic race condition). commit 2fa33049338aed07465f73b25c95168d6a61c8b5 Author: Eelco Dolstra Date: Thu May 13 20:28:20 2004 +0000 * Set the executable bit. commit 25db6224544be0df483a661f5e2cc1ed595525ae Author: Eelco Dolstra Date: Thu May 13 19:35:46 2004 +0000 * Load balancing. `build-remote.pl' will only execute up to a per-machine maximum number of parallel jobs on a remote machine. commit 3426d19547c889700a00e97fb62966ebd755f88b Author: Eelco Dolstra Date: Thu May 13 19:16:48 2004 +0000 * Perform all tests. commit a8306cb98ff920b38db5e5bbfcbe71bb36859b3f Author: Eelco Dolstra Date: Thu May 13 19:14:49 2004 +0000 * The build hooks used to implement distributed builds can now be run in parallel. Hooks are more efficient: locks on output paths are only acquired when the hook says that it is willing to accept a build job. Hooks now work in two phases. First, they should first tell Nix whether they are willing to accept a job. Nix guarantuees that no two hooks will ever be in the first phase at the same time (this simplifies the implementation of hooks, since they don't have to perform locking (?)). Second, if they accept a job, they are then responsible for building it (on the remote system), and copying the result back. These can be run in parallel with other hooks and locally executed jobs. The implementation is a bit messy right now, though. * The directory `distributed' shows a (hacky) example of a hook that distributes build jobs over a set of machines listed in a configuration file. commit 5087c8f645cf971ee6dfd11c5c56c6b2b752d7ad Author: Eelco Dolstra Date: Wed May 12 14:30:57 2004 +0000 * Use `-j0'. commit efa5fa1a91d5c4b29094d99b65e18b583d86dbc7 Author: Eelco Dolstra Date: Wed May 12 14:20:32 2004 +0000 * A switch `-j NUMBER' to set the maximum number of parallel jobs (0 = no limit). * Add missing file to distribution. commit 1f48aa0be7f1fe120cee44a208480b879583c5f8 Author: Eelco Dolstra Date: Wed May 12 13:49:10 2004 +0000 * Broken test. commit aa5a5084e4855ff612d27913a920ffab073e7b42 Author: Eelco Dolstra Date: Wed May 12 13:32:26 2004 +0000 * Pass to the build hook all sorts of information useful for distributing a build action to another machine. In particular, the paths in the input closures, the output paths, and successor mapping for sub-derivations. commit 8c0b42f857b53993d95c5bc077e8f8a71028c5ac Author: Eelco Dolstra Date: Wed May 12 09:35:51 2004 +0000 * An quick and dirty hack to support distributed builds. commit c8d3882cdc8f9e22c58af285c1996265c1af75d5 Author: Eelco Dolstra Date: Tue May 11 18:05:44 2004 +0000 * True parallel builds. Nix can now run as many build jobs in parallel as possible (similar to GNU Make's `-j' switch). This is useful on SMP systems, but it is especially useful for doing builds on multiple machines. The idea is that a large derivation is initiated on one master machine, which then distributes sub-derivations to any number of slave machines. This should not happen synchronously or in lock-step, so the master must be capable of dealing with multiple parallel build jobs. We now have the infrastructure to support this. TODO: substitutes are currently broken. commit aea436503e9126b06cd15acf1f0c6b738ffbc7de Author: Eelco Dolstra Date: Tue May 11 13:48:25 2004 +0000 * Ignore interrupt signals while handling an exception. * Ignore EINTR in reads and writes. commit a9858c9f26c5be743e0bbe1949954f6bd2497306 Author: Eelco Dolstra Date: Tue May 4 17:04:17 2004 +0000 * A test to verify that Nix executes build jobs in parallel, if possible. This test fails right now because this hasn't been implemented right now. Yes, I'm doing Test-Driven Development! ;-) commit f044ccf7025137ec541e165e7988772f27080a23 Author: Eelco Dolstra Date: Tue May 4 13:56:30 2004 +0000 * 1000th revision! * A test to verify that locking of output paths (caused by concurrent invocations of Nix) works correctly. commit a7bbe739717c7419a374b29e6e4887325b1af7fd Author: Eelco Dolstra Date: Tue May 4 13:22:33 2004 +0000 * Another test. commit ef093aac8f24535f6d0c75332ac7aeafbbe8c161 Author: Eelco Dolstra Date: Tue May 4 12:45:04 2004 +0000 * Grrr. TESTS are not included in EXTRA_DIST. commit 256eeab7112da2d5fe1629ffb8b86640a894ee6d Author: Eelco Dolstra Date: Tue May 4 12:15:30 2004 +0000 * Allow the location of the store etc. to be specified using environment variables. * Started adding some automatic tests. * Do a `make check' when building RPMs. commit fd927c5d25f1518dcbf99a57223f46fe098d9011 Author: Eelco Dolstra Date: Mon Apr 26 13:44:26 2004 +0000 * Bump the version number. commit 22371cbd3f382fd00e4f90bc88b28893d211b3f9 Author: Eelco Dolstra Date: Mon Apr 26 09:54:37 2004 +0000 * Fixed URL. commit bcce9c1ff5d5bfeb1d9c51554e432b6bef91ac97 Author: Eelco Dolstra Date: Mon Apr 26 09:52:06 2004 +0000 * Only add `-preRELEASE' to the version if STABLE != 1. * Documented release procedures. commit d4779abc042710638fb4afe419f83d4627c94004 Author: Eelco Dolstra Date: Fri Apr 23 15:16:08 2004 +0000 * Pass SYSTEM through config.h, and allow spaces. commit 759c953196c75b7728bb2d946227f1597b99a4a2 Author: Eelco Dolstra Date: Thu Apr 22 14:17:57 2004 +0000 * Look for GC roots in @localstatedir@/nix/gcroots. commit d7238bc84ebd8356db6d73a80171f1129bbe3d44 Author: Eelco Dolstra Date: Thu Apr 22 07:47:41 2004 +0000 * Don't create $(localstatedir)/nix/profiles if --disable-init-state is specified. commit b6df68c9429896ba6017f60d1ce3a95ede9afe72 Author: Eelco Dolstra Date: Wed Apr 21 14:57:46 2004 +0000 * Dist error. commit 21655a70f5a6e80b477d8bf758aa24eb0fcbdbfe Author: Eelco Dolstra Date: Wed Apr 21 14:54:05 2004 +0000 * Channels. These allow you to stay current with an evolving set of Nix expressions. To subscribe to a channel (needs to be done only once): nix-channel --add \ http://catamaran.labs.cs.uu.nl/dist/nix/channels/nixpkgs-unstable This just adds the given URL to ~/.nix-channels (which can also be edited manually). To update from all channels: nix-channel --update This fetches the latest expressions and pulls cache manifests. The default Nix expression (~/.nix-defexpr) is made to point to the conjunction of the expressions downloaded from all channels. So to update all installed derivations in the current user environment: nix-channel --update nix-env --upgrade '*' If you are really courageous, you can put this in a cronjob or something. You can subscribe to multiple channels. It is not entirely clear what happens when there are name clashes between derivations from different channels. From nix-env/main.cc it appears that the one with the lowest (highest?) hash will be used, which is pretty meaningless. commit f79e9c2d22345eeb0c721a8cf5375101d33dc4c9 Author: Eelco Dolstra Date: Wed Apr 21 10:54:46 2004 +0000 * Do initialise state (the DB etc.) when doing a `make install', unless `--disable-init-state' is passed to configure. commit 8e459d919dbce7c6d45d90ef9a9385133cfae15e Author: Eelco Dolstra Date: Wed Apr 21 09:37:37 2004 +0000 * Recurse into attribute sets and lists when getting derivations from an expression. commit 7cce0c34e1821b08c066a25e2cffcf0910d1f145 Author: Eelco Dolstra Date: Thu Apr 15 15:14:16 2004 +0000 * Allow extra parameters to be passed to Curl through the `CURL_FLAGS' environment variable. This is useful for passing authentication information (it won't show up in `ps'). Hacky - nix-push should abstract over the use of Curl. commit 2c5a8bf49f6ed5f6584bac6b8abae1def86f95f7 Author: Eelco Dolstra Date: Wed Apr 14 10:45:11 2004 +0000 * Use @storedir@, not @prefix@/store. commit b275f2ed3b2ae8fc22912122a5a4cdd5ef0fe0cd Author: Eelco Dolstra Date: Wed Apr 14 08:09:27 2004 +0000 * `*.gcroot' files can now containing multiple roots. commit a4d2b22c8ca5064f1da614914c7ea336eedd65c4 Author: Eelco Dolstra Date: Wed Apr 14 08:08:55 2004 +0000 * Be stricter in verifying store paths. commit 87bf541f23723f6a8c7f05c89984c5df0c450ec2 Author: Eelco Dolstra Date: Thu Apr 8 15:51:26 2004 +0000 * Documented the primops. commit b0c9baf1b5843acbb954d21bcb5cacc897236c3b Author: Eelco Dolstra Date: Thu Apr 8 13:31:57 2004 +0000 * EBNF grammar for the Nix expression language. commit 153429520a8d2ed906a272f6d0e23c6c2b54fa41 Author: Eelco Dolstra Date: Tue Apr 6 15:55:27 2004 +0000 * Distributed the wrong file. commit 2be8ac48bb4349bdd61e993ccf325a7b9e167627 Author: Eelco Dolstra Date: Tue Apr 6 11:42:28 2004 +0000 * Make the creation of user environments much faster and more storage efficient by creating only a single symlink to entire directory trees unless a collission occurs. commit bf3863b546dcb9bd62e86c0f17d8b12b2d08b874 Author: Eelco Dolstra Date: Tue Apr 6 08:40:19 2004 +0000 * Fail if prerequisites are missing. commit 03f1d1ecb5ef69c8c065c83373f9f9f749995c50 Author: Eelco Dolstra Date: Tue Apr 6 08:18:51 2004 +0000 * Switched from wget to curl. * Made the dependencies on bzip2 and the shell explicit. commit 59b94ee18ac0cba5c7b261ee72550a4d3db0acb5 Author: Eelco Dolstra Date: Mon Apr 5 22:27:41 2004 +0000 * When something goes wrong in the evaluation of a Nix expression, print a nice backtrace of the stack, rather than vomiting a gigantic (and useless) aterm on the screen. Example: error: while evaluating file `.../pkgs/system/test.nix': while evaluating attribute `subversion' at `.../pkgs/system/all-packages-generic.nix', line 533: while evaluating function at `.../pkgs/applications/version-management/subversion/default.nix', line 1: assertion failed at `.../pkgs/applications/version-management/subversion/default.nix', line 13 Since the Nix expression language is lazy, the trace may be misleading. The purpose is to provide a hint as to the location of the problem. commit a520b1cbc3327dfb8e3c6f503dfd0bd41e0a6d55 Author: Eelco Dolstra Date: Fri Apr 2 10:49:37 2004 +0000 * Print a more useful error message in case of an invalid derivation binding. commit c4ac2a164af1c4198852844ae4fcfb99c7e8c110 Author: Eelco Dolstra Date: Tue Mar 30 15:05:35 2004 +0000 * The recent change in nixpkgs of calling `stdenv.mkDerivation' instead of `derivation' triggered a huge slowdown in the Nix expression evaluator. Total execution time of `nix-env -qa' went up by a factor of 60 or so. This scalability problem was caused by expressions such as (x: y: ... x ...) a b where `a' is a large term (say, the one in `all-packages-generic.nix'). Then the first beta-reduction would produce (y: ... a ...) b by substituting `a' for `x'. The second beta-reduction would then substitute `b' for `y' into the body `... a ...', which is a large term due to `a', and thus causes a large traversal to be performed by substitute() in the second reduction. This is however entirely redundant, since `a' cannot contain free variables (since we never substitute below a weak head normal form). The solution is to wrap substituted terms into a `Closed' constructor, i.e., subst(subs, Var(x)) = Closed(e) iff subs[x] = e have substitution not descent into closed terms, subst(subs, Closed(x)) = Closed(x) and otherwise ignore them for evaluation, eval(Closed(x)) = eval(x). * Fix a typo that caused incorrect substitutions to be performed in simple lambdas, e.g., `(x: x: x) a' would reduce to `(x: a)'. commit df101d6fca1d60d4159056e87dd1b3d6c2855661 Author: Eelco Dolstra Date: Mon Mar 29 12:10:15 2004 +0000 * Specify Perl as a dependency for the RPM. commit ac4d39f9db28743b6c1e9def7a61241a50b02335 Author: Eelco Dolstra Date: Sun Mar 28 21:15:01 2004 +0000 * Added an operator `?' to test for attribute existence, e.g., `attrs ? x' yields true iff `attrs' has an attribute named `x'. commit f958bcdf1f9f66759a2512e4b7c0b0ba5647960a Author: Eelco Dolstra Date: Sun Mar 28 20:58:28 2004 +0000 * Added an operator `~' to select paths within a derivation. E.g., {stdenv, bash}: derivation { builder = bash ~ /bin/sh; args = ["-e" "-x" ./builder.sh]; ... } Here the attribute `builder' will evaluate to, e.g., `/nix/store/1234abcd...-bash-2.0.1/bin/sh'. commit db3e644c1ce7d856dbaca7718fa0af8231c486d2 Author: Eelco Dolstra Date: Sun Mar 28 20:34:22 2004 +0000 * Added plain lambdas, e.g., `let { id = x: x; const = x: y: x; }'. `bla:' is now no longer parsed as a URL. * Re-enabled support for the `args' attribute in derivations to specify command line arguments to the builder, e.g., ... builder = /usr/bin/python; args = ["-c" ./builder.py]; ... commit f8cd904e05b95c5a3ca7cf570c0503a25a2095ca Author: Eelco Dolstra Date: Sat Mar 27 17:58:04 2004 +0000 * Disallow the Nix store or any of its parents from being symlinks. This is because the contents of these symlinks are not incorporated into the hashes of derivations, and could therefore cause a mismatch between the build system and the target system. E.g., if `/nix/store' is a symlink to `/data/nix/store', then a builder could expand this path and store the result. If on the target system `/nix/store' is not a symlink, or is a symlink that points somewhere else, we have a dangling pointer. The trigger for this change is that gcc 3.3.3 does exactly that (it applies realpath() to some files, such as libraries, which causes our impurity checker to bail out.) An annoying side-effect of this change is that it makes it harder to move the Nix store to a different file system. On Linux, bind mounts can be used instead of symlink for this purpose (e.g., `mount -o bind /data/nix/store /nix/store'). commit f0f7a9f29962c55a6c2082b44c9befbd912c2f53 Author: Eelco Dolstra Date: Sat Mar 27 15:33:19 2004 +0000 * Do not close a nesting level twice after close() has been called explicitly on a Nest object. commit 7823db2137d8079bcf512aba4ce46f1373693517 Author: Eelco Dolstra Date: Mon Mar 22 21:42:28 2004 +0000 * Some more nesting. commit 777e13b94b2da466c16a5836b52413aa9d246cd5 Author: Eelco Dolstra Date: Mon Mar 22 20:53:49 2004 +0000 * Nix now has three different formats for the log information it writes to stderr: - `pretty': the old nested style (default) - `escapes': uses escape codes to indicate nesting and message level; can be processed using `log2xml' - `flat': just plain text, no nesting These can be set using `--log-type TYPE' or the NIX_LOG_TYPE environment variable. commit 79bb0008ec9afa8d8cee9e6b807a579bcb1c92ab Author: Eelco Dolstra Date: Fri Mar 19 14:45:45 2004 +0000 * `null' is a normal form. commit e6253b58cdb6b3836a616821b7f5dc66790ac989 Author: Eelco Dolstra Date: Thu Mar 18 21:32:15 2004 +0000 * Escape codes to force line breaks to be ignored. commit 3f3c4cce5a6552016a040999f64dc989d203a9ef Author: Eelco Dolstra Date: Thu Mar 18 21:04:14 2004 +0000 * Added an extra escape code to signal "unimportant" messages. If a tree only has unimportant messages, it is collapsed by the default. * Also added an optional integer argument to the escape code for opening a nesting level to indicate lack of importance. If set, the tree is collapsed by default. commit 84c617966b8a78b7385aff04f1ac9b3bb7391898 Author: Eelco Dolstra Date: Thu Mar 18 18:26:22 2004 +0000 * Collapsable trees. commit c2fc2c13c981e28ff673221da47cc93a7ed9291f Author: Eelco Dolstra Date: Thu Mar 18 14:58:16 2004 +0000 * Use unordered lists, which is more sensible semantically for representing tree structures. commit a784fd5792a5447ad2b7dac63bea2a0b2fc379c3 Author: Eelco Dolstra Date: Thu Mar 18 13:04:05 2004 +0000 * Don't use tables. Konqueror likes this much better. commit 8ce3dd488711d0eca43c64ccc04903eeba135836 Author: Eelco Dolstra Date: Wed Mar 17 16:55:53 2004 +0000 * Display the popup directly over the abbreviation. commit 8330c8202aa77ab65ce6344a45c5ecce287fd988 Author: Eelco Dolstra Date: Wed Mar 17 16:52:48 2004 +0000 * A simpler way of implementing the store reference popups, thanks to Martin and CSS guru Martijn Vermaat. commit b5539e7a30da963af3e5967e2af2524a5e99efbb Author: Eelco Dolstra Date: Tue Mar 16 12:47:09 2004 +0000 * Store paths are now abbreviated in the generated HTML file. Hovering over the abbreviated path will reveal the full path. This probably only works in Mozilla. commit 9d2669d218d03d64c69a702a96fc87ee1fd3a9d0 Author: Eelco Dolstra Date: Mon Mar 15 21:51:14 2004 +0000 * Added a utility that can be used to produce nice HTML pages from Nix build logs. The program `log2xml' converts a Nix build log (read from standard input) into XML file that can then be converted to XHTML by the `log2html.xsl' stylesheet. The CSS stylesheet `logfile.css' is necessary to make it look good. This is primarily useful if the log file has a *tree structure*, i.e., that sub-tasks such as the various phases of a build (unpack, configure, make, etc.) or recursive invocations of Make are represented as such. While a log file is in principle an unstructured plain text file, builders can communicate this tree structure to `log2xml' by using escape sequences: - "\e[p" starts a new nesting level; the first line following the escape code is the header; - "\e[q" ends the current nesting level. The generic builder in nixpkgs (not yet committed) uses this. It shouldn't be to hard to patch GNU Make to speak this protocol. Further improvements to the generated HTML pages are to allow collapsing/expanding of subtrees, and to abbreviate store paths (but to show the full path by hovering the mouse over it). commit beda10f5a2a69ac32ad91c8a80477fde19be6a83 Author: Eelco Dolstra Date: Mon Mar 15 15:23:53 2004 +0000 * Make perl a dependency of Nix. commit a5619f1dffbf3600dd16b51e84ae3c999edc439c Author: Eelco Dolstra Date: Fri Mar 12 10:45:08 2004 +0000 * Set the NIX_STORE and NIX_BUILD_TOP environment variables in builders to point to the store and the temporary build directory, respectively. Useful for purity checking. * Also set TEMPDIR, TMPDIR, TEMP, and TEMP to NIX_BUILD_TOP to make sure that tools in the builder store temporary files in the right location. commit 7f0ed370da62b867d90ba5346f4b9f217fbbe10f Author: Eelco Dolstra Date: Fri Feb 20 11:32:30 2004 +0000 * Use $(storedir) instead of $(prefix)/store. commit dbf547645d26baee030d7db0535e0c0be72c13cc Author: Eelco Dolstra Date: Thu Feb 19 13:11:12 2004 +0000 * Resolve an ambiguity between ifs and attribute selection, e.g., `if b then x else y.z'. commit 86b7efbdbe3c2da0f788df3ee7839cf3b88f7120 Author: Eelco Dolstra Date: Mon Feb 16 16:48:06 2004 +0000 * Don't build ATerm library if we don't need to. commit 0dfdafdf6de4f741ff60637843f0e7900384cd9f Author: Eelco Dolstra Date: Mon Feb 16 16:37:16 2004 +0000 * Allow linking against an external Berkeley DB / ATerm library. commit f34de121401bb43c6cfab892b2b254e42652ba90 Author: Eelco Dolstra Date: Mon Feb 16 15:23:19 2004 +0000 * Allow the location of the store to be specified (--with-store-dir). * Do not create stuff in localstatedir when doing `make install' (since we may not have write access). In general, installation of constant code/data should be separate from the initialisation of mutable state. commit fbc48a469c80201f0d159a9b9f48a22ce5f36984 Author: Eelco Dolstra Date: Mon Feb 16 09:18:35 2004 +0000 * Inherited attributes in recursive attribute sets are in scope of the non-inherited attributes. commit 76c0e85929dc747288a8fe66a7bb77673cf2aa7e Author: Eelco Dolstra Date: Sat Feb 14 21:44:18 2004 +0000 * The environment variable NIX_ROOT can now be set to execute Nix in a chroot() environment. * A operation `--validpath' to register path validity. Useful for bootstrapping in a pure Nix environment. * Safety checks: ensure that files involved in store operations are in the store. commit 6f5a5ea5ea7fa80bc709c4a2b14ea4395ebe7469 Author: Eelco Dolstra Date: Fri Feb 13 10:45:09 2004 +0000 * Regression fix: realise substitutes and detect cycles. commit 1ad9d1124727dd48beaec36b006bba856350905d Author: Eelco Dolstra Date: Fri Feb 13 10:43:31 2004 +0000 * Only include predecessors that are themselves being pushed. Otherwise the substitute mechanism can break in subtle ways. commit 00fe1a506f045e612b0564ab0b5aff3917e26bd3 Author: Eelco Dolstra Date: Wed Feb 11 10:25:31 2004 +0000 * When creating a new generation, also make the normal form of the derivation (i.e., the closure store expression) a root of the garbage collector. This ensures that running `nix-collect-garbage --no-successors' is safe. commit 92e832348db13637875c4f529ed0aa83d3d34493 Author: Eelco Dolstra Date: Tue Feb 10 16:14:47 2004 +0000 * Lots of manual stuff. Reference pages for most Nix commands. * nix-pull now requires the full url to the manifest, i.e., `/MANIFEST/' is no longer automatically appended. * nix-prefetch-url works again. commit 6551b36790d47477087fc3a7f7bb779f28e42d8e Author: Eelco Dolstra Date: Tue Feb 10 13:42:58 2004 +0000 * Print what generation we are switching to; honour --dry-run flag. commit 0616b7feea26786c298052b0779614b2888b482a Author: Eelco Dolstra Date: Tue Feb 10 11:51:16 2004 +0000 * Documented the most important nix-env flags. commit 618aa69b015bd3ee1f6e19f3025e31fae0241826 Author: Eelco Dolstra Date: Mon Feb 9 11:59:39 2004 +0000 * In `--upgrade': added flags `--lt', `--leq', `--always' to specify whether we want to upgrade if the current version is less than the available version (default), when it is less or equal, or always. * Added a flag `--dry-run' to show what would happen in `--install', `--uninstall', and `--upgrade', without actually performing the operation. commit 06a75a7e0c1813d90c205e654da43a32812ce5f4 Author: Eelco Dolstra Date: Sun Feb 8 14:07:43 2004 +0000 * A command `--switch-generation' to switch to a specific generation of the current profile, e.g., $ nix-env --list-generations ... 39 2004-02-02 17:53:53 40 2004-02-02 17:55:18 41 2004-02-02 17:55:41 42 2004-02-02 17:55:50 (current) $ nix-env --switch-generation 39 $ ls -l /nix/var/nix/profiles/default ... default -> default-39-link * Also a command `--rollback' which is just a convenience operation to rollback to the oldest generation younger than the current one. Note that generations properly form a tree. E.g., if after switching to generation 39, we perform an installation action, a generation 43 is created which is a descendant of 39, not 42. So a rollback from 43 ought to go back to 39. This is not currently implemented; generations form a linear sequence. commit b8675aee5470c5387e4bfe4906e4ab1e94b610b2 Author: Eelco Dolstra Date: Fri Feb 6 16:16:55 2004 +0000 * In `--list-generations', show what the current generation is. commit 73ab2ed4fd1c3cd974851be4f13e7a276ab16acf Author: Eelco Dolstra Date: Fri Feb 6 16:03:27 2004 +0000 * A command `--list-generations' to show all generations for a profile. commit 7c0fa4474f0010f8266b85e891ca6049595ecb32 Author: Eelco Dolstra Date: Fri Feb 6 14:57:10 2004 +0000 * More refactoring. commit 7abf9911d997b241f1e6b58805140fbfe1f2771d Author: Eelco Dolstra Date: Fri Feb 6 14:49:41 2004 +0000 * Refactoring. commit 49bafe1faf4eedf0f059740be4f99c700ee93fe7 Author: Eelco Dolstra Date: Fri Feb 6 10:59:06 2004 +0000 * Use the profile pointed to by ~/.nix-profile if no --profile argument is specified. commit 66e94d3275e9a0a549c28b7d0ad5f3f897e2fbf0 Author: Eelco Dolstra Date: Fri Feb 6 10:30:20 2004 +0000 * Improvements to profiles. Generations are now per-profile, e.g., default -> default-94-link default-82-link -> /nix/store/cc4480... default-83-link -> /nix/store/caeec8... ... default-94-link -> /nix/store/2896ca... experimental -> experimental-2-link experimental-1-link -> /nix/store/cc4480... experimental-2-link -> /nix/store/a3148f... * `--profile' / `-p' -> `--switch-profile' / `-S' * `--link' / `-l' -> `--profile' / `-p' * The default profile is stored in $prefix/var/nix/profiles. $prefix/var/nix/links is gone. Profiles can be stored anywhere. * The current profile is now referenced from ~/.nix-profile, not ~/.nix-userenv. * The roots to the garbage collector now have extension `.gcroot', not `.id'. commit d445da7a7b3cbb4822bcad3904a36f0d914917d3 Author: Eelco Dolstra Date: Wed Feb 4 17:23:26 2004 +0000 * Extended the `inherit' syntax to optionally select attributes from other attribute sets, rather than the current scope. E.g., {inherit (pkgs) gcc binutils;} is equivalent to {gcc = pkgs.gcc; binutils = pkgs.binutils;} I am not so happy about the syntax. commit 9d25466b34a5f7c1c8b1c273976cf59c33961a6c Author: Eelco Dolstra Date: Wed Feb 4 16:49:51 2004 +0000 * An attribute set update operator (//). E.g., {x=1; y=2; z=3;} // {y=4;} => {x=1; y=4; z=3;} commit 6d46e647ba16e19100dcd0abda9ca5a81ccf764f Author: Eelco Dolstra Date: Wed Feb 4 16:20:51 2004 +0000 * Fixed the old envpkgs filename. commit 9b44480612dd30a7292ec94a88e4018b8f18e3f0 Author: Eelco Dolstra Date: Wed Feb 4 16:03:29 2004 +0000 * Use a map to lookup primops. * Various performance improvements in the evaluator. * Do not link against unused (and missing!) libraries (-lsglr, etc.). commit c4f7ae4aa5fc7071cfa853ec5d75aaf00e7a97fc Author: Eelco Dolstra Date: Tue Feb 3 14:45:34 2004 +0000 * Verify that all variables in a Nix expression are defined. commit 1c9c0a5a46822be60c999f0196567c9e17cf5fa3 Author: Eelco Dolstra Date: Mon Feb 2 21:39:33 2004 +0000 * Added syntactic sugar to the construction of attribute sets to `inherit' variables from the surrounding lexical scope. E.g., {stdenv, libfoo}: derivation { builder = ./bla; inherit stdenv libfoo; xyzzy = 1; } is equivalent to {stdenv, libfoo}: derivation { builder = ./bla; stdenv = stdenv; libfoo = libfoo; xyzzy = 1; } Note that for mutually recursive attribute set definitions (`rec {...}'), this also works, that is, `rec {inherit x;}' is equivalent to `let {fresh = x; body = rec {x = fresh;};}', *not* `rec {x = x}'. commit d9f30fe7c74ae8518a575c0d15ee00aa46a2229a Author: Eelco Dolstra Date: Mon Feb 2 10:51:54 2004 +0000 * Sort `nix-env -q' output by derivation name. * `--version' flag for all commands. * Manual updates. commit 47c003cb5999344aa2e4cb9f912551e33a94cd41 Author: Eelco Dolstra Date: Fri Jan 30 17:14:08 2004 +0000 * Doh! commit 619f20775dae99ad5cd04ff6e7f7cde693d912f0 Author: Eelco Dolstra Date: Fri Jan 30 17:06:03 2004 +0000 * Parser numbers again. * Include missing files in distributions. commit c6257185139bf5f298b19177867f3afa8e5472b7 Author: Eelco Dolstra Date: Fri Jan 30 16:32:14 2004 +0000 * Detect flex and bison; updated the manual. commit c5baaafae69394082817ede9e6eb3910c4601a72 Author: Eelco Dolstra Date: Fri Jan 30 15:21:42 2004 +0000 * Replaced the SDF parser by a substantially faster Bison/Flex parser (roughly 80x faster). The absolutely latest version of Bison (1.875c) is required for reentrant GLR support, as well as a recent version of Flex (say, 2.5.31). Note that most Unix distributions ship with the prehistoric Flex 2.5.4, which doesn't support reentrancy. commit abd1878b26200ba3fa75592637aa87e04f52100d Author: Eelco Dolstra Date: Thu Jan 29 14:24:53 2004 +0000 * Optimised the SDF grammar. commit 3648d1c732379ef5d0f74cc3c2e5b876a7f2c9a2 Author: Eelco Dolstra Date: Thu Jan 22 13:04:57 2004 +0000 * Explicitly compute the release name. commit cdb50886f40e879d7b9abcfdd3ff4ac9d66f6242 Author: Eelco Dolstra Date: Thu Jan 22 09:35:35 2004 +0000 * Typos. commit 3c4bc7276a4599867c46e872858550499a94c641 Author: Eelco Dolstra Date: Thu Jan 22 09:17:55 2004 +0000 * Added a note about adding /nix/etc/profile.d/nix.sh to the profile. commit 4f72b408a5b0cf4401362960000763322eeb1846 Author: Martin Bravenboer Date: Thu Jan 22 08:47:59 2004 +0000 Typos and url losser -> catamaran commit 840551ebdb6ca09ab733081dd0e92daee73ba900 Author: Eelco Dolstra Date: Wed Jan 21 16:41:17 2004 +0000 * Extra bit `S' in `--query --status' output: show whether there are any substitutes for the derivation. commit 1109ea068097d4c5e3a4dfdeececf4590c52329a Author: Eelco Dolstra Date: Wed Jan 21 14:49:32 2004 +0000 * Fixed a subtle uninitialised variable bug in ATermMaps copied from ATermMaps. Found thanks to Valgrind! commit 47f19b6293357a8bdc3a2290813765170f241b58 Author: Eelco Dolstra Date: Tue Jan 20 20:36:58 2004 +0000 * Absolutise the specified path in `--import' and `--profile'. commit 4db7ef3fcc7c392dc03fc02a22886a8c9bcbcacb Author: Eelco Dolstra Date: Tue Jan 20 17:18:41 2004 +0000 * Fixed URL. commit 3778586b2aaf2b5c905866d91d6f67e617ceb203 Author: Eelco Dolstra Date: Tue Jan 20 15:37:55 2004 +0000 * Nix Quick Start guide. commit 8baf50f10821e6def3006af8ff8b8739c66b028a Author: Eelco Dolstra Date: Tue Jan 20 11:49:32 2004 +0000 * Manual updates. * Updated the README. Now it just refers to the manual. commit 699989b2168bed80cc1383e5bf3c8326d55a3cc1 Author: Eelco Dolstra Date: Mon Jan 19 09:01:28 2004 +0000 * Ignore exit code from strip. commit 3a4a4aaa8820e3483b64b3e2d25ee523c0a0cb44 Author: Eelco Dolstra Date: Mon Jan 19 08:49:25 2004 +0000 * Strip binaries in RPMs. commit f899e8ce4df3e700ae5b47279c16edc0efb4aeed Author: Eelco Dolstra Date: Fri Jan 16 15:17:36 2004 +0000 * Test whether the symlink, not its target, exists. commit b1c5f3c10dbcbbb9469ba7147bb26acf6a9aa733 Author: Eelco Dolstra Date: Fri Jan 16 14:54:39 2004 +0000 * Doh! Edited `readmanifest.pm' instead of `readmanifest.pm.in'. commit 291030b900ffe5b9934729a3dce9b73c4effe715 Author: Eelco Dolstra Date: Thu Jan 15 20:58:44 2004 +0000 * Remove debug message. commit 447089a5f699f085661287dec4b3d88219f67068 Author: Eelco Dolstra Date: Thu Jan 15 20:23:55 2004 +0000 * Catch SIGINT to terminate cleanly when the user tries to interrupt Nix. This is to prevent Berkeley DB from becoming wedged. Unfortunately it is not possible to throw C++ exceptions from a signal handler. In fact, you can't do much of anything except change variables of type `volatile sig_atomic_t'. So we set an interrupt flag in the signal handler and check it at various strategic locations in the code (by calling checkInterrupt()). Since this is unlikely to cover all cases (e.g., (semi-)infinite loops), sometimes SIGTERM may now be required to kill Nix. commit 08719c6c97e25fb362eeb7463d8b764ecefc53cb Author: Eelco Dolstra Date: Thu Jan 15 20:13:54 2004 +0000 * Obsolete. commit 55e11bc0d3e3c440503ee71d21c3ef5e34431cbb Author: Eelco Dolstra Date: Thu Jan 15 14:43:00 2004 +0000 * In `nix-env --query --status', determine the `I' bit by looking at the output path of a derivation, not the path of its store expression. This ensures that changes that affect the path of the store expression but not the output path, do not affect the `installed' state of a derivation. commit 9a404e45c9e8257e2d353d569e189a4b003159b5 Author: Eelco Dolstra Date: Wed Jan 14 14:20:33 2004 +0000 * Synchronous `nix-pull' with `nix-push'. * Use curl instead of wget. commit 16f9b133ec8c1fc6226d486e5170dd3a43aa35a7 Author: Eelco Dolstra Date: Wed Jan 14 11:13:08 2004 +0000 * Improved `nix-push': it now uses HTTP PUT (instead of rsync) to copy files. Target location is no longer hard-coded; it accepts a number of URLs on the command line. * `nix-install-package': compatibility fixes. commit ff9af107d3aa1362af906972c490773eeaaad4b5 Author: Eelco Dolstra Date: Tue Jan 13 16:35:43 2004 +0000 * Option `-B' to always show the output of builders, regardless of verbosity level. commit 3495d153b317a0853abd7114f29b44517f7c3813 Author: Eelco Dolstra Date: Tue Jan 13 13:37:25 2004 +0000 * Periodically checkpoint the log. commit 698e880c9f03b3aaade13897de3498a5915ea8fd Author: Eelco Dolstra Date: Tue Jan 13 12:36:43 2004 +0000 * Tricky: make sure that the accessor count is not reset to 0 if recovery fails. commit 23fbc72f5d65725dd1804efe695aaa84580a8637 Author: Eelco Dolstra Date: Tue Jan 13 11:53:12 2004 +0000 * Print error messages, not debug messages. commit 4c4fe7a114968a9c7accd86499f029314530f44c Author: Eelco Dolstra Date: Mon Jan 12 10:44:48 2004 +0000 * Changed the extension for store expressions from ".nix" to ".store" (following the Usenix paper). commit 46a71c857c617b5acbf3d1fdb8fb7e676a4881a2 Author: Eelco Dolstra Date: Fri Jan 9 14:18:28 2004 +0000 * Option `--force-realise' in `nix-store --query'. commit 30b31a8f6190dad40ca972b445420e10f47a9afc Author: Eelco Dolstra Date: Thu Jan 8 16:56:40 2004 +0000 * Start of nix-env reference. * Some CSS tweaks. commit b5942155314ea4b479fabde6ce236866f5ef4b97 Author: Eelco Dolstra Date: Thu Jan 8 15:01:37 2004 +0000 * Manual updates. commit 5346536b626a047d53f9c44d6562cfaeffe27f14 Author: Eelco Dolstra Date: Thu Jan 8 10:45:23 2004 +0000 * Include version number in manual. commit 7959354379416bd8513cb00e636c0310e42eaa01 Author: Eelco Dolstra Date: Wed Jan 7 15:53:14 2004 +0000 * Upgraded to Berkeley DB 4.2.52. The main advantage of 4.2 is that it automatically removes log files when they are no longer needed. *** IMPORTANT *** If you have an existing Nix installation, you must checkpoint the Nix database to prevent recent transactions from being undone. Do the following: - optional: make a backup of $prefix/var/nix/db. - run `db_checkpoint' from Berkeley DB 4.1: $ db_checkpoint -h $prefix/var/nix/db -1 - optional (?): run `db_recover' from Berkeley DB 4.1: $ db_recover -h $prefix/var/nix/db - remove $prefix/var/nix/db/log* and $prefix/var/nix/db/__db* commit abe8c8c2aa24646955b78cd2c826483d8d8a1149 Author: Eelco Dolstra Date: Wed Jan 7 10:59:38 2004 +0000 * Include images/ in distribution. commit 1ff986d51a4fc7f77a80f5c23351f9d2cbb26550 Author: Eelco Dolstra Date: Tue Jan 6 16:38:32 2004 +0000 * book -> manual commit 2f0b93904bf88e9d2bf9d623b35991dd6dd0c521 Author: Eelco Dolstra Date: Tue Jan 6 16:35:07 2004 +0000 * Install images. commit 4a373a3e9ac07a2d4c43d495c0a44883106ecfde Author: Eelco Dolstra Date: Mon Jan 5 16:26:43 2004 +0000 * Implemented Eelco V.'s `nix-env -I' command to specify the default path of the Nix expression to be used with the import, upgrade, and query commands. For instance, $ nix-env -I ~/nixpkgs/pkgs/system/i686-linux.nix $ nix-env --query --available [aka -qa] sylpheed-0.9.7 bison-1.875 pango-1.2.5 subversion-0.35.1 ... $ nix-env -i sylpheed $ nix-env -u subversion There can be only one default at a time. * If the path to a Nix expression is a symlink, follow the symlink prior to resolving relative path references in the expression. commit f83c5e3e5f3e6b33c095d6559a4b3cd5922e88ce Author: Eelco Dolstra Date: Mon Jan 5 11:18:59 2004 +0000 * Implemented Eelco V.'s `-p' command to switch profiles. It switches the symlink ~/.nix-userenv to the given argument (which defaults to .../links/current). /etc/profile.d/nix-profile creates this symlink if it doesn't exist yet. Example use: $ nix-env -l my_profile -i foo.nix subversion quake $ nix-env -p my_profile I don't like the term "profile". Let's deprecate it :-) commit 0e68af0ce380b09c14ff36084499c0d8a6590b25 Author: Eelco Dolstra Date: Fri Jan 2 16:09:59 2004 +0000 * RPM sucks. commit 9ff365709541b8f50fddcf667ded07a5b9f774de Author: Eelco Dolstra Date: Fri Jan 2 16:04:53 2004 +0000 * Generate RPM spec file. commit 0e09cc12c08ad2db0b8620ca537bd81ca45c05df Author: Eelco Dolstra Date: Fri Jan 2 14:58:25 2004 +0000 * Add $prefix/store to the RPM. * Allow extra flags to be passed to RPM. commit 94175e978a87a79f3362879898dc1cf7d08d7791 Author: Eelco Dolstra Date: Tue Dec 30 20:09:00 2003 +0000 * RPM spec file. * Respect DESTDIR variable. commit 68f2fadb788f8d401fad6fd1db1cfac283e5e337 Author: Eelco Dolstra Date: Tue Dec 23 22:15:12 2003 +0000 * nix-pull requires libexecdir to be substituted. commit 392b7e0f8ecd50f98017021253386714f0771752 Author: Eelco Dolstra Date: Tue Dec 23 22:13:36 2003 +0000 * Fixed a bug in the upgrade operation. commit 833f2fc92da8d31c62eb35dae8b3861829a1383a Author: Eelco Dolstra Date: Mon Dec 22 16:40:46 2003 +0000 * GCC 2.95 compatibility. commit cf0287c09e8b5816c65dd265c4ef167865d70172 Author: Eelco Dolstra Date: Mon Dec 22 16:04:00 2003 +0000 * Upgrade operation in `nix-env'. For instance, you can say nix-env -u foo.nix strategoxt to replace the installed `strategoxt' derivation with the one from `foo.nix', if the latter has a higher version number. This is a no-op if `strategoxt' is not installed. Wildcards are also accepted, so nix-env -u foo.nix '*' will replace any installed derivation with newer versions from `foo.nix', if available. The notion of "version number" is somewhat ad hoc, but should be useful in most cases, as evidenced by the following unit tests for the version comparator: TEST("1.0", "2.3", -1); TEST("2.1", "2.3", -1); TEST("2.3", "2.3", 0); TEST("2.5", "2.3", 1); TEST("3.1", "2.3", 1); TEST("2.3.1", "2.3", 1); TEST("2.3.1", "2.3a", 1); TEST("2.3pre1", "2.3", -1); TEST("2.3pre3", "2.3pre12", -1); TEST("2.3a", "2.3c", -1); TEST("2.3pre1", "2.3c", -1); TEST("2.3pre1", "2.3q", -1); (-1 = less, 0 = equal, 1 = greater) * A new verbosity level `lvlInfo', between `lvlError' and `lvlTalkative'. This is the default for `nix-env', so without any `-v' flags users should get useful output, e.g., $ nix-env -u foo.nix strategoxt upgrading `strategoxt-0.9.2' to `strategoxt-0.9.3' commit f3c978384698a0b9b0f5dee41f98e6208f269347 Author: Eelco Dolstra Date: Sun Dec 21 23:58:56 2003 +0000 * Version numbers can be omitted in install/uninstall. E.g., nix-env -i foo.nix subversion The version number part of a derivation name is defined as everything following the first dash not followed by a letter. commit a81b621202844f58ae7202e592324f1232107810 Author: Eelco Dolstra Date: Sun Dec 21 22:34:41 2003 +0000 * `-u' -> `-e'. * `--link' / `-l' flag to specify the switch symlink to use (by default, /nix/var/nix/links/current). commit 0a753e182aa0f50ea7062f2d9e02306b34266e37 Author: Eelco Dolstra Date: Sun Dec 21 22:02:58 2003 +0000 * Oops. commit df7a718786c83e1eca908864820bb05ab964c451 Author: Eelco Dolstra Date: Sun Dec 21 21:57:09 2003 +0000 * Man pages in sections. commit 397c8ba898a522512ea56a3d2ae78dedda01bd77 Author: Eelco Dolstra Date: Sun Dec 21 21:56:54 2003 +0000 * Missing semicolons. commit 528f1d1867de8b653eed516f8448096d7d138978 Author: Eelco Dolstra Date: Sun Dec 21 17:09:16 2003 +0000 * Bug fix: parallel builds of the same derivation failed due to lock file removal. commit 06c5a7075d85636ba1fedce1fc5b131cdcffd5f8 Author: Eelco Dolstra Date: Fri Dec 5 11:25:38 2003 +0000 * Refactoring: put the manifest-reading code in a separate file. commit cff6fd22ebfbfdbbda9b30c68cb61e25db718147 Author: Eelco Dolstra Date: Fri Dec 5 11:05:19 2003 +0000 * Allow successors that don't exist but have a substitute. * Integrity: check in successor / substitute registration whether the target path exists or has a substitute. commit feaab52203a51a4abec23f5d878f6f4dea29dcd5 Author: Martin Bravenboer Date: Thu Dec 4 14:38:31 2003 +0000 * Fix for too long command lines when calling `nix-store --register-[substitutes|successors]. commit 00d4f907e1b9bfab0c51a4459d5f0e6a105fc1d7 Author: Eelco Dolstra Date: Wed Dec 3 09:33:03 2003 +0000 * Get rid of the icons in warnings etc. commit 31fd72ee1722e10dac4e3f4f55f8270ffd1ba22d Author: Eelco Dolstra Date: Tue Dec 2 16:29:41 2003 +0000 * Epigraph ;-) commit 16d971bce70a2b3aab1d3c60101e00f264159c07 Author: Eelco Dolstra Date: Tue Dec 2 15:36:49 2003 +0000 * A nice stylesheet for the manual. commit 0d3a1a8582a7b0120e35c507165db6d02ceea258 Author: Eelco Dolstra Date: Tue Dec 2 12:37:37 2003 +0000 * Add missing files to `make dist'. commit 0c804c677543350a2f80206a4f47adc9b7d460e3 Author: Eelco Dolstra Date: Tue Dec 2 10:21:40 2003 +0000 * Regression fix: query flags (e.g., "-qsf") were broken. commit a3ca74a1c34d68c94fb3c723fb75f3f27f81e2a9 Author: Eelco Dolstra Date: Mon Dec 1 16:34:35 2003 +0000 * Bug fix in nix-push. commit 078e20885e0805e04669f9b334a516a6d8d12763 Author: Eelco Dolstra Date: Mon Dec 1 15:55:05 2003 +0000 * Help text for all (non-script) programs, so no more: $ nix-instantiate --help error: unknown flag `--help` Try `nix-instantiate --help' for more information. :-) commit 905d5b91fa6fa64e549f9019f9fab4150f00c13a Author: Eelco Dolstra Date: Mon Dec 1 14:52:51 2003 +0000 * Manual fixes (thanks to Merijn). commit 83ffd4f282ea78c77c69f6b0719daa87fdc20efc Author: Eelco Dolstra Date: Mon Dec 1 14:40:24 2003 +0000 * Fix `make check'. commit 5d2b424804ec93567ddf15639f84c4098d80f659 Author: Eelco Dolstra Date: Mon Dec 1 14:36:50 2003 +0000 * Use a system name that does not include the OS manufacturer (i.e., "i686-linux" instead of "i686-suse-linux"). commit dc05f29cf6e1c5ee557441951116ee3fb35e0e00 Author: Eelco Dolstra Date: Thu Nov 27 14:58:32 2003 +0000 * Manual updates. commit 7b0e29b4dc42946b64fc3d616caa33ae442d94c6 Author: Eelco Dolstra Date: Wed Nov 26 16:09:27 2003 +0000 * Overview of nix-env. Recommended reading. :-) commit 62d9b31d0a86fc0fc5b198e4d46722573432918c Author: Eelco Dolstra Date: Wed Nov 26 14:25:39 2003 +0000 * Updates. commit f6a30ab264506ca966180666dff45310d176659d Author: Eelco Dolstra Date: Wed Nov 26 12:30:16 2003 +0000 * Updates. commit 2a4bac5459f42764b39ac70f906f5dd3330a3ac5 Author: Eelco Dolstra Date: Wed Nov 26 11:24:13 2003 +0000 * Refactoring. * Convert tabs to spaces. commit bd0ce1a4be6612cf53d9d31f1cbe1b25085ccf75 Author: Eelco Dolstra Date: Wed Nov 26 10:47:54 2003 +0000 * Minor fix. commit 80f8c38384605f99ac43bdd3ae637e72996ca2da Author: Eelco Dolstra Date: Wed Nov 26 10:41:59 2003 +0000 * Typo fix. commit c38ba181ede6b46f28d5a70bf0243bcd003f943b Author: Eelco Dolstra Date: Wed Nov 26 10:41:21 2003 +0000 * Configure flags to specify the location of the DocBook DTD / stylesheets. commit 4da9316c8fa576cad77bf398785765e165f6865c Author: Eelco Dolstra Date: Tue Nov 25 16:49:23 2003 +0000 * Use svn-revision to construct package version. commit 6d5877ea122f1d8aede4f9b9d2ac247d1b896093 Author: Eelco Dolstra Date: Tue Nov 25 13:43:48 2003 +0000 * Use --nonet flag to prevent fetching of DTD. commit 12e805cfb032e403e4dd6f410b7e3f24bbc89a98 Author: Eelco Dolstra Date: Tue Nov 25 13:06:12 2003 +0000 * Don't hardcode the path to the DocBook DTD/stylesheets. commit ba73f94b3bba9c19726443556b0124fe63dccee6 Author: Eelco Dolstra Date: Tue Nov 25 13:03:48 2003 +0000 * Another fix. commit 66c115ef5faabb1bcd47ac0d375aeee39b300c43 Author: Eelco Dolstra Date: Tue Nov 25 13:01:21 2003 +0000 * More `make dist' fixes. commit c3ee8c9166e32031a61c397594be4aef127862d4 Author: Eelco Dolstra Date: Tue Nov 25 12:35:52 2003 +0000 * `make dist' fix. commit 6e8c19714af00b8340eea6eecf1c38fc6b09f6de Author: Eelco Dolstra Date: Tue Nov 25 12:05:48 2003 +0000 * Allow integer bindings in derivations. commit d1d87badf6d07c9d319c555593be5c6d0bd08bb4 Author: Eelco Dolstra Date: Mon Nov 24 16:38:46 2003 +0000 * Bug fix. Hmm, I thought I'd fixed this before :-| commit 604c45e960f27be9e26e44dbc85fa0f00a097670 Author: Eelco Dolstra Date: Mon Nov 24 12:10:16 2003 +0000 * Autoconf sucks. commit e7ea52d3b336e6336c801eb8f868c0b8dd464910 Author: Eelco Dolstra Date: Mon Nov 24 11:11:40 2003 +0000 * One-click installation :-) The script nix-install-package takes a `Nix package file' (which contains one or more derivations, along with URLs of Nix caches), unpacks it, pulls the caches, and installs the derivations in the user's environment. For best results, associate the command `xterm -e /nix/bin/nix-install-package' with the MIME type `application/x-nix-package' and visit http://losser.st-lab.cs.uu.nl/~eelco/test/. commit b8572678930568efcf0b44523e6a2a65afef7c43 Author: Eelco Dolstra Date: Mon Nov 24 11:01:19 2003 +0000 * Allow the top-level expression to be a derivation. * Hack: `nix-env -i *' installs all available derivations. commit 496934a99ce509ac94a99a938d7d79d1b38461ef Author: Eelco Dolstra Date: Mon Nov 24 09:25:08 2003 +0000 * Fix nix-pull. commit c9cb1fa21f4454a214f4cd62aef2ccc35a8f89af Author: Eelco Dolstra Date: Mon Nov 24 09:24:52 2003 +0000 * Bug fix in path invalidation. * More consistency checks. commit 60e86b124f09763b1f0f55fc4c635a255bd028d2 Author: Eelco Dolstra Date: Mon Nov 24 08:20:49 2003 +0000 * Get rid of tab characters. commit af7e6fe22e8db606eb92c044140c00e6d8fe61cc Author: Eelco Dolstra Date: Sat Nov 22 21:12:36 2003 +0000 * Don't use a hard-coded path. commit 9486dda1152d18b502fc31ff1d6aed4eba6f2fe3 Author: Eelco Dolstra Date: Sat Nov 22 20:39:51 2003 +0000 * Fix nix-push. commit ab0bc4999a49efbc8e1c25989662a96e32fa0cc5 Author: Eelco Dolstra Date: Sat Nov 22 18:45:56 2003 +0000 * Maintain integrity of the substitute and successor mappings when deleting a path in the store. * Allow absolute paths in Nix expressions. * Get nix-prefetch-url to work again. * Various other fixes. commit 40d9eb14dfb842c51e9f86818b43ae7711e1a5d6 Author: Eelco Dolstra Date: Sat Nov 22 15:58:34 2003 +0000 * Fix the garbage collector. commit 7a02d954186d6ba1ea41d9917d63f9fab84736b3 Author: Eelco Dolstra Date: Fri Nov 21 16:05:19 2003 +0000 * Remove lock files after building. commit 06208d1d8677eaea1fb56dd09832f43154bbab5d Author: Eelco Dolstra Date: Fri Nov 21 14:23:18 2003 +0000 * Uninstallation. commit 2e9042bd1e7e3a322f072f0bf98510698afa626a Author: Eelco Dolstra Date: Thu Nov 20 13:48:48 2003 +0000 * Uninstall command (doesn't work yet). commit e0b5a492f537cacee7eadc47f44817908a0ab05a Author: Eelco Dolstra Date: Wed Nov 19 21:32:03 2003 +0000 * Installation: add the previously installed packages. Switch to the new configuration. * Status queries. commit 9898746ef3732979bf30e9048021b6232ddf15ac Author: Eelco Dolstra Date: Wed Nov 19 17:27:16 2003 +0000 * nix-env: a tool to manage user environments. * Replace all directory reading code by a generic readDirectory() function. commit fd7ac09f1073179d9ac439c3e9fb12a1bf00a7d5 Author: Eelco Dolstra Date: Wed Nov 19 12:03:01 2003 +0000 * Refactoring (step 2). commit ac68840e79ce74f05ee8b31bb1d528c98b9c7f76 Author: Eelco Dolstra Date: Wed Nov 19 11:35:41 2003 +0000 * Refactoring: put the Nix expression evaluator in its own library so that it can be used by multiple programs. commit 2be8b5917a8040fac72e7970e94bbb436e8c35d6 Author: Eelco Dolstra Date: Wed Nov 19 10:04:03 2003 +0000 * Use `sdftable -s' to get warnings about the grammar. * Several bug fixes in the grammar. * Allow one-line comments (#... and //...) to end in EOF. commit 38946e1378d50cf2921c509635e2119216fc9b0c Author: Eelco Dolstra Date: Tue Nov 18 12:07:39 2003 +0000 * Forgot this one. commit dfc9c64ead7f24d51ed1a232e4b3ecafa8384f2e Author: Eelco Dolstra Date: Tue Nov 18 12:06:07 2003 +0000 * "Fix expression" -> "Nix expression". * More refactoring. commit b1117ef29d35822647bda32f8cd3887f4f6eaede Author: Eelco Dolstra Date: Tue Nov 18 11:38:25 2003 +0000 * nix -> nix-store, fix -> nix-instantiate. commit ce92d1bf1434562f5b80320c503768c4d06f1f8d Author: Eelco Dolstra Date: Tue Nov 18 11:22:29 2003 +0000 * "Nix expression" -> "store expression". * More refactoring. commit 9f0f020929c9e093405cc6193d2f227cab763912 Author: Eelco Dolstra Date: Tue Nov 18 10:55:27 2003 +0000 * libnix -> libstore. commit 8798fae30450a88c339c8f23d7e0c75f5df2ef1c Author: Eelco Dolstra Date: Tue Nov 18 10:47:59 2003 +0000 * Source tree refactoring. commit 45610ae675f6f8d6ecbd48c495cb7012b143d531 Author: Eelco Dolstra Date: Sun Nov 16 18:31:29 2003 +0000 * An forward non-random access input iterator class for ATermLists. commit 3e5a019a070cbaac7d1248e208c66da9fdb23313 Author: Eelco Dolstra Date: Sun Nov 16 17:46:31 2003 +0000 * Some utility functions for working with ATerms. commit 06ae269c7c5cdda32072f3f00cf644e540ba12cd Author: Eelco Dolstra Date: Mon Nov 10 11:00:38 2003 +0000 * Do not filter when parsing. This is much faster. * Add some rejections and lexical restrictions to the grammar to make this work. commit 15801c88fad38253b19ac2ea77e7597deab5fd6b Author: Eelco Dolstra Date: Sun Nov 9 10:35:45 2003 +0000 * Turned the msg() and debug() functions into macros, since they turned out to be a huge performance bottleneck (the text to printed would always be evaluated, even when it was above the verbosity level). This reduces fix-ng execution time by over 50%. gprof(1) is very useful. :-) commit d2e3a132fe6796b2ac038ccb20e7aa32afc1a85f Author: Eelco Dolstra Date: Sun Nov 9 10:31:56 2003 +0000 * Pass CFLAGS to the subpackages. commit 90e26d392c7ac4c2a69163f881f73916e6fba3c1 Author: Eelco Dolstra Date: Thu Nov 6 15:24:31 2003 +0000 * Allow null in derivation bindings. commit cfaea07444a0011aa7d91ce1bcc8f105b8f283fa Author: Eelco Dolstra Date: Thu Nov 6 14:41:49 2003 +0000 * `null' is a nullary primop. commit 569e7940f878f27b0fb9d3c8e8abfc29f3379103 Author: Eelco Dolstra Date: Thu Nov 6 14:41:29 2003 +0000 * Allow `+' in path names. commit fa18f1f184ba89b3dfe592e77a276da42d326f42 Author: Eelco Dolstra Date: Wed Nov 5 16:27:40 2003 +0000 * Assertions. * Logical operators (!, &&, ||, ->). commit e17e95a82892b31c8063f2ace1b21c79e82e6f6d Author: Eelco Dolstra Date: Wed Nov 5 16:20:57 2003 +0000 * Print a shared textual ATerm if the term if very large. Due to substitutions, Fix terms are very large when printed as trees (in memory, they are quite compact due to sharing). commit 80bb477cc4ea5226ae760726730b3e09d21559de Author: Eelco Dolstra Date: Wed Nov 5 15:34:12 2003 +0000 * Default function arguments. commit 0690c1c9c01dd5889dbfccf2da6cb99f5c4e151b Author: Eelco Dolstra Date: Mon Nov 3 20:30:40 2003 +0000 * Work around problems with the ATerm library. The ATerm library doesn't search the heap for pointers to ATerms when garbage collecting. As a result, C++ containers such as `map' will cause pointer to be hidden from the garbage collector, causing crashes. Instead, we now use ATermTables. commit ff3132427839888933c3779844bf35ca9e189cb9 Author: Eelco Dolstra Date: Mon Nov 3 18:21:53 2003 +0000 * Ignore options passed to the aterm library. commit e2655aa332a33b56d9168928511a598fc9b0c1e6 Author: Eelco Dolstra Date: Mon Nov 3 11:59:35 2003 +0000 * Shorter list syntax ([a b c] instead of [a, b, c]). commit ad0976f8d5f2afbca4e2fe6cbb3d2c2e53760222 Author: Eelco Dolstra Date: Mon Nov 3 10:21:30 2003 +0000 * Grammar changes. Attributes in attribute sets are now delimited with semicolons instead of comma's. Final semicolon in the set is optional. commit 40986312bb00f0101a6634db42080daee03f887b Author: Eelco Dolstra Date: Sun Nov 2 17:36:15 2003 +0000 * Boolean constants. commit adf9a45469f55258446d383333aa2ca79cfb0536 Author: Eelco Dolstra Date: Sun Nov 2 16:31:35 2003 +0000 * Primops: baseNameOf, toString. commit c8268ca9917061466a3448028ea524d9842e1ac9 Author: Eelco Dolstra Date: Sat Nov 1 23:29:02 2003 +0000 * Fast builds. commit 7de1b2a6980f71cfbf36f7250e247f6eafd763d9 Author: Eelco Dolstra Date: Sat Nov 1 21:11:52 2003 +0000 * Print the exit code of the builder. commit 16104446712acf7e381039199eaf39dfa0fcea35 Author: Eelco Dolstra Date: Sat Nov 1 19:15:08 2003 +0000 * Conditions, string equality. commit 1b4184ccbb01634792897d3412c489b989674567 Author: Eelco Dolstra Date: Sat Nov 1 19:10:41 2003 +0000 * Let syntax. commit a2a9bacd8296ed1ddb6105b649a062fe65c27759 Author: Eelco Dolstra Date: Sat Nov 1 19:10:19 2003 +0000 * Filter the substitution list when descending into a recursive attribute set. commit 449411e5113084da323d265f1b1313d9a5ca64aa Author: Eelco Dolstra Date: Fri Oct 31 19:20:03 2003 +0000 * Typo fix. commit 9210d4d530b68b5f19ac7062f129c88ccdc03e04 Author: Eelco Dolstra Date: Fri Oct 31 17:09:31 2003 +0000 * Working evaluator. * Mutually recursive attribute sets. * Print evaluator efficiency statistics. commit f1c1a3c97f1dc81b2d9b19f58589b4b8a5ed196e Author: Eelco Dolstra Date: Fri Oct 31 12:21:01 2003 +0000 * Allow empty attribute (argument) sets. commit 7db08cc9244c374903180c8e816ecf81f6ff1d79 Author: Eelco Dolstra Date: Fri Oct 31 11:22:56 2003 +0000 * Use SGparseString() instead of SGparseFile() because the latter is buggy. It fails to clear an internal variable (SG_textIndex) between invocations, so it can be called only once during a program execution. commit 403cb9327f5c298cb6a85a87241962df4a90857b Author: Eelco Dolstra Date: Thu Oct 30 16:48:26 2003 +0000 * Factor out evaluation into a separate file. commit 9f8f39aa3cdb54532a85e41f14985fc6a530fb36 Author: Eelco Dolstra Date: Thu Oct 30 16:18:40 2003 +0000 * Clean up the imploded parse tree. Quotes around strings are removed, paths are absolutised relative to the path containing the expression we just parsed, and integer literals are converted to actual integers. commit e537844f4ebc53df13f52722fb16bbeb1f4cbd18 Author: Eelco Dolstra Date: Thu Oct 30 16:11:24 2003 +0000 * Bottomup rewrite function. commit 442b09ea33dcf516a6f5244ed2c362682e1347b0 Author: Eelco Dolstra Date: Thu Oct 30 16:10:56 2003 +0000 * Don't use a search path. commit 933b3f677d0338b264d4e758f8932bb7f2454c46 Author: Eelco Dolstra Date: Thu Oct 30 16:10:20 2003 +0000 * Attribute selection operator. commit b95a3dc45bcbbe8a0985bab82146ed00afcf0239 Author: Eelco Dolstra Date: Wed Oct 29 16:05:03 2003 +0000 * Basic grammar and parser for the Fix language. We use libsglr and friends to do the parsing. The parse table is embedded in the Fix executable using bin2c, which converts an arbitrary file into a C character array. commit 4d728f6a36c83ff684426788df775b385fae9e88 Author: Eelco Dolstra Date: Wed Oct 29 15:05:18 2003 +0000 * Forked new version of Fix. commit f31661a3b593a15fe061bb398f1814d9c37902a6 Author: Eelco Dolstra Date: Wed Oct 29 15:04:50 2003 +0000 * Add sdf2-bundle to externals. commit 7102455cba5ceb13e7f3558716ee0a49fff1c58f Author: Eelco Dolstra Date: Mon Oct 27 18:43:09 2003 +0000 * Don't cache the manifest. commit 92eea8fc4e7a2e4d6d0dda604ecd22c60367b76e Author: Eelco Dolstra Date: Thu Oct 23 10:51:55 2003 +0000 * Fix a race condition in addTextToStore(). commit c4e7d324b826d1197a90bf7f4f4b593e406e1087 Author: Eelco Dolstra Date: Wed Oct 22 13:29:40 2003 +0000 * Use writeFull(). commit 9d95aafe8ccf9d037dc97bb875bc62b919d8b123 Author: Eelco Dolstra Date: Wed Oct 22 11:04:57 2003 +0000 * Ad hoc per-package logging. When Nix performs a derivation, it now writes stdout/stderr of the builder to ${prefix}/var/log/nix/x, where x is the file name of the derivation expression, e.g., /nix/var/log/nix/54256391624be04fcb426048ae3ea0a4-d-pan-0.14.2.nix Note that consecutive builds of the same expression overwrite, rather than append to, existing log files. commit 143427f90b9b54bd957cd50a2110157ddfedeeaf Author: Eelco Dolstra Date: Wed Oct 22 10:53:46 2003 +0000 * Dead code removal. commit 4a8948b7a60e751dd809f279f1baa434ea09a4d3 Author: Eelco Dolstra Date: Wed Oct 22 10:48:22 2003 +0000 * Some wrapper classes to ensure that file descriptors / directory handles are closed when they go out of scope. commit c62433751d5fce8c25a802989c50fee993f39c2d Author: Eelco Dolstra Date: Mon Oct 20 10:05:01 2003 +0000 * Finished refactoring the tree. commit 53e376d836133a660223198c7bb8308fb912375e Author: Eelco Dolstra Date: Mon Oct 20 09:20:11 2003 +0000 * Refactored the source tree. commit 0eab306466fdb186c692521dd1f2b949e56c54da Author: Eelco Dolstra Date: Mon Oct 20 09:08:44 2003 +0000 * NarPath -> NarName. commit a0a7a4e0875c2cfdd2895bb1b4a16c998cde576e Author: Eelco Dolstra Date: Thu Oct 16 19:24:04 2003 +0000 * Remove some debug output. commit 0791282b2f42313c94dd9bc85b24428e585cd099 Author: Eelco Dolstra Date: Thu Oct 16 16:29:57 2003 +0000 * Substitutes and nix-pull now work again. * Fixed a segfault caused by the buffering of stderr. * Fix now allows the specification of the full output path. This should be used with great care, since it by-passes the normal hash generation. * Incremented the version number to 0.4 (prerelease). commit ab5e8767fafb2d62213e3f1558ead2882bc65c05 Author: Eelco Dolstra Date: Thu Oct 16 13:13:39 2003 +0000 * Get nix-push to work again. * Fixed svn:ignore on externals/. commit c78bf115248f62fa355e7a9b2b9532b37e693085 Author: Eelco Dolstra Date: Thu Oct 16 11:55:37 2003 +0000 * Enable buffering of stderr in C++. commit f7c7aad1351a0ed58f458e485968af498d542b5b Author: Eelco Dolstra Date: Thu Oct 16 08:52:44 2003 +0000 * Upgraded to Berkeley DB 4.1.25 and do not synchronously flush the log on commit. This means that there is a small change that some transactions may be rolled back in case of a system crash, but this should not be a problem (it merely might cause some expression realisations to be rolled back), and it vastly improves performance. * Upgraded to ATerm 2.0.5 (which also includes Armijn's 64-bit patches). commit 181aa3dc4198d2e2cfa89d3ebb53a96fa567e12f Author: Eelco Dolstra Date: Thu Oct 16 08:06:19 2003 +0000 * Don't sort the result of `--query --list'. commit ebff82222c7b946e70e539389c0027529b6c7ad0 Author: Eelco Dolstra Date: Wed Oct 15 12:42:39 2003 +0000 * Refactoring: move all database manipulation into store.cc. * Removed `--query --generators'. commit 5fc71276430e8e6a4588fa54da692f81d5ada585 Author: Eelco Dolstra Date: Wed Oct 15 10:34:50 2003 +0000 * Keep sources (derivation expression) by default, `--no-source' to override. commit c190f051ac34b2df51402bf593150de97f491d86 Author: Eelco Dolstra Date: Tue Oct 14 15:33:00 2003 +0000 * Automatically recover the database in case of a crash. commit 1d61e473c88568fae7ef5edebc77acd53e4126f9 Author: Eelco Dolstra Date: Fri Oct 10 15:25:21 2003 +0000 * New query `nix --query --predecessors' to print the predecessors of a Nix expression. commit 0abe185688aa19c9ca87c9d22e24a54b4b359969 Author: Eelco Dolstra Date: Fri Oct 10 15:14:29 2003 +0000 * `nix --verify': check and repair reverse mapping for successors. commit d3d5e77810cca11cca95bbb6f0f5e15d23f31eea Author: Eelco Dolstra Date: Fri Oct 10 14:46:28 2003 +0000 * Reverse mappings for the successor and substitute mappings. commit 1eb4da156cca1b1981ab1f60bb9797ed1e93101a Author: Eelco Dolstra Date: Fri Oct 10 13:22:29 2003 +0000 * Performance improvement: don't register already registered terms, thus greatly reducing the number of db transactions. commit 08b7319f5bca01f46916faaec0f9de420404a5ad Author: Eelco Dolstra Date: Thu Oct 9 15:38:31 2003 +0000 * Follow successors by default (use `--no-successors' to override). commit 6409c215e56cbcd10177edf358f7d0702d687099 Author: Eelco Dolstra Date: Thu Oct 9 15:37:20 2003 +0000 * Fixed nix-switch. commit 6baa2c442035fb06652a7fad9d51df1ce41c05f9 Author: Eelco Dolstra Date: Wed Oct 8 15:06:59 2003 +0000 * Get rid of identifiers since they are redundant now. This greatly simplifies stuff. * The format of Nix expressions and the database schema changed because of this, so it's best to delete old Nix installations. commit b9f4942bd2f8aae44db6caa5a4ebe5680880fec2 Author: Eelco Dolstra Date: Tue Oct 7 14:37:41 2003 +0000 * string -> Path. commit 5d4171f7fb548e06ecd2440f57322b3c77f1074e Author: Eelco Dolstra Date: Tue Oct 7 12:27:49 2003 +0000 * Synchronise terminology with the ICSE paper (e.g., slice -> closure, fstate -> Nix expression). * Fix src/test.cc. commit 563afb7fcc9d6aabec9b867372ea8d651fd12e89 Author: Eelco Dolstra Date: Thu Oct 2 15:48:47 2003 +0000 * Use passive FTP in wget. commit e78f753aa830e795fcb05920f30b0bd6d04bed0e Author: Eelco Dolstra Date: Thu Oct 2 12:22:19 2003 +0000 * Include the right files in a distribution. commit 4193d62e08964e2c26b27674e33327bf0417bab5 Author: Eelco Dolstra Date: Thu Oct 2 11:55:38 2003 +0000 * Nix now respects $TMPDIR for the creation of temporary build directories. * Retry creation of a temporary directory (with a different name) in the case of EEXIST. commit 6d478597c7672efc546b6720c8404ffb5f998612 Author: Eelco Dolstra Date: Wed Sep 24 08:40:40 2003 +0000 * Argggg... commit 9fb94f4f2f33b8fe26e4842558a13c6c62e6eded Author: Eelco Dolstra Date: Wed Sep 24 08:39:49 2003 +0000 * Forgot a file. commit 9ba2397ea971aba101235413afe27518e0b7a2ba Author: Eelco Dolstra Date: Wed Sep 24 08:28:04 2003 +0000 * Added missing files to `make dist'. commit 41730f57798a9acba1fa07397cb06ba6a260ea70 Author: Eelco Dolstra Date: Tue Sep 23 14:26:58 2003 +0000 * Put the SVN revision number in the version string. commit 1c7d6bf5fcddae13b6226d61fe60cfccb8d2c359 Author: Eelco Dolstra Date: Thu Sep 11 10:23:55 2003 +0000 * Removed references to char_traits so that boost/format also works on GCC 2.95. commit d930a9bc5a69b33dc7fe707838ccdd72e89f8079 Author: Eelco Dolstra Date: Thu Sep 11 08:31:29 2003 +0000 * Added some missing #includes. commit 803a924b77730f6f7e04dde0cbfda2522f06a2b1 Author: Eelco Dolstra Date: Wed Sep 3 14:49:58 2003 +0000 * Make nicer dot graphs. Also show the inner structure of slices. commit c0bbed0959665bc51909b285654db2a3cf120502 Author: Eelco Dolstra Date: Wed Sep 3 11:20:18 2003 +0000 * Factored out dot graph generation into a separate file. commit 0d2bc686817306502b71f5ca2cd49cb1d501247c Author: Eelco Dolstra Date: Fri Aug 29 13:12:30 2003 +0000 * Do not show the output of the builder unless the verbosity is at least at debug level (-vvv). The output is still appended to the build log in /nix/var/log/nix. commit 25304af72ed5c8fd50aa1da01c5872567ebe6ba2 Author: Eelco Dolstra Date: Thu Aug 28 10:51:52 2003 +0000 * Set a path. commit b0185173147c3eb629cc6b996459cf6ce2d608fe Author: Eelco Dolstra Date: Thu Aug 28 10:51:14 2003 +0000 * Do not try to remove write permission from symlinks, since chmod() follows symlinks. (Note that the permissions on symlinks are ignored anyway.) commit c4f1f49574b4fe55bef7952bd0fcc2bd626b0db2 Author: Eelco Dolstra Date: Thu Aug 28 10:10:12 2003 +0000 * nix-push generated invalid (old-style) slices. * nar.sh needs a path. commit 31be53cd0a50ef9e3ddf64f79222e8e8dd1d05aa Author: Eelco Dolstra Date: Mon Aug 25 14:56:11 2003 +0000 * Fix the atrocious (exponential? factorial?) time complexity in `nix --query --requisites'. commit 920193beb1a7b8894d100c63adadf00ad855dd64 Author: Eelco Dolstra Date: Mon Aug 25 14:36:04 2003 +0000 * Don't continue when the call to nix fails. commit a88144215c263e62528108dfae1e781058344ef2 Author: Eelco Dolstra Date: Fri Aug 22 20:12:44 2003 +0000 * Remove write permission from output paths after they have been built. * Point $HOME to a non-existing path when building to prevent certain tools (such as wget) from falling back on /etc/passwd to locate the home directory (which we don't want them to look at since it's not declared as an input). commit 56b98c3857b89d4f81f0127c53cfce6d8e48a71f Author: Eelco Dolstra Date: Fri Aug 22 11:29:20 2003 +0000 * Some work on the introduction. commit 956801fcc2ac75fd4041f61619451d2935fa2598 Author: Eelco Dolstra Date: Wed Aug 20 14:11:40 2003 +0000 * Use maps and sets in the FState data type. This ensures normalisation of slices and derivations w.r.t. order of paths, slice elements, etc. commit 624c48260f1b4eec86daa0da5f33d4cbb963a361 Author: Eelco Dolstra Date: Wed Aug 20 12:39:56 2003 +0000 * Change the abstract syntax of slices. It used to be that ids were used as keys to reference slice elements, e.g., Slice(["1ef7..."], [("/nix/store/1ef7...-foo", "1ef7", ["8c99..."]), ...]) This was wrong, since ids represent contents, not locations. Therefore we now have: Slice(["/nix/store/1ef7..."], [("/nix/store/1ef7...-foo", "1ef7", ["/nix/store/8c99-..."]), ...]) * Fix a bug in the computation of slice closures that could cause slice elements to be duplicated. commit 710175e6a0f737f108e802d6b0c3de0af04e500c Author: Eelco Dolstra Date: Wed Aug 20 11:31:15 2003 +0000 * Bumped the version number to 0.3. commit ed0db2e0d80ac538fbb1f9869922be4fbf7bfeab Author: Eelco Dolstra Date: Wed Aug 20 11:30:45 2003 +0000 * Fixed a serious bug in the computation of slices. Sometimes the slices would not be properly closed under the path reference relation. commit 1472cc482503a39d173b5dcd34686fd6c3c644d6 Author: Eelco Dolstra Date: Tue Aug 19 13:07:38 2003 +0000 * Pipe /dev/null into stdin. commit 2de850479101e5a378c87d1392ea03c63ce224cf Author: Eelco Dolstra Date: Tue Aug 19 09:04:47 2003 +0000 * Delete the temporary directories of failed builds by default, and an option `--keep-failed' to override this behaviour. commit 31e4aa64396858e3b6ef8477397c84cbd80670fc Author: Eelco Dolstra Date: Mon Aug 18 16:32:55 2003 +0000 * Allow lists in package bindings, e.g., ("srcs", [Relative("foo/bar.c"), Relative("foo/baz.h")]) The result is an environment variable that contains the path names of the inputs separated by spaces (so this is not safe for values containing spaces). commit ebbb6ce578ab383bec7a61c364d2be27c0bad22f Author: Eelco Dolstra Date: Mon Aug 18 14:54:54 2003 +0000 * Most shells initialise PATH to some default (/bin:/usr/bin:...) when PATH is not set. We don't want this, so fill it in with some dummy value. commit c32e01eab2363085160bfebc2d9ab506d265c7e4 Author: Eelco Dolstra Date: Mon Aug 18 08:52:49 2003 +0000 * Revision 300! * Put `@' in front of echo's in the Makefile. commit 08f9cfe267934dac5a7da869e9ebadf215220217 Author: Eelco Dolstra Date: Mon Aug 18 08:35:16 2003 +0000 * No longer automatically download Berkeley DB / ATerm. commit 96c7b98bf0f852d7afee9251c4ce9492310e6a87 Author: Eelco Dolstra Date: Fri Aug 15 13:01:45 2003 +0000 * Argument support in Fix. Arguments can be passed through the builder using the `args' binding: ("args", ["bla", True, IncludeFix("aterm/aterm.fix")]) Note that packages can also be declared as inputs by specifying them in the argument list. commit 555347744d116b0152a04d4fdb08258276d34199 Author: Eelco Dolstra Date: Fri Aug 15 12:32:37 2003 +0000 * Derivation expressions now can specify arguments to be passed to the builder. Note that this unfortunately causes all Fix-computed hashes to change. commit e374dbf89b0ba9a4f5835ef9ac30eda6df1dce6a Author: Eelco Dolstra Date: Fri Aug 15 10:13:41 2003 +0000 * A script `nix-prefetch-url' to fetch a URL, place it in the Nix store, and print its hash. commit 01e30360d46ce940d8b83f4ff7a71e8464c1422b Author: Eelco Dolstra Date: Fri Aug 15 09:39:33 2003 +0000 * Don't use a temporary file. commit 163db7367fb45955069b46014e60224b1bc037b6 Author: Eelco Dolstra Date: Fri Aug 15 09:21:19 2003 +0000 * Fix can now read expressions from stdin (by saying `fix -'). commit 161aab582bb3d794414c0275ff8216292f85ab5c Author: Eelco Dolstra Date: Thu Aug 14 18:24:40 2003 +0000 * Use a catalog when calling xsltproc. commit a24cb1936141981c3b3d5cd30433bb1e57d7dc76 Author: Eelco Dolstra Date: Thu Aug 14 18:17:02 2003 +0000 * Use xmllint instead of nsgmls to validate the manual. commit 9ee3b7a37a658dc5d3d1831e4155629e18a866f4 Author: Eelco Dolstra Date: Thu Aug 14 12:37:50 2003 +0000 * Function application test cases. commit dc0ef2ca98ddf21586b68089d28df59ef3e756dd Author: Eelco Dolstra Date: Thu Aug 14 12:37:31 2003 +0000 * Detect infinite loops using blackholing. commit 2e16ff22ac6f3a4ea6684026a609856f29d86499 Author: Eelco Dolstra Date: Thu Aug 14 11:27:02 2003 +0000 * Fix man page. commit 5cde23f8698e7cdde220f30504b339b7237fd5f2 Author: Eelco Dolstra Date: Thu Aug 14 09:49:31 2003 +0000 * Function() takes a list of formals. commit 0a2de7f543ac23b8576a232c0ecf6a5f49c1884a Author: Eelco Dolstra Date: Thu Aug 14 09:29:07 2003 +0000 * Lam -> Function. Doh! commit 95b49f804456cf532e61478d7f604aed381173d7 Author: Eelco Dolstra Date: Wed Aug 13 15:17:57 2003 +0000 * Manual updates. commit 68022552d295e5a223b87a1a96814fd2586350ed Author: Eelco Dolstra Date: Wed Aug 13 15:17:36 2003 +0000 * Put the pre-built manual and man pages in the tar distribution. commit c34a153ae5614ab879ff19194ff396ffb21b7b55 Author: Eelco Dolstra Date: Wed Aug 13 10:45:01 2003 +0000 * Documented the `--query' operation. commit b4f88d0ec364f00196127ea29e8db5033368e23a Author: Eelco Dolstra Date: Wed Aug 13 09:13:52 2003 +0000 * Split the book.xml into several xml files. commit 469f1eba561403639e777721cacd59e0a6cdc39d Author: Eelco Dolstra Date: Tue Aug 12 15:06:49 2003 +0000 * Documented some Nix operations. commit e405ca506efa608c3636023a98994c05f09ecf0c Author: Eelco Dolstra Date: Tue Aug 12 13:54:42 2003 +0000 * Generate man pages from the manual. commit c602930e08a508fce76b16f6f7f1fdfaed3b91ab Author: Eelco Dolstra Date: Fri Aug 8 14:55:56 2003 +0000 * deletePath(): some operating systems (e.g., Mac OS X) don't like it when we delete entries from a directory while we are reading it. So read the directory into memory, then delete its contents. commit 4b7b0bd12ca59f84b7adada64818086ece684447 Author: Eelco Dolstra Date: Thu Aug 7 15:27:14 2003 +0000 * Started on the introduction. commit 74867e72f29f8850892bd30b9c5aa5272bc49d75 Author: Eelco Dolstra Date: Thu Aug 7 14:17:18 2003 +0000 * Start of manual; installation instructions. commit f8035d06f2031fb1bdf30eee82a1beb707bbe044 Author: Eelco Dolstra Date: Wed Aug 6 14:48:29 2003 +0000 * Allow a name to be given to a system configuration through `--name NAME'. E.g., on the losser Subversion server, I do `nix-switch --name svn $(fix ...)' to atomically upgrade the server (the SVN server uses the Apache and Subversion installations in /nix/var/nix/links/svn). commit 9ad39df2823ea11ac670dd3006ab2b8fcf73e6a8 Author: Eelco Dolstra Date: Wed Aug 6 10:00:30 2003 +0000 * `==' is not a valid operator. commit d551062ec4cf33b73df4e0d38671cbe6ca03abc5 Author: Eelco Dolstra Date: Wed Aug 6 09:35:05 2003 +0000 * Scan for wget and use the full path in fetchurl.sh. * Use nix-hash (not md5sum) in fetchurl.sh. commit 236eb59293194071ac518c12d0cc6fe0a3f0ac5f Author: Eelco Dolstra Date: Wed Aug 6 09:34:04 2003 +0000 * Allow locks on paths to be acquired recursively (that is, if the process is already holding a lock on a path, it may acquire the lock again without blocking or failing). (This might be dangerous, not sure). Necessary for fast builds to work. commit 720f06e3b05502df2dc84afb7a3ad2ea5518246a Author: Eelco Dolstra Date: Wed Aug 6 09:06:32 2003 +0000 * A flag `--flat' to just compute the MD5 checksum of the contents of a regular file. I.e., `nix-hash --flat' is equivalent to the coreutils `md5sum' command (which doesn't exist on all systems). commit 37483672d425bc3b7be8e1deb049fd04c80be0cf Author: Eelco Dolstra Date: Wed Aug 6 09:05:04 2003 +0000 * App -> Call. * Allow booleans in package environment bindings (True maps to "1", False maps to ""). commit d34b4d4f287a62de915a4bf75caf18d236e9b7e4 Author: Eelco Dolstra Date: Tue Aug 5 13:05:30 2003 +0000 * Conditionals. commit b9c9b461ea3a90d7344a76c072b1f9a3e9d77144 Author: Eelco Dolstra Date: Tue Aug 5 12:30:06 2003 +0000 * Made nix-push much faster. commit 4ce652640b01c97d4df287cbc0ec6766a1438fd2 Author: Eelco Dolstra Date: Tue Aug 5 12:29:47 2003 +0000 * Cache result of fstatePaths(). TODO: do this in fstore.cc. commit fd30f52cfca861d109652b6ad5a533e5c108f3e9 Author: Eelco Dolstra Date: Tue Aug 5 11:14:24 2003 +0000 * Made nix-pull much faster by performing all Fix instantiations at the same time. commit 17f05dba775bb95858d9ac60ab9a9abcbe88b2fc Author: Eelco Dolstra Date: Tue Aug 5 11:13:38 2003 +0000 * Allow the top-level expression to be a list of expressions that normalise to Nix expression. commit d6b6b2d3a83aa2afe3cae361954d8aa640fd77da Author: Eelco Dolstra Date: Tue Aug 5 09:47:20 2003 +0000 * Delete obstructed paths prior to building. commit d2e963f7a39cebcc4c937f9060763386d72ce4db Author: Eelco Dolstra Date: Mon Aug 4 07:09:36 2003 +0000 * Path locking in addToStore() and expandPath(). commit c95b4ad2906ce4076f04e0969b7080c0589a8cea Author: Eelco Dolstra Date: Fri Aug 1 15:41:47 2003 +0000 * In normaliseFState(), wrap registration of the output paths and the normal form in a single transaction to ensure that if we crash, either everything is registered or nothing is. This is for recoverability: unregistered paths in the store can be deleted arbitrarily, while registered paths can only be deleted by running the garbage collector. commit d99d04e6442dcc39a24cebac01af117ce00a5006 Author: Eelco Dolstra Date: Fri Aug 1 15:06:23 2003 +0000 * Defensive programming against POSIX locking idiocy. * Simplified realiseSlice(). commit 545145cd582cd80b857760ec11bb5a91b6271506 Author: Eelco Dolstra Date: Fri Aug 1 14:11:19 2003 +0000 * normaliseFState() now locks all output paths prior to building, thus ensuring that simultaneous invocations of Nix don't clobber each other's builds. * Fixed a bug in `make install'. commit 9df93f30bda81ffa3cf040c146347e02d3a56666 Author: Eelco Dolstra Date: Fri Aug 1 09:01:51 2003 +0000 * Don't use substitutes in addToStore(). commit 06434072e7860f2eaac9581e979801b7b3493a1e Author: Eelco Dolstra Date: Thu Jul 31 19:49:11 2003 +0000 * Put the database verifier in a transaction. commit 06d3d7355d1b0ec05e61d2e7fe67f8d7153c1ff9 Author: Eelco Dolstra Date: Thu Jul 31 16:05:35 2003 +0000 * Enclose most operations that update the database in transactions. * Open all database tables (Db objects) at initialisation time, not every time they are used. This is necessary because tables have to outlive all transactions that refer to them. commit 177a7782aee4c4789ad5377b5993bfa0b692282e Author: Eelco Dolstra Date: Thu Jul 31 14:28:49 2003 +0000 * Use a more reasonable log file size (256 KB instead of 10 MB). * Checkpoint on exit. commit 4a013962bdd08ee0cf285136e4eca0f2c9c76b98 Author: Eelco Dolstra Date: Thu Jul 31 13:47:13 2003 +0000 * Started using Berkeley DB environments. This is necessary for transaction support (but we don't actually use transactions yet). commit 758bd4673a3553fcbd78c8f895d6efe839d3d538 Author: Eelco Dolstra Date: Thu Jul 31 13:13:27 2003 +0000 * Set execute bit. commit 9f4c19276d023433ea05f6cc3637b4327bd23fbe Author: Eelco Dolstra Date: Thu Jul 31 13:13:13 2003 +0000 * Basic makefile. commit 26ff1cdf89cae33918dfdef2027d135e099ed3b2 Author: Eelco Dolstra Date: Wed Jul 30 14:40:46 2003 +0000 * A better test case for Nix race conditions. commit 64c617e9840b820b1d2d3ce2dd86a95506013b56 Author: Eelco Dolstra Date: Wed Jul 30 14:40:18 2003 +0000 * Directories for the manual. commit 2ac02440dc065d19e5bd00b9a0c538525e12909d Author: Eelco Dolstra Date: Wed Jul 30 13:35:46 2003 +0000 * Test cases for races. commit aaee69cfdef287406715fb3befd7debd3a5c6ce9 Author: Eelco Dolstra Date: Wed Jul 30 10:14:58 2003 +0000 * INSTALL_DATA -> INSTALL_PROGRAM to ensure that the execute bit remains set. commit 83075304e5639dcab3d386eb7813c73b97c67685 Author: Eelco Dolstra Date: Wed Jul 30 09:49:47 2003 +0000 * Don't make the builder executable. commit 1cb030736ec1e844b3bfce32def3725c8a422a1c Author: Eelco Dolstra Date: Tue Jul 29 17:56:39 2003 +0000 * Bug: Fix does not allow empty names, so don't generate them. commit a01629894db0d961622b06c9c691c7cc0fbedff0 Author: Eelco Dolstra Date: Tue Jul 29 15:19:03 2003 +0000 * Use `--query --requisites' and include successors when pushing. Don't use `--query --generators' anymore. commit 40f32ae00ac60885e7c0d8dcb4522895cba8e550 Author: Eelco Dolstra Date: Tue Jul 29 14:42:14 2003 +0000 * Typo: if -> elsif. commit 884646593488bfacd851bec72b7ac1a4841bf458 Author: Eelco Dolstra Date: Tue Jul 29 14:28:17 2003 +0000 * Get garbage collection and cache population to work *properly*. Renamed `fstateRefs' to `fstateRequisites'. The semantics of this function is that it returns a list of all paths necessary to realise a given expression. For a derive expression, this is the union of requisites of the inputs; for a slice expression, it is the path of each element in the slice. Also included are the paths of the expressions themselves. Optionally, one can also include the requisites of successor expressions (to recycle intermediate results). * `nix-switch' now distinguishes between an expression and its normal form. Usually, only the normal form is registered as a root of the garbage collector. With the `--source-root' flag, it will also register the original expression as a root. * `nix-collect-garbage' now has a flag `--keep-successors' which causes successors not to be included in the list of garbage paths. * `nix-collect-garbage' now has a flag `--invert' which will print all paths that should *not* be garbage collected. commit dc14a3de46ee08a28158a886b6abba2c4144f6cd Author: Eelco Dolstra Date: Tue Jul 29 10:53:27 2003 +0000 * Nicer dot graphs. commit 79ba0431db223c1c08b46e8f3d1819e3457f21a0 Author: Eelco Dolstra Date: Tue Jul 29 10:43:12 2003 +0000 * `fstateRefs' now works on derive expressions as well. TODO: make this more efficient. * A flag `-n' in 'nix --query' to normalise the argument. Default is not to normalise. commit 5acb45446e756c023bcb6f052331181671580a5e Author: Eelco Dolstra Date: Tue Jul 29 09:45:03 2003 +0000 * Let `nix --install' print out the id of the normal form. * Some minor refactoring. commit ce5fd1cc12f678627163d532acd7dd4251758198 Author: Eelco Dolstra Date: Mon Jul 28 16:07:01 2003 +0000 * Do not set LD_LIBRARY_PATH; it breaks many things. E.g., SuSE's ssh dynamically links against libdb4 (?!), due to LD_LIBRARY_PATH it picks up our libdb4 instead of SuSE's libdb4, but our libdb4 uses another glibc so loading barfs. Instead, all packages should use rpaths to store library locations in executables/libraries. The disadvantage is that overriding rpaths is harder. (It is possible by invoking the dynamic linker directly, e.g., `/lib/ld-linux.so.2 --ignore-path LIST program args...' to ignore the rpath for the libraries in LIST). It would be better to use DT_RUNPATH, which is consulted by the dynamic linker *after* LD_LIBRARY_PATH but *before* ld.so.cache and the system directories. commit dec8fbc52bab9cc19ac97c422e79e40fa70c2b13 Author: Eelco Dolstra Date: Mon Jul 28 14:13:42 2003 +0000 * Check for the pthread library (db4 needs it on some platforms). commit 949c4fa1a863a804bdf1f985b55d5259f18838ae Author: Eelco Dolstra Date: Mon Jul 28 12:19:23 2003 +0000 * `nix --help'. * `nix --query --graph' to print a dot dependency graph of derive expressions. commit f21b3419575eec2b5bbcc12b035f21c23d57e24d Author: Eelco Dolstra Date: Thu Jul 24 15:03:36 2003 +0000 * Fix message. commit 5d7a20dac3c7fd728fa885dd8dab6e170b860db9 Author: Eelco Dolstra Date: Thu Jul 24 14:31:39 2003 +0000 * Prevent spurious rebuilds of db/aterm. commit 0a0c1fcb4d0e42577ac0c7ac23bd9b908ecde49f Author: Eelco Dolstra Date: Thu Jul 24 13:43:16 2003 +0000 * The `-v' flag no longer takes an argument; it should be repeated instead (e.g., `-vvvv' for lots of output). Default is to only print error messages. commit 3b521bb1bd53479896de89e7a24938039f92aace Author: Eelco Dolstra Date: Thu Jul 24 13:35:17 2003 +0000 * Do sync the database, since not doing so caused database changes not to reach the disk at all. Looks like a bug. commit 1a7468a57a11288a007c40d50ed28718d757a546 Author: Eelco Dolstra Date: Thu Jul 24 08:53:43 2003 +0000 * Debug levels. Use `--verbose / -v LEVEL' to display only messages up to the given verbosity levels. These currently are: lvlError = 0, lvlNormal = 5, lvlDebug = 10, lvlDebugMore = 15 although only lvlError and lvlDebug are actually used right now. commit b75719b98457c61857689ab135559a17034dd8ec Author: Eelco Dolstra Date: Thu Jul 24 08:24:32 2003 +0000 * Don't sync the database on close. This was killing performance. (Of course, the real problem is that we open the database for *every* operation; we should only open it once. And we should use transactions.) commit 39ce70025b59a545127d1ffdefa83b7cbfcd8be1 Author: Eelco Dolstra Date: Wed Jul 23 15:53:34 2003 +0000 * Incorporated Berkeley DB and ATerm into the source tree. * `make dist'. commit 9202570f8c40f58f6444c2ec512104b305058977 Author: Eelco Dolstra Date: Tue Jul 22 20:02:33 2003 +0000 * libdb_cxx-4 -> libdb_cxx commit e877c69d78fe75ae3531b3ed3cb4a4d7b390ccec Author: Eelco Dolstra Date: Tue Jul 22 15:15:15 2003 +0000 * Substitutes now should produce a path with the same id as they are substituting for (obvious, really). * For greater efficiency, nix-pull/unnar will place the output in a path that is probably the same as what is actually needed, thus preventing a path copy. * Even if a output id is given in a Fix package expression, ensure that the resulting Nix derive expression has a different id. This is because Nix expressions that are semantically equivalent (i.e., build the same result) might be different w.r.t. efficiency or divergence. It is absolutely vital for the substitute mechanism that such expressions are not used interchangeably. commit df648c4967af7298fe55f75c7616e39e5b5e7d37 Author: Eelco Dolstra Date: Tue Jul 22 10:24:22 2003 +0000 * `nix --query --expansion' (`-qe') to get any path with content corresponding to the given id. commit d84931ee5607c152b4bc7eb23b7ab94ded9f85c7 Author: Eelco Dolstra Date: Mon Jul 21 22:05:19 2003 +0000 * Changed nix-pull to match nix-push. commit c7bdb76fe461e2335caeea01c16b39a2784fa506 Author: Eelco Dolstra Date: Mon Jul 21 21:34:56 2003 +0000 * Syntax fixes. * When pushing, put the hash in the file name so that the client can verify (proof-carrying file names?). commit d5ee6f8700c7225a4ce34f6d92aae0d57bee3355 Author: Eelco Dolstra Date: Mon Jul 21 21:31:03 2003 +0000 * In `--query --generators', print out paths, not ids. (There should really be a switch for this). commit 2616e6a6f3f8c39e62071cf1c22cce5be90a1d9d Author: Eelco Dolstra Date: Mon Jul 21 20:58:34 2003 +0000 * Check for errors. commit 9f4ad99e92096981c5dc9401aa241a2314078b47 Author: Eelco Dolstra Date: Mon Jul 21 20:58:21 2003 +0000 * Canonicalise path. commit 249988a787d26046bf7b389594ff25029229e3d9 Author: Eelco Dolstra Date: Mon Jul 21 20:07:12 2003 +0000 * Allow the output/expression id to be forced to a certain value; this potentially dangerous feature enables better sharing for those paths for which the content is known in advance (e.g., because a content hash is given). * Fast builds: if we can expand all output paths of a derive expression, we don't have to build. commit 49231fbe419d37717b0d951377fbfc9bf445dd55 Author: Eelco Dolstra Date: Mon Jul 21 14:46:01 2003 +0000 * Changes to the command line syntax of Nix. * A function to find all Nix expressions whose output ids are completely contained in some set. Useful for uploading relevant Nix expressions to a shared cache. commit 401452e57ae897d3e5829ed12bfcccac82548e91 Author: Eelco Dolstra Date: Mon Jul 21 08:55:49 2003 +0000 * Memoize the evaluation of Fix expressions to speed up computation. commit 7984cfc7c18c85c5db42c5c7d57927b12c846ce0 Author: Eelco Dolstra Date: Sun Jul 20 21:11:43 2003 +0000 * Argh, another short-write problem. Added wrappers around read()/write() to fix this once and for all. commit 667a6afb9dabcb3e5c851b910705b7eb1c87c9b6 Author: Eelco Dolstra Date: Sun Jul 20 19:30:53 2003 +0000 * Remove accidentally added file. commit 6f1a0f948dc5a98f2efcdafb0fdde96bebbf90da Author: Eelco Dolstra Date: Sun Jul 20 19:29:38 2003 +0000 * Refactorings. commit ab350eafd2c1a98ea98090fdb3bd9b7ae4f7336b Author: Eelco Dolstra Date: Fri Jul 18 07:42:57 2003 +0000 * Generate nar.sh, fetchurl.sh. commit b3fc38bf6a407f962b83089b2e13cbc90dd53042 Author: Eelco Dolstra Date: Thu Jul 17 12:27:55 2003 +0000 * For debugging: `nix --verify' to check the consistency of the database and store. commit 71cc3ceae5c5dd97a0faa2dab3da3dd0c479b0b5 Author: Eelco Dolstra Date: Thu Jul 17 11:25:14 2003 +0000 * Preserve the executable bit. commit 54664b6fb74e964d70530d13e25459751d0c63fb Author: Eelco Dolstra Date: Wed Jul 16 21:24:02 2003 +0000 * The write() system call can write less than the requested number of bytes, e.g., in case of a signal like SIGSTOP. This caused `nix --dump' to fail sometimes. Note that this bug went unnoticed because the call to `nix --dump' is in a pipeline, and the shell ignores non-zero exit codes from all but the last element in the pipeline. Is there any way to check the result of the initial elements in the pipeline? (In other words, is it at all possible to write reliable shell scripts?) commit 335aa1c35d8835619b465df3f5629b435bac157d Author: Eelco Dolstra Date: Wed Jul 16 20:49:59 2003 +0000 * Doh! commit 6822fd7bf472c9edc27c0e851f3efd67c2a99952 Author: Eelco Dolstra Date: Wed Jul 16 20:33:29 2003 +0000 * Bug fix: slices are transitive, so if we detect that an input path is referenced in an output paths, we also have to add all ids referenced by that input path. * Better debug assertions to catch these sorts of errors. commit 9d56ca219fb7af1c209458f81a8ce35a1b6afd28 Author: Eelco Dolstra Date: Wed Jul 16 20:00:51 2003 +0000 * Substitute fixes. commit b9ecadee6e32eddac07d09a228f0dda2b340c7ac Author: Eelco Dolstra Date: Wed Jul 16 11:05:59 2003 +0000 * Fix the -qr query. commit c11bbcfd26e554ca044c1cce293097e4e87ef31e Author: Eelco Dolstra Date: Wed Jul 16 08:30:26 2003 +0000 * Fix self-referential outputs. * Fix -qp query. commit d41d085b771d0f87658fe22512178603b3a0c633 Author: Eelco Dolstra Date: Tue Jul 15 22:28:27 2003 +0000 * Get Fix and Nix to work again. commit 7b3f44e05baa49b26dd7c1ed71265c6bbc946aa4 Author: Eelco Dolstra Date: Tue Jul 15 21:24:05 2003 +0000 * The new normaliser now passes the unit tests. commit f5b6fa5256efce5f7a963386cd16e441446f5746 Author: Eelco Dolstra Date: Tue Jul 15 16:28:54 2003 +0000 * Basic work on allowing derive expressions to build multiple paths. This is not entirely trivial since this introduces the possibility of mutual recursion. * Made normal forms self-contained. * Use unique ids, not content hashes, for content referencing. commit 8898e86b4fe1ecf8b34a5cca2a7b9b38d395678c Author: Eelco Dolstra Date: Mon Jul 14 10:45:04 2003 +0000 * Get the garbage collector to work again. commit 3509299aca833ed50faab146f985853255041cb2 Author: Eelco Dolstra Date: Mon Jul 14 10:23:11 2003 +0000 * After building, scan for actual file system references as opposed to declared references. This prunes the reference graph, thus allowing better garbage collection and more efficient derivate distribution. commit 135b7d54db4e0ca56bda67946432fcf9d4f3ac5c Author: Eelco Dolstra Date: Sun Jul 13 21:43:57 2003 +0000 * Don't check for staleness by default. commit e6363b05ae72ffd9d977ec3f0981ff9123c404a6 Author: Eelco Dolstra Date: Sun Jul 13 19:26:00 2003 +0000 * Pass $(prefix) and other variables through -D..., not through config.h, to prevent silly Autoconf problems. commit 9c620e4afa03e63ddaff2979396144de8d9298a5 Author: Eelco Dolstra Date: Sun Jul 13 18:58:03 2003 +0000 * Generate the scripts so that we can substitute the prefix etc. correctly. * Fixed nix-switch. commit 5304a1eb3a2bbcc379924d3f5a58b64ce77f4849 Author: Eelco Dolstra Date: Sat Jul 12 11:03:14 2003 +0000 * Fetchurl: check md5 checksum. commit 73b163c1a10f2ce675d9fc3d7ad02fad4bc6511f Author: Eelco Dolstra Date: Fri Jul 11 08:41:03 2003 +0000 * Fix a bug that caused Fix not to be deterministic (due to addToStore returning different paths if the hash of the path to be added was already available in the store under a different name). commit c834a5c5975b9a62413b4aa9446f73d1c573c909 Author: Eelco Dolstra Date: Fri Jul 11 08:16:15 2003 +0000 * Fix handling of pipes (read(2) may not return the required number of bytes in one call). commit 822c072cfa0f1e4ac304343d78e024ba19da34a8 Author: Eelco Dolstra Date: Thu Jul 10 20:34:29 2003 +0000 * Compress Nix archives when pushing them. commit 9bcc31c94168717c8bd27b83bfab686264f63745 Author: Eelco Dolstra Date: Thu Jul 10 20:13:32 2003 +0000 * Working derivate sharing. commit 81304a6bb595e64d868ef4eb4bfcc08014ced939 Author: Eelco Dolstra Date: Thu Jul 10 19:27:46 2003 +0000 * Convert tabs to spaces. commit e5fbf5804192fa62d0edab0f6b323cc0c8d890f9 Author: Eelco Dolstra Date: Thu Jul 10 18:48:11 2003 +0000 * A command to register successor fstate expressions. Unifying substitutes and successors isn't very feasible for now, since substitutes are only used when no path with a certain is known. Therefore, a normal form of some expression stored as a substitute would not be used unless the expression itself was missing. commit 8511571f653fcfbb724061dac330c544b6048722 Author: Eelco Dolstra Date: Thu Jul 10 15:24:50 2003 +0000 * Performance enhancement. commit 1d1c3691d2fdf5aad0baceadd8596f23c1e0e1fa Author: Eelco Dolstra Date: Thu Jul 10 15:11:48 2003 +0000 * The policy-free derivate sharing now *almost* works. :-) For any hash for which no local expansion is available, Nix can execute a `substitute' which should produce a path with such a hash. This is policy-free since Nix does not in any way specify how the substitute should work, i.e., it's an arbitrary (unnormalised) fstate expression. For example, `nix-pull' registers substitutes that fetch Nix archives from the network (through `wget') and unpack them, but any other method is possible as well. This is an improvement over the old Nix sharing scheme, which had a policy (fetching through `wget') built in. The sharing scheme doesn't work completely yet because successors from fstate rewriting have to be registered on the receiving side. Probably the whole successor stuff can be folded up into the substitute mechanism; this would be a nice simplification. commit d072485d2895d01dbbab1d899418726e3349343f Author: Eelco Dolstra Date: Thu Jul 10 13:41:28 2003 +0000 * Get `nix-push' working again. It now uses Nix/Fix to create Nix archives (using the package in corepkgs/nar). * queryPathByHash -> expandHash, and it takes an argument specifying the target path (which may be empty). * Install the core Fix packages in $prefix/share/fix. TODO: bootstrap Nix and install Nix as a Fix package. commit 5d4b90b689b09965be39c69aceddaf0b165598d0 Author: Eelco Dolstra Date: Thu Jul 10 09:21:40 2003 +0000 * Actually go through the search directories when looking for files. commit 089b43617501b19b94523b2211877841ed09e70e Author: Eelco Dolstra Date: Thu Jul 10 09:12:52 2003 +0000 * Deleted the sys directory. commit b96239c65703afba195a952d9f21b9588c136ac7 Author: Eelco Dolstra Date: Thu Jul 10 09:11:30 2003 +0000 * Moved the fetchutl package to corepkgs. commit 9ebd78144a9c996e39ffc209c05a511f119f55ae Author: Eelco Dolstra Date: Thu Jul 10 09:09:48 2003 +0000 * Added a directory for standard Fix descriptors. commit 6011bd0da24c100f86239ed826fa7b496bbdddf8 Author: Eelco Dolstra Date: Wed Jul 9 16:12:40 2003 +0000 * Outline of the new scheme for derivate distribution. commit 2b95a9dc05d0a943859ba92bb301c294473758f1 Author: Eelco Dolstra Date: Wed Jul 9 15:02:03 2003 +0000 * When computing the set of paths referenced by an expression, also include the paths of the subterms. commit 9a99dc736d814f41d2b3ceb92da2435ae2dd5632 Author: Eelco Dolstra Date: Tue Jul 8 20:26:22 2003 +0000 * Canonicalise paths so that Fix produces identical Nix expressions for identical inputs. commit cab3f4977a412681a77767ec7307ee642b61332d Author: Eelco Dolstra Date: Tue Jul 8 19:58:41 2003 +0000 * A path canonicaliser that doesn't depend on the existence of paths (i.e., it doesn't use realpath(3), which is broken in any case). Therefore it doesn't resolve symlinks. commit 333f4963de6d174d852774a88ada852f77f57994 Author: Eelco Dolstra Date: Tue Jul 8 15:33:06 2003 +0000 * The output of a Derive() node is not a referenced path. commit 40274c1f4f763e634dd031f7a6b4ba8ce2de7a82 Author: Eelco Dolstra Date: Tue Jul 8 13:22:08 2003 +0000 * A command to query the paths referenced by an fstate expression. * Use a temporary directory for build actions. commit a279137327ad5762bb26a23ce8ed7863812254ae Author: Eelco Dolstra Date: Tue Jul 8 10:00:46 2003 +0000 * Get `--dump' and `--delete' to work again. commit 85a913a3e78e43f7f90ef46ac041350bb5d61d1f Author: Eelco Dolstra Date: Tue Jul 8 09:59:00 2003 +0000 * Renamed `id' -> `name' to remove the implication of uniqueness. commit 0b38b43bab28dd733e057d42853d57e44ec9a7c9 Author: Eelco Dolstra Date: Tue Jul 8 09:54:47 2003 +0000 * deletePath() now removes the path from the hash2paths mapping. commit ab644ad10b00a5fd23e8d8a705a7a8a8aaf53c57 Author: Eelco Dolstra Date: Tue Jul 8 09:53:46 2003 +0000 * BaseName() primitive for the generation of more sensible names (especially in fetchurl.fix). commit a5a90f501e471383a8dfccfe8af3c804cefa77cf Author: Eelco Dolstra Date: Tue Jul 8 08:35:06 2003 +0000 * Get rid of the `netsources' database. * Rename the `refs' database to `hash2paths'. commit be96c2189ca017612277ab6301164a5e2facfca5 Author: Eelco Dolstra Date: Mon Jul 7 09:29:40 2003 +0000 * `--realise' -> `--install'. commit 5895c160c466c0a97716ffdf5ef654eb1c3c6009 Author: Eelco Dolstra Date: Mon Jul 7 09:25:26 2003 +0000 * Make dbRefs a mapping from Hash to [Path]. commit 609a224848dd08cea35a89b03b64274c82f0a2a7 Author: Eelco Dolstra Date: Mon Jul 7 07:44:57 2003 +0000 * Fixed `make check' as well. commit 224c585aba5e450fa47e41c4cc19dac2d0c6fe2a Author: Eelco Dolstra Date: Mon Jul 7 07:43:58 2003 +0000 * Refactoring on the file names. commit 7952a8053c474e771d6ee14e3ab6dc15c9ddd895 Author: Eelco Dolstra Date: Sun Jul 6 15:11:02 2003 +0000 * A utility `nix-hash' to compute Nix path hashes. commit bfa5d77211385cd8abe5d0833f84a8151ccab37d Author: Eelco Dolstra Date: Sun Jul 6 15:08:39 2003 +0000 * Bug fix: properly check result of open(). commit 82e3d8fafe0ac08589349094e3ea11022d995959 Author: Eelco Dolstra Date: Sun Jul 6 14:20:47 2003 +0000 * Got Fix working again. commit f826e432aa442e569faaf3cb04d83bfa28bcf260 Author: Eelco Dolstra Date: Fri Jul 4 15:42:03 2003 +0000 * Refactoring: move initialisation and argument parsing into a shared file. commit 01b34fe5843df9888737699ee9f9fe2f161a1fa3 Author: Eelco Dolstra Date: Fri Jul 4 15:29:58 2003 +0000 * Cleanup. commit 207ff2caf0f48db0fb539e228ec5c3938a279f2a Author: Eelco Dolstra Date: Fri Jul 4 12:18:06 2003 +0000 * Caching of expression successors. commit 40b5936691fe2448dea0080e2319cc340bc7c65c Author: Eelco Dolstra Date: Fri Jun 27 14:56:12 2003 +0000 * Realisation of Derive(...) expressions. commit 3da9687854e029e9df3b612fd592d2d5a622bb20 Author: Eelco Dolstra Date: Fri Jun 27 13:55:12 2003 +0000 * Realisation of File(...) expressions. commit bb03c45ca03e038c8b74fc1410f48d02ade4c59b Author: Eelco Dolstra Date: Fri Jun 27 13:41:42 2003 +0000 * Added the Boost format library which provides a safe printf replacement. commit d4c3edfaba91a0e5e1e9528749e5b1e178511a6d Author: Eelco Dolstra Date: Fri Jun 27 09:55:31 2003 +0000 * Normalisation. commit 3ec525258258ea50a411eb6b7d3c6aa7ecac708b Author: Eelco Dolstra Date: Wed Jun 25 15:50:37 2003 +0000 * Improved syntax and semantics for Nix expressions. commit 2b07b0e7ebee69e6a64013dcdda363c393d3f4fc Author: Eelco Dolstra Date: Wed Jun 25 14:58:56 2003 +0000 * Minor cleanups. commit 692b562342ac7ead43ef06497f6a8b4b6e724ae5 Author: Eelco Dolstra Date: Mon Jun 23 14:40:49 2003 +0000 * `nix --delete' command. commit c0cbaef4bece0c2447828739dd9622c329948064 Author: Eelco Dolstra Date: Mon Jun 23 14:08:34 2003 +0000 * `nix --restore' command. commit 5f5cab0ac7c26783a4544feb31708d4f8e0f4a51 Author: Eelco Dolstra Date: Mon Jun 23 13:27:59 2003 +0000 * A function to restore from a Nix archive. * addValue() can now import any dumpable FS object. commit 85effedca3e4cc3c10ccd835c9ea4fb712418cb9 Author: Eelco Dolstra Date: Fri Jun 20 14:11:31 2003 +0000 * Flags to indicate how values are specified on the command line (--hash, --file, --name). commit 5079ccb45537fe8de4b9579e274523734a3f634e Author: Eelco Dolstra Date: Fri Jun 20 10:53:04 2003 +0000 * Move most of Nix into a library (libnix.a). * Run `test' on `make check'. commit 1849aa2a72d7f530e2c18d640528075bcdf8991c Author: Eelco Dolstra Date: Fri Jun 20 10:40:25 2003 +0000 * Refactoring: move dump function into archive.cc. commit 38e12df631cc45fda97942070d7ebea1bb9c7f2f Author: Eelco Dolstra Date: Wed Jun 18 14:34:43 2003 +0000 * `nix --dump' command. commit aeaffec7857301a6d20d7901041918484666d567 Author: Eelco Dolstra Date: Wed Jun 18 14:34:03 2003 +0000 * Dump symlinks. commit 94cf1f86bb5d8516583f0d39ad22dbc853019798 Author: Eelco Dolstra Date: Wed Jun 18 12:36:12 2003 +0000 * Lambdas, applications, substitutions. commit bc57eb3c8a54df819bad9c300ff5569762f15c28 Author: Eelco Dolstra Date: Wed Jun 18 12:35:32 2003 +0000 * Set CPLUS_INCLUDE_PATH as well as C_INCLUDE_PATH. Otherwise g++ won't see header files under Nix control. commit fab7b128b9890cf563fa3cab5578757241902ac2 Author: Eelco Dolstra Date: Wed Jun 18 08:07:28 2003 +0000 * Automake sucks. commit 34fcf5fa0c0cc02edc6820b99d98e7ae278c6c00 Author: Eelco Dolstra Date: Tue Jun 17 21:12:58 2003 +0000 * Started integrating the new evaluation model into Nix. * Cleaned up command-line syntax. commit 7a96da3627220d11a985662446e8a75fb8cc2d40 Author: Eelco Dolstra Date: Tue Jun 17 15:47:25 2003 +0000 * Test for expression dereferencing. commit 6656993f83fa125e7b72de3962fbb5dd71cc31a4 Author: Eelco Dolstra Date: Tue Jun 17 15:45:43 2003 +0000 * Derefencing of hashed expressions. commit a7ab242fb42dad81dc1bccdca4b432587e0957dd Author: Eelco Dolstra Date: Tue Jun 17 13:37:44 2003 +0000 * Simplify the evaluator. commit c739e2058560ad018dcf68e16fa683ca404d548c Author: Eelco Dolstra Date: Mon Jun 16 21:01:18 2003 +0000 * Argument processing. commit 727beb798a701ff546adc65030f1562b87283947 Author: Eelco Dolstra Date: Mon Jun 16 16:16:09 2003 +0000 * Canonicalization: when hashing directories, sort the directory entries by name. commit 2f04e7102eaad3159073019af96e6e5c4f2c9bcf Author: Eelco Dolstra Date: Mon Jun 16 15:59:23 2003 +0000 * Path hashing. commit a09e66da5af348dc25e3b372ec9f518d3532f863 Author: Eelco Dolstra Date: Mon Jun 16 14:19:32 2003 +0000 * Description of path hashing algorithm. commit 822794001cb4260b8c04a7bd2d50d890edae709a Author: Eelco Dolstra Date: Mon Jun 16 13:33:38 2003 +0000 * Started implementing the new evaluation model. * Lots of refactorings. * Unit tests. commit b9f09b3268bf0c3d9ecd512dd3a0aa1247550cc2 Author: Eelco Dolstra Date: Mon Jun 16 07:03:40 2003 +0000 * AST for Nix expressions. commit 21fe717ce2027187e553d1edec65ef68b5d3c702 Author: Eelco Dolstra Date: Sun Jun 15 13:41:32 2003 +0000 * Refactoring: hash class. commit f66055fa1ef3eb208666b5ace7b5ab16bf7e8980 Author: Eelco Dolstra Date: Fri May 30 20:53:36 2003 +0000 * Set umask to 0022 on startup. commit 5908663f4209eed632b3973c97b25ff5a3dd3b17 Author: Eelco Dolstra Date: Fri May 30 17:01:21 2003 +0000 * Send log output to stderr. commit d1f5fd7216066d4ed04df27546e3d3e0d362c71b Author: Eelco Dolstra Date: Fri May 30 15:21:52 2003 +0000 * Log the output of builders to $prefix/var/log/nix. commit 64582f54be099eb92a75ed301c72681afa4db741 Author: Eelco Dolstra Date: Fri May 30 15:18:30 2003 +0000 * Open the database read-only when enumerating tables. commit 383297e0e835b69e0f4d7c97a9b8d441c2872251 Author: Eelco Dolstra Date: Fri May 30 15:17:40 2003 +0000 * Don't set MANPATH. It's not necessary. commit 84e235eae8581403716a87b37e9dc6210b8ad515 Author: Eelco Dolstra Date: Fri May 30 11:49:06 2003 +0000 * Set MANPATH and PKG_CONFIG_PATH. commit 5e01b220b363524e02ec07da3943e02042218167 Author: Eelco Dolstra Date: Tue May 27 11:58:14 2003 +0000 * Fix the rsync destination. commit 4d21cda0cd44db75f6b9f5942440a07303c06b4a Author: Eelco Dolstra Date: Tue May 27 09:55:47 2003 +0000 * Fix for big-endian platforms: check for endianness in MD5 computations. This is done at runtime, which is inefficient, but I can't be bothered to write an Autoconf test right now. commit 9efad7659568ad2eeee5e2cf9cf1df9322d9eb33 Author: Eelco Dolstra Date: Mon May 26 15:09:10 2003 +0000 * FreeBSD / ISO C++ compatibility fixes. commit d8bdf5b06e50ea4a618f2b69c4839f92086ebb29 Author: Eelco Dolstra Date: Mon May 26 14:19:25 2003 +0000 * Removed some debug code that prevented packages from building. commit a9f2928ed6edb15faa1ad5fc563662a08a92ced1 Author: Eelco Dolstra Date: Mon May 26 13:57:19 2003 +0000 * Moved the package descriptors and build scripts out of the Nix tree. commit 8b930a0c94ba9013d015c735cfc38c40b151f491 Author: Eelco Dolstra Date: Mon May 26 13:45:00 2003 +0000 * Some refactoring. commit f8d91f20e6c88510282263715a1b87c99afad5a1 Author: Eelco Dolstra Date: Mon May 26 09:44:18 2003 +0000 * Nix can now fetch prebuilts (and other files) from the network, iff a mapping from the hash to a url has been registered through `nix regurl'. * Bug fix in nix: don't pollute stdout when running tar, it made nix-switch barf. * Bug fix in nix-push-prebuilts: don't create a subdirectory on the target when rsync'ing. commit 13176d74cc522951e2c8ed6a878a04ddfce778ca Author: Eelco Dolstra Date: Sun May 25 22:43:33 2003 +0000 * Updated Fix descriptors to reflect the new Fix abstract syntax. commit 7dd91d3779b4f806ac0085e0ccc60416d81c1148 Author: Eelco Dolstra Date: Sun May 25 22:42:19 2003 +0000 * Prebuilt package sharing. We allow transparent binary deployment by sharing package directories (i.e., the result of building a Nix descriptor). `nix-pull-prebuilts' obtains a list of all known prebuilts by consulting the paths and URLs specified in $prefix/etc/nix/prebuilts.conf. The mappings ($pkghash, $prebuilthash) and ($prebuilthash, $location) are registered with Nix so that it can use the prebuilt with hash $prebuilthash when installing a package with hash $pkghash by downloading and unpacking $location. `nix-push-prebuilts' creates prebuilts for all packages for which no prebuilt is known to exist. It can then optionally upload these to the network through rsync. `nix-[pull|push]-prebuilts' just provide a policy. Nix provides the mechanism through the `nix [export|regprebuilt|regurl]' commands. commit 0ef4b6d0f8dcaec093e3db366b6dfb6ba47f73a6 Author: Eelco Dolstra Date: Fri Apr 25 15:33:50 2003 +0000 * Cleaned up the semantics of Fix expressions. * Conditionals and variables in Fix expressions. This allows, e.g., Descr( [ Bind("pkgId", "subversion-0.21.0") , Bind("httpsClient", Bool(True)) , Bind("httpServer", Bool(True)) , Bind("ssl", If(Var("httpsClient"), Fix("./openssl-0.9.7b.fix"), "")) , Bind("httpd", If(Var("httpServer"), Fix("./httpd-2.0.45.fix"), "")) ... ]) which introduces domain feature variables httpsClient and httpServer (i.e., whether Subversion is built with https client and webdav server support); the values of the variables influences package dependencies and the build scripts. The next step is to allow that packages can express constraints on each other. E.g., StrategoXT is dependent on an ATerm library with the "gcc" variant enabled. In fact, this may cause several Nix instantiations to be created from a single Fix descriptor. If possible, Fix should try to find the least set of instantiations that obeys the constraints. commit d6d930a975cf0bfacb8a3117752452b89921b6ee Author: Eelco Dolstra Date: Fri Apr 25 15:20:05 2003 +0000 * Bug fix: deleting the old links didn't work properly. commit fcc5ae151bb78006e7acc5ab8bf6b54692281777 Author: Eelco Dolstra Date: Fri Apr 25 15:01:15 2003 +0000 * Remove build directory from a package directory after building it. commit 76205df09cd6ac700f002f22e285440364d96ccd Author: Eelco Dolstra Date: Thu Apr 24 11:45:23 2003 +0000 * Removed old Nix descriptors. commit 243370bc52b6ecc706cd7ad3a3c8075f74ac1fc0 Author: Eelco Dolstra Date: Thu Apr 24 11:43:11 2003 +0000 * nix-switch now removes the link to the previously activated system package as a root of the garbage collector, unless `--keep' is specified. commit 24b3d0759e864fdf92fee1085e234535311029ef Author: Eelco Dolstra Date: Thu Apr 24 11:41:50 2003 +0000 * File removed. commit 9713e8577f752ef70c18a9cad62a4b0e88c769de Author: Eelco Dolstra Date: Thu Apr 24 11:41:24 2003 +0000 * getpkg, delpkg, and so on now accept multiple arguments. commit 49e0d743d7348ba15f6c8125138c4e17b271d8c3 Author: Eelco Dolstra Date: Wed Apr 23 21:21:06 2003 +0000 * Fix descriptors for Pan and its dependencies. commit f546e0cda450642177da02895f39f34e3ce1a6ff Author: Eelco Dolstra Date: Wed Apr 23 09:02:53 2003 +0000 * Fix descriptor for Subversion 0.21.0. commit 6faa154c89220792afbee534e4d7e26b6cba7e90 Author: Eelco Dolstra Date: Wed Apr 23 07:23:01 2003 +0000 * Add "... || exit 1" to every command to catch failure. commit e59c3246b96492b84c77aebe293ec68d96fe9305 Author: Eelco Dolstra Date: Wed Apr 23 07:21:57 2003 +0000 * Redirect stdout to stderr when executing the build script. commit f7526febe4e60e3da61664a5fb58ff19a5882ded Author: Eelco Dolstra Date: Wed Apr 9 13:03:00 2003 +0000 * A garbage collector for installed packages. nix-collect-garbage doesn't actually delete any packages, it just prints their descriptor hashes. So we can do nix info $(nix-collect-garbage) to print out the ids of the packages that would be deleted, and nix delpkg $(nix-collect-garbage) to actually delete them. commit 30a6122f8061e8c3ac2d96078b75aafa63101f02 Author: Eelco Dolstra Date: Wed Apr 9 12:46:44 2003 +0000 * When we activate a descriptor in nix-switch, remember its hash. This allows us to find out all `live' packages on the system by doing nix closure $(cat /nix/var/nix/links/*.hash) which will print out the activated configurations and all packages referenced by them. We could then garbage collect unused packages by deleting the difference between `nix listinst' and the set returned by `nix closure ...'. commit b762f4df7f6b8d0a4b306fc7e1c2633c4802d1c2 Author: Eelco Dolstra Date: Wed Apr 9 12:37:49 2003 +0000 * In `fix --instantiate', only print out the hashes of the Nix descriptors generated out of Fix descriptors specified on the command line. This allows us to say: nix-switch $(fix -i ./test/fixdescriptors/system.fix) commit aa8fda4b54fbd84b7bc6b11904c156367683e8f6 Author: Eelco Dolstra Date: Wed Apr 9 12:26:48 2003 +0000 * We no longer use nix-populate standalone, rather we use it as a build action for `system' packages (like system.fix) that have dependencies on all packages we want to activate. So the command sequence to switch to a new activation configuration of the system would be: $ fix -i .../fixdescriptors/system.fix ... system.fix -> 89cf4713b37cc66989304abeb9ea189f $ nix-switch 89cf4713b37cc66989304abeb9ea189f * A nix-profile.sh script that can be included in .bashrc. commit f56b7312b273546871a1eca7d34c60474d3c4050 Author: Eelco Dolstra Date: Tue Apr 8 15:36:54 2003 +0000 * Descriptor importing in Fix. commit cc6eafb3d0a53c8bb02746411d3d41403ce9eb83 Author: Eelco Dolstra Date: Tue Apr 8 14:05:15 2003 +0000 * FreeBSD / gcc 2.95 compatibility fixes. * A script to generate prebuilt registration scripts. commit f7ef88df1fd6087deae02a53b8f18b64050f75db Author: Eelco Dolstra Date: Tue Apr 8 12:13:57 2003 +0000 * Added some installation instructions to the readme. commit 0d2b24cdd103f21861ad42fd6d98e5d1cb252646 Author: Eelco Dolstra Date: Tue Apr 8 12:00:51 2003 +0000 * `Fix' is a high-level descriptor instantiator for Nix. It replaces nix-instantiate. commit 814b256da43ebdad79fe9544a59f6ae680da7cb9 Author: Eelco Dolstra Date: Sun Apr 6 22:19:26 2003 +0000 * Better installation: make directories, create database. * Fixed the register script. commit 2eea8832f0bc5f15979b5f091c3ac5f04593f0ca Author: Eelco Dolstra Date: Sun Apr 6 22:17:47 2003 +0000 * The latest version of Pan. commit 1447cf35bd633c365bb7584dedb41327951d0c07 Author: Eelco Dolstra Date: Sun Apr 6 22:09:47 2003 +0000 * Delete source after building. commit 136c00e881dd290d470923b0ce7760de2df5e0ad Author: Eelco Dolstra Date: Fri Apr 4 16:14:56 2003 +0000 * Autoconf / Automake configuration and building. commit ab723e341aab021624e93b7687c252acaeef9394 Author: Eelco Dolstra Date: Fri Apr 4 12:02:40 2003 +0000 * Minor refactoring: use iterators to process arguments. commit c68dca5dac87f710c880bcf78710a7be9609d29c Author: Eelco Dolstra Date: Wed Apr 2 15:34:44 2003 +0000 * Script to register pre-built packages. commit 5bc26fb73fe997b05c2e43593d17de102c4249b7 Author: Eelco Dolstra Date: Wed Apr 2 15:34:05 2003 +0000 * Importing and exporting of pre-built packages. commit 383f9bb0f19f76fa4cdbdfb5327d82e77212c1b6 Author: Eelco Dolstra Date: Tue Apr 1 14:00:47 2003 +0000 * Use ATerms for Nix descriptors. commit ced20f187e36927adc88ab628b67838f51155244 Author: Eelco Dolstra Date: Mon Mar 31 14:28:15 2003 +0000 * Nix descriptor for Subversion. commit 31f177ef0a7463f59a28342032eb8948994ce1a6 Author: Eelco Dolstra Date: Fri Mar 28 16:27:23 2003 +0000 * Check for collissions. commit 278ea4097e4deca33da1a08d746e8d80a620ce95 Author: Eelco Dolstra Date: Fri Mar 28 10:33:34 2003 +0000 * Don't fork in `nix run'. commit f915f773495e9675a6cd514742666c8c12f005e6 Author: Eelco Dolstra Date: Fri Mar 28 09:53:22 2003 +0000 * Allow arguments to be passed to programs in `nix run'. commit 0f40a560cab23f70881e5af405ea112a869dc39a Author: Eelco Dolstra Date: Tue Mar 25 16:36:25 2003 +0000 * Added a script nix-activate which builds a list of "activated" packages (i.e., the packages that should appear in the user's $PATH, and so on). Based on this list, the script nix-populate creates a hierarchy of symlinks to the relevant files in those packages (e.g., for pkg/bin and pkg/lib). A nice property of nix-populate is that on each run it creates a *new* tree, rather than updating the old one. It then atomically switches over to the new tree. This allows atomic upgrades or rollbacks on the set of activated packages. commit 3f1a1457e9ad91f93151200fe43c7c33ea95417b Author: Eelco Dolstra Date: Tue Mar 25 11:39:51 2003 +0000 * Integrate hash into instantiated descriptor file names. * Use MD5::Digest. commit 73c53935d00660301e9408beabf1c80d6ef48610 Author: Eelco Dolstra Date: Mon Mar 24 17:49:56 2003 +0000 * For efficiency: md5 integrated into nix. * Command `nix ensure' which is like `nix getpkg' except that if the has refers to a run action it will just ensure that the imports are there. * Command `nix closure' to print out the closure of the set of descriptors under the import relation, starting at a set of roots. This can be used for garbage collection (e.g., given a list of `activated' packages, we can delete all packages not reachable from those). * Command `nix graph' to print out a Dot graph of the dependency graph. * `nix-addroot' adds a root for the (unimplemented) garbage collector. commit eeab86e0acbb32cdb360443dd6efe7031fed7295 Author: Eelco Dolstra Date: Mon Mar 24 16:43:52 2003 +0000 * Typo fix. commit 2dc84e556911407fe75e1ceb6a9fe34ed21725db Author: Eelco Dolstra Date: Mon Mar 24 12:49:40 2003 +0000 * Descriptors now have a "system" field specifying the platform that the build or run action should be perfomed on. This ensures that descriptors have different hashes on different platforms. commit 9d2f128252ea9dc9b706bec2bfdaa35600190385 Author: Eelco Dolstra Date: Mon Mar 24 11:50:20 2003 +0000 * Refactoring. commit 8d682ba551c44daecd427999114b9c520eef0296 Author: Eelco Dolstra Date: Sun Mar 23 23:28:28 2003 +0000 * A descriptor for running the Pan newsreader. * Added descriptors for gtkspell and its support package pspell. Gtkspell is an optional dependency of Pan, so we should add the ability to nix-instantiate to instantiate variants of a package based on a selection of features. commit 20d165c34467338f07c4808783cd50318c38a47b Author: Eelco Dolstra Date: Sun Mar 23 23:24:09 2003 +0000 * A command to run programs in Nix packages, that is, to execute a run action. Run actions are described by uniquely hashed descriptors, just like build actions. Therefore run actions can have dependencies, but these need not be the same as the build time dependencies (e.g., at runtime we can link against a different version of a dynamic library). Example: nix run 31d6bf4c171282367065e0deecd7c579 will run the Pan 0.13.91 newsreader with gtkspell support. commit 800d8e950f13b9cb9099c5d1270a4385d5ae55da Author: Eelco Dolstra Date: Fri Mar 21 15:58:40 2003 +0000 * Added a command to list installed packages. commit 2e59698b78d3fcba6908d8478c15943834d9635f Author: Eelco Dolstra Date: Fri Mar 21 15:53:35 2003 +0000 * Added a command to verify the consistency of the database. commit fa51d6fcd9ee7efc897e8e07a2db7a41f974d6a6 Author: Eelco Dolstra Date: Fri Mar 21 14:11:44 2003 +0000 * Forgot to commit this one. commit e582ee67cd682c13667daccf33e8071189ef946c Author: Eelco Dolstra Date: Fri Mar 21 14:10:06 2003 +0000 * Fetch sources from the network. commit 88d257b17f0f668798568d68e2d2063f31fe8a2f Author: Eelco Dolstra Date: Fri Mar 21 09:58:01 2003 +0000 * Renamed dist -> build. commit 4c43711810c73a3899066b9401a9517f53e1b0f1 Author: Eelco Dolstra Date: Thu Mar 20 22:25:01 2003 +0000 * Descriptor templates for the Pan newsreader and all its dependencies. commit cadc3852e44bc625872ef18f4407bff6797ac5dd Author: Eelco Dolstra Date: Thu Mar 20 22:23:48 2003 +0000 * nix-instantiate now instantiantes the closure of the set of descriptor templates under the import relation. I.e., we can now say: nix-instantiate outdir foo.nix which will create descriptors for foo.nix and all imported packages in outdir/. commit f7a98e081dac20858cda21a6190f8d0222e59728 Author: Eelco Dolstra Date: Thu Mar 20 16:53:00 2003 +0000 * Various updates. commit b3594e9eaf2b80c7c585035c5538ee59c608688f Author: Eelco Dolstra Date: Thu Mar 20 16:52:30 2003 +0000 * A script to instantiate package descriptors from templates. commit 8999f923ea1a459b3e4d404745b001323647711a Author: Eelco Dolstra Date: Fri Mar 14 16:43:14 2003 +0000 * Improved Nix. Resources (package descriptors and other source files) are now referenced using their cryptographic hashes. This ensures that if two package descriptors have the same contents, then they describe the same package. This property is not as trivial as it sounds: generally import relations cause this property not to hold w.r.t. temporality. But since imports also use hashes to reference other packages, equality follows by induction. commit 18ebf518de325c7059648bfd6df464d8d5204bb3 Author: Eelco Dolstra Date: Thu Mar 13 16:28:32 2003 +0000 * Converted to C++. commit 75d788b0f24e8de033a22c0869032549d602d4f6 Author: Eelco Dolstra Date: Thu Mar 13 14:24:49 2003 +0000 * Initial version of nix. commit 841fcbd04755c7a2865c51c1e2d3b045976b7452 Author: Eelco Dolstra Date: Wed Mar 12 13:32:24 2003 +0000 * And a trunk to go along with that. --- daemon.am | 7 +- nix/libstore/build.cc | 313 +++++++++++++++++++++++----------------- nix/libstore/gc.cc | 69 ++++----- nix/libstore/globals.cc | 92 ++++++++---- nix/libstore/globals.hh | 26 ++-- nix/libstore/local-store.cc | 81 +++++------ nix/libstore/local-store.hh | 19 ++- nix/libstore/optimise-store.cc | 16 ++ nix/libstore/remote-store.cc | 31 +++- nix/libstore/remote-store.hh | 5 +- nix/libstore/store-api.hh | 4 + nix/libstore/worker-protocol.hh | 2 +- nix/libutil/archive.cc | 171 +++++++++++++--------- nix/libutil/archive.hh | 12 +- nix/libutil/serialise.cc | 27 ++++ nix/libutil/serialise.hh | 11 +- nix/libutil/types.hh | 17 ++- nix/libutil/util.cc | 176 +++++++++++----------- nix/libutil/util.hh | 30 +++- nix/nix-daemon/guix-daemon.cc | 25 +++- nix/nix-daemon/nix-daemon.cc | 134 +++++++++-------- tests/guix-archive.sh | 3 +- 22 files changed, 750 insertions(+), 521 deletions(-) diff --git a/daemon.am b/daemon.am index 9d6516ae6c..50b488923a 100644 --- a/daemon.am +++ b/daemon.am @@ -25,8 +25,8 @@ CLEANFILES += $(BUILT_SOURCES) noinst_LIBRARIES = libformat.a libutil.a libstore.a -# Use '-std=c++0x' for 'std::shared_ptr'. -AM_CXXFLAGS = -Wall -std=c++0x +# Use '-std=c++11' for 'std::shared_ptr', 'auto', lambdas, and more. +AM_CXXFLAGS = -Wall -std=c++11 libformat_a_SOURCES = \ nix/boost/format/free_funcs.cc \ @@ -112,7 +112,8 @@ libstore_a_CPPFLAGS = \ -DNIX_CONF_DIR=\"$(sysconfdir)/guix\" \ -DNIX_LIBEXEC_DIR=\"$(libexecdir)\" \ -DNIX_BIN_DIR=\"$(bindir)\" \ - -DOPENSSL_PATH="\"guix-authenticate\"" + -DOPENSSL_PATH="\"guix-authenticate\"" \ + -DDEFAULT_CHROOT_DIRS="\"\"" libstore_a_CXXFLAGS = $(AM_CXXFLAGS) \ $(SQLITE3_CFLAGS) $(LIBGCRYPT_CFLAGS) diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc index f38cd29940..009fcb2c0c 100644 --- a/nix/libstore/build.cc +++ b/nix/libstore/build.cc @@ -57,9 +57,8 @@ #include #endif -#if HAVE_SYS_PERSONALITY_H +#if __linux__ #include -#define CAN_DO_LINUX32_BUILDS #endif #if HAVE_STATVFS @@ -85,8 +84,12 @@ class Goal; typedef std::shared_ptr GoalPtr; typedef std::weak_ptr WeakGoalPtr; +struct CompareGoalPtrs { + bool operator() (const GoalPtr & a, const GoalPtr & b); +}; + /* Set of goals. */ -typedef set Goals; +typedef set Goals; typedef list WeakGoals; /* A map of paths to goals (and the other way around). */ @@ -173,11 +176,20 @@ public: (important!), etc. */ virtual void cancel(bool timeout) = 0; + virtual string key() = 0; + protected: void amDone(ExitCode result); }; +bool CompareGoalPtrs::operator() (const GoalPtr & a, const GoalPtr & b) { + string s1 = a->key(); + string s2 = b->key(); + return s1 < s2; +} + + /* A mapping used to remember for each child process to what goal it belongs, and file descriptors for receiving log data and output path creation commands. */ @@ -238,6 +250,9 @@ public: failure). */ bool permanentFailure; + /* Set if at least one derivation had a timeout. */ + bool timedOut; + LocalStore & store; std::shared_ptr hook; @@ -301,6 +316,7 @@ public: void addToWeakGoals(WeakGoals & goals, GoalPtr p) { // FIXME: necessary? + // FIXME: O(n) foreach (WeakGoals::iterator, i, goals) if (i->lock() == p) return; goals.push_back(p); @@ -374,8 +390,6 @@ void Goal::trace(const format & f) /* Common initialisation performed in child processes. */ static void commonChildInit(Pipe & logPipe) { - restoreAffinity(); - /* Put the child in a separate session (and thus a separate process group) so that it has no controlling terminal (meaning that e.g. ssh cannot open /dev/tty) and it doesn't receive @@ -590,7 +604,9 @@ HookInstance::HookInstance() { debug("starting build hook"); - Path buildHook = absPath(getEnv("NIX_BUILD_HOOK")); + Path buildHook = getEnv("NIX_BUILD_HOOK"); + if (string(buildHook, 0, 1) != "/") buildHook = settings.nixLibexecDir + "/nix/" + buildHook; + buildHook = canonPath(buildHook); /* Create a pipe to get the output of the child. */ fromHook.create(); @@ -602,44 +618,30 @@ HookInstance::HookInstance() builderOut.create(); /* Fork the hook. */ - pid = maybeVfork(); - switch (pid) { - - case -1: - throw SysError("unable to fork"); + pid = startProcess([&]() { - case 0: - try { /* child */ + commonChildInit(fromHook); - commonChildInit(fromHook); + if (chdir("/") == -1) throw SysError("changing into `/"); - if (chdir("/") == -1) throw SysError("changing into `/"); + /* Dup the communication pipes. */ + if (dup2(toHook.readSide, STDIN_FILENO) == -1) + throw SysError("dupping to-hook read side"); - /* Dup the communication pipes. */ - if (dup2(toHook.readSide, STDIN_FILENO) == -1) - throw SysError("dupping to-hook read side"); + /* Use fd 4 for the builder's stdout/stderr. */ + if (dup2(builderOut.writeSide, 4) == -1) + throw SysError("dupping builder's stdout/stderr"); - /* Use fd 4 for the builder's stdout/stderr. */ - if (dup2(builderOut.writeSide, 4) == -1) - throw SysError("dupping builder's stdout/stderr"); + execl(buildHook.c_str(), buildHook.c_str(), settings.thisSystem.c_str(), + (format("%1%") % settings.maxSilentTime).str().c_str(), + (format("%1%") % settings.printBuildTrace).str().c_str(), + (format("%1%") % settings.buildTimeout).str().c_str(), + NULL); - execl(buildHook.c_str(), buildHook.c_str(), settings.thisSystem.c_str(), - (format("%1%") % settings.maxSilentTime).str().c_str(), - (format("%1%") % settings.printBuildTrace).str().c_str(), - (format("%1%") % settings.buildTimeout).str().c_str(), - NULL); + throw SysError(format("executing `%1%'") % buildHook); + }); - throw SysError(format("executing `%1%'") % buildHook); - - } catch (std::exception & e) { - writeToStderr("build hook error: " + string(e.what()) + "\n"); - } - _exit(1); - } - - /* parent */ pid.setSeparatePG(true); - pid.setKillSignal(SIGTERM); fromHook.writeSide.close(); toHook.readSide.close(); } @@ -648,7 +650,8 @@ HookInstance::HookInstance() HookInstance::~HookInstance() { try { - pid.kill(); + toHook.writeSide.close(); + pid.kill(true); } catch (...) { ignoreException(); } @@ -784,17 +787,21 @@ private: outputs to allow hard links between outputs. */ InodesSeen inodesSeen; - /* Magic exit code denoting that setting up the child environment - failed. (It's possible that the child actually returns the - exit code, but ah well.) */ - const static int childSetupFailed = 189; - public: DerivationGoal(const Path & drvPath, const StringSet & wantedOutputs, Worker & worker, BuildMode buildMode = bmNormal); ~DerivationGoal(); void cancel(bool timeout); + string key() + { + /* Ensure that derivations get built in order of their name, + i.e. a derivation named "aardvark" always comes before + "baboon". And substitution goals always happen before + derivation goals (due to "b$"). */ + return "b$" + storePathToName(drvPath) + "$" + drvPath; + } + void work(); Path getDrvPath() @@ -879,13 +886,9 @@ DerivationGoal::~DerivationGoal() { /* Careful: we should never ever throw an exception from a destructor. */ - try { - killChild(); - deleteTmpDir(false); - closeLogFile(); - } catch (...) { - ignoreException(); - } + try { killChild(); } catch (...) { ignoreException(); } + try { deleteTmpDir(false); } catch (...) { ignoreException(); } + try { closeLogFile(); } catch (...) { ignoreException(); } } @@ -956,6 +959,11 @@ void DerivationGoal::init() /* The first thing to do is to make sure that the derivation exists. If it doesn't, it may be created through a substitute. */ + if (buildMode == bmNormal && worker.store.isValidPath(drvPath)) { + haveDerivation(); + return; + } + addWaitee(worker.makeSubstitutionGoal(drvPath)); state = &DerivationGoal::haveDerivation; @@ -1209,7 +1217,7 @@ static string get(const StringPairs & map, const string & key) static bool canBuildLocally(const string & platform) { return platform == settings.thisSystem -#ifdef CAN_DO_LINUX32_BUILDS +#if __linux__ || (platform == "i686-linux" && settings.thisSystem == "x86_64-linux") #endif ; @@ -1433,9 +1441,6 @@ void DerivationGoal::buildDone() if (pathExists(chrootRootDir + *i)) rename((chrootRootDir + *i).c_str(), i->c_str()); - if (WIFEXITED(status) && WEXITSTATUS(status) == childSetupFailed) - throw Error(format("failed to set up the build environment for `%1%'") % drvPath); - if (diskFull) printMsg(lvlError, "note: build failure may have been caused by lack of free disk space"); @@ -1469,37 +1474,41 @@ void DerivationGoal::buildDone() outputLocks.unlock(); } catch (BuildError & e) { - printMsg(lvlError, e.msg()); + if (!hook) + printMsg(lvlError, e.msg()); outputLocks.unlock(); buildUser.release(); - /* When using a build hook, the hook will return a remote - build failure using exit code 100. Anything else is a hook - problem. */ - bool hookError = hook && - (!WIFEXITED(status) || WEXITSTATUS(status) != 100); + if (hook && WIFEXITED(status) && WEXITSTATUS(status) == 101) { + if (settings.printBuildTrace) + printMsg(lvlError, format("@ build-failed %1% - timeout") % drvPath); + worker.timedOut = true; + } - if (settings.printBuildTrace) { - if (hook && hookError) + else if (hook && (!WIFEXITED(status) || WEXITSTATUS(status) != 100)) { + if (settings.printBuildTrace) printMsg(lvlError, format("@ hook-failed %1% - %2% %3%") % drvPath % status % e.msg()); - else + } + + else { + if (settings.printBuildTrace) printMsg(lvlError, format("@ build-failed %1% - %2% %3%") % drvPath % 1 % e.msg()); + worker.permanentFailure = !fixedOutput && !diskFull; + + /* Register the outputs of this build as "failed" so we + won't try to build them again (negative caching). + However, don't do this for fixed-output derivations, + since they're likely to fail for transient reasons + (e.g., fetchurl not being able to access the network). + Hook errors (like communication problems with the + remote machine) shouldn't be cached either. */ + if (settings.cacheFailure && !fixedOutput && !diskFull) + foreach (DerivationOutputs::iterator, i, drv.outputs) + worker.store.registerFailedPath(i->second.path); } - /* Register the outputs of this build as "failed" so we won't - try to build them again (negative caching). However, don't - do this for fixed-output derivations, since they're likely - to fail for transient reasons (e.g., fetchurl not being - able to access the network). Hook errors (like - communication problems with the remote machine) shouldn't - be cached either. */ - if (settings.cacheFailure && !hookError && !fixedOutput) - foreach (DerivationOutputs::iterator, i, drv.outputs) - worker.store.registerFailedPath(i->second.path); - - worker.permanentFailure = !hookError && !fixedOutput && !diskFull; amDone(ecFailed); return; } @@ -1825,12 +1834,15 @@ void DerivationGoal::startBuilder() /* Bind-mount a user-configurable set of directories from the host file system. */ - foreach (StringSet::iterator, i, settings.dirsInChroot) { - size_t p = i->find('='); + PathSet dirs = tokenizeString(settings.get("build-chroot-dirs", string(DEFAULT_CHROOT_DIRS))); + PathSet dirs2 = tokenizeString(settings.get("build-extra-chroot-dirs", string(""))); + dirs.insert(dirs2.begin(), dirs2.end()); + for (auto & i : dirs) { + size_t p = i.find('='); if (p == string::npos) - dirsInChroot[*i] = *i; + dirsInChroot[i] = i; else - dirsInChroot[string(*i, 0, p)] = string(*i, p + 1); + dirsInChroot[string(i, 0, p)] = string(i, p + 1); } dirsInChroot[tmpDir] = tmpDir; @@ -1969,10 +1981,15 @@ void DerivationGoal::startBuilder() worker.childStarted(shared_from_this(), pid, singleton >(builderOut.readSide), true, true); + /* Check if setting up the build environment failed. */ + string msg = readLine(builderOut.readSide); + if (!msg.empty()) throw Error(msg); + if (settings.printBuildTrace) { printMsg(lvlError, format("@ build-started %1% - %2% %3%") % drvPath % drv.platform % logFile); } + } @@ -1981,10 +1998,14 @@ void DerivationGoal::initChild() /* Warning: in the child we should absolutely not make any SQLite calls! */ - bool inSetup = true; - try { /* child */ + _writeToStderr = 0; + + restoreAffinity(); + + commonChildInit(builderOut); + #if CHROOT_ENABLED if (useChroot) { /* Initialise the loopback interface. */ @@ -2088,9 +2109,9 @@ void DerivationGoal::initChild() throw SysError("mounting /dev/pts"); createSymlink("/dev/pts/ptmx", chrootRootDir + "/dev/ptmx"); - /* Make sure /dev/pts/ptmx is world-writable. With some - Linux versions, it is created with permissions 0. */ - chmod_(chrootRootDir + "/dev/pts/ptmx", 0666); + /* Make sure /dev/pts/ptmx is world-writable. With some + Linux versions, it is created with permissions 0. */ + chmod_(chrootRootDir + "/dev/pts/ptmx", 0666); } /* Do the chroot(). Below we do a chdir() to the @@ -2103,15 +2124,13 @@ void DerivationGoal::initChild() } #endif - commonChildInit(builderOut); - if (chdir(tmpDir.c_str()) == -1) throw SysError(format("changing into `%1%'") % tmpDir); /* Close all other file descriptors. */ closeMostFDs(set()); -#ifdef CAN_DO_LINUX32_BUILDS +#if __linux__ /* Change the personality to 32-bit if we're doing an i686-linux build on an x86_64-linux machine. */ struct utsname utsbuf; @@ -2119,7 +2138,7 @@ void DerivationGoal::initChild() if (drv.platform == "i686-linux" && (settings.thisSystem == "x86_64-linux" || (!strcmp(utsbuf.sysname, "Linux") && !strcmp(utsbuf.machine, "x86_64")))) { - if (personality(0x0008 | 0x8000000 /* == PER_LINUX32_3GB */) == -1) + if (personality(PER_LINUX32) == -1) throw SysError("cannot set i686-linux personality"); } @@ -2129,6 +2148,11 @@ void DerivationGoal::initChild() int cur = personality(0xffffffff); if (cur != -1) personality(cur | 0x0020000 /* == UNAME26 */); } + + /* Disable address space randomization for improved + determinism. */ + int cur = personality(0xffffffff); + if (cur != -1) personality(cur | ADDR_NO_RANDOMIZE); #endif /* Fill in the environment. */ @@ -2167,21 +2191,28 @@ void DerivationGoal::initChild() /* Fill in the arguments. */ string builderBasename = baseNameOf(drv.builder); args.push_back(builderBasename.c_str()); - foreach (Strings::iterator, i, drv.args) - args.push_back(rewriteHashes(*i, rewritesToTmp).c_str()); + foreach (Strings::iterator, i, drv.args) { + auto re = rewriteHashes(*i, rewritesToTmp); + auto cstr = new char[re.length()+1]; + std::strcpy(cstr, re.c_str()); + + args.push_back(cstr); + } args.push_back(0); restoreSIGPIPE(); + /* Indicate that we managed to set up the build environment. */ + writeToStderr("\n"); + /* Execute the program. This should not return. */ - inSetup = false; execve(program.c_str(), (char * *) &args[0], (char * *) envArr); throw SysError(format("executing `%1%'") % drv.builder); } catch (std::exception & e) { - writeToStderr("build error: " + string(e.what()) + "\n"); - _exit(inSetup ? childSetupFailed : 1); + writeToStderr("while setting up the build environment: " + string(e.what()) + "\n"); + _exit(1); } abort(); /* never reached */ @@ -2333,7 +2364,7 @@ void DerivationGoal::registerOutputs() if (buildMode == bmCheck) { ValidPathInfo info = worker.store.queryPathInfo(path); if (hash.first != info.hash) - throw Error(format("derivation `%2%' may not be deterministic: hash mismatch in output `%1%'") % drvPath % path); + throw Error(format("derivation `%1%' may not be deterministic: hash mismatch in output `%2%'") % drvPath % path); continue; } @@ -2347,16 +2378,36 @@ void DerivationGoal::registerOutputs() debug(format("referenced input: `%1%'") % *i); } - /* If the derivation specifies an `allowedReferences' - attribute (containing a list of paths that the output may - refer to), check that all references are in that list. !!! - allowedReferences should really be per-output. */ - if (drv.env.find("allowedReferences") != drv.env.end()) { - PathSet allowed = parseReferenceSpecifiers(drv, get(drv.env, "allowedReferences")); - foreach (PathSet::iterator, i, references) - if (allowed.find(*i) == allowed.end()) - throw BuildError(format("output is not allowed to refer to path `%1%'") % *i); - } + /* Enforce `allowedReferences' and friends. */ + auto checkRefs = [&](const string & attrName, bool allowed, bool recursive) { + if (drv.env.find(attrName) == drv.env.end()) return; + + PathSet spec = parseReferenceSpecifiers(drv, get(drv.env, attrName)); + + PathSet used; + if (recursive) { + /* Our requisites are the union of the closures of our references. */ + for (auto & i : references) + /* Don't call computeFSClosure on ourselves. */ + if (actualPath != i) + computeFSClosure(worker.store, i, used); + } else + used = references; + + for (auto & i : used) + if (allowed) { + if (spec.find(i) == spec.end()) + throw BuildError(format("output (`%1%') is not allowed to refer to path `%2%'") % actualPath % i); + } else { + if (spec.find(i) != spec.end()) + throw BuildError(format("output (`%1%') is not allowed to refer to path `%2%'") % actualPath % i); + } + }; + + checkRefs("allowedReferences", true, false); + checkRefs("allowedRequisites", true, true); + checkRefs("disallowedReferences", false, false); + checkRefs("disallowedRequisites", false, true); worker.store.optimisePath(path); // FIXME: combine with scanForReferences() @@ -2586,6 +2637,13 @@ public: void cancel(bool timeout); + string key() + { + /* "a$" ensures substitution goals happen before derivation + goals. */ + return "a$" + storePathToName(storePath) + "$" + storePath; + } + void work(); /* The states. */ @@ -2781,32 +2839,18 @@ void SubstitutionGoal::tryToRun() const char * * argArr = strings2CharPtrs(args); /* Fork the substitute program. */ - pid = maybeVfork(); - - switch (pid) { + pid = startProcess([&]() { - case -1: - throw SysError("unable to fork"); + commonChildInit(logPipe); - case 0: - try { /* child */ + if (dup2(outPipe.writeSide, STDOUT_FILENO) == -1) + throw SysError("cannot dup output pipe into stdout"); - commonChildInit(logPipe); + execv(sub.c_str(), (char * *) argArr); - if (dup2(outPipe.writeSide, STDOUT_FILENO) == -1) - throw SysError("cannot dup output pipe into stdout"); + throw SysError(format("executing `%1%'") % sub); + }); - execv(sub.c_str(), (char * *) argArr); - - throw SysError(format("executing `%1%'") % sub); - - } catch (std::exception & e) { - writeToStderr("substitute error: " + string(e.what()) + "\n"); - } - _exit(1); - } - - /* parent */ pid.setSeparatePG(true); pid.setKillSignal(SIGTERM); outPipe.writeSide.close(); @@ -2944,6 +2988,7 @@ Worker::Worker(LocalStore & store) nrLocalBuilds = 0; lastWokenUp = 0; permanentFailure = false; + timedOut = false; } @@ -3109,15 +3154,19 @@ void Worker::run(const Goals & _topGoals) checkInterrupt(); - /* Call every wake goal. */ + /* Call every wake goal (in the ordering established by + CompareGoalPtrs). */ while (!awake.empty() && !topGoals.empty()) { - WeakGoals awake2(awake); + Goals awake2; + for (auto & i : awake) { + GoalPtr goal = i.lock(); + if (goal) awake2.insert(goal); + } awake.clear(); - foreach (WeakGoals::iterator, i, awake2) { + for (auto & goal : awake2) { checkInterrupt(); - GoalPtr goal = i->lock(); - if (goal) goal->work(); - if (topGoals.empty()) break; + goal->work(); + if (topGoals.empty()) break; // stuff may have been cancelled } } @@ -3255,6 +3304,7 @@ void Worker::waitForInput() format("%1% timed out after %2% seconds of silence") % goal->getName() % settings.maxSilentTime); goal->cancel(true); + timedOut = true; } else if (goal->getExitCode() == Goal::ecBusy && @@ -3266,6 +3316,7 @@ void Worker::waitForInput() format("%1% timed out after %2% seconds") % goal->getName() % settings.buildTimeout); goal->cancel(true); + timedOut = true; } } @@ -3282,7 +3333,7 @@ void Worker::waitForInput() unsigned int Worker::exitStatus() { - return permanentFailure ? 100 : 1; + return timedOut ? 101 : (permanentFailure ? 100 : 1); } diff --git a/nix/libstore/gc.cc b/nix/libstore/gc.cc index f90edac1cd..f98e02c1e2 100644 --- a/nix/libstore/gc.cc +++ b/nix/libstore/gc.cc @@ -115,7 +115,10 @@ Path addPermRoot(StoreAPI & store, const Path & _storePath, % gcRoot % rootsDir); } - makeSymlink(gcRoot, storePath); + if (baseNameOf(gcRoot) == baseNameOf(storePath)) + writeFile(gcRoot, ""); + else + makeSymlink(gcRoot, storePath); } /* Check that the root can be found by the garbage collector. @@ -142,11 +145,6 @@ Path addPermRoot(StoreAPI & store, const Path & _storePath, } -/* The file to which we write our temporary roots. */ -static Path fnTempRoots; -static AutoCloseFD fdTempRoots; - - void LocalStore::addTempRoot(const Path & path) { /* Create the temporary roots file for this process. */ @@ -201,27 +199,6 @@ void LocalStore::addTempRoot(const Path & path) } -void removeTempRoots() -{ - if (fdTempRoots != -1) { - fdTempRoots.close(); - unlink(fnTempRoots.c_str()); - } -} - - -/* Automatically clean up the temporary roots file when we exit. */ -struct RemoveTempRoots -{ - ~RemoveTempRoots() - { - removeTempRoots(); - } -}; - -static RemoveTempRoots autoRemoveTempRoots __attribute__((unused)); - - typedef std::shared_ptr FDPtr; typedef list FDs; @@ -230,11 +207,11 @@ static void readTempRoots(PathSet & tempRoots, FDs & fds) { /* Read the `temproots' directory for per-process temporary root files. */ - Strings tempRootFiles = readDirectory( + DirEntries tempRootFiles = readDirectory( (format("%1%/%2%") % settings.nixStateDir % tempRootsDir).str()); - foreach (Strings::iterator, i, tempRootFiles) { - Path path = (format("%1%/%2%/%3%") % settings.nixStateDir % tempRootsDir % *i).str(); + for (auto & i : tempRootFiles) { + Path path = (format("%1%/%2%/%3%") % settings.nixStateDir % tempRootsDir % i.name).str(); debug(format("reading temporary root file `%1%'") % path); FDPtr fd(new AutoCloseFD(open(path.c_str(), O_RDWR, 0666))); @@ -294,19 +271,19 @@ static void foundRoot(StoreAPI & store, } -static void findRoots(StoreAPI & store, const Path & path, Roots & roots) +static void findRoots(StoreAPI & store, const Path & path, unsigned char type, Roots & roots) { try { - struct stat st = lstat(path); + if (type == DT_UNKNOWN) + type = getFileType(path); - if (S_ISDIR(st.st_mode)) { - Strings names = readDirectory(path); - foreach (Strings::iterator, i, names) - findRoots(store, path + "/" + *i, roots); + if (type == DT_DIR) { + for (auto & i : readDirectory(path)) + findRoots(store, path + "/" + i.name, i.type, roots); } - else if (S_ISLNK(st.st_mode)) { + else if (type == DT_LNK) { Path target = readLink(path); if (isInStore(target)) foundRoot(store, path, target, roots); @@ -328,6 +305,12 @@ static void findRoots(StoreAPI & store, const Path & path, Roots & roots) } } + else if (type == DT_REG) { + Path storePath = settings.nixStore + "/" + baseNameOf(path); + if (store.isValidPath(storePath)) + roots[path] = storePath; + } + } catch (SysError & e) { @@ -345,9 +328,10 @@ Roots LocalStore::findRoots() Roots roots; /* Process direct roots in {gcroots,manifests,profiles}. */ - nix::findRoots(*this, settings.nixStateDir + "/" + gcRootsDir, roots); - nix::findRoots(*this, settings.nixStateDir + "/manifests", roots); - nix::findRoots(*this, settings.nixStateDir + "/profiles", roots); + nix::findRoots(*this, settings.nixStateDir + "/" + gcRootsDir, DT_UNKNOWN, roots); + if (pathExists(settings.nixStateDir + "/manifests")) + nix::findRoots(*this, settings.nixStateDir + "/manifests", DT_UNKNOWN, roots); + nix::findRoots(*this, settings.nixStateDir + "/profiles", DT_UNKNOWN, roots); return roots; } @@ -449,7 +433,6 @@ void LocalStore::deletePathRecursive(GCState & state, const Path & path) // if the path was not valid, need to determine the actual // size. state.bytesInvalidated += size; - // Mac OS X cannot rename directories if they are read-only. if (chmod(path.c_str(), st.st_mode | S_IWUSR) == -1) throw SysError(format("making `%1%' writable") % path); Path tmp = state.trashDir + "/" + baseNameOf(path); @@ -649,7 +632,7 @@ void LocalStore::collectGarbage(const GCOptions & options, GCResults & results) /* After this point the set of roots or temporary roots cannot increase, since we hold locks on everything. So everything - that is not reachable from `roots'. */ + that is not reachable from `roots' is garbage. */ if (state.shouldDelete) { if (pathExists(state.trashDir)) deleteGarbage(state, state.trashDir); @@ -741,7 +724,7 @@ void LocalStore::collectGarbage(const GCOptions & options, GCResults & results) } /* While we're at it, vacuum the database. */ - if (options.action == GCOptions::gcDeleteDead) vacuumDB(); + //if (options.action == GCOptions::gcDeleteDead) vacuumDB(); } diff --git a/nix/libstore/globals.cc b/nix/libstore/globals.cc index 86fa56739c..bb08a7d0b0 100644 --- a/nix/libstore/globals.cc +++ b/nix/libstore/globals.cc @@ -2,6 +2,7 @@ #include "globals.hh" #include "util.hh" +#include "archive.hh" #include #include @@ -55,6 +56,7 @@ Settings::Settings() envKeepDerivations = false; lockCPU = getEnv("NIX_AFFINITY_HACK", "1") == "1"; showTrace = false; + enableImportNative = false; } @@ -112,35 +114,61 @@ void Settings::set(const string & name, const string & value) } +string Settings::get(const string & name, const string & def) +{ + auto i = settings.find(name); + if (i == settings.end()) return def; + return i->second; +} + + +Strings Settings::get(const string & name, const Strings & def) +{ + auto i = settings.find(name); + if (i == settings.end()) return def; + return tokenizeString(i->second); +} + + +bool Settings::get(const string & name, bool def) +{ + bool res = def; + _get(res, name); + return res; +} + + void Settings::update() { - get(tryFallback, "build-fallback"); - get(maxBuildJobs, "build-max-jobs"); - get(buildCores, "build-cores"); - get(thisSystem, "system"); - get(maxSilentTime, "build-max-silent-time"); - get(buildTimeout, "build-timeout"); - get(reservedSize, "gc-reserved-space"); - get(fsyncMetadata, "fsync-metadata"); - get(useSQLiteWAL, "use-sqlite-wal"); - get(syncBeforeRegistering, "sync-before-registering"); - get(useSubstitutes, "build-use-substitutes"); - get(buildUsersGroup, "build-users-group"); - get(useChroot, "build-use-chroot"); - get(dirsInChroot, "build-chroot-dirs"); - get(impersonateLinux26, "build-impersonate-linux-26"); - get(keepLog, "build-keep-log"); - get(compressLog, "build-compress-log"); - get(maxLogSize, "build-max-log-size"); - get(cacheFailure, "build-cache-failure"); - get(pollInterval, "build-poll-interval"); - get(checkRootReachability, "gc-check-reachability"); - get(gcKeepOutputs, "gc-keep-outputs"); - get(gcKeepDerivations, "gc-keep-derivations"); - get(autoOptimiseStore, "auto-optimise-store"); - get(envKeepDerivations, "env-keep-derivations"); - get(sshSubstituterHosts, "ssh-substituter-hosts"); - get(useSshSubstituter, "use-ssh-substituter"); + _get(tryFallback, "build-fallback"); + _get(maxBuildJobs, "build-max-jobs"); + _get(buildCores, "build-cores"); + _get(thisSystem, "system"); + _get(maxSilentTime, "build-max-silent-time"); + _get(buildTimeout, "build-timeout"); + _get(reservedSize, "gc-reserved-space"); + _get(fsyncMetadata, "fsync-metadata"); + _get(useSQLiteWAL, "use-sqlite-wal"); + _get(syncBeforeRegistering, "sync-before-registering"); + _get(useSubstitutes, "build-use-substitutes"); + _get(buildUsersGroup, "build-users-group"); + _get(useChroot, "build-use-chroot"); + _get(impersonateLinux26, "build-impersonate-linux-26"); + _get(keepLog, "build-keep-log"); + _get(compressLog, "build-compress-log"); + _get(maxLogSize, "build-max-log-size"); + _get(cacheFailure, "build-cache-failure"); + _get(pollInterval, "build-poll-interval"); + _get(checkRootReachability, "gc-check-reachability"); + _get(gcKeepOutputs, "gc-keep-outputs"); + _get(gcKeepDerivations, "gc-keep-derivations"); + _get(autoOptimiseStore, "auto-optimise-store"); + _get(envKeepDerivations, "env-keep-derivations"); + _get(sshSubstituterHosts, "ssh-substituter-hosts"); + _get(useSshSubstituter, "use-ssh-substituter"); + _get(logServers, "log-servers"); + _get(enableImportNative, "allow-unsafe-native-code-during-evaluation"); + _get(useCaseHack, "use-case-hack"); string subs = getEnv("NIX_SUBSTITUTERS", "default"); if (subs == "default") { @@ -158,7 +186,7 @@ void Settings::update() } -void Settings::get(string & res, const string & name) +void Settings::_get(string & res, const string & name) { SettingsMap::iterator i = settings.find(name); if (i == settings.end()) return; @@ -166,7 +194,7 @@ void Settings::get(string & res, const string & name) } -void Settings::get(bool & res, const string & name) +void Settings::_get(bool & res, const string & name) { SettingsMap::iterator i = settings.find(name); if (i == settings.end()) return; @@ -177,7 +205,7 @@ void Settings::get(bool & res, const string & name) } -void Settings::get(StringSet & res, const string & name) +void Settings::_get(StringSet & res, const string & name) { SettingsMap::iterator i = settings.find(name); if (i == settings.end()) return; @@ -186,7 +214,7 @@ void Settings::get(StringSet & res, const string & name) res.insert(ss.begin(), ss.end()); } -void Settings::get(Strings & res, const string & name) +void Settings::_get(Strings & res, const string & name) { SettingsMap::iterator i = settings.find(name); if (i == settings.end()) return; @@ -194,7 +222,7 @@ void Settings::get(Strings & res, const string & name) } -template void Settings::get(N & res, const string & name) +template void Settings::_get(N & res, const string & name) { SettingsMap::iterator i = settings.find(name); if (i == settings.end()) return; diff --git a/nix/libstore/globals.hh b/nix/libstore/globals.hh index 711c365294..c17e10d7c3 100644 --- a/nix/libstore/globals.hh +++ b/nix/libstore/globals.hh @@ -21,6 +21,12 @@ struct Settings { void set(const string & name, const string & value); + string get(const string & name, const string & def); + + Strings get(const string & name, const Strings & def); + + bool get(const string & name, bool def); + void update(); string pack(); @@ -142,10 +148,6 @@ struct Settings { /* Whether to build in chroot. */ bool useChroot; - /* The directories from the host filesystem to be included in the - chroot. */ - StringSet dirsInChroot; - /* Set of ssh connection strings for the ssh substituter */ Strings sshSubstituterHosts; @@ -197,14 +199,20 @@ struct Settings { /* Whether to show a stack trace if Nix evaluation fails. */ bool showTrace; + /* A list of URL prefixes that can return Nix build logs. */ + Strings logServers; + + /* Whether the importNative primop should be enabled */ + bool enableImportNative; + private: SettingsMap settings, overrides; - void get(string & res, const string & name); - void get(bool & res, const string & name); - void get(StringSet & res, const string & name); - void get(Strings & res, const string & name); - template void get(N & res, const string & name); + void _get(string & res, const string & name); + void _get(bool & res, const string & name); + void _get(StringSet & res, const string & name); + void _get(Strings & res, const string & name); + template void _get(N & res, const string & name); }; diff --git a/nix/libstore/local-store.cc b/nix/libstore/local-store.cc index 2c3d65215c..a890ab56b3 100644 --- a/nix/libstore/local-store.cc +++ b/nix/libstore/local-store.cc @@ -358,7 +358,17 @@ LocalStore::~LocalStore() i->second.to.close(); i->second.from.close(); i->second.error.close(); - i->second.pid.wait(true); + if (i->second.pid != -1) + i->second.pid.wait(true); + } + } catch (...) { + ignoreException(); + } + + try { + if (fdTempRoots != -1) { + fdTempRoots.close(); + unlink(fnTempRoots.c_str()); } } catch (...) { ignoreException(); @@ -551,9 +561,9 @@ static void canonicalisePathMetaData_(const Path & path, uid_t fromUid, InodesSe if (lstat(path.c_str(), &st)) throw SysError(format("getting attributes of path `%1%'") % path); - /* Really make sure that the path is of a supported type. This - has already been checked in dumpPath(). */ - assert(S_ISREG(st.st_mode) || S_ISDIR(st.st_mode) || S_ISLNK(st.st_mode)); + /* Really make sure that the path is of a supported type. */ + if (!(S_ISREG(st.st_mode) || S_ISDIR(st.st_mode) || S_ISLNK(st.st_mode))) + throw Error(format("file ‘%1%’ has an unsupported type") % path); /* Fail if the file is not owned by the build user. This prevents us from messing up the ownership/permissions of files @@ -593,9 +603,9 @@ static void canonicalisePathMetaData_(const Path & path, uid_t fromUid, InodesSe } if (S_ISDIR(st.st_mode)) { - Strings names = readDirectory(path); - foreach (Strings::iterator, i, names) - canonicalisePathMetaData_(path + "/" + *i, fromUid, inodesSeen); + DirEntries entries = readDirectory(path); + for (auto & i : entries) + canonicalisePathMetaData_(path + "/" + i.name, fromUid, inodesSeen); } } @@ -1083,31 +1093,16 @@ void LocalStore::startSubstituter(const Path & substituter, RunningSubstituter & setSubstituterEnv(); - run.pid = maybeVfork(); - - switch (run.pid) { - - case -1: - throw SysError("unable to fork"); - - case 0: /* child */ - try { - restoreAffinity(); - if (dup2(toPipe.readSide, STDIN_FILENO) == -1) - throw SysError("dupping stdin"); - if (dup2(fromPipe.writeSide, STDOUT_FILENO) == -1) - throw SysError("dupping stdout"); - if (dup2(errorPipe.writeSide, STDERR_FILENO) == -1) - throw SysError("dupping stderr"); - execl(substituter.c_str(), substituter.c_str(), "--query", NULL); - throw SysError(format("executing `%1%'") % substituter); - } catch (std::exception & e) { - std::cerr << "error: " << e.what() << std::endl; - } - _exit(1); - } - - /* Parent. */ + run.pid = startProcess([&]() { + if (dup2(toPipe.readSide, STDIN_FILENO) == -1) + throw SysError("dupping stdin"); + if (dup2(fromPipe.writeSide, STDOUT_FILENO) == -1) + throw SysError("dupping stdout"); + if (dup2(errorPipe.writeSide, STDERR_FILENO) == -1) + throw SysError("dupping stderr"); + execl(substituter.c_str(), substituter.c_str(), "--query", NULL); + throw SysError(format("executing `%1%'") % substituter); + }); run.program = baseNameOf(substituter); run.to = toPipe.writeSide.borrow(); @@ -1170,8 +1165,7 @@ string LocalStore::getLineFromSubstituter(RunningSubstituter & run) string::size_type p; while (((p = err.find('\n')) != string::npos) || ((p = err.find('\r')) != string::npos)) { - string thing(err, 0, p + 1); - writeToStderr(run.program + ": " + thing); + printMsg(lvlError, run.program + ": " + string(err, 0, p)); err = string(err, p + 1); } } @@ -1503,7 +1497,8 @@ void LocalStore::exportPath(const Path & path, bool sign, { assertStorePath(path); - addTempRoot(path); + printMsg(lvlInfo, format("exporting path `%1%'") % path); + if (!isValidPath(path)) throw Error(format("path `%1%' is not valid") % path); @@ -1613,8 +1608,6 @@ Path LocalStore::importPath(bool requireSignature, Source & source) Path dstPath = readStorePath(hashAndReadSource); - printMsg(lvlInfo, format("importing path `%1%'") % dstPath); - PathSet references = readStorePaths(hashAndReadSource); Path deriver = readString(hashAndReadSource); @@ -1747,8 +1740,8 @@ bool LocalStore::verifyStore(bool checkContents, bool repair) /* Acquire the global GC lock to prevent a garbage collection. */ AutoCloseFD fdGCLock = openGCLock(ltWrite); - Paths entries = readDirectory(settings.nixStore); - PathSet store(entries.begin(), entries.end()); + PathSet store; + for (auto & i : readDirectory(settings.nixStore)) store.insert(i.name); /* Check whether all valid paths actually exist. */ printMsg(lvlInfo, "checking path existence..."); @@ -1898,9 +1891,8 @@ void LocalStore::markContentsGood(const Path & path) PathSet LocalStore::queryValidPathsOld() { PathSet paths; - Strings entries = readDirectory(settings.nixDBPath + "/info"); - foreach (Strings::iterator, i, entries) - if (i->at(0) != '.') paths.insert(settings.nixStore + "/" + *i); + for (auto & i : readDirectory(settings.nixDBPath + "/info")) + if (i.name.at(0) != '.') paths.insert(settings.nixStore + "/" + i.name); return paths; } @@ -1987,9 +1979,8 @@ static void makeMutable(const Path & path) if (!S_ISDIR(st.st_mode) && !S_ISREG(st.st_mode)) return; if (S_ISDIR(st.st_mode)) { - Strings names = readDirectory(path); - foreach (Strings::iterator, i, names) - makeMutable(path + "/" + *i); + for (auto & i : readDirectory(path)) + makeMutable(path + "/" + i.name); } /* The O_NOFOLLOW is important to prevent us from changing the diff --git a/nix/libstore/local-store.hh b/nix/libstore/local-store.hh index 54331e448a..e0aabdba42 100644 --- a/nix/libstore/local-store.hh +++ b/nix/libstore/local-store.hh @@ -1,16 +1,12 @@ #pragma once #include +#include #include "store-api.hh" #include "util.hh" #include "pathlocks.hh" -#if HAVE_TR1_UNORDERED_SET -#include -#endif - - class sqlite3; class sqlite3_stmt; @@ -171,6 +167,9 @@ public: files with the same contents. */ void optimiseStore(OptimiseStats & stats); + /* Generic variant of the above method. */ + void optimiseStore(); + /* Optimise a single store path. */ void optimisePath(const Path & path); @@ -245,6 +244,10 @@ private: bool didSetSubstituterEnv; + /* The file to which we write our temporary roots. */ + Path fnTempRoots; + AutoCloseFD fdTempRoots; + int getSchema(); void openDB(bool create); @@ -306,11 +309,7 @@ private: void checkDerivationOutputs(const Path & drvPath, const Derivation & drv); -#if HAVE_TR1_UNORDERED_SET - typedef std::tr1::unordered_set InodeHash; -#else - typedef std::set InodeHash; -#endif + typedef std::unordered_set InodeHash; InodeHash loadInodeHash(); Strings readDirectoryIgnoringInodes(const Path & path, const InodeHash & inodeHash); diff --git a/nix/libstore/optimise-store.cc b/nix/libstore/optimise-store.cc index 67ee94a4bd..8ba9d1a263 100644 --- a/nix/libstore/optimise-store.cc +++ b/nix/libstore/optimise-store.cc @@ -225,6 +225,22 @@ void LocalStore::optimiseStore(OptimiseStats & stats) } } +static string showBytes(unsigned long long bytes) +{ + return (format("%.2f MiB") % (bytes / (1024.0 * 1024.0))).str(); +} + +void LocalStore::optimiseStore() +{ + OptimiseStats stats; + + optimiseStore(stats); + + printMsg(lvlError, + format("%1% freed by hard-linking %2% files") + % showBytes(stats.bytesFreed) + % stats.filesLinked); +} void LocalStore::optimisePath(const Path & path) { diff --git a/nix/libstore/remote-store.cc b/nix/libstore/remote-store.cc index 4619206932..448d9b6bc1 100644 --- a/nix/libstore/remote-store.cc +++ b/nix/libstore/remote-store.cc @@ -87,8 +87,7 @@ void RemoteStore::openConnection(bool reserveSpace) processStderr(); } catch (Error & e) { - throw Error(format("cannot start worker (%1%)") - % e.msg()); + throw Error(format("cannot start daemon worker: %1%") % e.msg()); } setOptions(); @@ -133,8 +132,6 @@ RemoteStore::~RemoteStore() try { to.flush(); fdSocket.close(); - if (child != -1) - child.wait(true); } catch (...) { ignoreException(); } @@ -402,8 +399,23 @@ Path RemoteStore::addToStore(const Path & _srcPath, writeInt((hashAlgo == htSHA256 && recursive) ? 0 : 1, to); writeInt(recursive ? 1 : 0, to); writeString(printHashType(hashAlgo), to); - dumpPath(srcPath, to, filter); - processStderr(); + + try { + to.written = 0; + to.warn = true; + dumpPath(srcPath, to, filter); + to.warn = false; + processStderr(); + } catch (SysError & e) { + /* Daemon closed while we were sending the path. Probably OOM + or I/O error. */ + if (e.errNo == EPIPE) + try { + processStderr(); + } catch (EndOfFile & e) { } + throw; + } + return readStorePath(from); } @@ -564,6 +576,13 @@ void RemoteStore::clearFailedPaths(const PathSet & paths) readInt(from); } +void RemoteStore::optimiseStore() +{ + openConnection(); + writeInt(wopOptimiseStore, to); + processStderr(); + readInt(from); +} void RemoteStore::processStderr(Sink * sink, Source * source) { diff --git a/nix/libstore/remote-store.hh b/nix/libstore/remote-store.hh index 04b60fce4b..98774c10b3 100644 --- a/nix/libstore/remote-store.hh +++ b/nix/libstore/remote-store.hh @@ -82,12 +82,13 @@ public: PathSet queryFailedPaths(); void clearFailedPaths(const PathSet & paths); - + + void optimiseStore(); + private: AutoCloseFD fdSocket; FdSink to; FdSource from; - Pid child; unsigned int daemonVersion; bool initialised; diff --git a/nix/libstore/store-api.hh b/nix/libstore/store-api.hh index b635fee2cf..3109f100ef 100644 --- a/nix/libstore/store-api.hh +++ b/nix/libstore/store-api.hh @@ -250,6 +250,10 @@ public: `nix-store --register-validity'. */ string makeValidityRegistration(const PathSet & paths, bool showDerivers, bool showHash); + + /* Optimise the disk space usage of the Nix store by hard-linking files + with the same contents. */ + virtual void optimiseStore() = 0; }; diff --git a/nix/libstore/worker-protocol.hh b/nix/libstore/worker-protocol.hh index 9317f89c37..4b040b77ce 100644 --- a/nix/libstore/worker-protocol.hh +++ b/nix/libstore/worker-protocol.hh @@ -12,7 +12,6 @@ namespace nix { typedef enum { - wopQuit = 0, wopIsValidPath = 1, wopHasSubstitutes = 3, wopQueryPathHash = 4, @@ -43,6 +42,7 @@ typedef enum { wopQueryValidPaths = 31, wopQuerySubstitutablePaths = 32, wopQueryValidDerivers = 33, + wopOptimiseStore = 34 } WorkerOp; diff --git a/nix/libutil/archive.cc b/nix/libutil/archive.cc index 70a1c580dd..6856ea0f28 100644 --- a/nix/libutil/archive.cc +++ b/nix/libutil/archive.cc @@ -1,10 +1,14 @@ +#define _XOPEN_SOURCE 600 + #include "config.h" #include #include #include +#include + +#include // for strcasecmp -#define _XOPEN_SOURCE 600 #include #include #include @@ -18,39 +22,21 @@ namespace nix { +bool useCaseHack = +#if __APPLE__ + true; +#else + false; +#endif + static string archiveVersion1 = "nix-archive-1"; +static string caseHackSuffix = "~nix~case~hack~"; PathFilter defaultPathFilter; -static void dump(const string & path, Sink & sink, PathFilter & filter); - - -static void dumpEntries(const Path & path, Sink & sink, PathFilter & filter) -{ - Strings names = readDirectory(path); - vector names2(names.begin(), names.end()); - sort(names2.begin(), names2.end()); - - for (vector::iterator i = names2.begin(); - i != names2.end(); ++i) - { - Path entry = path + "/" + *i; - if (filter(entry)) { - writeString("entry", sink); - writeString("(", sink); - writeString("name", sink); - writeString(*i, sink); - writeString("node", sink); - dump(entry, sink, filter); - writeString(")", sink); - } - } -} - - -static void dumpContents(const Path & path, size_t size, +static void dumpContents(const Path & path, size_t size, Sink & sink) { writeString("contents", sink); @@ -58,7 +44,7 @@ static void dumpContents(const Path & path, size_t size, AutoCloseFD fd = open(path.c_str(), O_RDONLY); if (fd == -1) throw SysError(format("opening file `%1%'") % path); - + unsigned char buf[65536]; size_t left = size; @@ -89,12 +75,40 @@ static void dump(const Path & path, Sink & sink, PathFilter & filter) writeString("", sink); } dumpContents(path, (size_t) st.st_size, sink); - } + } else if (S_ISDIR(st.st_mode)) { writeString("type", sink); writeString("directory", sink); - dumpEntries(path, sink, filter); + + /* If we're on a case-insensitive system like Mac OS X, undo + the case hack applied by restorePath(). */ + std::map unhacked; + for (auto & i : readDirectory(path)) + if (useCaseHack) { + string name(i.name); + size_t pos = i.name.find(caseHackSuffix); + if (pos != string::npos) { + printMsg(lvlDebug, format("removing case hack suffix from `%1%'") % (path + "/" + i.name)); + name.erase(pos); + } + if (unhacked.find(name) != unhacked.end()) + throw Error(format("file name collision in between `%1%' and `%2%'") + % (path + "/" + unhacked[name]) % (path + "/" + i.name)); + unhacked[name] = i.name; + } else + unhacked[i.name] = i.name; + + for (auto & i : unhacked) + if (filter(path + "/" + i.first)) { + writeString("entry", sink); + writeString("(", sink); + writeString("name", sink); + writeString(i.first, sink); + writeString("node", sink); + dump(path + "/" + i.second, sink, filter); + writeString(")", sink); + } } else if (S_ISLNK(st.st_mode)) { @@ -123,6 +137,7 @@ static SerialisationError badArchive(string s) } +#if 0 static void skipGeneric(Source & source) { if (readString(source) == "(") { @@ -130,43 +145,13 @@ static void skipGeneric(Source & source) skipGeneric(source); } } - - -static void parse(ParseSink & sink, Source & source, const Path & path); - - - -static void parseEntry(ParseSink & sink, Source & source, const Path & path) -{ - string s, name; - - s = readString(source); - if (s != "(") throw badArchive("expected open tag"); - - while (1) { - checkInterrupt(); - - s = readString(source); - - if (s == ")") { - break; - } else if (s == "name") { - name = readString(source); - } else if (s == "node") { - if (s == "") throw badArchive("entry name missing"); - parse(sink, source, path + "/" + name); - } else { - throw badArchive("unknown field " + s); - skipGeneric(source); - } - } -} +#endif static void parseContents(ParseSink & sink, Source & source, const Path & path) { unsigned long long size = readLongLong(source); - + sink.preallocateContents(size); unsigned long long left = size; @@ -185,6 +170,15 @@ static void parseContents(ParseSink & sink, Source & source, const Path & path) } +struct CaseInsensitiveCompare +{ + bool operator() (const string & a, const string & b) const + { + return strcasecmp(a.c_str(), b.c_str()) < 0; + } +}; + + static void parse(ParseSink & sink, Source & source, const Path & path) { string s; @@ -194,6 +188,8 @@ static void parse(ParseSink & sink, Source & source, const Path & path) enum { tpUnknown, tpRegular, tpDirectory, tpSymlink } type = tpUnknown; + std::map names; + while (1) { checkInterrupt(); @@ -221,9 +217,9 @@ static void parse(ParseSink & sink, Source & source, const Path & path) else if (t == "symlink") { type = tpSymlink; } - + else throw badArchive("unknown file type " + t); - + } else if (s == "contents" && type == tpRegular) { @@ -236,7 +232,40 @@ static void parse(ParseSink & sink, Source & source, const Path & path) } else if (s == "entry" && type == tpDirectory) { - parseEntry(sink, source, path); + string name, prevName; + + s = readString(source); + if (s != "(") throw badArchive("expected open tag"); + + while (1) { + checkInterrupt(); + + s = readString(source); + + if (s == ")") { + break; + } else if (s == "name") { + name = readString(source); + if (name.empty() || name == "." || name == ".." || name.find('/') != string::npos || name.find((char) 0) != string::npos) + throw Error(format("NAR contains invalid file name `%1%'") % name); + if (name <= prevName) + throw Error("NAR directory is not sorted"); + prevName = name; + if (useCaseHack) { + auto i = names.find(name); + if (i != names.end()) { + printMsg(lvlDebug, format("case collision between `%1%' and `%2%'") % i->first % name); + name += caseHackSuffix; + name += int2String(++i->second); + } else + names[name] = 0; + } + } else if (s == "node") { + if (s.empty()) throw badArchive("entry name missing"); + parse(sink, source, path + "/" + name); + } else + throw badArchive("unknown field " + s); + } } else if (s == "target" && type == tpSymlink) { @@ -244,17 +273,15 @@ static void parse(ParseSink & sink, Source & source, const Path & path) sink.createSymlink(path, target); } - else { + else throw badArchive("unknown field " + s); - skipGeneric(source); - } } } void parseDump(ParseSink & sink, Source & source) { - string version; + string version; try { version = readString(source); } catch (SerialisationError & e) { @@ -323,7 +350,7 @@ struct RestoreSink : ParseSink } }; - + void restorePath(const Path & path, Source & source) { RestoreSink sink; @@ -331,5 +358,5 @@ void restorePath(const Path & path, Source & source) parseDump(sink, source); } - + } diff --git a/nix/libutil/archive.hh b/nix/libutil/archive.hh index ccac92074d..c216e9768f 100644 --- a/nix/libutil/archive.hh +++ b/nix/libutil/archive.hh @@ -28,7 +28,7 @@ namespace nix { where: - attrs(as) = concat(map(attr, as)) + encN(0) + attrs(as) = concat(map(attr, as)) + encN(0) attrs((a, b)) = encS(a) + encS(b) encS(s) = encN(len(s)) + s + (padding until next 64-bit boundary) @@ -58,7 +58,7 @@ void dumpPath(const Path & path, Sink & sink, struct ParseSink { virtual void createDirectory(const Path & path) { }; - + virtual void createRegularFile(const Path & path) { }; virtual void isExecutable() { }; virtual void preallocateContents(unsigned long long size) { }; @@ -66,10 +66,14 @@ struct ParseSink virtual void createSymlink(const Path & path, const string & target) { }; }; - + void parseDump(ParseSink & sink, Source & source); void restorePath(const Path & path, Source & source); - + +// FIXME: global variables are bad m'kay. +extern bool useCaseHack; + + } diff --git a/nix/libutil/serialise.cc b/nix/libutil/serialise.cc index 6b71f52c15..9241750750 100644 --- a/nix/libutil/serialise.cc +++ b/nix/libutil/serialise.cc @@ -54,8 +54,24 @@ FdSink::~FdSink() } +size_t threshold = 256 * 1024 * 1024; + +static void warnLargeDump() +{ + printMsg(lvlError, "warning: dumping very large path (> 256 MiB); this may run out of memory"); +} + + void FdSink::write(const unsigned char * data, size_t len) { + static bool warned = false; + if (warn && !warned) { + written += len; + if (written > threshold) { + warnLargeDump(); + warned = true; + } + } writeFull(fd, data, len); } @@ -256,4 +272,15 @@ template Paths readStrings(Source & source); template PathSet readStrings(Source & source); +void StringSink::operator () (const unsigned char * data, size_t len) +{ + static bool warned = false; + if (!warned && s.size() > threshold) { + warnLargeDump(); + warned = true; + } + s.append((const char *) data, len); +} + + } diff --git a/nix/libutil/serialise.hh b/nix/libutil/serialise.hh index e5a9df1d05..6a6f028aa6 100644 --- a/nix/libutil/serialise.hh +++ b/nix/libutil/serialise.hh @@ -72,9 +72,11 @@ struct BufferedSource : Source struct FdSink : BufferedSink { int fd; + bool warn; + size_t written; - FdSink() : fd(-1) { } - FdSink(int fd) : fd(fd) { } + FdSink() : fd(-1), warn(false), written(0) { } + FdSink(int fd) : fd(fd), warn(false), written(0) { } ~FdSink(); void write(const unsigned char * data, size_t len); @@ -95,10 +97,7 @@ struct FdSource : BufferedSource struct StringSink : Sink { string s; - void operator () (const unsigned char * data, size_t len) - { - s.append((const char *) data, len); - } + void operator () (const unsigned char * data, size_t len); }; diff --git a/nix/libutil/types.hh b/nix/libutil/types.hh index 4b5ce9a78c..160884ee1a 100644 --- a/nix/libutil/types.hh +++ b/nix/libutil/types.hh @@ -8,6 +8,15 @@ #include +/* Before 4.7, gcc's std::exception uses empty throw() specifiers for + * its (virtual) destructor and what() in c++11 mode, in violation of spec + */ +#ifdef __GNUC__ +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) +#define EXCEPTION_NEEDS_THROW_SPEC +#endif +#endif + namespace nix { @@ -39,10 +48,14 @@ protected: public: unsigned int status; // exit status BaseError(const FormatOrString & fs, unsigned int status = 1); +#ifdef EXCEPTION_NEEDS_THROW_SPEC ~BaseError() throw () { }; const char * what() const throw () { return err.c_str(); } - const string & msg() const throw () { return err; } - const string & prefix() const throw () { return prefix_; } +#else + const char * what() const noexcept { return err.c_str(); } +#endif + const string & msg() const { return err; } + const string & prefix() const { return prefix_; } BaseError & addPrefix(const FormatOrString & fs); }; diff --git a/nix/libutil/util.cc b/nix/libutil/util.cc index 846674a29d..a4a1ddb12a 100644 --- a/nix/libutil/util.cc +++ b/nix/libutil/util.cc @@ -1,5 +1,8 @@ #include "config.h" +#include "util.hh" +#include "affinity.hh" + #include #include #include @@ -16,8 +19,6 @@ #include #endif -#include "util.hh" - extern char * * environ; @@ -125,7 +126,6 @@ Path canonPath(const Path & path, bool resolveSymlinks) i = temp.begin(); /* restart */ end = temp.end(); s = ""; - /* !!! potential for infinite loop */ } } } @@ -202,9 +202,10 @@ bool isLink(const Path & path) } -Strings readDirectory(const Path & path) +DirEntries readDirectory(const Path & path) { - Strings names; + DirEntries entries; + entries.reserve(64); AutoCloseDir dir = opendir(path.c_str()); if (!dir) throw SysError(format("opening directory `%1%'") % path); @@ -214,11 +215,21 @@ Strings readDirectory(const Path & path) checkInterrupt(); string name = dirent->d_name; if (name == "." || name == "..") continue; - names.push_back(name); + entries.emplace_back(name, dirent->d_ino, dirent->d_type); } if (errno) throw SysError(format("reading directory `%1%'") % path); - return names; + return entries; +} + + +unsigned char getFileType(const Path & path) +{ + struct stat st = lstat(path); + if (S_ISDIR(st.st_mode)) return DT_DIR; + if (S_ISLNK(st.st_mode)) return DT_LNK; + if (S_ISREG(st.st_mode)) return DT_REG; + return DT_UNKNOWN; } @@ -293,16 +304,14 @@ static void _deletePath(const Path & path, unsigned long long & bytesFreed) bytesFreed += st.st_blocks * 512; if (S_ISDIR(st.st_mode)) { - Strings names = readDirectory(path); - /* Make the directory writable. */ if (!(st.st_mode & S_IWUSR)) { if (chmod(path.c_str(), st.st_mode | S_IWUSR) == -1) throw SysError(format("making `%1%' writable") % path); } - for (Strings::iterator i = names.begin(); i != names.end(); ++i) - _deletePath(path + "/" + *i, bytesFreed); + for (auto & i : readDirectory(path)) + _deletePath(path + "/" + i.name, bytesFreed); } if (remove(path.c_str()) == -1) @@ -380,6 +389,9 @@ Paths createDirs(const Path & path) created.push_back(path); } + if (S_ISLNK(st.st_mode) && stat(path.c_str(), &st) == -1) + throw SysError(format("statting symlink `%1%'") % path); + if (!S_ISDIR(st.st_mode)) throw Error(format("`%1%' is not a directory") % path); return created; @@ -466,10 +478,18 @@ void warnOnce(bool & haveWarned, const FormatOrString & fs) } +static void defaultWriteToStderr(const unsigned char * buf, size_t count) +{ + writeFull(STDERR_FILENO, buf, count); +} + + void writeToStderr(const string & s) { try { - _writeToStderr((const unsigned char *) s.data(), s.size()); + auto p = _writeToStderr; + if (!p) p = defaultWriteToStderr; + p((const unsigned char *) s.data(), s.size()); } catch (SysError & e) { /* Ignore failing writes to stderr if we're in an exception handler, otherwise throw an exception. We need to ignore @@ -481,12 +501,6 @@ void writeToStderr(const string & s) } -static void defaultWriteToStderr(const unsigned char * buf, size_t count) -{ - writeFull(STDERR_FILENO, buf, count); -} - - void (*_writeToStderr) (const unsigned char * buf, size_t count) = defaultWriteToStderr; @@ -707,10 +721,14 @@ void AutoCloseDir::close() Pid::Pid() + : pid(-1), separatePG(false), killSignal(SIGKILL) +{ +} + + +Pid::Pid(pid_t pid) + : pid(pid), separatePG(false), killSignal(SIGKILL) { - pid = -1; - separatePG = false; - killSignal = SIGKILL; } @@ -734,11 +752,12 @@ Pid::operator pid_t() } -void Pid::kill() +void Pid::kill(bool quiet) { if (pid == -1 || pid == 0) return; - printMsg(lvlError, format("killing process %1%") % pid); + if (!quiet) + printMsg(lvlError, format("killing process %1%") % pid); /* Send the requested signal to the child. If it has its own process group, send the signal to every process in the child @@ -801,43 +820,30 @@ void killUser(uid_t uid) users to which the current process can send signals. So we fork a process, switch to uid, and send a mass kill. */ - Pid pid; - pid = fork(); - switch (pid) { + Pid pid = startProcess([&]() { - case -1: - throw SysError("unable to fork"); + if (setuid(uid) == -1) + throw SysError("setting uid"); - case 0: - try { /* child */ - - if (setuid(uid) == -1) - throw SysError("setting uid"); - - while (true) { + while (true) { #ifdef __APPLE__ - /* OSX's kill syscall takes a third parameter that, among other - things, determines if kill(-1, signo) affects the calling - process. In the OSX libc, it's set to true, which means - "follow POSIX", which we don't want here + /* OSX's kill syscall takes a third parameter that, among + other things, determines if kill(-1, signo) affects the + calling process. In the OSX libc, it's set to true, + which means "follow POSIX", which we don't want here */ - if (syscall(SYS_kill, -1, SIGKILL, false) == 0) break; + if (syscall(SYS_kill, -1, SIGKILL, false) == 0) break; #else - if (kill(-1, SIGKILL) == 0) break; + if (kill(-1, SIGKILL) == 0) break; #endif - if (errno == ESRCH) break; /* no more processes */ - if (errno != EINTR) - throw SysError(format("cannot kill processes for uid `%1%'") % uid); - } - - } catch (std::exception & e) { - writeToStderr((format("killing processes belonging to uid `%1%': %2%\n") % uid % e.what()).str()); - _exit(1); + if (errno == ESRCH) break; /* no more processes */ + if (errno != EINTR) + throw SysError(format("cannot kill processes for uid `%1%'") % uid); } + _exit(0); - } + }); - /* parent */ int status = pid.wait(true); if (status != 0) throw Error(format("cannot kill processes for uid `%1%': %2%") % uid % statusToString(status)); @@ -852,6 +858,32 @@ void killUser(uid_t uid) ////////////////////////////////////////////////////////////////////// +pid_t startProcess(std::function fun, + bool dieWithParent, const string & errorPrefix, bool runExitHandlers) +{ + pid_t pid = fork(); + if (pid == -1) throw SysError("unable to fork"); + + if (pid == 0) { + _writeToStderr = 0; + try { + restoreAffinity(); + fun(); + } catch (std::exception & e) { + try { + std::cerr << errorPrefix << e.what() << "\n"; + } catch (...) { } + } catch (...) { } + if (runExitHandlers) + exit(1); + else + _exit(1); + } + + return pid; +} + + string runProgram(Path program, bool searchPath, const Strings & args) { checkInterrupt(); @@ -867,32 +899,17 @@ string runProgram(Path program, bool searchPath, const Strings & args) pipe.create(); /* Fork. */ - Pid pid; - pid = maybeVfork(); - - switch (pid) { - - case -1: - throw SysError("unable to fork"); + Pid pid = startProcess([&]() { + if (dup2(pipe.writeSide, STDOUT_FILENO) == -1) + throw SysError("dupping stdout"); - case 0: /* child */ - try { - if (dup2(pipe.writeSide, STDOUT_FILENO) == -1) - throw SysError("dupping stdout"); - - if (searchPath) - execvp(program.c_str(), (char * *) &cargs[0]); - else - execv(program.c_str(), (char * *) &cargs[0]); - throw SysError(format("executing `%1%'") % program); - - } catch (std::exception & e) { - writeToStderr("error: " + string(e.what()) + "\n"); - } - _exit(1); - } + if (searchPath) + execvp(program.c_str(), (char * *) &cargs[0]); + else + execv(program.c_str(), (char * *) &cargs[0]); - /* Parent. */ + throw SysError(format("executing `%1%'") % program); + }); pipe.writeSide.close(); @@ -901,7 +918,7 @@ string runProgram(Path program, bool searchPath, const Strings & args) /* Wait for the child to finish. */ int status = pid.wait(true); if (!statusOk(status)) - throw Error(format("program `%1%' %2%") + throw ExecError(format("program `%1%' %2%") % program % statusToString(status)); return result; @@ -928,13 +945,6 @@ void closeOnExec(int fd) } -#if HAVE_VFORK -pid_t (*maybeVfork)() = vfork; -#else -pid_t (*maybeVfork)() = fork; -#endif - - ////////////////////////////////////////////////////////////////////// diff --git a/nix/libutil/util.hh b/nix/libutil/util.hh index ce2d77c19a..0ad0026711 100644 --- a/nix/libutil/util.hh +++ b/nix/libutil/util.hh @@ -7,6 +7,7 @@ #include #include #include +#include #include @@ -63,7 +64,20 @@ bool isLink(const Path & path); /* Read the contents of a directory. The entries `.' and `..' are removed. */ -Strings readDirectory(const Path & path); +struct DirEntry +{ + string name; + ino_t ino; + unsigned char type; // one of DT_* + DirEntry(const string & name, ino_t ino, unsigned char type) + : name(name), ino(ino), type(type) { } +}; + +typedef vector DirEntries; + +DirEntries readDirectory(const Path & path); + +unsigned char getFileType(const Path & path); /* Read the contents of a file into a string. */ string readFile(int fd); @@ -237,10 +251,11 @@ class Pid int killSignal; public: Pid(); + Pid(pid_t pid); ~Pid(); void operator =(pid_t pid); operator pid_t(); - void kill(); + void kill(bool quiet = false); int wait(bool block); void setSeparatePG(bool separatePG); void setKillSignal(int signal); @@ -252,11 +267,19 @@ public: void killUser(uid_t uid); +/* Fork a process that runs the given function, and return the child + pid to the caller. */ +pid_t startProcess(std::function fun, bool dieWithParent = true, + const string & errorPrefix = "error: ", bool runExitHandlers = false); + + /* Run a program and return its stdout in a string (i.e., like the shell backtick operator). */ string runProgram(Path program, bool searchPath = false, const Strings & args = Strings()); +MakeError(ExecError, Error) + /* Close all file descriptors except stdin, stdout, stderr, and those listed in the given set. Good practice in child processes. */ void closeMostFDs(const set & exceptions); @@ -264,9 +287,6 @@ void closeMostFDs(const set & exceptions); /* Set the close-on-exec flag for the given file descriptor. */ void closeOnExec(int fd); -/* Call vfork() if available, otherwise fork(). */ -extern pid_t (*maybeVfork)(); - /* User interruption. */ diff --git a/nix/nix-daemon/guix-daemon.cc b/nix/nix-daemon/guix-daemon.cc index f096ed5a97..315744394f 100644 --- a/nix/nix-daemon/guix-daemon.cc +++ b/nix/nix-daemon/guix-daemon.cc @@ -154,8 +154,18 @@ parse_opt (int key, char *arg, struct argp_state *state) settings.useChroot = false; break; case GUIX_OPT_CHROOT_DIR: - settings.dirsInChroot.insert (arg); - break; + { + std::string chroot_dirs; + + chroot_dirs = settings.get ("build-extra-chroot-dirs", + (std::string) ""); + if (chroot_dirs == "") + chroot_dirs = arg; + else + chroot_dirs = chroot_dirs + " " + arg; + settings.set("build-extra-chroot-dirs", chroot_dirs); + break; + } case GUIX_OPT_DISABLE_LOG_COMPRESSION: settings.compressLog = false; break; @@ -328,11 +338,12 @@ main (int argc, char *argv[]) if (settings.useChroot) { - foreach (PathSet::iterator, i, settings.dirsInChroot) - { - printMsg (lvlDebug, - format ("directory `%1%' added to the chroot") % *i); - } + std::string chroot_dirs; + + chroot_dirs = settings.get ("build-extra-chroot-dirs", + (std::string) ""); + printMsg (lvlDebug, + format ("extra chroot directories: '%1%'") % chroot_dirs); } printMsg (lvlDebug, diff --git a/nix/nix-daemon/nix-daemon.cc b/nix/nix-daemon/nix-daemon.cc index 8814fe3155..e42d602a3a 100644 --- a/nix/nix-daemon/nix-daemon.cc +++ b/nix/nix-daemon/nix-daemon.cc @@ -7,6 +7,8 @@ #include "affinity.hh" #include "globals.hh" +#include + #include #include #include @@ -17,6 +19,8 @@ #include #include #include +#include +#include using namespace nix; @@ -44,7 +48,6 @@ static FdSource from(STDIN_FILENO); static FdSink to(STDOUT_FILENO); bool canSendStderr; -pid_t myPid; @@ -54,11 +57,7 @@ pid_t myPid; socket. */ static void tunnelStderr(const unsigned char * buf, size_t count) { - /* Don't send the message to the client if we're a child of the - process handling the connection. Otherwise we could screw up - the protocol. It's up to the parent to redirect stderr and - send it to the client somehow (e.g., as in build.cc). */ - if (canSendStderr && myPid == getpid()) { + if (canSendStderr) { try { writeInt(STDERR_NEXT, to); writeString(buf, count, to); @@ -284,15 +283,6 @@ static void performOp(bool trusted, unsigned int clientVersion, { switch (op) { -#if 0 - case wopQuit: { - /* Close the database. */ - store.reset((StoreAPI *) 0); - writeInt(1, to); - break; - } -#endif - case wopIsValidPath: { /* 'readStorePath' could raise an error leading to the connection being closed. To be able to recover from an invalid path error, @@ -450,7 +440,7 @@ static void performOp(bool trusted, unsigned int clientVersion, case wopImportPaths: { startWork(); TunnelSource source(from); - Paths paths = store->importPaths(true, source); + Paths paths = store->importPaths(!trusted, source); stopWork(); writeStrings(paths, to); break; @@ -650,6 +640,13 @@ static void performOp(bool trusted, unsigned int clientVersion, break; } + case wopOptimiseStore: + startWork(); + store->optimiseStore(); + stopWork(); + writeInt(1, to); + break; + default: throw Error(format("invalid operation %1%") % op); } @@ -659,7 +656,6 @@ static void performOp(bool trusted, unsigned int clientVersion, static void processConnection(bool trusted) { canSendStderr = false; - myPid = getpid(); _writeToStderr = tunnelStderr; #ifdef HAVE_HUP_NOTIFICATION @@ -708,7 +704,7 @@ static void processConnection(bool trusted) to.flush(); } catch (Error & e) { - stopWork(false, e.msg()); + stopWork(false, e.msg(), GET_PROTOCOL_MINOR(clientVersion) >= 8 ? 1 : 0); to.flush(); return; } @@ -735,12 +731,10 @@ static void processConnection(bool trusted) during addTextToStore() / importPath(). If that happens, just send the error message and exit. */ bool errorAllowed = canSendStderr; - if (!errorAllowed) printMsg(lvlError, format("error processing client input: %1%") % e.msg()); stopWork(false, e.msg(), GET_PROTOCOL_MINOR(clientVersion) >= 8 ? e.status : 0); - if (!errorAllowed) break; + if (!errorAllowed) throw; } catch (std::bad_alloc & e) { - if (canSendStderr) - stopWork(false, "Nix daemon out of memory", GET_PROTOCOL_MINOR(clientVersion) >= 8 ? 1 : 0); + stopWork(false, "Nix daemon out of memory", GET_PROTOCOL_MINOR(clientVersion) >= 8 ? 1 : 0); throw; } @@ -749,7 +743,7 @@ static void processConnection(bool trusted) assert(!canSendStderr); }; - printMsg(lvlError, format("%1% operations") % opCount); + printMsg(lvlDebug, format("%1% operations") % opCount); } @@ -771,6 +765,27 @@ static void setSigChldAction(bool autoReap) } +bool matchUser(const string & user, const string & group, const Strings & users) +{ + if (find(users.begin(), users.end(), "*") != users.end()) + return true; + + if (find(users.begin(), users.end(), user) != users.end()) + return true; + + for (auto & i : users) + if (string(i, 0, 1) == "@") { + if (group == string(i, 1)) return true; + struct group * gr = getgrnam(i.c_str() + 1); + if (!gr) continue; + for (char * * mem = gr->gr_mem; *mem; mem++) + if (user == string(*mem)) return true; + } + + return false; +} + + #define SD_LISTEN_FDS_START 3 @@ -856,58 +871,61 @@ static void daemonLoop() closeOnExec(remote); - /* Get the identity of the caller, if possible. */ - uid_t clientUid = -1; - pid_t clientPid = -1; bool trusted = false; + pid_t clientPid = -1; #if defined(SO_PEERCRED) + /* Get the identity of the caller, if possible. */ ucred cred; socklen_t credLen = sizeof(cred); - if (getsockopt(remote, SOL_SOCKET, SO_PEERCRED, &cred, &credLen) != -1) { - clientPid = cred.pid; - clientUid = cred.uid; - if (clientUid == 0) trusted = true; - } -#endif + if (getsockopt(remote, SOL_SOCKET, SO_PEERCRED, &cred, &credLen) == -1) + throw SysError("getting peer credentials"); - printMsg(lvlInfo, format("accepted connection from pid %1%, uid %2%") % clientPid % clientUid); + clientPid = cred.pid; - /* Fork a child to handle the connection. */ - pid_t child; - child = fork(); + struct passwd * pw = getpwuid(cred.uid); + string user = pw ? pw->pw_name : int2String(cred.uid); - switch (child) { + struct group * gr = getgrgid(cred.gid); + string group = gr ? gr->gr_name : int2String(cred.gid); - case -1: - throw SysError("unable to fork"); + Strings trustedUsers = settings.get("trusted-users", Strings({"root"})); + Strings allowedUsers = settings.get("allowed-users", Strings({"*"})); - case 0: - try { /* child */ + if (matchUser(user, group, trustedUsers)) + trusted = true; - /* Background the daemon. */ - if (setsid() == -1) - throw SysError(format("creating a new session")); + if (!trusted && !matchUser(user, group, allowedUsers)) + throw Error(format("user `%1%' is not allowed to connect to the Nix daemon") % user); - /* Restore normal handling of SIGCHLD. */ - setSigChldAction(false); + printMsg(lvlInfo, format((string) "accepted connection from pid %1%, user %2%" + + (trusted ? " (trusted)" : "")) % clientPid % user); +#endif + + /* Fork a child to handle the connection. */ + startProcess([&]() { + fdSocket.close(); - /* For debugging, stuff the pid into argv[1]. */ - if (clientPid != -1 && argvSaved[1]) { - string processName = int2String(clientPid); - strncpy(argvSaved[1], processName.c_str(), strlen(argvSaved[1])); - } + /* Background the daemon. */ + if (setsid() == -1) + throw SysError(format("creating a new session")); - /* Handle the connection. */ - from.fd = remote; - to.fd = remote; - processConnection(trusted); + /* Restore normal handling of SIGCHLD. */ + setSigChldAction(false); - } catch (std::exception & e) { - writeToStderr("unexpected Nix daemon error: " + string(e.what()) + "\n"); + /* For debugging, stuff the pid into argv[1]. */ + if (clientPid != -1 && argvSaved[1]) { + string processName = int2String(clientPid); + strncpy(argvSaved[1], processName.c_str(), strlen(argvSaved[1])); } + + /* Handle the connection. */ + from.fd = remote; + to.fd = remote; + processConnection(trusted); + exit(0); - } + }, false, "unexpected Nix daemon error: ", true); } catch (Interrupted & e) { throw; diff --git a/tests/guix-archive.sh b/tests/guix-archive.sh index d4259b8677..8eacf89338 100644 --- a/tests/guix-archive.sh +++ b/tests/guix-archive.sh @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2013, 2014 Ludovic Courtès +# Copyright © 2013, 2014, 2015 Ludovic Courtès # # This file is part of GNU Guix. # @@ -41,7 +41,6 @@ cmp "$archive" "$archive_alt" # Check the exit value and stderr upon import. guix archive --import < "$archive" -guix archive --import < "$archive" 2>&1 | grep "import.*guile-bootstrap" if guix archive something-that-does-not-exist then false; else true; fi -- cgit v1.2.3 From 368d08f74744ed5d5ef5ef747e86bddbfaa47312 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 19 May 2015 09:09:47 +0200 Subject: build: Make sure $CXX supports C++11. * m4/guix.m4 (GUIX_CHECK_CXX11, GUIX_ASSERT_CXX11): New macros. * config-daemon.ac: Use 'AC_LANG([C++])' and 'GUIX_ASSERT_CXX11'.C * doc/guix.texi (Requirements): Mention C++11 support. --- config-daemon.ac | 3 +++ doc/guix.texi | 7 ++++--- m4/guix.m4 | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 3 deletions(-) diff --git a/config-daemon.ac b/config-daemon.ac index fb80c754c9..a6cf29ca42 100644 --- a/config-daemon.ac +++ b/config-daemon.ac @@ -5,9 +5,12 @@ AC_MSG_RESULT([$guix_build_daemon]) dnl C++ environment. This macro must be used unconditionnaly. AC_PROG_CXX +AC_LANG([C++]) if test "x$guix_build_daemon" = "xyes"; then + GUIX_ASSERT_CXX11 + AC_PROG_RANLIB AC_CONFIG_HEADER([nix/config.h]) diff --git a/doc/guix.texi b/doc/guix.texi index 6964a4ec18..91c86dc30a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -368,9 +368,10 @@ Unless @code{--disable-daemon} was passed to @command{configure}, the following packages are also needed: @itemize -@item @url{http://sqlite.org, SQLite 3} -@item @url{http://www.bzip.org, libbz2} -@item @url{http://gcc.gnu.org, GCC's g++} +@item @url{http://sqlite.org, SQLite 3}; +@item @url{http://www.bzip.org, libbz2}; +@item @url{http://gcc.gnu.org, GCC's g++}, with support for the +C++11 standard. @end itemize When a working installation of @url{http://nixos.org/nix/, the Nix package diff --git a/m4/guix.m4 b/m4/guix.m4 index 445ce857dd..fa5a4023ba 100644 --- a/m4/guix.m4 +++ b/m4/guix.m4 @@ -218,3 +218,42 @@ AC_DEFUN([GUIX_CHECK_FILE_NAME_LIMITS], [ AC_MSG_ERROR([store directory '$storedir' would lead to overly long hash-bang lines]) fi ]) + +dnl GUIX_CHECK_CXX11 +dnl +dnl Check whether the C++ compiler can compile a typical C++11 program. +AC_DEFUN([GUIX_CHECK_CXX11], [ + AC_REQUIRE([AC_PROG_CXX]) + AC_CACHE_CHECK([whether $CXX supports C++11], + [ac_cv_guix_cxx11_support], + [save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-std=c++11 $CXXFLAGS" + AC_COMPILE_IFELSE([ + AC_LANG_SOURCE([ + #include + + std::function + return_plus_lambda (int x) + { + auto result = [[&]](int y) { + return x + y; + }; + + return result; + } + ])], + [ac_cv_guix_cxx11_support=yes], + [ac_cv_guix_cxx11_support=no]) + CXXFLAGS="$save_CXXFLAGS" + ]) +]) + +dnl GUIX_ASSERT_CXX11 +dnl +dnl Error out if the C++ compiler cannot compile C++11 code. +AC_DEFUN([GUIX_ASSERT_CXX11], [ + GUIX_CHECK_CXX11 + if test "x$ac_cv_guix_cxx11_support" != "xyes"; then + AC_MSG_ERROR([C++ compiler '$CXX' does not support the C++11 standard]) + fi +]) -- cgit v1.2.3 From e3fd0ce6969a62665a1eaedccebb6b21ced1e86f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 19 May 2015 09:35:52 +0200 Subject: store: Add 'optimize-store' RPC. * guix/store.scm (operation-id): Add 'optimize-store'. (optimize-store): New procedure. --- guix/store.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/guix/store.scm b/guix/store.scm index 10b9062db2..fc2f8d92ca 100644 --- a/guix/store.scm +++ b/guix/store.scm @@ -90,6 +90,7 @@ references requisites referrers + optimize-store topologically-sorted valid-derivers query-derivation-outputs @@ -171,7 +172,8 @@ (query-substitutable-path-infos 30) (query-valid-paths 31) (query-substitutable-paths 32) - (query-valid-derivers 33)) + (query-valid-derivers 33) + (optimize-store 34)) (define-enumerate-type hash-algo ;; hash.hh @@ -760,6 +762,12 @@ substitutable. For each substitutable path, a `substitutable?' object is returned." substitutable-path-list)) +(define-operation (optimize-store) + "Optimize the store by hard-linking identical files (\"deduplication\".) +Return #t on success." + ;; Note: the daemon in Guix <= 0.8.2 does not implement this RPC. + boolean) + (define (run-gc server action to-delete min-freed) "Perform the garbage-collector operation ACTION, one of the `gc-action' values. When ACTION is `delete-specific', the TO-DELETE is -- cgit v1.2.3 From 38d27786086ff2b8d1325b1c0090ccff3745adfc Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 19 May 2015 09:59:45 +0200 Subject: guix gc: Add '--optimize'. * guix/scripts/gc.scm (show-help, %options): Add --optimize. (guix-gc): Handle it. --- doc/guix.texi | 11 +++++++++++ guix/scripts/gc.scm | 10 +++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index 91c86dc30a..0d2a01f75a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -1472,6 +1472,17 @@ Attempt to delete all the store files and directories specified as arguments. This fails if some of the files are not in the store, or if they are still live. +@item --optimize +@cindex deduplication +Optimize the store by hard-linking identical files---this is +@dfn{deduplication}. + +The daemon performs deduplication after each successful build or archive +import, unless it was started with @code{--disable-deduplication} +(@pxref{Invoking guix-daemon, @code{--disable-deduplication}}). Thus, +this option is primarily useful when the daemon was running with +@code{--disable-deduplication}. + @item --list-dead Show the list of dead files and directories still present in the store---i.e., files and directories no longer reachable from any root. diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm index ed16cab8f9..4bae65a1ec 100644 --- a/guix/scripts/gc.scm +++ b/guix/scripts/gc.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013 Ludovic Courtès +;;; Copyright © 2012, 2013, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -43,6 +43,8 @@ Invoke the garbage collector.\n")) collect at least MIN bytes of garbage")) (display (_ " -d, --delete attempt to delete PATHS")) + (display (_ " + --optimize optimize the store by deduplicating identical files")) (display (_ " --list-dead list dead paths")) (display (_ " @@ -88,6 +90,10 @@ Invoke the garbage collector.\n")) (lambda (opt name arg result) (alist-cons 'action 'delete (alist-delete 'action result)))) + (option '("optimize") #f #f + (lambda (opt name arg result) + (alist-cons 'action 'optimize + (alist-delete 'action result)))) (option '("list-dead") #f #f (lambda (opt name arg result) (alist-cons 'action 'list-dead @@ -169,6 +175,8 @@ Invoke the garbage collector.\n")) (list-relatives requisites)) ((list-referrers) (list-relatives referrers)) + ((optimize) + (optimize-store store)) ((list-dead) (for-each (cut simple-format #t "~a~%" <>) (dead-paths store))) -- cgit v1.2.3 From d692678fee97c97e7e4d2d616e5d11e2f0af1a8b Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 19 May 2015 22:21:50 +0800 Subject: gnu: Add xfce4-clipman-plugin. * gnu/packages/xfce.scm (xfce4-clipman-plugin): New variable. (xfce)[propagated-inputs]: Add it. --- gnu/packages/xfce.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index 37f09579fe..818941892f 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -318,6 +318,37 @@ applications menu, workspace switcher and more.") ;; to read the battery state via ACPI or APM are covered by lgpl2.0+. (license (list gpl2+ lgpl2.0+)))) +(define-public xfce4-clipman-plugin + (package + (name "xfce4-clipman-plugin") + (version "1.2.6") + (source (origin + (method url-fetch) + (uri (string-append "http://archive.xfce.org/src/panel-plugins/" + name "/" (version-major+minor version) "/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "19a8gwcqc0r5qqi8w28dc8arqip34m8yxdb87lgps9g5qfcky113")))) + (build-system gnu-build-system) + (native-inputs + `(("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (inputs + `(("exo" ,exo) + ("libxfce4ui" ,libxfce4ui) + ("libxtst" ,libxtst) + ("xfce4-panel" ,xfce4-panel))) + (home-page + "http://goodies.xfce.org/projects/panel-plugins/xfce4-clipman-plugin") + (synopsis "Clipboard manager for Xfce") + (description + "Clipman is a clipboard manager for Xfce. It keeps the clipboard contents +around while it is usually lost when you close an application. It is able to +handle text and images, and has a feature to execute actions on specific text by +matching them against regular expressions.") + (license (list gpl2+)))) + (define-public xfce4-appfinder (package (name "xfce4-appfinder") @@ -601,6 +632,7 @@ on your desktop.") ("tumlber" ,tumbler) ("xfce4-appfinder" ,xfce4-appfinder) ("xfce4-battery-plugin" ,xfce4-battery-plugin) + ("xfce4-clipman-plugin" ,xfce4-clipman-plugin) ("xfce4-panel" ,xfce4-panel) ("xfce4-session" ,xfce4-session) ("xfce4-settings" ,xfce4-settings) -- cgit v1.2.3 From ef698bf996029c4c72fc4c7149bf5f63935e62d7 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 18 May 2015 15:07:50 -0500 Subject: gnu: fltk: Use system zlib, libjpeg, and libpng. * gnu/packages/fltk.scm (fltk)[inputs]: Add libjpeg, libpng, and zlib. [arguments]: Add 'patch-config' phase. --- gnu/packages/fltk.scm | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm index cbd9d00e8c..7a41460325 100644 --- a/gnu/packages/fltk.scm +++ b/gnu/packages/fltk.scm @@ -18,8 +18,10 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages fltk) - #:use-module (guix licenses) + #:use-module ((guix licenses) #:select (lgpl2.0)) #:use-module (gnu packages) + #:use-module (gnu packages compression) + #:use-module (gnu packages image) #:use-module (gnu packages xorg) #:use-module (gnu packages gl) #:use-module (guix packages) @@ -40,9 +42,12 @@ "15qd7lkz5d5ynz70xhxhigpz3wns39v9xcf7ggkl0792syc8sfgq")) (patches (list (search-patch "fltk-shared-lib-defines.patch"))))) (build-system gnu-build-system) - (inputs - `(("libx11" ,libx11) - ("mesa" ,mesa))) + (inputs + `(("libjpeg" ,libjpeg-8) ;jpeg_read_header argument error in libjpeg-9 + ("libpng" ,libpng) + ("libx11" ,libx11) + ("mesa" ,mesa) + ("zlib" ,zlib))) (arguments `(#:tests? #f ;TODO: compile programs in "test" dir #:configure-flags @@ -54,7 +59,22 @@ (lambda _ (substitute* "makeinclude.in" (("/bin/sh") (which "sh")))) - %standard-phases))) + (alist-cons-after + 'install 'patch-config + ;; Provide -L flags for image libraries when querying fltk-config to + ;; avoid propagating inputs. + (lambda* (#:key inputs outputs #:allow-other-keys) + (use-modules (srfi srfi-26)) + (let* ((conf (string-append (assoc-ref outputs "out") + "/bin/fltk-config")) + (jpeg (assoc-ref inputs "libjpeg")) + (png (assoc-ref inputs "libpng")) + (zlib (assoc-ref inputs "zlib"))) + (substitute* conf + (("-ljpeg") (string-append "-L" jpeg "/lib -ljpeg")) + (("-lpng") (string-append "-L" png "/lib -lpng")) + (("-lz") (string-append "-L" zlib "/lib -lz"))))) + %standard-phases)))) (home-page "http://www.fltk.org") (synopsis "3D C++ GUI library") (description "FLTK is a C++ GUI toolkit providing modern GUI functionality -- cgit v1.2.3 From 87eafdbdbd45899bdb663c8adb5fdf2990c9b22e Mon Sep 17 00:00:00 2001 From: Taylan Ulrich Bayırlı/Kammer Date: Fri, 15 May 2015 21:54:11 +0200 Subject: doc: Add "package Reference" and "origin Reference" sections. * doc/guix.texi (Defining Packages): Link to "package Reference". Add menu. (package Reference, origin Reference): New subsections. --- doc/guix.texi | 185 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 184 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index 0d2a01f75a..8e1bdb6f93 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -12,7 +12,8 @@ @copying Copyright @copyright{} 2012, 2013, 2014, 2015 Ludovic Courtès@* Copyright @copyright{} 2013, 2014 Andreas Enge@* -Copyright @copyright{} 2013 Nikita Karetnikov +Copyright @copyright{} 2013 Nikita Karetnikov@* +Copyright @copyright{} 2015 Taylan Ulrich Bayırlı/Kammer Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or @@ -1814,6 +1815,8 @@ However, any other dependencies need to be specified in the unavailable to the build process, possibly leading to a build failure. @end itemize +@xref{package Reference}, for a full description of possible fields. + Once a package definition is in place, the package may actually be built using the @code{guix build} command-line tool (@pxref{Invoking guix build}). @xref{Packaging Guidelines}, for @@ -1858,6 +1861,186 @@ and operating system, such as @code{"mips64el-linux-gnu"} Configure and Build System}). @end deffn +@menu +* package Reference :: The package data type. +* origin Reference:: The origin data type. +@end menu + + +@node package Reference +@subsection @code{package} Reference + +This section summarizes all the options available in @code{package} +declarations (@pxref{Defining Packages}). + +@deftp {Data Type} package +This is the data type representing a package recipe. + +@table @asis +@item @code{name} +The name of the package, as a string. + +@item @code{version} +The version of the package, as a string. + +@item @code{source} +An origin object telling how the source code for the package should be +acquired (@pxref{origin Reference}). + +@item @code{build-system} +The build system that should be used to build the package (@pxref{Build +Systems}). + +@item @code{arguments} (default: @code{'()}) +The arguments that should be passed to the build system. This is a +list, typically containing sequential keyword-value pairs. + +@item @code{inputs} (default: @code{'()}) +Package or derivation inputs to the build. This is a list of lists, +where each list has the name of the input (a string) as its first +element, a package or derivation object as its second element, and +optionally the name of the output of the package or derivation that +should be used, which defaults to @code{"out"}. + +@item @code{propagated-inputs} (default: @code{'()}) +This field is like @code{inputs}, but the specified packages will be +force-installed alongside the package they belong to. For example this +is necessary when a library needs headers of another library to compile, +or needs another shared library to be linked alongside itself when a +program wants to link to it. + +@item @code{native-inputs} (default: @code{'()}) +This field is like @code{inputs}, but in case of a cross-compilation it +will be ensured that packages for the architecture of the build machine +are present, such that executables from them can be used during the +build. For example, this is necessary for build tools such as Autoconf, +Libtool, pkg-config, or Gettext. + +@item @code{self-native-input?} (default: @code{#f}) +This is a Boolean field telling whether the package should use itself as +a native input when cross-compiling. + +@item @code{outputs} (default: @code{'("out")}) +The list of output names of the package. @xref{Packages with Multiple +Outputs}, for typical uses of additional outputs. + +@item @code{native-search-paths} (default: @code{'()}) +@itemx @code{search-paths} (default: @code{'()}) +A list of @code{search-path-specification} objects describing +search-path environment variables honored by the package. + +@item @code{replacement} (default: @code{#f}) +This must either @code{#f} or a package object that will be used as a +@dfn{replacement} for this package. @xref{Security Updates, grafts}, +for details. + +@item @code{synopsis} +A one-line description of the package. + +@item @code{description} +A more elaborate description of the package. + +@item @code{license} +The license of the package; a value from @code{(guix licenses)}. + +@item @code{home-page} +The URL to the home-page of the package, as a string. + +@item @code{supported-systems} (default: @var{%supported-systems}) +The list of systems supported by the package, as strings of the form +@code{architecture-kernel}, for example @code{"x86_64-linux"}. + +@item @code{maintainers} (default: @code{'()}) +The list of maintainers of the package, as @code{maintainer} objects. + +@item @code{location} (default: source location of the @code{package} form) +The source location of the package. It's useful to override this when +inheriting from another package, in which case this field is not +automatically corrected. +@end table +@end deftp + + +@node origin Reference +@subsection @code{origin} Reference + +This section summarizes all the options available in @code{origin} +declarations (@pxref{Defining Packages}). + +@deftp {Data Type} origin +This is the data type representing a source code origin. + +@table @asis +@item @code{uri} +An object containing the URI of the source. The object type depends on +the @code{method} (see below). For example, when using the +@var{url-fetch} method of @code{(guix download)}, the valid @code{uri} +values are: a URL represented as a string, or a list thereof. + +@item @code{method} +A procedure that will handle the URI. + +Examples include: + +@table @asis +@item @var{url-fetch} from @code{(guix download)} +download a file the HTTP, HTTPS, or FTP URL specified in the +@code{uri} field; + +@item @var{git-fetch} from @code{(guix git-download)} +clone the Git version control repository, and check out the revision +specified in the @code{uri} field as a @code{git-reference} object; a +@code{git-reference} looks like this: + +@example +(git-reference + (url "git://git.debian.org/git/pkg-shadow/shadow") + (commit "v4.1.5.1")) +@end example +@end table + +@item @code{sha256} +A bytevector containing the SHA-256 hash of the source. Typically the +@code{base32} form is used here to generate the bytevector from a +base-32 string. + +@item @code{file-name} (default: @code{#f}) +The file name under which the source code should be saved. When this is +@code{#f}, a sensible default value will be used in most cases. In case +the source is fetched from a URL, the file name from the URL will be +used. For version control checkouts, it's recommended to provide the +file name explicitly because the default is not very descriptive. + +@item @code{patches} (default: @code{'()}) +A list of file names containing patches to be applied to the source. + +@item @code{snippet} (default: @code{#f}) +A quoted piece of code that will be run in the source directory to make +any modifications, which is sometimes more convenient than a patch. + +@item @code{patch-flags} (default: @code{'("-p1")}) +A list of command-line flags that should be passed to the @code{patch} +command. + +@item @code{patch-inputs} (default: @code{#f}) +Input packages or derivations to the patching process. When this is +@code{#f}, the usual set of inputs necessary for patching are provided, +such as GNU@tie{}Patch. + +@item @code{modules} (default: @code{'()}) +A list of Guile modules that should be loaded during the patching +process and while running the code in the @code{snippet} field. + +@item @code{imported-modules} (default: @code{'()}) +The list of Guile modules to import in the patch derivation, for use by +the @code{snippet}. + +@item @code{patch-guile} (default: @code{#f}) +The Guile package that should be used in the patching process. When +this is @code{#f}, a sensible default is used. +@end table +@end deftp + @node Build Systems @section Build Systems -- cgit v1.2.3 From 52031c0abf498dc2523911a14026c4a1fb411316 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 19 May 2015 15:28:20 -0400 Subject: gnu: xorriso: Update to 1.4.0. * gnu/packages/cdrom.scm (xorriso): Update to 1.4.0. --- gnu/packages/cdrom.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm index 98a3e16b04..8ecc909c79 100644 --- a/gnu/packages/cdrom.scm +++ b/gnu/packages/cdrom.scm @@ -124,14 +124,14 @@ libcdio.") (define-public xorriso (package (name "xorriso") - (version "1.3.8") + (version "1.4.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/xorriso/xorriso-" version ".tar.gz")) (sha256 (base32 - "0zhhj9lr9z7hnb2alac54mc28w1l0mbanphhpmy3ylsi8rih84lh")))) + "0mhfxn2idkrw1i65a5y4gnb1fig85zpnszb9ax7w4a2v062y1l8b")))) (build-system gnu-build-system) (inputs `(("acl" ,acl) -- cgit v1.2.3 From f906d30cedfcfe005333814a718178dc089c0d60 Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Sun, 10 May 2015 09:29:54 -0500 Subject: gnu: Add guile-emacs and guile-for-guile-emacs. * gnu/packages/guile.scm (guile-for-guile-emacs): New variable. * gnu/packages/emacs.scm (guile-emacs): New variable. --- gnu/packages/emacs.scm | 31 +++++++++++++++++++++++++++++++ gnu/packages/guile.scm | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 53676bd2da..435ccd1503 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -23,10 +23,12 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system trivial) #:use-module (gnu packages) + #:use-module (gnu packages guile) #:use-module (gnu packages gtk) #:use-module (gnu packages gnome) #:use-module (gnu packages ncurses) @@ -146,6 +148,35 @@ editor (without an X toolkit)" ) (arguments (append '(#:configure-flags '("--with-x-toolkit=no")) (package-arguments emacs))))) +(define-public guile-emacs + (package (inherit emacs) + (name "guile-emacs") + (version "20150512.41120e0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "git://git.hcoop.net/git/bpt/emacs.git") + (commit "41120e0f595b16387eebfbf731fff70481de1b4b"))) + (sha256 + (base32 + "0lvcvsz0f4mawj04db35p1dvkffdqkz8pkhc0jzh9j9x2i63kcz6")))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("guile" ,guile-for-guile-emacs) + ,@(package-native-inputs emacs))) + (arguments + (substitute-keyword-arguments `(;; Build fails if we allow parallel build. + #:parallel-build? #f + ;; Tests aren't passing for now. + #:tests? #f + ,@(package-arguments emacs)) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'autogen + (lambda _ + (zero? (system* "sh" "autogen.sh")))))))))) + ;;; ;;; Emacs hacking. diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 751002f54c..4446ccf337 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -27,6 +27,7 @@ #:use-module (gnu packages gperf) #:use-module (gnu packages libffi) #:use-module (gnu packages autotools) + #:use-module (gnu packages flex) #:use-module (gnu packages libunistring) #:use-module (gnu packages m4) #:use-module (gnu packages multiprecision) @@ -35,6 +36,8 @@ #:use-module (gnu packages ncurses) #:use-module (gnu packages ed) #:use-module (gnu packages base) + #:use-module (gnu packages texinfo) + #:use-module (gnu packages gettext) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) @@ -181,6 +184,42 @@ without requiring the source code to be rewritten.") ;; in the `base' module, and thus changing it entails a full rebuild. guile-2.0) +(define-public guile-for-guile-emacs + (package (inherit guile-2.0) + (name "guile-for-guile-emacs") + (version "20150510.d8d9a8d") + (source (origin + (method git-fetch) + (uri (git-reference + (url "git://git.hcoop.net/git/bpt/guile.git") + (commit "d8d9a8da05ec876acba81a559798eb5eeceb5a17"))) + (sha256 + (base32 + "00sprsshy16y8pxjy126hr2adqcvvzzz96hjyjwgg8swva1qh6b0")))) + (arguments + (substitute-keyword-arguments `(;; Tests aren't passing for now. + ;; Obviously we should re-enable this! + #:tests? #f + ,@(package-arguments guile-2.0)) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'autogen + (lambda _ + (zero? (system* "sh" "autogen.sh")))) + (add-before 'autogen 'patch-/bin/sh + (lambda _ + (substitute* "build-aux/git-version-gen" + (("#!/bin/sh") (string-append "#!" (which "sh")))) + #t)))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("flex" ,flex) + ("texinfo" ,texinfo) + ("gettext" ,gnu-gettext) + ,@(package-native-inputs guile-2.0))))) + ;;; ;;; Extensions. -- cgit v1.2.3 From bc11c72c98b76e7d9d9e50311351a401f1346b0c Mon Sep 17 00:00:00 2001 From: Alexander Shendi Date: Tue, 19 May 2015 18:27:02 -0400 Subject: gnu: mit-scheme: Add libx11 to inputs. * gnu/packages/scheme.scm (mit-scheme)[inputs]: Add libx11. --- gnu/packages/scheme.scm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index f2f5287d7f..bce1ab5d53 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -38,6 +38,7 @@ #:use-module (gnu packages libffi) #:use-module (gnu packages fontutils) #:use-module (gnu packages image) + #:use-module (gnu packages xorg) #:use-module (ice-9 match)) (define (mit-scheme-source-directory system version) @@ -90,6 +91,7 @@ ;; ("texlive-core" ,texlive-core) ("texinfo" ,texinfo) ("m4" ,m4) + ("libx11" ,libx11) ("source" -- cgit v1.2.3 From 10f366e38a27bc2bff12bf2252887a5a627df9b6 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 20 May 2015 16:22:33 +0800 Subject: gnu: feh: Update to 2.13. * gnu/packages/feh.scm (feh): Update to 2.13. --- gnu/packages/feh.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/feh.scm b/gnu/packages/feh.scm index 84edad419e..ae7c820011 100644 --- a/gnu/packages/feh.scm +++ b/gnu/packages/feh.scm @@ -29,7 +29,7 @@ (define-public feh (package (name "feh") - (version "2.12") + (version "2.13") (home-page "https://feh.finalrewind.org/") (source (origin (method url-fetch) @@ -37,7 +37,7 @@ name "-" version ".tar.bz2")) (sha256 (base32 - "0ckhidmsms2l5jycp0qf71jzmb3bpbhjq3bcgfpvfvszah7pmq30")))) + "06fa9zh1zpi63l90kw3l9a0sfavf424j7ksi396ifg9669gx35gn")))) (build-system gnu-build-system) (arguments '(#:phases (alist-delete 'configure %standard-phases) -- cgit v1.2.3 From 755e1147aa33d1c305bb9db6c5e03cf1063079fc Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 20 May 2015 11:12:34 +0200 Subject: guix package: --search-paths mentions $PATH. * guix/scripts/package.scm (search-path-environment-variables): Add $PATH to SEARCH-PATHS. --- guix/scripts/package.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 15f3e13cc1..300af681c2 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -381,7 +381,9 @@ an output path different than CURRENT-PATH." ENTRIES, a list of manifest entries, in PROFILE. Use GETENV to determine the current settings and report only settings not already effective." (let ((search-paths (delete-duplicates - (append-map manifest-entry-search-paths entries)))) + (cons $PATH + (append-map manifest-entry-search-paths + entries))))) (filter-map (match-lambda ((spec . value) (let ((variable (search-path-specification-variable spec)) -- cgit v1.2.3 From dbc31ab25c355eae373e1766b4a77fccbe462bf3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 20 May 2015 11:52:45 +0200 Subject: guix package: Add optional argument to --search-paths. * guix/scripts/package.scm (search-path-environment-variables): Add #:kind parameter. Pass it to 'environment-variable-definition'. (display-search-paths): Add #:kind parameter and pass it to 'search-path-environment-variables'. (%options): Add an optional parameter for "--search-paths". (guix-package)[process-query]: Handle it. * tests/guix-package-net.sh: Adjust existing test. * tests/guix-package.sh: Adjust existing tests and add new test. * doc/guix.texi (Invoking guix package): Document it. --- doc/guix.texi | 14 +++++++++++++- guix/scripts/package.scm | 38 +++++++++++++++++++++++++++----------- tests/guix-package-net.sh | 2 +- tests/guix-package.sh | 9 +++++++-- 4 files changed, 48 insertions(+), 15 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 8e1bdb6f93..53c9fb2d44 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -1098,7 +1098,7 @@ The difference between @code{--roll-back} and not make a zeroth generation, so if a specified generation does not exist, the current generation will not be changed. -@item --search-paths +@item --search-paths[=@var{kind}] @cindex search paths Report environment variable definitions, in Bash syntax, that may be needed in order to use the set of installed packages. These environment @@ -1113,6 +1113,18 @@ library are installed in the profile, then @code{--search-paths} will suggest setting these variables to @code{@var{profile}/include} and @code{@var{profile}/lib}, respectively. +The typical use case is to define these environment variables in the +shell: + +@example +$ eval `guix package --search-paths` +@end example + +@var{kind} may be one of @code{exact}, @code{prefix}, or @code{suffix}, +meaning that the returned environment variable definitions will either +be exact settings, or prefixes or suffixes of the current value of these +variables. When omitted, @var{kind} defaults to @code{exact}. + @item --profile=@var{profile} @itemx -p @var{profile} Use @var{profile} instead of the user's default profile. diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 300af681c2..d6d7c66cf3 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -376,10 +376,13 @@ an output path different than CURRENT-PATH." ;;; (define* (search-path-environment-variables entries profile - #:optional (getenv getenv)) + #:optional (getenv getenv) + #:key (kind 'exact)) "Return environment variable definitions that may be needed for the use of ENTRIES, a list of manifest entries, in PROFILE. Use GETENV to determine the -current settings and report only settings not already effective." +current settings and report only settings not already effective. KIND +must be one of 'exact, 'prefix, or 'suffix, depending on the kind of search +path definition to be returned." (let ((search-paths (delete-duplicates (cons $PATH (append-map manifest-entry-search-paths @@ -388,17 +391,19 @@ current settings and report only settings not already effective." ((spec . value) (let ((variable (search-path-specification-variable spec)) (sep (search-path-specification-separator spec))) - ;; TODO: Offer the choice between exact/prefix/suffix. (environment-variable-definition variable value - #:separator sep)))) + #:separator sep + #:kind kind)))) (evaluate-search-paths search-paths (list profile) getenv)))) -(define (display-search-paths entries profile) +(define* (display-search-paths entries profile + #:key (kind 'exact)) "Display the search path environment variables that may need to be set for ENTRIES, a list of manifest entries, in the context of PROFILE." (let* ((profile (user-friendly-profile profile)) - (settings (search-path-environment-variables entries profile))) + (settings (search-path-environment-variables entries profile + #:kind kind))) (unless (null? settings) (format #t (_ "The following environment variable definitions may be needed:~%")) (format #t "~{ ~a~%~}" settings)))) @@ -533,10 +538,20 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n")) (lambda (opt name arg result arg-handler) (values (alist-cons 'switch-generation arg result) #f))) - (option '("search-paths") #f #f + (option '("search-paths") #f #t (lambda (opt name arg result arg-handler) - (values (cons `(query search-paths) result) - #f))) + (let ((kind (match arg + ((or "exact" "prefix" "suffix") + (string->symbol arg)) + (#f + 'exact) + (x + (leave (_ "~a: unsupported \ +kind of search path~%") + x))))) + (values (cons `(query search-paths ,kind) + result) + #f)))) (option '(#\p "profile") #t #f (lambda (opt name arg result arg-handler) (values (alist-cons 'profile (canonicalize-profile arg) @@ -977,12 +992,13 @@ more information.~%")) (find-packages-by-name name version))) #t)) - (('search-paths) + (('search-paths kind) (let* ((manifest (profile-manifest profile)) (entries (manifest-entries manifest)) (profile (user-friendly-profile profile)) (settings (search-path-environment-variables entries profile - (const #f)))) + (const #f) + #:kind kind))) (format #t "~{~a~%~}" settings) #t)) diff --git a/tests/guix-package-net.sh b/tests/guix-package-net.sh index cf3233bee2..14222cfd25 100644 --- a/tests/guix-package-net.sh +++ b/tests/guix-package-net.sh @@ -147,7 +147,7 @@ test "`readlink_base "$profile"`" = "$profile-2-link" # Make sure LIBRARY_PATH gets listed by `--search-paths'. guix package --bootstrap -p "$profile" -i guile-bootstrap -i gcc-bootstrap -guix package --search-paths -p "$profile" | grep LIBRARY_PATH +guix package -p "$profile" --search-paths | grep LIBRARY_PATH # Roll back so we can delete #3 below. guix package -p "$profile" --switch-generation=2 diff --git a/tests/guix-package.sh b/tests/guix-package.sh index a732110d5c..d420b8076d 100644 --- a/tests/guix-package.sh +++ b/tests/guix-package.sh @@ -52,8 +52,13 @@ test -L "$profile" && test -L "$profile-1-link" test -f "$profile/bin/guile" # No search path env. var. here. -guix package --search-paths -p "$profile" -test "`guix package --search-paths -p "$profile" | wc -l`" = 0 +guix package -p "$profile" --search-paths +guix package -p "$profile" --search-paths | grep '^export PATH=' +test "`guix package -p "$profile" --search-paths | wc -l`" = 1 # $PATH +( set -e; set -x; \ + eval `guix package --search-paths=prefix -p "$PWD/$profile"`; \ + test "`type -P guile`" = "$PWD/$profile/bin/guile" ; \ + type -P rm ) # Exit with 1 when a generation does not exist. if guix package -p "$profile" --delete-generations=42; -- cgit v1.2.3 From 820a40327dfd075f03c8cbe336f955f45e3e60ef Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 20 May 2015 12:00:04 +0200 Subject: ftp-client: Throw when log-in fails. * guix/ftp-client.scm (ftp-open): When '%ftp-listen' returns something different from 220, throw instead of writing an error message. --- guix/ftp-client.scm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/guix/ftp-client.scm b/guix/ftp-client.scm index ab72405df0..37feb895a5 100644 --- a/guix/ftp-client.scm +++ b/guix/ftp-client.scm @@ -109,11 +109,8 @@ or a TCP port number), and return it." (%ftp-login "anonymous" "guix@example.com" s) (%make-ftp-connection s ai)) (begin - (format (current-error-port) - "FTP to `~a' failed: ~A: ~A~%" - host code message) (close s) - #f)))) + (throw 'ftp-error s "log-in" code message))))) (lambda args ;; Connection failed, so try one of the other addresses. -- cgit v1.2.3 From 4627ea587750886f5de5ac42cc69c89e260ef690 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 20 May 2015 12:11:34 +0200 Subject: daemon: Correctly print substituter's stderr. * nix/libstore/local-store.cc (LocalStore::getLineFromSubstituter): Reinstate commit 9ba0b8d. Fixes a regression introduced in 2bb0490. --- nix/libstore/local-store.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nix/libstore/local-store.cc b/nix/libstore/local-store.cc index a890ab56b3..a115f65847 100644 --- a/nix/libstore/local-store.cc +++ b/nix/libstore/local-store.cc @@ -1165,7 +1165,8 @@ string LocalStore::getLineFromSubstituter(RunningSubstituter & run) string::size_type p; while (((p = err.find('\n')) != string::npos) || ((p = err.find('\r')) != string::npos)) { - printMsg(lvlError, run.program + ": " + string(err, 0, p)); + string thing(err, 0, p + 1); + writeToStderr(run.program + ": " + thing); err = string(err, p + 1); } } -- cgit v1.2.3 From 5b5ea159acbd90d3a87ad5a5be33d97cf2293425 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 19 May 2015 16:10:25 +0200 Subject: gnu: openblas: Disable DYNAMIC_ARCH on MIPS. * gnu/packages/maths.scm (openblas)[arguments]: Do not pass DYNAMIC_ARCH when building for MIPS. Also make non-substitutable for MIPS. --- gnu/packages/maths.scm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index f27903cc1a..519ef68794 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -1037,7 +1037,11 @@ constant parts of it.") "0av3pd96j8rx5i65f652xv9wqfkaqn0w4ma1gvbyz73i6j2hi9db")))) (build-system gnu-build-system) (arguments - '(#:tests? #f ;no "check" target + `(#:tests? #f ;no "check" target + ;; DYNAMIC_ARCH is not supported on MIPS. When it is disabled, + ;; OpenBLAS will tune itself to the build host, so we need to disable + ;; substitutions. + #:substitutable? ,(not (string-prefix? "mips" (%current-system))) #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "SHELL=bash" @@ -1045,7 +1049,10 @@ constant parts of it.") ;; Build the library for all supported CPUs. This allows ;; switching CPU targets at runtime with the environment variable ;; OPENBLAS_CORETYPE=, where "type" is a supported CPU type. - "DYNAMIC_ARCH=1") + ;; Unfortunately, this is not supported on MIPS. + ,@(if (string-prefix? "mips" (%current-system)) + '() + '("DYNAMIC_ARCH=1"))) ;; no configure script #:phases (alist-delete 'configure %standard-phases))) (inputs -- cgit v1.2.3 From d620ea889cd6ea75430258b613d729900f440abc Mon Sep 17 00:00:00 2001 From: David Thompson Date: Mon, 18 May 2015 19:14:01 -0400 Subject: gnu: Add sfxr. * gnu/packages/game-development.scm (sfxr): New variable. --- gnu/packages/game-development.scm | 43 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 219176722a..14209f4b7e 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -33,7 +33,11 @@ #:use-module (gnu packages fontutils) #:use-module (gnu packages image) #:use-module (gnu packages audio) - #:use-module (gnu packages pulseaudio)) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages gnome) + #:use-module (gnu packages gtk) + #:use-module (gnu packages sdl) + #:use-module (gnu packages pkg-config)) (define-public bullet (package @@ -127,3 +131,40 @@ clone.") to ease the development of games and multimedia applications. It is composed of five modules: system, window, graphics, audio and network.") (license license:zlib))) + +(define-public sfxr + (package + (name "sfxr") + (version "1.2.1") + (source (origin + (method url-fetch) + (uri (string-append "http://www.drpetter.se/files/sfxr-sdl-1.2.1.tar.gz")) + (sha256 + (base32 + "0dfqgid6wzzyyhc0ha94prxax59wx79hqr25r6if6by9cj4vx4ya")))) + (build-system gnu-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (delete 'configure) ; no configure script + (add-before 'build 'patch-makefile + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "Makefile" + (("\\$\\(DESTDIR\\)/usr") out)) + (substitute* "main.cpp" + (("/usr/share") + (string-append out "/share"))) + #t)))) + #:tests? #f)) ; no tests + (native-inputs + `(("pkg-config" ,pkg-config) + ("desktop-file-utils" ,desktop-file-utils))) + (inputs + `(("sdl" ,sdl) + ("gtk+" ,gtk+))) + (synopsis "Simple sound effect generator") + (description "Sfxr is a tool for quickly generating simple sound effects. +Originally created for use in video game prototypes, it can generate random +sounds from presets such as \"explosion\" or \"powerup\".") + (home-page "http://www.drpetter.se/project_sfxr.html") + (license license:expat))) -- cgit v1.2.3 From 7ea1432e22b42969ff0d078e68f5cb55a75b1aca Mon Sep 17 00:00:00 2001 From: David Thompson Date: Mon, 18 May 2015 07:49:44 -0400 Subject: ui: Factorize user-provided Scheme file loading. * guix/ui.scm (make-user-module, load*): New procedures. * guix/scripts/system.scm (%user-module): Define in terms of 'make-user-module'. (read-operating-system): Define in terms of load*'. --- guix/scripts/system.scm | 22 ++++------------------ guix/ui.scm | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 1838e89452..459b2da0cc 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -48,28 +48,14 @@ (define %user-module ;; Module in which the machine description file is loaded. - (let ((module (make-fresh-user-module))) - (for-each (lambda (iface) - (module-use! module (resolve-interface iface))) - '((gnu system) - (gnu services) - (gnu system shadow))) - module)) + (make-user-module '((gnu system) + (gnu services) + (gnu system shadow)))) (define (read-operating-system file) "Read the operating-system declaration from FILE and return it." - ;; TODO: Factorize. - (catch #t - (lambda () - ;; Avoid ABI incompatibility with the record. - (set! %fresh-auto-compile #t) + (load* file %user-module)) - (save-module-excursion - (lambda () - (set-current-module %user-module) - (primitive-load file)))) - (lambda args - (report-load-error file args)))) ;;; diff --git a/guix/ui.scm b/guix/ui.scm index 911e5ee868..920355fbb5 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -48,6 +48,8 @@ P_ report-error leave + make-user-module + load* report-load-error warn-about-load-error show-version-and-exit @@ -133,6 +135,28 @@ messages." (report-error args ...) (exit 1))) +(define (make-user-module modules) + "Return a new user module with the additional MODULES loaded." + ;; Module in which the machine description file is loaded. + (let ((module (make-fresh-user-module))) + (for-each (lambda (iface) + (module-use! module (resolve-interface iface))) + modules) + module)) + +(define (load* file user-module) + "Load the user provided Scheme source code FILE." + (catch #t + (lambda () + (set! %fresh-auto-compile #t) + + (save-module-excursion + (lambda () + (set-current-module user-module) + (primitive-load file)))) + (lambda args + (report-load-error file args)))) + (define (report-load-error file args) "Report the failure to load FILE, a user-provided Scheme file, and exit. ARGS is the list of arguments received by the 'throw' handler." -- cgit v1.2.3 From 8404ed5c3e3a36958dc0427531b21ae14b6398aa Mon Sep 17 00:00:00 2001 From: David Thompson Date: Mon, 18 May 2015 07:51:56 -0400 Subject: profiles: Add 'packages->manifest' procedure. * guix/profiles.scm (packages->manifest): New procedure. --- guix/profiles.scm | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/guix/profiles.scm b/guix/profiles.scm index 11d9bf0cd9..9cb226eda7 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -80,6 +80,7 @@ profile-manifest package->manifest-entry + packages->manifest %default-profile-hooks profile-derivation generation-number @@ -172,6 +173,18 @@ omitted or #f, use the first output of PACKAGE." (dependencies (delete-duplicates deps)) (search-paths (package-native-search-paths package))))) +(define (packages->manifest packages) + "Return a list of manifest entries, one for each item listed in PACKAGES. +Elements of PACKAGES can be either package objects or package/string tuples +denoting a specific output of a package." + (manifest + (map (match-lambda + ((package output) + (package->manifest-entry package output)) + (package + (package->manifest-entry package))) + packages))) + (define (manifest->gexp manifest) "Return a representation of MANIFEST as a gexp." (define (entry->gexp entry) @@ -469,7 +482,7 @@ entries of MANIFEST, or #f if MANIFEST does not have any GHC packages." (module-ref (resolve-interface '(gnu packages haskell)) 'ghc)) (define build - #~(begin + #~(begin (use-modules (guix build utils) (srfi srfi-1) (srfi srfi-26) (ice-9 ftw)) @@ -478,20 +491,20 @@ entries of MANIFEST, or #f if MANIFEST does not have any GHC packages." (let* ((base (basename #+ghc))) (string-drop base (+ 1 (string-index base #\-))))) - + (define db-subdir (string-append "lib/" ghc-name-version "/package.conf.d")) (define db-dir (string-append #$output "/" db-subdir)) - + (define (conf-files top) (find-files (string-append top "/" db-subdir) "\\.conf$")) (define (copy-conf-file conf) (let ((base (basename conf))) (copy-file conf (string-append db-dir "/" base)))) - + (system* (string-append #+ghc "/bin/ghc-pkg") "init" db-dir) (for-each copy-conf-file (append-map conf-files -- cgit v1.2.3 From 1b6764477fda1a71f0ed377546f49adf2e36e5cb Mon Sep 17 00:00:00 2001 From: David Thompson Date: Thu, 14 May 2015 21:11:57 -0400 Subject: package: Add --manifest option. * guix/scripts/package.scm (show-help): Add help text. (%options): Add manifest option. (guix-package): Add manifest option handler. * doc/guix.texi ("Invoking guix package"): Document it. * tests/guix-package.sh: Add test. --- doc/guix.texi | 17 ++++++++ guix/scripts/package.scm | 107 ++++++++++++++++++++++++++++------------------- tests/guix-package.sh | 12 ++++++ 3 files changed, 92 insertions(+), 44 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 53c9fb2d44..9b2e367d0c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -1068,6 +1068,23 @@ substring ``emacs'': $ guix package --upgrade . --do-not-upgrade emacs @end example +@item --manifest=@var{file} +@itemx -m @var{file} +Create a new @dfn{generation} of the profile from the manifest object +returned by the Scheme code in @var{file}. + +A manifest file may look like this: + +@example +(use-package-modules guile emacs gcc) + +(packages->manifest + (list guile-2.0 + emacs + ;; Use a specific package output. + (list gcc "debug"))) +@end example + @item --roll-back Roll back to the previous @dfn{generation} of the profile---i.e., undo the last transaction. diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index d6d7c66cf3..1251734062 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -432,6 +432,9 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n")) -r, --remove=PACKAGE remove PACKAGE")) (display (_ " -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP")) + (display (_ " + -m, --manifest=FILE create a new profile generation with the manifest + from FILE")) (display (_ " --do-not-upgrade[=REGEXP] do not upgrade any packages matching REGEXP")) (display (_ " @@ -524,6 +527,10 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n")) (lambda (opt name arg result arg-handler) (values (alist-cons 'roll-back? #t result) #f))) + (option '(#\m "manifest") #t #f + (lambda (opt name arg result arg-handler) + (values (alist-cons 'manifest arg result) + arg-handler))) (option '(#\l "list-generations") #f #t (lambda (opt name arg result arg-handler) (values (cons `(query list-generations ,(or arg "")) @@ -800,6 +807,50 @@ more information.~%")) (define dry-run? (assoc-ref opts 'dry-run?)) (define profile (assoc-ref opts 'profile)) + (define (build-and-use-profile manifest) + (let* ((bootstrap? (assoc-ref opts 'bootstrap?))) + + (when (equal? profile %current-profile) + (ensure-default-profile)) + + (let* ((prof-drv (run-with-store (%store) + (profile-derivation + manifest + #:hooks (if bootstrap? + '() + %default-profile-hooks)))) + (prof (derivation->output-path prof-drv))) + (show-what-to-build (%store) (list prof-drv) + #:use-substitutes? + (assoc-ref opts 'substitutes?) + #:dry-run? dry-run?) + + (cond + (dry-run? #t) + ((and (file-exists? profile) + (and=> (readlink* profile) (cut string=? prof <>))) + (format (current-error-port) (_ "nothing to be done~%"))) + (else + (let* ((number (generation-number profile)) + + ;; Always use NUMBER + 1 for the new profile, + ;; possibly overwriting a "previous future + ;; generation". + (name (generation-file-name profile + (+ 1 number)))) + (and (build-derivations (%store) (list prof-drv)) + (let* ((entries (manifest-entries manifest)) + (count (length entries))) + (switch-symlinks name prof) + (switch-symlinks profile name) + (unless (string=? profile %current-profile) + (register-gc-root (%store) name)) + (format #t (N_ "~a package in profile~%" + "~a packages in profile~%" + count) + count) + (display-search-paths entries profile))))))))) + ;; First roll back if asked to. (cond ((and (assoc-ref opts 'roll-back?) (not dry-run?)) @@ -834,60 +885,28 @@ more information.~%")) (alist-delete 'delete-generations opts))) (_ #f)) opts)) + ((and (assoc-ref opts 'manifest) + (not dry-run?)) + (let* ((file-name (assoc-ref opts 'manifest)) + (user-module (make-user-module '((guix profiles) + (gnu)))) + (manifest (load* file-name user-module))) + (format #t (_ "installing new manifest from ~a with ~d entries.~%") + file-name (length (manifest-entries manifest))) + (build-and-use-profile manifest))) (else (let* ((manifest (profile-manifest profile)) (install (options->installable opts manifest)) (remove (options->removable opts manifest)) - (bootstrap? (assoc-ref opts 'bootstrap?)) (transaction (manifest-transaction (install install) (remove remove))) (new (manifest-perform-transaction manifest transaction))) - (when (equal? profile %current-profile) - (ensure-default-profile)) - (unless (and (null? install) (null? remove)) - (let* ((prof-drv (run-with-store (%store) - (profile-derivation - new - #:hooks (if bootstrap? - '() - %default-profile-hooks)))) - (prof (derivation->output-path prof-drv))) - (show-manifest-transaction (%store) manifest transaction - #:dry-run? dry-run?) - (show-what-to-build (%store) (list prof-drv) - #:use-substitutes? - (assoc-ref opts 'substitutes?) - #:dry-run? dry-run?) - - (cond - (dry-run? #t) - ((and (file-exists? profile) - (and=> (readlink* profile) (cut string=? prof <>))) - (format (current-error-port) (_ "nothing to be done~%"))) - (else - (let* ((number (generation-number profile)) - - ;; Always use NUMBER + 1 for the new profile, - ;; possibly overwriting a "previous future - ;; generation". - (name (generation-file-name profile - (+ 1 number)))) - (and (build-derivations (%store) (list prof-drv)) - (let* ((entries (manifest-entries new)) - (count (length entries))) - (switch-symlinks name prof) - (switch-symlinks profile name) - (unless (string=? profile %current-profile) - (register-gc-root (%store) name)) - (format #t (N_ "~a package in profile~%" - "~a packages in profile~%" - count) - count) - (display-search-paths entries - profile)))))))))))) + (show-manifest-transaction (%store) manifest transaction + #:dry-run? dry-run?) + (build-and-use-profile new)))))) (define (process-query opts) ;; Process any query specified by OPTS. Return #t when a query was diff --git a/tests/guix-package.sh b/tests/guix-package.sh index d420b8076d..26a5e9d1a2 100644 --- a/tests/guix-package.sh +++ b/tests/guix-package.sh @@ -242,3 +242,15 @@ export GUIX_BUILD_OPTIONS available2="`guix package -A | sort`" test "$available2" = "$available" guix package -I + +unset GUIX_BUILD_OPTIONS + +# Applying a manifest file +cat > "$module_dir/manifest.scm"<manifest (list %bootstrap-guile)) +EOF +guix package --bootstrap -m "$module_dir/manifest.scm" +guix package -I | grep guile +test `guix package -I | wc -l` -eq 1 -- cgit v1.2.3 From b2a5fa594e66b9d929df11fc7a38e4b367a00a5e Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 20 May 2015 12:57:50 -0400 Subject: install: Omit /, /root, and /var from binary tarball. * gnu/system/install.scm (self-contained-tarball): Pass "./root/.guix-profile", "./var/guix", and "./gnu" to 'tar' command instead of ".". --- gnu/system/install.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 799851c9d7..007bd25ae6 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015 Ludovic Courtès +;;; Copyright © 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -71,7 +72,14 @@ under /root/.guix-profile where GUIX is installed." (with-directory-excursion %root (zero? (system* "tar" "--xz" "--format=gnu" "--owner=root:0" "--group=root:0" - "-cvf" #$output "."))))) + "-cvf" #$output + ;; Avoid adding /, /var, or /root to the tarball, + ;; so that the ownership and permissions of those + ;; directories will not be overwritten when + ;; extracting the archive. + "./root/.guix-profile" + "./var/guix" + "./gnu"))))) (gexp->derivation "guix-tarball.tar.xz" build #:references-graphs `(("profile" ,profile)) -- cgit v1.2.3 From b91d7f0f47cab7bb16ac14486d2e4fee8112c63c Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 20 May 2015 13:00:21 -0400 Subject: Revert "doc: Suggest how to preserve /var and /root owner and permissions." This reverts commit 8c3a5d7059a24e9c6d7bf14be296169cdcf06ad6, which is no longer needed due to commit b2a5fa594e66b9d929df11fc7a38e4b367a00a5e. --- doc/guix.texi | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 9b2e367d0c..2e245bfcf9 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -274,18 +274,12 @@ As @code{root}, run: @example # cd / -# tar --skip-old-files -xf \ - guix-binary-@value{VERSION}.@var{system}.tar.xz +# tar xf guix-binary-@value{VERSION}.@var{system}.tar.xz @end example This creates @file{/gnu/store} (@pxref{The Store}), @file{/var/guix}, and @file{/root/.guix-profile}. @file{/root/.guix-profile} is a ready-to-use profile for @code{root} where Guix is installed. -@c '--skip-old-files' does the right thing with tar 1.28. The manual -@c does not clearly document the behavior we describe here, though. -The @code{--skip-old-files} option allows you to make sure the owner and -permissions on @file{/var} and @file{/root} are preserved (@pxref{Option -Summary, @code{--skip-old-files},, tar, GNU tar: an archiver tool}). Do @emph{not} unpack the tarball on a working Guix system since that would overwrite its own essential files. -- cgit v1.2.3 From 87158e851ffc9a256350780c31266d680dba7a18 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 20 May 2015 14:02:12 -0400 Subject: Revert "gnu: mozjs: Mark as unsupported on mips64el-linux." This reverts commit 4bfeb0ca74fca75febe62b8e059b0c5a6ddd622f. --- gnu/packages/gnuzilla.scm | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 0207bcbad2..4410c5bc43 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -85,12 +85,7 @@ (synopsis "Mozilla javascript engine") (description "SpiderMonkey is Mozilla's JavaScript engine written in C/C++.") - (license license:mpl2.0) ;and others for some files - - ;; On mips64el, this fails to build with several "control reaches end of - ;; non-void function" errors (see - ;; .) - (supported-systems (delete "mips64el-linux" %supported-systems)))) + (license license:mpl2.0))) ; and others for some files (define-public nspr (package -- cgit v1.2.3 From 3a6fb858ad95dd422b2519d5862d5db61deeb2a5 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 20 May 2015 14:55:26 -0400 Subject: gnu: bitlbee: Update to 3.4. * gnu/packages/patches/bitlbee-configure-doc-fix.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/messaging.scm (bitlbee): Update to 3.4. Add patch. [inputs]: Remove 'zlib'. --- gnu-system.am | 1 + gnu/packages/messaging.scm | 6 +++--- gnu/packages/patches/bitlbee-configure-doc-fix.patch | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 gnu/packages/patches/bitlbee-configure-doc-fix.patch diff --git a/gnu-system.am b/gnu-system.am index 5ba48d15d2..a26686b81b 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -387,6 +387,7 @@ dist_patch_DATA = \ gnu/packages/patches/bigloo-gc-shebangs.patch \ gnu/packages/patches/binutils-ld-new-dtags.patch \ gnu/packages/patches/binutils-loongson-workaround.patch \ + gnu/packages/patches/bitlbee-configure-doc-fix.patch \ gnu/packages/patches/calibre-drop-unrar.patch \ gnu/packages/patches/calibre-no-updates-dialog.patch \ gnu/packages/patches/cdparanoia-fpic.patch \ diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index fd857b1ec3..99c5bdb0ff 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -86,20 +86,20 @@ providing: (define-public bitlbee (package (name "bitlbee") - (version "3.2.2") + (version "3.4") (source (origin (method url-fetch) (uri (string-append "http://get.bitlbee.org/src/bitlbee-" version ".tar.gz")) (sha256 - (base32 "13jmcxxgli82wb2n4hs091159xk8rgh7nb02f478lgpjh6996f5s")))) + (base32 "0plx4dryf8i6hz7vghg84z5f6w6rkw1l8ckl4c4wh5zxpd3ddfnf")) + (patches (list (search-patch "bitlbee-configure-doc-fix.patch"))))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) ("check" ,check))) (inputs `(("glib" ,glib) ("libotr" ,libotr) ("gnutls" ,gnutls) - ("zlib" ,zlib) ; Needed to satisfy "pkg-config --exists gnutls" ("python" ,python-2) ("perl" ,perl))) (arguments diff --git a/gnu/packages/patches/bitlbee-configure-doc-fix.patch b/gnu/packages/patches/bitlbee-configure-doc-fix.patch new file mode 100644 index 0000000000..ade0b7f25c --- /dev/null +++ b/gnu/packages/patches/bitlbee-configure-doc-fix.patch @@ -0,0 +1,15 @@ +Fix the check for the prebuilt helpfile when xsltproc is not available. + +--- bitlbee-3.4/configure.orig 2015-03-25 18:09:10.000000000 -0400 ++++ bitlbee-3.4/configure 2015-05-20 14:51:33.627975970 -0400 +@@ -650,8 +650,8 @@ + + if [ "$doc" = "1" ]; then + if [ ! -e doc/user-guide/help.txt ] && \ +- ! type xmlto > /dev/null 2> /dev/null || \ +- ! type xsltproc > /dev/null 2> /dev/null ++ (! type xmlto > /dev/null 2> /dev/null || \ ++ ! type xsltproc > /dev/null 2> /dev/null) + then + echo + echo 'WARNING: Building from an unreleased source tree without prebuilt helpfile.' -- cgit v1.2.3 From 7f18257bead9e2f1f8d121ab290b79cf6ddc0018 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 16 May 2015 21:07:53 +0200 Subject: gnu: Add lpsolve. * gnu/packages/maths.scm (lpsolve): New variable. --- gnu/packages/maths.scm | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 519ef68794..89e0a17ab1 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -1345,3 +1345,72 @@ library with poor performance.") library for graphics software based on the OpenGL Shading Language (GLSL) specifications.") (license license:expat))) + +(define-public lpsolve + (package + (name "lpsolve") + (version "5.5.2.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/lpsolve/lpsolve/" version + "/lp_solve_" version "_source.tar.gz")) + (sha256 + (base32 + "176c7f023mb6b8bfmv4rfqnrlw88lsg422ca74zjh19i2h5s69sq")) + (modules '((guix build utils))) + (snippet + '(substitute* (list "lp_solve/ccc" "lpsolve55/ccc") + (("^c=cc") "c=gcc") + ;; Pretend to be on a 64 bit platform to obtain a common directory + ;; name for the build results on all architectures; nothing else + ;; seems to depend on it. + (("^PLATFORM=.*$") "PLATFORM=ux64\n"))))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda _ + (with-directory-excursion "lpsolve55" + (system* "bash" "ccc")) + (with-directory-excursion "lp_solve" + (system* "bash" "ccc")) + #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (lib (string-append out "/lib")) + ;; This is where LibreOffice expects to find the header + ;; files, and where they are installed by Debian. + (include (string-append out "/include/lpsolve"))) + (mkdir-p lib) + (copy-file "lpsolve55/bin/ux64/liblpsolve55.a" + (string-append lib "/liblpsolve55.a")) + (copy-file "lpsolve55/bin/ux64/liblpsolve55.so" + (string-append lib "/liblpsolve55.so")) + (mkdir-p bin) + (copy-file "lp_solve/bin/ux64/lp_solve" + (string-append bin "/lp_solve")) + (mkdir-p include) + ;; Install a subset of the header files as on Debian + ;; (plus lp_bit.h, which matches the regular expression). + (for-each + (lambda (name) + (copy-file name (string-append include "/" name))) + (find-files "." "lp_[HMSa-z].*\\.h$")) + (with-directory-excursion "shared" + (for-each + (lambda (name) + (copy-file name (string-append include "/" name))) + (find-files "." "\\.h$"))) + #t)))))) + (home-page "http://lpsolve.sourceforge.net/") + (synopsis "Mixed integer linear programming (MILP) solver") + (description + "lp_solve is a mixed integer linear programming solver based on the +revised simplex and the branch-and-bound methods.") + (license license:lgpl2.1+))) -- cgit v1.2.3 From 2e6ecc5c211c9645238aa26be7b3ceee3d098f36 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Wed, 20 May 2015 23:46:17 +0200 Subject: gnu: gconf: Propagate input glib. * gnu/packages/gnome.scm (gconf): Propagate input glib. (gnome-vfs): Drop input glib. (libgnome): Drop propagated input glib. * gnu/packages/ibus.scm (ibus): Drop input glib. --- gnu/packages/gnome.scm | 70 ++++++++++++++++++++++++-------------------------- gnu/packages/ibus.scm | 2 +- 2 files changed, 35 insertions(+), 37 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 8adcbddc04..970df5ef20 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -252,7 +252,7 @@ and keep up to date translations of documentation.") ("shared-mime-info" ,shared-mime-info) ("dconf" ,dconf) ("libcanberra" ,libcanberra) - + ;; For tests. ("dogtail" ,python2-dogtail))) (native-inputs @@ -661,15 +661,15 @@ dealing with different structured file formats.") (alist-cons-after 'install 'generate-full-cache (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((loaders-directory + (let ((loaders-directory (string-append (assoc-ref outputs "out") "/lib/gdk-pixbuf-2.0/2.10.0/loaders"))) (zero? - (system - (string-append - "gdk-pixbuf-query-loaders " + (system + (string-append + "gdk-pixbuf-query-loaders " loaders-directory "/libpixbufloader-svg.so " - (string-join (find-files (assoc-ref inputs "gdk-pixbuf") + (string-join (find-files (assoc-ref inputs "gdk-pixbuf") "libpixbufloader-.*\\.so") " ") "> " loaders-directory ".cache"))))) %standard-phases)))) @@ -720,7 +720,7 @@ library.") Definition Language (idl) files, which is a specification for defining portable interfaces. libidl was initially written for orbit (the orb from the GNOME project, and the primary means of libidl distribution). However, the -functionality was designed to be as reusable and portable as possible.") +functionality was designed to be as reusable and portable as possible.") (license license:lgpl2.0+))) @@ -730,7 +730,7 @@ functionality was designed to be as reusable and portable as possible.") (version "2.14.19") (source (origin (method url-fetch) - (uri (let ((upstream-name "ORBit2")) + (uri (let ((upstream-name "ORBit2")) (string-append "mirror://gnome/sources/" upstream-name "/" (version-major+minor version) "/" upstream-name "-" version ".tar.bz2"))) @@ -755,11 +755,11 @@ functionality was designed to be as reusable and portable as possible.") (home-page "https://projects.gnome.org/orbit2/") (synopsis "CORBA 2.4-compliant Object Request Broker") (description "ORBit2 is a CORBA 2.4-compliant Object Request Broker (orb) -featuring mature C, C++ and Python bindings.") +featuring mature C, C++ and Python bindings.") ;; Licence notice is unclear. The Web page simply say "GPL" without giving a version. ;; SOME of the code files have licence notices for GPLv2+ ;; The tarball contains files of the text of GPLv2 and LGPLv2 - (license license:gpl2+))) + (license license:gpl2+))) (define-public libbonobo @@ -802,7 +802,7 @@ featuring mature C, C++ and Python bindings.") (home-page "https://developer.gnome.org/libbonobo/") (synopsis "Framework for creating reusable components for use in GNOME applications") (description "Bonobo is a framework for creating reusable components for -use in GNOME applications, built on top of CORBA.") +use in GNOME applications, built on top of CORBA.") ;; Licence not explicitly stated. Source files contain no licence notices. ;; Tarball contains text of both GPLv2 and LGPLv2 ;; GPLv2 covers both conditions @@ -815,7 +815,7 @@ use in GNOME applications, built on top of CORBA.") (version "3.2.6") (source (origin (method url-fetch) - (uri + (uri (let ((upstream-name "GConf")) (string-append "mirror://gnome/sources/" upstream-name "/" (version-major+minor version) "/" @@ -823,11 +823,11 @@ use in GNOME applications, built on top of CORBA.") (sha256 (base32 "0k3q9nh53yhc9qxf1zaicz4sk8p3kzq4ndjdsgpaa2db0ccbj4hr")))) (build-system gnu-build-system) - (inputs `(("glib" ,glib) - ("dbus" ,dbus) + (inputs `(("dbus" ,dbus) ("dbus-glib" ,dbus-glib) ("libxml2" ,libxml2))) - (propagated-inputs `(("orbit2" ,orbit2))) ; referred to in the .pc file + (propagated-inputs `(("glib" ,glib) ; referred to in the .pc file + ("orbit2" ,orbit2))) (native-inputs `(("intltool" ,intltool) ("glib" ,glib "bin") ; for glib-genmarshal, etc. @@ -836,7 +836,7 @@ use in GNOME applications, built on top of CORBA.") (synopsis "Store application preferences") (description "Gconf is a system for storing application preferences. It is intended for user preferences; not arbitrary data storage.") - (license license:lgpl2.0+))) + (license license:lgpl2.0+))) (define-public gnome-mime-data @@ -891,8 +891,7 @@ designed to be accessed through the MIME functions in GnomeVFS.") (substitute* "test/test-async-cancel.c" (("EXIT_FAILURE") "77"))) %standard-phases)))) - (inputs `(("glib" ,glib) - ("libxml2" ,libxml2) + (inputs `(("libxml2" ,libxml2) ("dbus-glib" ,dbus-glib) ("dbus" ,dbus) ("gconf" ,gconf) @@ -929,7 +928,7 @@ to access local and remote files with a single consistent API.") `(#:phases (alist-cons-before 'configure 'enable-deprecated - (lambda _ + (lambda _ (substitute* "libgnome/Makefile.in" (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))) %standard-phases))) @@ -947,8 +946,7 @@ to access local and remote files with a single consistent API.") `(("libcanberra" ,libcanberra) ("libbonobo" ,libbonobo) ("gconf" ,gconf) - ("gnome-vfs" ,gnome-vfs) - ("glib" ,glib))) + ("gnome-vfs" ,gnome-vfs))) (home-page "https://developer.gnome.org/libgnome/") (synopsis "Useful routines for building applications") (description "The libgnome library provides a number of useful routines @@ -975,7 +973,7 @@ files and URIs, and displaying help.") `(("pkg-config" ,pkg-config))) (home-page "https://people.gnome.org/~mathieu/libart") (synopsis "2D drawing library") - (description "Libart is a 2D drawing library intended as a + (description "Libart is a 2D drawing library intended as a high-quality vector-based 2D library with antialiasing and alpha composition.") (license license:lgpl2.0+))) @@ -1147,7 +1145,7 @@ since ca. 2006, when GTK+ itself incorporated printing support.") ("glib" ,glib) ("gnome-icon-theme" ,gnome-icon-theme) ("libgnomecanvas" ,libgnomecanvas) - ("libxml2" ,libxml2))) + ("libxml2" ,libxml2))) (native-inputs `(("intltool" ,intltool) ("pkg-config" ,pkg-config))) @@ -1176,7 +1174,7 @@ since ca. 2006, when GTK+ itself incorporated printing support.") (lambda* (#:key inputs #:allow-other-keys) (let ((xorg-server (assoc-ref inputs "xorg-server")) (disp ":1")) - + (setenv "HOME" (getcwd)) (setenv "DISPLAY" disp) ;; There must be a running X server and make check doesn't start one. @@ -1273,7 +1271,7 @@ Hints specification (EWMH).") (home-page "https://developer.gnome.org/goffice/") (synopsis "Document-centric objects and utilities") (description "A GLib/GTK+ set of document-centric objects and utilities.") - (license + (license ;; Dual licensed under GPLv2 or GPLv3 (both without "or later") ;; Note: NOT LGPL (list license:gpl2 license:gpl3)))) @@ -1321,7 +1319,7 @@ Hints specification (EWMH).") (arguments `(;; The gnumeric developers don't worry much about failing tests. ;; See https://bugzilla.gnome.org/show_bug.cgi?id=732387 - #:tests? #f + #:tests? #f #:phases (alist-cons-before 'configure 'pre-conf @@ -1330,9 +1328,9 @@ Hints specification (EWMH).") ;; I am informed that this only affects the possibility to embed a ;; spreadsheet inside an Abiword document. So presumably when we ;; package Abiword we'll have to refer it to this directory. - (substitute* "configure" + (substitute* "configure" (("^GOFFICE_PLUGINS_DIR=.*") - (string-append "GOFFICE_PLUGINS_DIR=" + (string-append "GOFFICE_PLUGINS_DIR=" (assoc-ref outputs "out") "/goffice/plugins")))) %standard-phases))) (inputs @@ -1367,7 +1365,7 @@ engineering.") (source (origin (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" + (uri (string-append "mirror://gnome/sources/" name "/" (version-major+minor version) "/" name "-" version ".tar.xz")) (sha256 @@ -1392,8 +1390,8 @@ engineering.") ;; gdk-pixbuf because the latter does not include support for SVG ;; files. (lambda* (#:key inputs #:allow-other-keys) - (setenv "GDK_PIXBUF_MODULE_FILE" - (car (find-files (assoc-ref inputs "librsvg") + (setenv "GDK_PIXBUF_MODULE_FILE" + (car (find-files (assoc-ref inputs "librsvg") "loaders\\.cache")))) %standard-phases))) (home-page "https://launchpad.net/gnome-themes-standard") @@ -1502,7 +1500,7 @@ editors, IDEs, etc.") (source (origin (method url-fetch) (uri (string-append - "mirror://gnome/sources/" name "/" + "mirror://gnome/sources/" name "/" (version-major+minor version) "/" name "-" version ".tar.xz")) (sha256 @@ -1524,7 +1522,7 @@ editors, IDEs, etc.") ; or /etc/machine-id. #:configure-flags ;; Set the correct RUNPATH in binaries. - (list (string-append "LDFLAGS=-Wl,-rpath=" + (list (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib") "--disable-gtk-doc-html") ; FIXME: requires gtk-doc #:phases @@ -1533,12 +1531,12 @@ editors, IDEs, etc.") (lambda* (#:key inputs #:allow-other-keys) (substitute* "docs/Makefile.in" (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl") - (string-append (assoc-ref inputs "docbook-xsl") + (string-append (assoc-ref inputs "docbook-xsl") "/xml/xsl/docbook-xsl-" ,(package-version docbook-xsl) "/manpages/docbook.xsl"))) - (setenv "XML_CATALOG_FILES" - (string-append (assoc-ref inputs "docbook-xml") + (setenv "XML_CATALOG_FILES" + (string-append (assoc-ref inputs "docbook-xml") "/xml/dtd/docbook/catalog.xml"))) %standard-phases))) (home-page "https://developer.gnome.org/dconf") diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm index 813d0040ee..1abe70a1ab 100644 --- a/gnu/packages/ibus.scm +++ b/gnu/packages/ibus.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Ricardo Wurmus +;;; Copyright © 2015 Andreas Enge ;;; ;;; This file is part of GNU Guix. ;;; @@ -72,7 +73,6 @@ `(("dbus" ,dbus) ("dconf" ,dconf) ("gconf" ,gconf) - ("glib" ,glib) ("gtk2" ,gtk+-2) ("intltool" ,intltool) ("libnotify" ,libnotify) -- cgit v1.2.3 From 90ab5dd259281524bab641137046955fcccacc95 Mon Sep 17 00:00:00 2001 From: Paul van der Walt Date: Thu, 21 May 2015 01:06:59 +0200 Subject: gnu: girara: Update to 0.2.4. * gnu/packages/gtk.scm (girara): Update to 0.2.4. --- gnu/packages/gtk.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 8a5a3099bf..049c63162e 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -844,7 +844,7 @@ write GNOME applications.") (define-public girara (package (name "girara") - (version "0.2.3") + (version "0.2.4") (source (origin (method url-fetch) (uri @@ -852,7 +852,7 @@ write GNOME applications.") version ".tar.gz")) (sha256 (base32 - "1phfmqp8y17zcy9yi6pm2f80x8ldbk60iswpm4bmjz5217jwqzxh")))) + "0pnfdsg435b5vc4x8l9pgm77aj7ram1q0bzrp9g4a3bh1r64xq1f")))) (native-inputs `(("pkg-config" ,pkg-config) ("gettext" ,gnu-gettext))) (inputs `(("gtk+" ,gtk+) -- cgit v1.2.3 From afb925175e6294f65295a1d7d3aebf283b9620fb Mon Sep 17 00:00:00 2001 From: Paul van der Walt Date: Thu, 21 May 2015 01:07:57 +0200 Subject: gnu: zathura: Update to 0.3.3. * gnu/packages/pdf.scm (zathura): Update to 0.3.3. --- gnu/packages/pdf.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index bca577eb35..7023b9aa65 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -282,7 +282,7 @@ by using the poppler rendering engine.") (define-public zathura (package (name "zathura") - (version "0.3.2") + (version "0.3.3") (source (origin (method url-fetch) (uri @@ -290,7 +290,7 @@ by using the poppler rendering engine.") version ".tar.gz")) (sha256 (base32 - "1qk5s7cyqp4l673yhma5igk9g24p5jyqyy81fdk7q7xjqlym19px")) + "1rywx09qn6ap5hb1z31wxby4lzdrqdbldm51pjk1ifflr37xwirk")) (patches (list (search-patch "zathura-plugindir-environment-variable.patch"))))) -- cgit v1.2.3 From 9099e881828fd242cc26054c0f33670c46154d96 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 19 May 2015 11:53:47 +0200 Subject: gnu: r: Apply patch to fix linking against R. * gnu/packages/patches/r-fix-15899.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/statistics.scm (r)[source]: Use it. --- gnu-system.am | 1 + gnu/packages/patches/r-fix-15899.patch | 17 +++++++++++++++++ gnu/packages/statistics.scm | 3 ++- 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/r-fix-15899.patch diff --git a/gnu-system.am b/gnu-system.am index a26686b81b..297c8bcf6a 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -542,6 +542,7 @@ dist_patch_DATA = \ gnu/packages/patches/qt4-tests.patch \ gnu/packages/patches/qt5-conflicting-typedefs.patch \ gnu/packages/patches/qt5-runpath.patch \ + gnu/packages/patches/r-fix-15899.patch \ gnu/packages/patches/ratpoison-shell.patch \ gnu/packages/patches/readline-link-ncurses.patch \ gnu/packages/patches/ripperx-libm.patch \ diff --git a/gnu/packages/patches/r-fix-15899.patch b/gnu/packages/patches/r-fix-15899.patch new file mode 100644 index 0000000000..40593d34e6 --- /dev/null +++ b/gnu/packages/patches/r-fix-15899.patch @@ -0,0 +1,17 @@ +Without the "extern" keyword external applications linking against R (such as +Shogun, for example) might not be linkable. + +See https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15899 for details +about this bug. + +--- a/src/include/Rinterface.h (revision 66251) ++++ b/src/include/Rinterface.h (working copy) +@@ -84,7 +84,7 @@ + void fpu_setup(Rboolean); + + /* in unix/system.c */ +-int R_running_as_main_program; ++extern int R_running_as_main_program; + + #ifdef CSTACK_DEFNS + /* duplicating Defn.h */ diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 722e0dfa49..9408705d5e 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -50,7 +50,8 @@ version ".tar.gz")) (sha256 (base32 - "0dagyqgvi8i3nw158qi2zpwm04s4ffzvnmk5niaksvxs30zrbbpm")))) + "0dagyqgvi8i3nw158qi2zpwm04s4ffzvnmk5niaksvxs30zrbbpm")) + (patches (list (search-patch "r-fix-15899.patch"))))) (build-system gnu-build-system) (arguments `(#:make-flags -- cgit v1.2.3 From 35481e8be61b80200e49610a67a5001239adb793 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Thu, 21 May 2015 20:13:41 +0800 Subject: gnu: Add fizmo. * gnu/packages/games.scm (fizmo): New variable. --- gnu/packages/games.scm | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 549214be21..8f495f7b32 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -748,6 +748,43 @@ some of the restrictions in the venerable Z-machine format. This is the reference interpreter, using Glk API.") (license (license:fsf-free "file://README")))) +(define-public fizmo + (package + (name "fizmo") + (version "0.7.9") + (source (origin + (method url-fetch) + (uri (string-append "https://christoph-ender.de/fizmo/source/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "1w7cgyjrhgkadjrazijzhq7zh0pl5bfc6wl7mdpgh020y4kp46d7")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags + (let ((libjpeg (assoc-ref %build-inputs "libjpeg")) + (ncurses (assoc-ref %build-inputs "ncurses"))) + (list (string-append "jpeg_CFLAGS=-I" libjpeg "/include") + (string-append "jpeg_LIBS=-ljpeg") + (string-append "ncursesw_CFLAGS=-I" ncurses "/include") + (string-append "ncursesw_LIBS=-lncursesw"))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("libsndfile" ,libsndfile) + ("libxml2" ,libxml2) + ("ncurses" ,ncurses) + ("sdl" ,sdl))) + (home-page "https://christoph-ender.de/fizmo/") + (synopsis "Z-machine interpreter") + (description + "Fizmo is a console-based Z-machine interpreter. It is used to play +interactive ficiton, also known as textadventures, which were implemented +either by Infocom or created using the Inform compiler.") + (license license:bsd-3))) + (define-public retroarch (package (name "retroarch") -- cgit v1.2.3 From 4d043ab6283cb15e2f0cd0847a38ccf3604aab66 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Wed, 20 May 2015 18:42:35 -0400 Subject: ui: Deduplicate 'show-what-to-build*'. * guix/ui.scm (show-what-to-build*): New procedure. * guix/scripts/environment.scm (show-what-to-build*): Delete. * guix/scripts/system.scm (show-what-to-build*): Likewise. * build-aux/make-binary-tarball.scm (show-what-to-build*): Likewise. --- build-aux/make-binary-tarball.scm | 3 --- guix/scripts/environment.scm | 3 --- guix/scripts/system.scm | 2 -- guix/ui.scm | 4 ++++ 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/build-aux/make-binary-tarball.scm b/build-aux/make-binary-tarball.scm index 0b5dbaf1de..e12bec476c 100644 --- a/build-aux/make-binary-tarball.scm +++ b/build-aux/make-binary-tarball.scm @@ -27,9 +27,6 @@ (gnu system install) (ice-9 match)) -(define show-what-to-build* - (store-lift show-what-to-build)) - (define copy-file* (lift2 copy-file %store-monad)) diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index e81532c7e4..f403e95f3d 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -192,9 +192,6 @@ packages." (append-map transitive-inputs packages))) ;; TODO: Deduplicate these. -(define show-what-to-build* - (store-lift show-what-to-build)) - (define set-build-options-from-command-line* (store-lift set-build-options-from-command-line)) diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 459b2da0cc..8d5fbe5a78 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -67,8 +67,6 @@ (store-lift references)) (define topologically-sorted* (store-lift topologically-sorted)) -(define show-what-to-build* - (store-lift show-what-to-build)) (define* (copy-item item target diff --git a/guix/ui.scm b/guix/ui.scm index 920355fbb5..9bab7c51dd 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -57,6 +57,7 @@ string->number* size->number show-what-to-build + show-what-to-build* show-manifest-transaction call-with-error-handling with-error-handling @@ -453,6 +454,9 @@ available for download." (null? download) download))) (pair? build))) +(define show-what-to-build* + (store-lift show-what-to-build)) + (define (right-arrow port) "Return either a string containing the 'RIGHT ARROW' character, or an ASCII replacement if PORT is not Unicode-capable." -- cgit v1.2.3 From 2d977638c9a6d8779b01042b0f085da5b26affa9 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Wed, 20 May 2015 18:48:10 -0400 Subject: scripts: Move 'set-build-options-from-command-line*' to (guix scripts build) module. * guix/scripts/build.scm (set-build-options-from-command-line*): New procedure. * guix/scripts/environment.scm (set-build-options-from-command-line*): Delete. --- guix/scripts/build.scm | 4 ++++ guix/scripts/environment.scm | 4 ---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index da71adba68..2307f76b42 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -37,6 +37,7 @@ #:autoload (guix download) (download-to-store) #:export (%standard-build-options set-build-options-from-command-line + set-build-options-from-command-line* show-build-options-help guix-build)) @@ -139,6 +140,9 @@ options handled by 'set-build-options-from-command-line', and listed in #:print-build-trace (assoc-ref opts 'print-build-trace?) #:verbosity (assoc-ref opts 'verbosity))) +(define set-build-options-from-command-line* + (store-lift set-build-options-from-command-line)) + (define %standard-build-options ;; List of standard command-line options for tools that build something. (list (option '(#\L "load-path") #t #f diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index f403e95f3d..d053daf02e 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -191,10 +191,6 @@ packages." (delete-duplicates (append-map transitive-inputs packages))) -;; TODO: Deduplicate these. -(define set-build-options-from-command-line* - (store-lift set-build-options-from-command-line)) - (define (build-inputs inputs opts) "Build the packages in INPUTS using the build options in OPTS." (let ((substitutes? (assoc-ref opts 'substitutes?)) -- cgit v1.2.3 From a4b1a6b65e0f01056bb41e51bddadc7fed923a14 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 21 May 2015 14:26:01 +0200 Subject: guix package: Adjust --help message. * guix/scripts/package.scm (show-help): Add KIND parameter for --search-paths as a followup to dbc31ab. --- guix/scripts/package.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 1251734062..06ee441799 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -440,7 +440,8 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n")) (display (_ " --roll-back roll back to the previous generation")) (display (_ " - --search-paths display needed environment variable definitions")) + --search-paths[=KIND] + display needed environment variable definitions")) (display (_ " -l, --list-generations[=PATTERN] list generations matching PATTERN")) -- cgit v1.2.3 From d1cdd7ba7a7bf6d0ea2ea5466d4bc978586f1f2f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 21 May 2015 18:02:01 +0200 Subject: services: xorg: Make 'xorg-configuration-file' public. * gnu/services/xorg.scm (xorg-configuration-file): New procedure, with code formerly in 'xorg-start-command'. (xorg-start-command): Remove #:drivers and #:resolutions; add #:configuration-file; use it as well as 'xorg-configuration-file'. --- doc/guix.texi | 16 +++++++++++++--- gnu/services/xorg.scm | 36 ++++++++++++++++++++++-------------- 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 2e245bfcf9..36e68bbe9a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -5250,13 +5250,23 @@ The G-Expression denoting the default SLiM theme and its name. @end defvr @deffn {Monadic Procedure} xorg-start-command [#:guile] @ - [#:drivers '()] [#:resolutions '()] [#:xorg-server @var{xorg-server}] + [#:configuration-file #f] [#:xorg-server @var{xorg-server}] Return a derivation that builds a @var{guile} script to start the X server -from @var{xorg-server}. Usually the X server is started by a login manager. +from @var{xorg-server}. @var{configuration-file} is the server configuration +file or a derivation that builds it; when omitted, the result of +@code{xorg-configuration-file} is used. + +Usually the X server is started by a login manager. +@end deffn + +@deffn {Monadic Procedure} xorg-configuration-file @ + [#:drivers '()] [#:resolutions '()] +Return a configuration file for the Xorg server containing search paths for +all the common drivers. @var{drivers} must be either the empty list, in which case Xorg chooses a graphics driver automatically, or a list of driver names that will be tried in -this order---e.g., @code{("modesetting" "vesa")}. +this order---e.g., @code{(\"modesetting\" \"vesa\")}. Likewise, when @var{resolutions} is the empty list, Xorg chooses an appropriate screen resolution; otherwise, it must be a list of diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 4821614ba2..a9afa2fef5 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -37,7 +37,8 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (ice-9 match) - #:export (xorg-start-command + #:export (xorg-configuration-file + xorg-start-command %default-slim-theme %default-slim-theme-name slim-service)) @@ -48,12 +49,9 @@ ;;; ;;; Code: -(define* (xorg-start-command #:key - (guile (canonical-package guile-2.0)) - (xorg-server xorg-server) - (drivers '()) (resolutions '())) - "Return a derivation that builds a @var{guile} script to start the X server -from @var{xorg-server}. Usually the X server is started by a login manager. +(define* (xorg-configuration-file #:key (drivers '()) (resolutions '())) + "Return a configuration file for the Xorg server containing search paths for +all the common drivers. @var{drivers} must be either the empty list, in which case Xorg chooses a graphics driver automatically, or a list of driver names that will be tried in @@ -62,7 +60,6 @@ this order---e.g., @code{(\"modesetting\" \"vesa\")}. Likewise, when @var{resolutions} is the empty list, Xorg chooses an appropriate screen resolution; otherwise, it must be a list of resolutions---e.g., @code{((1024 768) (640 480))}." - (define (device-section driver) (string-append " Section \"Device\" @@ -78,15 +75,14 @@ Section \"Screen\" SubSection \"Display\" Modes " (string-join (map (match-lambda - ((x y) - (string-append "\"" (number->string x) - "x" (number->string y) "\""))) + ((x y) + (string-append "\"" (number->string x) + "x" (number->string y) "\""))) resolutions)) " EndSubSection EndSection")) - (define (xserver.conf) - (text-file* "xserver.conf" " + (text-file* "xserver.conf" " Section \"Files\" FontPath \"" font-adobe75dpi "/share/fonts/X11/75dpi\" ModulePath \"" xf86-video-vesa "/lib/xorg/modules/drivers\" @@ -116,7 +112,19 @@ EndSection drivers) "\n"))) - (mlet %store-monad ((config (xserver.conf))) +(define* (xorg-start-command #:key + (guile (canonical-package guile-2.0)) + configuration-file + (xorg-server xorg-server)) + "Return a derivation that builds a @var{guile} script to start the X server +from @var{xorg-server}. @var{configuration-file} is the server configuration +file or a derivation that builds it; when omitted, the result of +@code{xorg-configuration-file} is used. + +Usually the X server is started by a login manager." + (mlet %store-monad ((config (if configuration-file + (return configuration-file) + (xorg-configuration-file)))) (define script ;; Write a small wrapper around the X server. #~(begin -- cgit v1.2.3 From 12422c9d3872f66c4eac5eb65824238c3e09be1a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 21 May 2015 18:12:28 +0200 Subject: services: xorg: Allow extra config text to be added verbatim. * gnu/services/xorg.scm (xorg-configuration-file): Add #:extra-config and honor it. * doc/guix.texi (X Window): Adjust accordingly. --- doc/guix.texi | 6 +++++- gnu/services/xorg.scm | 18 +++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 36e68bbe9a..fd0d29cb8f 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -5260,7 +5260,7 @@ Usually the X server is started by a login manager. @end deffn @deffn {Monadic Procedure} xorg-configuration-file @ - [#:drivers '()] [#:resolutions '()] + [#:drivers '()] [#:resolutions '()] [#:extra-config '()] Return a configuration file for the Xorg server containing search paths for all the common drivers. @@ -5271,6 +5271,10 @@ this order---e.g., @code{(\"modesetting\" \"vesa\")}. Likewise, when @var{resolutions} is the empty list, Xorg chooses an appropriate screen resolution; otherwise, it must be a list of resolutions---e.g., @code{((1024 768) (640 480))}. + +Last, @var{extra-config} is a list of strings or objects appended to the +@code{text-file*} argument list. It is used to pass extra text to be added +verbatim to the configuration file. @end deffn @node Desktop Services diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index a9afa2fef5..e43bfcffe0 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -49,7 +49,8 @@ ;;; ;;; Code: -(define* (xorg-configuration-file #:key (drivers '()) (resolutions '())) +(define* (xorg-configuration-file #:key (drivers '()) (resolutions '()) + (extra-config '())) "Return a configuration file for the Xorg server containing search paths for all the common drivers. @@ -59,7 +60,11 @@ this order---e.g., @code{(\"modesetting\" \"vesa\")}. Likewise, when @var{resolutions} is the empty list, Xorg chooses an appropriate screen resolution; otherwise, it must be a list of -resolutions---e.g., @code{((1024 768) (640 480))}." +resolutions---e.g., @code{((1024 768) (640 480))}. + +Last, @var{extra-config} is a list of strings or objects appended to the +@code{text-file*} argument list. It is used to pass extra text to be added +verbatim to the configuration file." (define (device-section driver) (string-append " Section \"Device\" @@ -82,7 +87,7 @@ Section \"Screen\" EndSubSection EndSection")) - (text-file* "xserver.conf" " + (apply text-file* "xserver.conf" " Section \"Files\" FontPath \"" font-adobe75dpi "/share/fonts/X11/75dpi\" ModulePath \"" xf86-video-vesa "/lib/xorg/modules/drivers\" @@ -107,10 +112,13 @@ Section \"ServerFlags\" Option \"AllowMouseOpenFail\" \"on\" EndSection " - (string-join (map device-section drivers) "\n") + (string-join (map device-section drivers) "\n") "\n" (string-join (map (cut screen-section <> resolutions) drivers) - "\n"))) + "\n") + + "\n" + extra-config)) (define* (xorg-start-command #:key (guile (canonical-package guile-2.0)) -- cgit v1.2.3 From 1eca6c36adc00d88e6f29744aa2402f2a006be04 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 21 May 2015 22:22:12 +0200 Subject: services: xorg: Assume STARTX is a regular value. * gnu/services/xorg.scm (slim-service): Expect STARTX to be a regular value, not a monadic value. --- gnu/services/xorg.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index e43bfcffe0..7c875a1ae1 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -246,7 +246,9 @@ theme to use. In that case, @var{theme-name} specifies the name of the theme." (define (slim.cfg) - (mlet %store-monad ((startx (or startx (xorg-start-command))) + (mlet %store-monad ((startx (if startx + (return startx) + (xorg-start-command))) (xinitrc (xinitrc #:fallback-session auto-login-session))) (text-file* "slim.cfg" " -- cgit v1.2.3 From c2ee19e6850960ee613c43af3937b1ce11d663f3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 21 May 2015 22:32:34 +0200 Subject: services: xorg: Add xf86-input-libinput to the server's module path. * gnu/services/xorg.scm (xorg-configuration-file): Add XF86-INPUT-LIBINPUT. --- gnu/services/xorg.scm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 7c875a1ae1..9ee88170e4 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -99,6 +99,12 @@ Section \"Files\" ModulePath \"" xf86-video-nouveau "/lib/xorg/modules/drivers\" ModulePath \"" xf86-video-nv "/lib/xorg/modules/drivers\" ModulePath \"" xf86-video-sis "/lib/xorg/modules/drivers\" + + # Libinput is the new thing and is recommended over evdev/synaptics + # by those who know: + # . + ModulePath \"" xf86-input-libinput "/lib/xorg/modules/input\" + ModulePath \"" xf86-input-evdev "/lib/xorg/modules/input\" ModulePath \"" xf86-input-keyboard "/lib/xorg/modules/input\" ModulePath \"" xf86-input-mouse "/lib/xorg/modules/input\" -- cgit v1.2.3 From 4de02f36ac00af722c8f693ab5823fc1a870d58f Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 22 May 2015 00:09:26 -0400 Subject: gnu: fuse: Add fix for CVE-2015-3202. * gnu/packages/patches/fuse-CVE-2015-3202.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/linux.scm (fuse): Add patch. --- gnu-system.am | 1 + gnu/packages/linux.scm | 3 +- gnu/packages/patches/fuse-CVE-2015-3202.patch | 65 +++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/fuse-CVE-2015-3202.patch diff --git a/gnu-system.am b/gnu-system.am index 297c8bcf6a..23113bb16c 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -421,6 +421,7 @@ dist_patch_DATA = \ gnu/packages/patches/flashrom-use-libftdi1.patch \ gnu/packages/patches/flex-bison-tests.patch \ gnu/packages/patches/fltk-shared-lib-defines.patch \ + gnu/packages/patches/fuse-CVE-2015-3202.patch \ gnu/packages/patches/gawk-shell.patch \ gnu/packages/patches/gcc-arm-link-spec-fix.patch \ gnu/packages/patches/gcc-cross-environment-variables.patch \ diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index b5f4b55c6b..26e9aa9000 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -1212,7 +1212,8 @@ processes currently causing I/O.") version ".tar.gz")) (sha256 (base32 - "071r6xjgssy8vwdn6m28qq1bqxsd2bphcd2mzhq0grf5ybm87sqb")))) + "071r6xjgssy8vwdn6m28qq1bqxsd2bphcd2mzhq0grf5ybm87sqb")) + (patches (list (search-patch "fuse-CVE-2015-3202.patch"))))) (build-system gnu-build-system) (inputs `(("util-linux" ,util-linux))) (arguments diff --git a/gnu/packages/patches/fuse-CVE-2015-3202.patch b/gnu/packages/patches/fuse-CVE-2015-3202.patch new file mode 100644 index 0000000000..7c64de7683 --- /dev/null +++ b/gnu/packages/patches/fuse-CVE-2015-3202.patch @@ -0,0 +1,65 @@ +The following patch was copied from Debian. + +Description: Fix CVE-2015-3202 + Missing scrubbing of the environment before executing a mount or umount + of a filesystem. +Origin: upstream +Author: Miklos Szeredi +Last-Update: 2015-05-19 + +--- + lib/mount_util.c | 23 +++++++++++++++++------ + 1 file changed, 17 insertions(+), 6 deletions(-) + +--- a/lib/mount_util.c ++++ b/lib/mount_util.c +@@ -95,10 +95,12 @@ static int add_mount(const char *prognam + goto out_restore; + } + if (res == 0) { ++ char *env = NULL; ++ + sigprocmask(SIG_SETMASK, &oldmask, NULL); + setuid(geteuid()); +- execl("/bin/mount", "/bin/mount", "--no-canonicalize", "-i", +- "-f", "-t", type, "-o", opts, fsname, mnt, NULL); ++ execle("/bin/mount", "/bin/mount", "--no-canonicalize", "-i", ++ "-f", "-t", type, "-o", opts, fsname, mnt, NULL, &env); + fprintf(stderr, "%s: failed to execute /bin/mount: %s\n", + progname, strerror(errno)); + exit(1); +@@ -146,10 +148,17 @@ static int exec_umount(const char *progn + goto out_restore; + } + if (res == 0) { ++ char *env = NULL; ++ + sigprocmask(SIG_SETMASK, &oldmask, NULL); + setuid(geteuid()); +- execl("/bin/umount", "/bin/umount", "-i", rel_mnt, +- lazy ? "-l" : NULL, NULL); ++ if (lazy) { ++ execle("/bin/umount", "/bin/umount", "-i", rel_mnt, ++ "-l", NULL, &env); ++ } else { ++ execle("/bin/umount", "/bin/umount", "-i", rel_mnt, ++ NULL, &env); ++ } + fprintf(stderr, "%s: failed to execute /bin/umount: %s\n", + progname, strerror(errno)); + exit(1); +@@ -205,10 +214,12 @@ static int remove_mount(const char *prog + goto out_restore; + } + if (res == 0) { ++ char *env = NULL; ++ + sigprocmask(SIG_SETMASK, &oldmask, NULL); + setuid(geteuid()); +- execl("/bin/umount", "/bin/umount", "--no-canonicalize", "-i", +- "--fake", mnt, NULL); ++ execle("/bin/umount", "/bin/umount", "--no-canonicalize", "-i", ++ "--fake", mnt, NULL, &env); + fprintf(stderr, "%s: failed to execute /bin/umount: %s\n", + progname, strerror(errno)); + exit(1); -- cgit v1.2.3 From 56120263a99113b024f06606339a9816d8dd58fb Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 22 May 2015 04:25:36 -0400 Subject: gnu: youtube-dl: Update to 2015.05.20. * gnu/packages/video.scm (youtube-dl): Update to 2015.05.20. --- gnu/packages/video.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index c890d45d19..b9f80b252d 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -857,7 +857,7 @@ projects while introducing many more.") (define-public youtube-dl (package (name "youtube-dl") - (version "2015.01.23.4") + (version "2015.05.20") (source (origin (method url-fetch) (uri (string-append "http://youtube-dl.org/downloads/" @@ -865,7 +865,7 @@ projects while introducing many more.") version ".tar.gz")) (sha256 (base32 - "0pvvab9dk1righ3fa79000iz8fzdlcxakscx5sd31730c37j3kj2")))) + "1crfada7vq3d24062wr06sfam66cf14j06wnhg7w5ljzrbynvpll")))) (build-system python-build-system) (inputs `(("setuptools" ,python-setuptools))) (home-page "http://youtube-dl.org") -- cgit v1.2.3 From 4520354282de331f82064f52d49a51d5eb28ab5e Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 21 May 2015 15:20:45 +0200 Subject: gnu: Add python-pyzmq. * gnu/packages/python.scm (python-pyzmq, python2-pyzmq): New variables. --- gnu/packages/python.scm | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index e771e170d2..5e4217a7a1 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -26,7 +26,7 @@ (define-module (gnu packages python) #:use-module ((guix licenses) - #:select (asl2.0 bsd-3 bsd-2 non-copyleft cc0 x11 x11-style + #:select (asl2.0 bsd-4 bsd-3 bsd-2 non-copyleft cc0 x11 x11-style gpl2 gpl2+ gpl3+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+ psfl public-domain x11-style)) #:use-module ((guix licenses) #:select (expat zlib) #:prefix license:) @@ -45,6 +45,7 @@ #:use-module (gnu packages libffi) #:use-module (gnu packages maths) #:use-module (gnu packages multiprecision) + #:use-module (gnu packages networking) #:use-module (gnu packages ncurses) #:use-module (gnu packages openssl) #:use-module (gnu packages perl) @@ -3744,3 +3745,37 @@ applications.") (define-public python2-waf (package-with-python2 python-waf)) + +(define-public python-pyzmq + (package + (name "python-pyzmq") + (version "14.6.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/p/pyzmq/pyzmq-" + version ".tar.gz")) + (sha256 + (base32 "1frmbjykvhmdg64g7sn20c9fpamrsfxwci1nhhg8q7jgz5pq0ikp")))) + (build-system python-build-system) + (arguments + `(#:configure-flags + (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq"))) + ;; FIXME: You must build pyzmq with 'python setup.py build_ext + ;; --inplace' for 'python setup.py test' to work. + #:tests? #f)) + (inputs + `(("zeromq" ,zeromq))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("python-nose" ,python-nose) + ("python-setuptools" ,python-setuptools))) + (home-page "http://github.com/zeromq/pyzmq") + (synopsis "Python bindings for 0MQ") + (description + "PyZMQ is the official Python binding for the ZeroMQ messaging library.") + (license bsd-4))) + +(define-public python2-pyzmq + (package-with-python2 python-pyzmq)) -- cgit v1.2.3 From ea982704430b061f263580041d4f94174d8ba5cd Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 21 May 2015 23:23:47 +0200 Subject: syscalls: Add 'restart-on-EINTR'. * guix/build/syscalls.scm (call-with-restart-on-EINTR): New procedure. (restart-on-EINTR): New macro. --- guix/build/syscalls.scm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm index 5bc4595d08..9ec7e8b4a9 100644 --- a/guix/build/syscalls.scm +++ b/guix/build/syscalls.scm @@ -29,6 +29,7 @@ MS_REMOUNT MS_BIND MS_MOVE + restart-on-EINTR mount umount mount-points @@ -89,6 +90,19 @@ (ref bv)))) (lambda () 0))) +(define (call-with-restart-on-EINTR thunk) + (let loop () + (catch 'system-error + thunk + (lambda args + (if (= (system-error-errno args) EINTR) + (loop) + (apply throw args)))))) + +(define-syntax-rule (restart-on-EINTR expr) + "Evaluate EXPR and restart upon EINTR. Return the value of EXPR." + (call-with-restart-on-EINTR (lambda () expr))) + (define (augment-mtab source target type options) "Augment /etc/mtab with information about the given mount point." (let ((port (open-file "/etc/mtab" "a"))) -- cgit v1.2.3 From 60a56db0074259355a590851131aa23e1549fd8c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 21 May 2015 23:24:49 +0200 Subject: services: swap: Use 'restart-on-EINTR'. * gnu/services/base.scm (swap-service)[start, stop]: Use 'restart-on-EINTR'. * guix/build/syscalls.scm (swapoff): Fix typo in 'throw' arguments. --- gnu/services/base.scm | 4 ++-- guix/build/syscalls.scm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 697b9395c2..d5744204d9 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -851,10 +851,10 @@ gexp, to open it, and evaluate @var{close} to close it." (requirement `(udev ,@requirement)) (documentation "Enable the given swap device.") (start #~(lambda () - (swapon #$device) + (restart-on-EINTR (swapon #$device)) #t)) (stop #~(lambda _ - (swapoff #$device) + (restart-on-EINTR (swapoff #$device)) #f)) (respawn? #f))))) diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm index 9ec7e8b4a9..3585bf27a8 100644 --- a/guix/build/syscalls.scm +++ b/guix/build/syscalls.scm @@ -218,7 +218,7 @@ constants from ." (let ((ret (proc (string->pointer device))) (err (errno))) (unless (zero? ret) - (throw 'system-error "swapff" "~S: ~A" + (throw 'system-error "swapoff" "~S: ~A" (list device (strerror err)) (list err))))))) -- cgit v1.2.3 From 6fb4fb717d32d2999572c972ddf6433864d6becf Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 22 May 2015 09:58:29 +0200 Subject: gnu: guix: Update development snapshot. * gnu/packages/package-management.scm (guix-devel): Update to c2ee19e. --- gnu/packages/package-management.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 45de28eeff..db05969139 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -150,7 +150,7 @@ the Nix package manager.") ;; ;; Note: use a short commit id; when using the long one, the limit on socket ;; file names is exceeded while running the tests. - (let ((commit "5875eb7")) + (let ((commit "c2ee19e")) (package (inherit guix-0.8.2) (version (string-append "0.8.2." commit)) (source (origin @@ -160,7 +160,7 @@ the Nix package manager.") (commit commit))) (sha256 (base32 - "0qcq3g0b7fj2xxrdamilwz92502pxdf17j4cj047cxd8652aknjc")))) + "1gwc1gypgscxg2m3n2vd0mw4dmxr7vsisqgh3y0lr05q9z5742sj")))) (arguments (substitute-keyword-arguments (package-arguments guix-0.8.2) ((#:phases phases) -- cgit v1.2.3 From 99bd74d549bc893e79a541b4e71ceac3909b7cff Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 22 May 2015 11:08:28 +0200 Subject: doc: Make '--manifest' more visible. * doc/guix.texi (Invoking guix package): Mention the declarative approach and --manifest in the intro. And an anchor for --manifest. Explain why/how it can be used. Tweak wording. --- doc/guix.texi | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index fd0d29cb8f..4b7f06f06a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -941,7 +941,7 @@ guix package @var{options} Primarily, @var{options} specifies the operations to be performed during the transaction. Upon completion, a new profile is created, but -previous generations of the profile remain available, should the user +previous @dfn{generations} of the profile remain available, should the user want to roll back. For example, to remove @code{lua} and install @code{guile} and @@ -951,6 +951,11 @@ For example, to remove @code{lua} and install @code{guile} and guix package -r lua -i guile guile-cairo @end example +@command{guix package} also supports a @dfn{declarative approach} +whereby the user specifies the exact set of packages to be available and +passes it @i{via} the @option{--manifest} option +(@pxref{profile-manifest, @option{--manifest}}). + For each user, a symlink to the user's default profile is automatically created in @file{$HOME/.guix-profile}. This symlink always points to the current generation of the user's default profile. Thus, users can add @@ -1062,21 +1067,32 @@ substring ``emacs'': $ guix package --upgrade . --do-not-upgrade emacs @end example -@item --manifest=@var{file} +@item @anchor{profile-manifest}--manifest=@var{file} @itemx -m @var{file} -Create a new @dfn{generation} of the profile from the manifest object +@cindex profile declaration +@cindex profile manifest +Create a new generation of the profile from the manifest object returned by the Scheme code in @var{file}. -A manifest file may look like this: +This allows you to @emph{declare} the profile's contents rather than +constructing it through a sequence of @code{--install} and similar +commands. The advantage is that @var{file} can be put under version +control, copied to different machines to reproduce the same profile, and +so on. + +@c FIXME: Add reference to (guix profile) documentation when available. +@var{file} must return a @dfn{manifest} object, which is roughly a list +of packages: +@findex packages->manifest @example -(use-package-modules guile emacs gcc) +(use-package-modules guile emacs) (packages->manifest - (list guile-2.0 - emacs + (list emacs + guile-2.0 ;; Use a specific package output. - (list gcc "debug"))) + (list guile-2.0 "debug"))) @end example @item --roll-back -- cgit v1.2.3 From a2bf4907dfa42bc0f0661d7edc52871cb2b16800 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 22 May 2015 11:20:27 +0200 Subject: doc: Add a cross-reference to "origin Reference". * doc/guix.texi (Defining Packages): Add xref to "origin Reference". --- doc/guix.texi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index 4b7f06f06a..a616f3324c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -1806,7 +1806,8 @@ There are a few points worth noting in the above package definition: @itemize @item -The @code{source} field of the package is an @code{} object. +The @code{source} field of the package is an @code{} object +(@pxref{origin Reference}, for the complete reference). Here, the @code{url-fetch} method from @code{(guix download)} is used, meaning that the source is a file to be downloaded over FTP or HTTP. -- cgit v1.2.3 From 21461f27e7f2deef243ab4a4b6f04653e2d21e62 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 22 May 2015 11:49:48 +0200 Subject: doc: More cross-references. * doc/guix.texi (Invoking guix package): Add xref to "package Reference". (package Reference): Add xref to "Invoking guix package". Expound 'native-inputs' example, and add xref to "Invoking guix lint". --- doc/guix.texi | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index a616f3324c..53761df351 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -1005,8 +1005,12 @@ distribution modules (@pxref{Package Modules}). @cindex propagated inputs Sometimes packages have @dfn{propagated inputs}: these are dependencies -that automatically get installed along with the required package. +that automatically get installed along with the required package +(@pxref{package-propagated-inputs, @code{propagated-inputs} in +@code{package} objects}, for information about propagated inputs in +package definitions). +@anchor{package-cmd-propagated-inputs} An example is the GNU MPC library: its C header files refer to those of the GNU MPFR library, which in turn refer to those of the GMP library. Thus, when installing MPC, the MPFR and GMP libraries also get installed @@ -1942,19 +1946,27 @@ element, a package or derivation object as its second element, and optionally the name of the output of the package or derivation that should be used, which defaults to @code{"out"}. -@item @code{propagated-inputs} (default: @code{'()}) +@item @anchor{package-propagated-inputs}@code{propagated-inputs} (default: @code{'()}) +@cindex propagated inputs This field is like @code{inputs}, but the specified packages will be -force-installed alongside the package they belong to. For example this -is necessary when a library needs headers of another library to compile, -or needs another shared library to be linked alongside itself when a -program wants to link to it. +force-installed alongside the package they belong to +(@pxref{package-cmd-propagated-inputs, @command{guix package}}, for +information on how @command{guix package} deals with propagated inputs.) + +For example this is necessary when a library needs headers of another +library to compile, or needs another shared library to be linked +alongside itself when a program wants to link to it. @item @code{native-inputs} (default: @code{'()}) This field is like @code{inputs}, but in case of a cross-compilation it will be ensured that packages for the architecture of the build machine are present, such that executables from them can be used during the -build. For example, this is necessary for build tools such as Autoconf, -Libtool, pkg-config, or Gettext. +build. + +This is typically where you would list tools needed at build time but +not at run time, such as Autoconf, Automake, pkg-config, Gettext, or +Bison. @command{guix lint} can report likely mistakes in this area +(@pxref{Invoking guix lint}). @item @code{self-native-input?} (default: @code{#f}) This is a Boolean field telling whether the package should use itself as -- cgit v1.2.3 From 66e3eff1e31c4483aeb7a96ada8ea378fdc49e51 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 21 May 2015 15:43:25 +0200 Subject: gnu: Add rsem. * gnu/packages/bioinformatics.scm (rsem): New variable. * gnu/packages/patches/rsem-makefile.patch: New file. --- gnu/packages/bioinformatics.scm | 78 ++++ gnu/packages/patches/rsem-makefile.patch | 682 +++++++++++++++++++++++++++++++ 2 files changed, 760 insertions(+) create mode 100644 gnu/packages/patches/rsem-makefile.patch diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 1c5a5c2eeb..b29ca67dbd 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -1013,6 +1013,84 @@ files and writing bioinformatics applications.") generated using the PacBio Iso-Seq protocol.") (license license:bsd-3)))) +(define-public rsem + (package + (name "rsem") + (version "1.2.20") + (source + (origin + (method url-fetch) + (uri + (string-append "http://deweylab.biostat.wisc.edu/rsem/src/rsem-" + version ".tar.gz")) + (sha256 + (base32 "0nzdc0j0hjllhsd5f2xli95dafm3nawskigs140xzvjk67xh0r9q")) + (patches (list (search-patch "rsem-makefile.patch"))) + (modules '((guix build utils))) + (snippet + '(begin + ;; remove bundled copy of boost + (delete-file-recursively "boost") + #t)))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ;no "check" target + #:phases + (modify-phases %standard-phases + ;; No "configure" script. + ;; Do not build bundled samtools library. + (replace 'configure + (lambda _ + (substitute* "Makefile" + (("^all : sam/libbam.a") "all : ")) + #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (string-append (assoc-ref outputs "out"))) + (bin (string-append out "/bin/")) + (perl (string-append out "/lib/perl5/site_perl"))) + (mkdir-p bin) + (mkdir-p perl) + (for-each (lambda (file) + (copy-file file + (string-append bin (basename file)))) + (find-files "." "rsem-.*")) + (copy-file "rsem_perl_utils.pm" + (string-append perl "/rsem_perl_utils.pm"))) + #t)) + (add-after + 'install 'wrap-program + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (for-each (lambda (prog) + (wrap-program (string-append out "/bin/" prog) + `("PERL5LIB" ":" prefix + (,(string-append out "/lib/perl5/site_perl"))))) + '("rsem-plot-transcript-wiggles" + "rsem-calculate-expression" + "rsem-generate-ngvector" + "rsem-run-ebseq" + "rsem-prepare-reference"))) + #t))))) + (inputs + `(("boost" ,boost) + ("ncurses" ,ncurses) + ("r" ,r) + ("perl" ,perl) + ("samtools" ,samtools-0.1) + ("zlib" ,zlib))) + (home-page "http://deweylab.biostat.wisc.edu/rsem/") + (synopsis "Estimate gene expression levels from RNA-Seq data") + (description + "RSEM is a software package for estimating gene and isoform expression +levels from RNA-Seq data. The RSEM package provides a user-friendly +interface, supports threads for parallel computation of the EM algorithm, +single-end and paired-end read data, quality scores, variable-length reads and +RSPD estimation. In addition, it provides posterior mean and 95% credibility +interval estimates for expression levels. For visualization, it can generate +BAM and Wiggle files in both transcript-coordinate and genomic-coordinate.") + (license license:gpl3+))) + (define-public rseqc (package (name "rseqc") diff --git a/gnu/packages/patches/rsem-makefile.patch b/gnu/packages/patches/rsem-makefile.patch new file mode 100644 index 0000000000..5481dc685f --- /dev/null +++ b/gnu/packages/patches/rsem-makefile.patch @@ -0,0 +1,682 @@ +This patch simplifies the Makefile, making it much easier to build rsem +without the bundled version of samtools. It has already been submitted +upstream: https://github.com/bli25wisc/RSEM/pull/11 + +From 161894e91a16c7e15af57e4fcfe8cb613711c7fa Mon Sep 17 00:00:00 2001 +From: Ricardo Wurmus +Date: Wed, 22 Apr 2015 14:51:07 +0200 +Subject: [PATCH 1/7] remove all headers from Makefile + +--- + Makefile | 95 +++++++++++----------------------------------------------------- + 1 file changed, 16 insertions(+), 79 deletions(-) + +diff --git a/Makefile b/Makefile +index 54e2603..3a55ed8 100644 +--- a/Makefile ++++ b/Makefile +@@ -10,133 +10,70 @@ all : $(PROGRAMS) + sam/libbam.a : + cd sam ; ${MAKE} all + +-Transcript.h : utils.h +- +-Transcripts.h : utils.h my_assert.h Transcript.h +- +-rsem-extract-reference-transcripts : utils.h my_assert.h GTFItem.h Transcript.h Transcripts.h extractRef.cpp ++rsem-extract-reference-transcripts : extractRef.cpp + $(CC) -Wall -O3 extractRef.cpp -o rsem-extract-reference-transcripts + +-rsem-synthesis-reference-transcripts : utils.h my_assert.h Transcript.h Transcripts.h synthesisRef.cpp ++rsem-synthesis-reference-transcripts : synthesisRef.cpp + $(CC) -Wall -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts + +-BowtieRefSeqPolicy.h : RefSeqPolicy.h +- +-RefSeq.h : utils.h +- +-Refs.h : utils.h RefSeq.h RefSeqPolicy.h PolyARules.h +- +- + rsem-preref : preRef.o + $(CC) preRef.o -o rsem-preref + +-preRef.o : utils.h RefSeq.h Refs.h PolyARules.h RefSeqPolicy.h AlignerRefSeqPolicy.h preRef.cpp ++preRef.o : preRef.cpp + $(CC) $(COFLAGS) preRef.cpp + +- +-SingleRead.h : Read.h +- +-SingleReadQ.h : Read.h +- +-PairedEndRead.h : Read.h SingleRead.h +- +-PairedEndReadQ.h : Read.h SingleReadQ.h +- +- +-PairedEndHit.h : SingleHit.h +- +-HitContainer.h : GroupInfo.h +- +- +-SamParser.h : sam/sam.h sam/bam.h utils.h my_assert.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h SingleHit.h PairedEndHit.h Transcripts.h +- +- + rsem-parse-alignments : parseIt.o sam/libbam.a + $(CC) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread + +-parseIt.o : utils.h GroupInfo.h Read.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h SingleHit.h PairedEndHit.h HitContainer.h SamParser.h Transcripts.h sam/sam.h sam/bam.h parseIt.cpp ++parseIt.o : parseIt.cpp + $(CC) -Wall -O2 -c -I. parseIt.cpp + +- +-rsem-build-read-index : utils.h buildReadIndex.cpp ++rsem-build-read-index : buildReadIndex.cpp + $(CC) -O3 buildReadIndex.cpp -o rsem-build-read-index + +- +-simul.h : boost/random.hpp +- +-ReadReader.h : SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h ReadIndex.h +- +-SingleModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h Profile.h NoiseProfile.h ModelParams.h RefSeq.h Refs.h SingleRead.h SingleHit.h ReadReader.h simul.h +- +-SingleQModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h ModelParams.h RefSeq.h Refs.h SingleReadQ.h SingleHit.h ReadReader.h simul.h +- +-PairedEndModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h Profile.h NoiseProfile.h ModelParams.h RefSeq.h Refs.h SingleRead.h PairedEndRead.h PairedEndHit.h ReadReader.h simul.h +- +-PairedEndQModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h ModelParams.h RefSeq.h Refs.h SingleReadQ.h PairedEndReadQ.h PairedEndHit.h ReadReader.h simul.h +- +-HitWrapper.h : HitContainer.h +- +-sam_rsem_aux.h : sam/bam.h +- +-sam_rsem_cvt.h : sam/bam.h Transcript.h Transcripts.h +- +-BamWriter.h : sam/sam.h sam/bam.h sam_rsem_aux.h sam_rsem_cvt.h SingleHit.h PairedEndHit.h HitWrapper.h Transcript.h Transcripts.h +- +-sampling.h : boost/random.hpp +- +-WriteResults.h : utils.h my_assert.h GroupInfo.h Transcript.h Transcripts.h RefSeq.h Refs.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h +- + rsem-run-em : EM.o sam/libbam.a + $(CC) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread + +-EM.o : utils.h my_assert.h Read.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h SingleHit.h PairedEndHit.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h Refs.h GroupInfo.h HitContainer.h ReadIndex.h ReadReader.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h ModelParams.h RefSeq.h RefSeqPolicy.h PolyARules.h Profile.h NoiseProfile.h Transcript.h Transcripts.h HitWrapper.h BamWriter.h sam/bam.h sam/sam.h simul.h sam_rsem_aux.h sampling.h boost/random.hpp WriteResults.h EM.cpp ++EM.o : EM.cpp + $(CC) $(COFLAGS) EM.cpp + +-bc_aux.h : sam/bam.h +- +-BamConverter.h : utils.h my_assert.h sam/sam.h sam/bam.h sam_rsem_aux.h sam_rsem_cvt.h bc_aux.h Transcript.h Transcripts.h +- +-rsem-tbam2gbam : utils.h Transcripts.h Transcript.h bc_aux.h BamConverter.h sam/sam.h sam/bam.h sam/libbam.a sam_rsem_aux.h sam_rsem_cvt.h tbam2gbam.cpp sam/libbam.a ++rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a + $(CC) -O3 -Wall tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@ + +-rsem-bam2wig : utils.h my_assert.h wiggle.h wiggle.o sam/libbam.a bam2wig.cpp ++rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp + $(CC) -O3 -Wall bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ + +-rsem-bam2readdepth : utils.h my_assert.h wiggle.h wiggle.o sam/libbam.a bam2readdepth.cpp ++rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp + $(CC) -O3 -Wall bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ + +-wiggle.o: sam/bam.h sam/sam.h wiggle.cpp wiggle.h ++wiggle.o: wiggle.cpp + $(CC) $(COFLAGS) wiggle.cpp + + rsem-simulate-reads : simulation.o + $(CC) -o rsem-simulate-reads simulation.o + +-simulation.o : utils.h Read.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h Refs.h RefSeq.h GroupInfo.h Transcript.h Transcripts.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h Profile.h NoiseProfile.h simul.h boost/random.hpp WriteResults.h simulation.cpp ++simulation.o : simulation.cpp + $(CC) $(COFLAGS) simulation.cpp + + rsem-run-gibbs : Gibbs.o + $(CC) -o rsem-run-gibbs Gibbs.o -lpthread + +-#some header files are omitted +-Gibbs.o : utils.h my_assert.h boost/random.hpp sampling.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h RefSeq.h RefSeqPolicy.h PolyARules.h Refs.h GroupInfo.h WriteResults.h Gibbs.cpp ++Gibbs.o : Gibbs.cpp + $(CC) $(COFLAGS) Gibbs.cpp + +-Buffer.h : my_assert.h +- + rsem-calculate-credibility-intervals : calcCI.o + $(CC) -o rsem-calculate-credibility-intervals calcCI.o -lpthread + +-#some header files are omitted +-calcCI.o : utils.h my_assert.h boost/random.hpp sampling.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h RefSeq.h RefSeqPolicy.h PolyARules.h Refs.h GroupInfo.h WriteResults.h Buffer.h calcCI.cpp ++calcCI.o : calcCI.cpp + $(CC) $(COFLAGS) calcCI.cpp + +-rsem-get-unique : sam/bam.h sam/sam.h getUnique.cpp sam/libbam.a ++rsem-get-unique : getUnique.cpp sam/libbam.a + $(CC) -O3 -Wall getUnique.cpp sam/libbam.a -lz -lpthread -o $@ + +-rsem-sam-validator : sam/bam.h sam/sam.h my_assert.h samValidator.cpp sam/libbam.a ++rsem-sam-validator : samValidator.cpp sam/libbam.a + $(CC) -O3 -Wall samValidator.cpp sam/libbam.a -lz -lpthread -o $@ + +-rsem-scan-for-paired-end-reads : sam/bam.h sam/sam.h my_assert.h scanForPairedEndReads.cpp sam/libbam.a ++rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a + $(CC) -O3 -Wall scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@ + + ebseq : + +From ec136638a727632e20abfaeb65c22c46d15ca8c4 Mon Sep 17 00:00:00 2001 +From: Ricardo Wurmus +Date: Wed, 22 Apr 2015 15:06:41 +0200 +Subject: [PATCH 2/7] include current dir, ./sam and ./boost by default + +--- + Makefile | 48 ++++++++++++++++++++++++------------------------ + 1 file changed, 24 insertions(+), 24 deletions(-) + +diff --git a/Makefile b/Makefile +index 3a55ed8..1dd97ca 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,6 +1,6 @@ + CC = g++ +-CFLAGS = -Wall -c -I. +-COFLAGS = -Wall -O3 -ffast-math -c -I. ++CFLAGS = -Wall -I. -I./sam -I./boost ++COFLAGS = -O3 -ffast-math -c + PROGRAMS = rsem-extract-reference-transcripts rsem-synthesis-reference-transcripts rsem-preref rsem-parse-alignments rsem-build-read-index rsem-run-em rsem-tbam2gbam rsem-run-gibbs rsem-calculate-credibility-intervals rsem-simulate-reads rsem-bam2wig rsem-get-unique rsem-bam2readdepth rsem-sam-validator rsem-scan-for-paired-end-reads + + .PHONY : all ebseq clean +@@ -11,70 +11,70 @@ sam/libbam.a : + cd sam ; ${MAKE} all + + rsem-extract-reference-transcripts : extractRef.cpp +- $(CC) -Wall -O3 extractRef.cpp -o rsem-extract-reference-transcripts ++ $(CC) $(CFLAGS) -O3 extractRef.cpp -o rsem-extract-reference-transcripts + + rsem-synthesis-reference-transcripts : synthesisRef.cpp +- $(CC) -Wall -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts ++ $(CC) $(CFLAGS) -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts + + rsem-preref : preRef.o +- $(CC) preRef.o -o rsem-preref ++ $(CC) $(CFLAGS) preRef.o -o rsem-preref + + preRef.o : preRef.cpp +- $(CC) $(COFLAGS) preRef.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) preRef.cpp + + rsem-parse-alignments : parseIt.o sam/libbam.a +- $(CC) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread ++ $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread + + parseIt.o : parseIt.cpp +- $(CC) -Wall -O2 -c -I. parseIt.cpp ++ $(CC) $(CFLAGS) -O2 -c parseIt.cpp + + rsem-build-read-index : buildReadIndex.cpp +- $(CC) -O3 buildReadIndex.cpp -o rsem-build-read-index ++ $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index + + rsem-run-em : EM.o sam/libbam.a +- $(CC) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread ++ $(CC) $(CFLAGS) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread + + EM.o : EM.cpp +- $(CC) $(COFLAGS) EM.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) EM.cpp + + rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a +- $(CC) -O3 -Wall tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@ ++ $(CC) $(CFLAGS) -O3 tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@ + + rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp +- $(CC) -O3 -Wall bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ ++ $(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ + + rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp +- $(CC) -O3 -Wall bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ ++ $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ + + wiggle.o: wiggle.cpp +- $(CC) $(COFLAGS) wiggle.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp + + rsem-simulate-reads : simulation.o +- $(CC) -o rsem-simulate-reads simulation.o ++ $(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o + + simulation.o : simulation.cpp +- $(CC) $(COFLAGS) simulation.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) simulation.cpp + + rsem-run-gibbs : Gibbs.o +- $(CC) -o rsem-run-gibbs Gibbs.o -lpthread ++ $(CC) $(CFLAGS) -o rsem-run-gibbs Gibbs.o -lpthread + + Gibbs.o : Gibbs.cpp +- $(CC) $(COFLAGS) Gibbs.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp + + rsem-calculate-credibility-intervals : calcCI.o +- $(CC) -o rsem-calculate-credibility-intervals calcCI.o -lpthread ++ $(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread + + calcCI.o : calcCI.cpp +- $(CC) $(COFLAGS) calcCI.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp + + rsem-get-unique : getUnique.cpp sam/libbam.a +- $(CC) -O3 -Wall getUnique.cpp sam/libbam.a -lz -lpthread -o $@ ++ $(CC) $(CFLAGS) -O3 getUnique.cpp sam/libbam.a -lz -lpthread -o $@ + + rsem-sam-validator : samValidator.cpp sam/libbam.a +- $(CC) -O3 -Wall samValidator.cpp sam/libbam.a -lz -lpthread -o $@ ++ $(CC) $(CFLAGS) -O3 samValidator.cpp sam/libbam.a -lz -lpthread -o $@ + + rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a +- $(CC) -O3 -Wall scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@ ++ $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@ + + ebseq : + cd EBSeq ; ${MAKE} all + +From d366614ea50f79fdd93e3c76383ccb6fcdeaa8e0 Mon Sep 17 00:00:00 2001 +From: Ricardo Wurmus +Date: Wed, 22 Apr 2015 15:10:49 +0200 +Subject: [PATCH 3/7] separate object rules from rules for executables + +--- + Makefile | 50 ++++++++++++++++++++++++++------------------------ + 1 file changed, 26 insertions(+), 24 deletions(-) + +diff --git a/Makefile b/Makefile +index 1dd97ca..ae4de3b 100644 +--- a/Makefile ++++ b/Makefile +@@ -10,6 +10,32 @@ all : $(PROGRAMS) + sam/libbam.a : + cd sam ; ${MAKE} all + ++ebseq : ++ cd EBSeq ; ${MAKE} all ++ ++ ++calcCI.o : calcCI.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp ++ ++EM.o : EM.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) EM.cpp ++ ++Gibbs.o : Gibbs.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp ++ ++preRef.o : preRef.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) preRef.cpp ++ ++parseIt.o : parseIt.cpp ++ $(CC) $(CFLAGS) -O2 -c parseIt.cpp ++ ++simulation.o : simulation.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) simulation.cpp ++ ++wiggle.o: wiggle.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp ++ ++ + rsem-extract-reference-transcripts : extractRef.cpp + $(CC) $(CFLAGS) -O3 extractRef.cpp -o rsem-extract-reference-transcripts + +@@ -19,24 +45,15 @@ rsem-synthesis-reference-transcripts : synthesisRef.cpp + rsem-preref : preRef.o + $(CC) $(CFLAGS) preRef.o -o rsem-preref + +-preRef.o : preRef.cpp +- $(CC) $(CFLAGS) $(COFLAGS) preRef.cpp +- + rsem-parse-alignments : parseIt.o sam/libbam.a + $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread + +-parseIt.o : parseIt.cpp +- $(CC) $(CFLAGS) -O2 -c parseIt.cpp +- + rsem-build-read-index : buildReadIndex.cpp + $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index + + rsem-run-em : EM.o sam/libbam.a + $(CC) $(CFLAGS) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread + +-EM.o : EM.cpp +- $(CC) $(CFLAGS) $(COFLAGS) EM.cpp +- + rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a + $(CC) $(CFLAGS) -O3 tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@ + +@@ -46,27 +63,15 @@ rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp + rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp + $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ + +-wiggle.o: wiggle.cpp +- $(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp +- + rsem-simulate-reads : simulation.o + $(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o + +-simulation.o : simulation.cpp +- $(CC) $(CFLAGS) $(COFLAGS) simulation.cpp +- + rsem-run-gibbs : Gibbs.o + $(CC) $(CFLAGS) -o rsem-run-gibbs Gibbs.o -lpthread + +-Gibbs.o : Gibbs.cpp +- $(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp +- + rsem-calculate-credibility-intervals : calcCI.o + $(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread + +-calcCI.o : calcCI.cpp +- $(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp +- + rsem-get-unique : getUnique.cpp sam/libbam.a + $(CC) $(CFLAGS) -O3 getUnique.cpp sam/libbam.a -lz -lpthread -o $@ + +@@ -76,9 +81,6 @@ rsem-sam-validator : samValidator.cpp sam/libbam.a + rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a + $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@ + +-ebseq : +- cd EBSeq ; ${MAKE} all +- + clean : + rm -f *.o *~ $(PROGRAMS) + cd sam ; ${MAKE} clean + +From 6ba1c33cccdf7c8e7df7a3189e7db204be3b1e8d Mon Sep 17 00:00:00 2001 +From: Ricardo Wurmus +Date: Wed, 22 Apr 2015 15:28:30 +0200 +Subject: [PATCH 4/7] add ./sam to library directories, link with -lbam + +--- + Makefile | 36 ++++++++++++++++++------------------ + 1 file changed, 18 insertions(+), 18 deletions(-) + +diff --git a/Makefile b/Makefile +index ae4de3b..a87cc4d 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,11 +1,11 @@ + CC = g++ +-CFLAGS = -Wall -I. -I./sam -I./boost ++CFLAGS = -Wall -I. -I./sam -I./boost -L./sam + COFLAGS = -O3 -ffast-math -c + PROGRAMS = rsem-extract-reference-transcripts rsem-synthesis-reference-transcripts rsem-preref rsem-parse-alignments rsem-build-read-index rsem-run-em rsem-tbam2gbam rsem-run-gibbs rsem-calculate-credibility-intervals rsem-simulate-reads rsem-bam2wig rsem-get-unique rsem-bam2readdepth rsem-sam-validator rsem-scan-for-paired-end-reads + + .PHONY : all ebseq clean + +-all : $(PROGRAMS) ++all : sam/libbam.a $(PROGRAMS) + + sam/libbam.a : + cd sam ; ${MAKE} all +@@ -45,23 +45,23 @@ rsem-synthesis-reference-transcripts : synthesisRef.cpp + rsem-preref : preRef.o + $(CC) $(CFLAGS) preRef.o -o rsem-preref + +-rsem-parse-alignments : parseIt.o sam/libbam.a +- $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread ++rsem-parse-alignments : parseIt.o ++ $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o -lbam -lz -lpthread + + rsem-build-read-index : buildReadIndex.cpp + $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index + +-rsem-run-em : EM.o sam/libbam.a +- $(CC) $(CFLAGS) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread ++rsem-run-em : EM.o ++ $(CC) $(CFLAGS) -o rsem-run-em EM.o -lbam -lz -lpthread + +-rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a +- $(CC) $(CFLAGS) -O3 tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@ ++rsem-tbam2gbam : tbam2gbam.cpp ++ $(CC) $(CFLAGS) -O3 tbam2gbam.cpp -lbam -lz -lpthread -o $@ + +-rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp +- $(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ ++rsem-bam2wig : wiggle.o bam2wig.cpp ++ $(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o -lbam -lz -lpthread -o $@ + +-rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp +- $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ ++rsem-bam2readdepth : wiggle.o bam2readdepth.cpp ++ $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o -lbam -lz -lpthread -o $@ + + rsem-simulate-reads : simulation.o + $(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o +@@ -72,14 +72,14 @@ rsem-run-gibbs : Gibbs.o + rsem-calculate-credibility-intervals : calcCI.o + $(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread + +-rsem-get-unique : getUnique.cpp sam/libbam.a +- $(CC) $(CFLAGS) -O3 getUnique.cpp sam/libbam.a -lz -lpthread -o $@ ++rsem-get-unique : getUnique.cpp ++ $(CC) $(CFLAGS) -O3 getUnique.cpp -lbam -lz -lpthread -o $@ + +-rsem-sam-validator : samValidator.cpp sam/libbam.a +- $(CC) $(CFLAGS) -O3 samValidator.cpp sam/libbam.a -lz -lpthread -o $@ ++rsem-sam-validator : samValidator.cpp ++ $(CC) $(CFLAGS) -O3 samValidator.cpp -lbam -lz -lpthread -o $@ + +-rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a +- $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@ ++rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp ++ $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp -lbam -lz -lpthread -o $@ + + clean : + rm -f *.o *~ $(PROGRAMS) + +From 5402b88c269df79ee245c1c59e15f3c8282a0220 Mon Sep 17 00:00:00 2001 +From: Ricardo Wurmus +Date: Wed, 22 Apr 2015 15:33:02 +0200 +Subject: [PATCH 5/7] do not repeat target name, use $@ instead + +--- + Makefile | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/Makefile b/Makefile +index a87cc4d..7ec90a3 100644 +--- a/Makefile ++++ b/Makefile +@@ -37,22 +37,22 @@ wiggle.o: wiggle.cpp + + + rsem-extract-reference-transcripts : extractRef.cpp +- $(CC) $(CFLAGS) -O3 extractRef.cpp -o rsem-extract-reference-transcripts ++ $(CC) $(CFLAGS) -O3 extractRef.cpp -o $@ + + rsem-synthesis-reference-transcripts : synthesisRef.cpp +- $(CC) $(CFLAGS) -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts ++ $(CC) $(CFLAGS) -O3 synthesisRef.cpp -o $@ + + rsem-preref : preRef.o +- $(CC) $(CFLAGS) preRef.o -o rsem-preref ++ $(CC) $(CFLAGS) preRef.o -o $@ + + rsem-parse-alignments : parseIt.o +- $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o -lbam -lz -lpthread ++ $(CC) $(CFLAGS) -o $@ parseIt.o -lbam -lz -lpthread + + rsem-build-read-index : buildReadIndex.cpp +- $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index ++ $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o $@ + + rsem-run-em : EM.o +- $(CC) $(CFLAGS) -o rsem-run-em EM.o -lbam -lz -lpthread ++ $(CC) $(CFLAGS) -o $@ EM.o -lbam -lz -lpthread + + rsem-tbam2gbam : tbam2gbam.cpp + $(CC) $(CFLAGS) -O3 tbam2gbam.cpp -lbam -lz -lpthread -o $@ +@@ -64,13 +64,13 @@ rsem-bam2readdepth : wiggle.o bam2readdepth.cpp + $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o -lbam -lz -lpthread -o $@ + + rsem-simulate-reads : simulation.o +- $(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o ++ $(CC) $(CFLAGS) -o $@ simulation.o + + rsem-run-gibbs : Gibbs.o +- $(CC) $(CFLAGS) -o rsem-run-gibbs Gibbs.o -lpthread ++ $(CC) $(CFLAGS) -o $@ Gibbs.o -lpthread + + rsem-calculate-credibility-intervals : calcCI.o +- $(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread ++ $(CC) $(CFLAGS) -o $@ calcCI.o -lpthread + + rsem-get-unique : getUnique.cpp + $(CC) $(CFLAGS) -O3 getUnique.cpp -lbam -lz -lpthread -o $@ + +From f60784bc7aa303cc825bd87dd3f5d7d26c51bded Mon Sep 17 00:00:00 2001 +From: Ricardo Wurmus +Date: Wed, 22 Apr 2015 15:44:53 +0200 +Subject: [PATCH 6/7] use automatic variables to refer to prerequisites + +--- + Makefile | 44 ++++++++++++++++++++++---------------------- + 1 file changed, 22 insertions(+), 22 deletions(-) + +diff --git a/Makefile b/Makefile +index 7ec90a3..6540d81 100644 +--- a/Makefile ++++ b/Makefile +@@ -15,71 +15,71 @@ ebseq : + + + calcCI.o : calcCI.cpp +- $(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) $< + + EM.o : EM.cpp +- $(CC) $(CFLAGS) $(COFLAGS) EM.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) $< + + Gibbs.o : Gibbs.cpp +- $(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) $< + + preRef.o : preRef.cpp +- $(CC) $(CFLAGS) $(COFLAGS) preRef.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) $< + + parseIt.o : parseIt.cpp +- $(CC) $(CFLAGS) -O2 -c parseIt.cpp ++ $(CC) $(CFLAGS) -O2 -c $< + + simulation.o : simulation.cpp +- $(CC) $(CFLAGS) $(COFLAGS) simulation.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) $< + + wiggle.o: wiggle.cpp +- $(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp ++ $(CC) $(CFLAGS) $(COFLAGS) $< + + + rsem-extract-reference-transcripts : extractRef.cpp +- $(CC) $(CFLAGS) -O3 extractRef.cpp -o $@ ++ $(CC) $(CFLAGS) -O3 $< -o $@ + + rsem-synthesis-reference-transcripts : synthesisRef.cpp +- $(CC) $(CFLAGS) -O3 synthesisRef.cpp -o $@ ++ $(CC) $(CFLAGS) -O3 $< -o $@ + + rsem-preref : preRef.o +- $(CC) $(CFLAGS) preRef.o -o $@ ++ $(CC) $(CFLAGS) $< -o $@ + + rsem-parse-alignments : parseIt.o +- $(CC) $(CFLAGS) -o $@ parseIt.o -lbam -lz -lpthread ++ $(CC) $(CFLAGS) -o $@ $< -lbam -lz -lpthread + + rsem-build-read-index : buildReadIndex.cpp +- $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o $@ ++ $(CC) $(CFLAGS) -O3 $< -o $@ + + rsem-run-em : EM.o +- $(CC) $(CFLAGS) -o $@ EM.o -lbam -lz -lpthread ++ $(CC) $(CFLAGS) -o $@ $< -lbam -lz -lpthread + + rsem-tbam2gbam : tbam2gbam.cpp +- $(CC) $(CFLAGS) -O3 tbam2gbam.cpp -lbam -lz -lpthread -o $@ ++ $(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@ + + rsem-bam2wig : wiggle.o bam2wig.cpp +- $(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o -lbam -lz -lpthread -o $@ ++ $(CC) $(CFLAGS) -O3 $^ -lbam -lz -lpthread -o $@ + + rsem-bam2readdepth : wiggle.o bam2readdepth.cpp +- $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o -lbam -lz -lpthread -o $@ ++ $(CC) $(CFLAGS) -O3 $^ -lbam -lz -lpthread -o $@ + + rsem-simulate-reads : simulation.o +- $(CC) $(CFLAGS) -o $@ simulation.o ++ $(CC) $(CFLAGS) -o $@ $< + + rsem-run-gibbs : Gibbs.o +- $(CC) $(CFLAGS) -o $@ Gibbs.o -lpthread ++ $(CC) $(CFLAGS) -o $@ $< -lpthread + + rsem-calculate-credibility-intervals : calcCI.o +- $(CC) $(CFLAGS) -o $@ calcCI.o -lpthread ++ $(CC) $(CFLAGS) -o $@ $< -lpthread + + rsem-get-unique : getUnique.cpp +- $(CC) $(CFLAGS) -O3 getUnique.cpp -lbam -lz -lpthread -o $@ ++ $(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@ + + rsem-sam-validator : samValidator.cpp +- $(CC) $(CFLAGS) -O3 samValidator.cpp -lbam -lz -lpthread -o $@ ++ $(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@ + + rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp +- $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp -lbam -lz -lpthread -o $@ ++ $(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@ + + clean : + rm -f *.o *~ $(PROGRAMS) + +From 0cf9721077f67fb4ca15fdc59cbfbf24a944debd Mon Sep 17 00:00:00 2001 +From: Ricardo Wurmus +Date: Wed, 22 Apr 2015 15:49:19 +0200 +Subject: [PATCH 7/7] split long line + +--- + Makefile | 17 ++++++++++++++++- + 1 file changed, 16 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 6540d81..0ab04a5 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,7 +1,22 @@ + CC = g++ + CFLAGS = -Wall -I. -I./sam -I./boost -L./sam + COFLAGS = -O3 -ffast-math -c +-PROGRAMS = rsem-extract-reference-transcripts rsem-synthesis-reference-transcripts rsem-preref rsem-parse-alignments rsem-build-read-index rsem-run-em rsem-tbam2gbam rsem-run-gibbs rsem-calculate-credibility-intervals rsem-simulate-reads rsem-bam2wig rsem-get-unique rsem-bam2readdepth rsem-sam-validator rsem-scan-for-paired-end-reads ++PROGRAMS = \ ++ rsem-extract-reference-transcripts \ ++ rsem-synthesis-reference-transcripts \ ++ rsem-preref \ ++ rsem-parse-alignments \ ++ rsem-build-read-index \ ++ rsem-run-em \ ++ rsem-tbam2gbam \ ++ rsem-run-gibbs \ ++ rsem-calculate-credibility-intervals \ ++ rsem-simulate-reads \ ++ rsem-bam2wig \ ++ rsem-get-unique \ ++ rsem-bam2readdepth \ ++ rsem-sam-validator \ ++ rsem-scan-for-paired-end-reads + + .PHONY : all ebseq clean + -- cgit v1.2.3 From 12c270ddd471a18a69ecfa016644c98734b3e601 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 21 May 2015 16:19:00 +0200 Subject: gnu: Add python-click. * gnu/packages/python.scm (python-click, python2-click): New variables. --- gnu/packages/python.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 5e4217a7a1..a3f5e1ccea 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -1637,6 +1637,33 @@ is used by the Requests library to verify HTTPS requests.") (define-public python2-certifi (package-with-python2 python-certifi)) +(define-public python-click + (package + (name "python-click") + (version "4.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/c/click/click-" + version ".tar.gz")) + (sha256 + (base32 "0294x9g28w6zgswl0rsygkwi0wf6n480gf7fiiw5f9az3xhh77pl")))) + (build-system python-build-system) + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (home-page "http://click.pocoo.org") + (synopsis "Command line library for Python") + (description + "Click is a Python package for creating command line interfaces in a +composable way with as little code as necessary. Its name stands for +\"Command Line Interface Creation Kit\". It's highly configurable but comes +with sensible defaults out of the box.") + (license bsd-3))) + +(define-public python2-click + (package-with-python2 python-click)) + (define-public python-requests (package (name "python-requests") -- cgit v1.2.3 From 5394a6a653e7338d73553eb77fa7c11c17562d3e Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 21 May 2015 16:24:05 +0200 Subject: gnu: Add python-redis. * gnu/packages/python.scm (python-redis, python2-redis): New variables. --- gnu/packages/python.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index a3f5e1ccea..99c20ef07d 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -2170,6 +2170,33 @@ mining and data analysis.") `(("python2-pytz" ,python2-pytz) ,@(package-propagated-inputs scikit-image)))))) +(define-public python-redis + (package + (name "python-redis") + (version "2.10.3") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/r/redis/redis-" + version ".tar.gz")) + (sha256 + (base32 "1701qjwn4n05q90fdg4bsg96s27xf5s4hsb4gxhv3xk052q3gyx4")))) + (build-system python-build-system) + ;; Tests require a running Redis server + (arguments '(#:tests? #f)) + (native-inputs + `(("python-setuptools" ,python-setuptools) + ("python-pytest" ,python-pytest))) + (home-page "https://github.com/andymccurdy/redis-py") + (synopsis "Redis Python client") + (description + "This package provides a Python interface to the Redis key-value store.") + (license license:expat))) + +(define-public python2-redis + (package-with-python2 python-redis)) + (define-public python-cython (package (name "python-cython") -- cgit v1.2.3 From 748cef5be9c69978b5c70575340702d8df73f84a Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 21 May 2015 16:24:55 +0200 Subject: gnu: Add python-rq. * gnu/packages/python.scm (python-rq, python2-rq): New variables. --- gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 99c20ef07d..9da91111f6 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -2197,6 +2197,35 @@ mining and data analysis.") (define-public python2-redis (package-with-python2 python-redis)) +(define-public python-rq + (package + (name "python-rq") + (version "0.5.2") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/r/rq/rq-" + version ".tar.gz")) + (sha256 + (base32 "0b0z5hn8wkfg300hx7816csgv3bcfamlr29fi3yzgqmpqxwj3fix")))) + (build-system python-build-system) + (propagated-inputs + `(("python-click" ,python-click) + ("python-redis" ,python-redis))) + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (home-page "http://python-rq.org/") + (synopsis "Simple job queues for Python") + (description + "RQ (Redis Queue) is a simple Python library for queueing jobs and +processing them in the background with workers. It is backed by Redis and it +is designed to have a low barrier to entry.") + (license bsd-2))) + +(define-public python2-rq + (package-with-python2 python-rq)) + (define-public python-cython (package (name "python-cython") -- cgit v1.2.3 From c95ded7ed6938aa5aaa9abce81d87b2d6dbc7aa7 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 22 May 2015 16:20:04 +0200 Subject: doc: Clarify the module file name convention. * doc/guix.texi (Package Modules): Clarify the footnote about the module file names convention. Tweak the wording. --- doc/guix.texi | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 53761df351..9bd9c581ce 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -6154,11 +6154,15 @@ facility is implemented in the @code{(gnu packages)} module. @cindex package module search path Users can store package definitions in modules with different names---e.g., @code{(my-packages emacs)}@footnote{Note that the file -name and module name must match. @xref{Modules and the File System,,, -guile, GNU Guile Reference Manual}, for details.} These package definitions +name and module name must match. For instance, the @code{(my-packages +emacs)} module must be stored in a @file{my-packages/emacs.scm} file +relative to the load path specified with @option{--load-path} or +@code{GUIX_PACKAGE_PATH}. @xref{Modules and the File System,,, +guile, GNU Guile Reference Manual}, for details.}. These package definitions will not be visible by default. Thus, users can invoke commands such as @command{guix package} and @command{guix build} have to be used with the -@code{-e} option so that they know where to find the package, or use the +@code{-e} option so that they know where to find the package. Better +yet, they can use the @code{-L} option of these commands to make those modules visible (@pxref{Invoking guix build, @code{--load-path}}), or define the @code{GUIX_PACKAGE_PATH} environment variable. This environment -- cgit v1.2.3 From 8605321dd6f3c42590046be9d69112a8c8cf7cbf Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 22 May 2015 15:28:55 -0400 Subject: gnu: postgresql: Update to 9.3.7. * gnu/packages/databases.scm (postgresql): Update to 9.3.7. --- gnu/packages/databases.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index a0d9f88f05..27a16477d4 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -226,14 +226,14 @@ as a drop-in replacement of MySQL.") (define-public postgresql (package (name "postgresql") - (version "9.3.6") + (version "9.3.7") (source (origin (method url-fetch) (uri (string-append "http://ftp.postgresql.org/pub/source/v" version "/postgresql-" version ".tar.bz2")) (sha256 (base32 - "056ass7nnfyv7blv02anv795kgpz77gipdpxggd835cdwrhwns13")))) + "0ggz0i91znv053zx9qas7pjf93s5by3dk84z1jxbjkg8yyrnlx4b")))) (build-system gnu-build-system) (inputs `(("readline" ,readline) -- cgit v1.2.3