From 05f0607bfc3d47ee493e12051272656db58fcd04 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 7 Jan 2015 22:33:21 +0100 Subject: tests: Add missing copyright line. * tests/lint.scm: Add missing copyright line for commit 907c98ac and others. --- tests/lint.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/lint.scm b/tests/lint.scm index 2aebbffd0a..c6931329d6 100644 --- a/tests/lint.scm +++ b/tests/lint.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013 Cyril Roelandt ;;; Copyright © 2014 Eric Bavier +;;; Copyright © 2014 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; -- cgit v1.2.3 From b2ad9d9b084e52c1657f0df7b22690abb1f86acd Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 9 Jan 2015 01:01:04 +0100 Subject: base64: Inline arithmetic operations. * guix/base64.scm (define-alias): New macro. (fxbit-field, fxarithmetic-shift, fxarithmetic-shift-left, fxand, fxior, fxxor): New aliases. --- guix/base64.scm | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/guix/base64.scm b/guix/base64.scm index f7f7f5f4e1..e4d2ec589b 100644 --- a/guix/base64.scm +++ b/guix/base64.scm @@ -4,6 +4,8 @@ ;; (guix base64) by Nikita Karetnikov on ;; February 12, 2014. ;; +;; Some optimizations made by Ludovic Courtès , 2015. +;; ;; Copyright © 2009, 2010 Göran Weinholt ;; ;; This program is free software: you can redistribute it and/or modify @@ -33,7 +35,23 @@ (library (guix base64) (only (srfi :13 strings) string-index string-prefix? string-suffix? - string-concatenate string-trim-both)) + string-concatenate string-trim-both) + (only (guile) ash logior)) + + + (define-syntax define-alias + (syntax-rules () + ((_ new old) + (define-syntax new (identifier-syntax old))))) + + ;; Force the use of Guile's own primitives to avoid the overhead of its 'fx' + ;; procedures. + (define-alias fxbit-field bitwise-bit-field) + (define-alias fxarithmetic-shift ash) + (define-alias fxarithmetic-shift-left ash) + (define-alias fxand logand) + (define-alias fxior logior) + (define-alias fxxor logxor) (define base64-alphabet "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/") @@ -209,4 +227,4 @@ (define put-delimited-base64 line-length #f base64-alphabet port) (display (string-append "\n-----END " type "-----\n") port)) ((port type bv) - (put-delimited-base64 port type bv 76))))) \ No newline at end of file + (put-delimited-base64 port type bv 76))))) -- cgit v1.2.3 From fb519bd8313e192d6eca2e51f9f33c87e5ee883e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 9 Jan 2015 01:07:57 +0100 Subject: records: Optimize 'recutils->alist' by avoiding regexps. * guix/records.scm (%recutils-field-rx, %recutils-comment-rx, %recutils-plus-rx): Remove. (%recutils-field-charset): New variable. (recutils->alist): Adjust to use tests (string-ref line 0) instead of regexps. --- guix/records.scm | 59 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/guix/records.scm b/guix/records.scm index 93c52f0ffa..e7b86af9aa 100644 --- a/guix/records.scm +++ b/guix/records.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. ;;; @@ -267,15 +267,12 @@ (define (object->fields object fields port) (format port "~a: ~a~%" field (get object)) (loop rest))))) -(define %recutils-field-rx - (make-regexp "^([[:graph:]]+): (.*)$")) - -(define %recutils-comment-rx - ;; info "(recutils) Comments" - (make-regexp "^#")) - -(define %recutils-plus-rx - (make-regexp "^\\+ ?(.*)$")) +(define %recutils-field-charset + ;; Valid characters starting a recutils field. + ;; info "(recutils) Fields" + (char-set-union char-set:upper-case + char-set:lower-case + (char-set #\%))) (define (recutils->alist port) "Read a recutils-style record from PORT and return it as a list of key/value @@ -288,25 +285,29 @@ (define (recutils->alist port) (if (null? result) (loop (read-line port) result) ; leading space: ignore it (reverse result))) ; end-of-record marker - ((regexp-exec %recutils-comment-rx line) - (loop (read-line port) result)) - ((regexp-exec %recutils-plus-rx line) - => - (lambda (m) - (match result - (((field . value) rest ...) - (loop (read-line port) - `((,field . ,(string-append value "\n" - (match:substring m 1))) - ,@rest)))))) - ((regexp-exec %recutils-field-rx line) - => - (lambda (match) - (loop (read-line port) - (alist-cons (match:substring match 1) - (match:substring match 2) - result)))) (else - (error "unmatched line" line))))) + ;; Now check the first character of LINE, since that's what the + ;; recutils manual says is enough. + (let ((first (string-ref line 0))) + (cond + ((char-set-contains? %recutils-field-charset first) + (let* ((colon (string-index line #\:)) + (field (string-take line colon)) + (value (string-trim (string-drop line (+ 1 colon))))) + (loop (read-line port) + (alist-cons field value result)))) + ((eqv? first #\#) ;info "(recutils) Comments" + (loop (read-line port) result)) + ((eqv? first #\+) ;info "(recutils) Fields" + (let ((new-line (if (string-prefix? "+ " line) + (string-drop line 2) + (string-drop line 1)))) + (match result + (((field . value) rest ...) + (loop (read-line port) + `((,field . ,(string-append value "\n" new-line)) + ,@rest)))))) + (else + (error "unmatched line" line)))))))) ;;; records.scm ends here -- cgit v1.2.3 From 8234fcf21af93e5fac787ef4aeea0934740cbe52 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 9 Jan 2015 01:10:31 +0100 Subject: substitute-binary: Micro-optimize 'narinfo-sha256'. * guix/scripts/substitute-binary.scm (narinfo-signature->canonical-sexp): Change "~a" to "~s" in error message. (%signature-line-rx): Remove. (narinfo-sha256): Use 'string-contains' instead of 'regexp-exec', and 'string-take' instead of 'match:substring'. --- guix/scripts/substitute-binary.scm | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/guix/scripts/substitute-binary.scm b/guix/scripts/substitute-binary.scm index 9c96411630..09b917fdf6 100755 --- a/guix/scripts/substitute-binary.scm +++ b/guix/scripts/substitute-binary.scm @@ -241,7 +241,7 @@ (define (narinfo-signature->canonical-sexp str) ((version _ sig) (let ((maybe-number (string->number version))) (cond ((not (number? maybe-number)) - (leave (_ "signature version must be a number: ~a~%") + (leave (_ "signature version must be a number: ~s~%") version)) ;; Currently, there are no other versions. ((not (= 1 maybe-number)) @@ -313,18 +313,15 @@ (define* (read-narinfo port #:optional url) "References" "Deriver" "System" "Signature")))) -(define %signature-line-rx - ;; Regexp matching a signature line in a narinfo. - (make-regexp "(.+)^[[:blank:]]*Signature:[[:blank:]].+$")) - (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 (regexp-exec %signature-line-rx contents) + (match (string-contains contents "Signature:") (#f #f) - ((= (cut match:substring <> 1) above-signature) - (sha256 (string->utf8 above-signature)))))) + (index + (let ((above-signature (string-take contents index))) + (sha256 (string->utf8 above-signature))))))) (define* (assert-valid-narinfo narinfo #:optional (acl (current-acl)) -- cgit v1.2.3 From 4100fe9d3375065b39a7723867c14dff48b94e6b Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 7 Jan 2015 17:34:08 +0100 Subject: gnu: openjpeg: update home page URL. * gnu/packages/image.scm (openjpeg)[home-page]: Update URL. --- gnu/packages/image.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 7a22bf4942..c9a7fa39e7 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2014 Mark H Weaver ;;; Copyright © 2014 Alex Kost +;;; Copyright © 2014 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -217,7 +218,7 @@ (define-public openjpeg development, among them the JP2 and MJ2 (Motion JPEG 2000) file formats, an indexing tool useful for the JPIP protocol, JPWL-tools for error-resilience, a Java-viewer for j2k-images, ...") - (home-page "http://jbig2dec.sourceforge.net/") + (home-page "https://code.google.com/p/openjpeg/") (license license:bsd-2))) (define-public giflib -- cgit v1.2.3 From 6140b9d8757aa1cf0e9daf4c5fd325e77557e078 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 7 Jan 2015 17:40:13 +0100 Subject: gnu: Add openjpeg-1. * gnu/packages/image.scm (openjpeg-1): New variable. --- gnu/packages/image.scm | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index c9a7fa39e7..d979e83510 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -221,6 +221,19 @@ (define-public openjpeg (home-page "https://code.google.com/p/openjpeg/") (license license:bsd-2))) +(define-public openjpeg-1 + (package (inherit openjpeg) + (name "openjpeg") + (version "1.5.2") + (source + (origin + (method url-fetch) + (uri + (string-append "mirror://sourceforge/openjpeg.mirror/" name "-" + version ".tar.gz")) + (sha256 + (base32 "11waq9w215zvzxrpv40afyd18qf79mxc28fda80bm3ax98cpppqm")))))) + (define-public giflib (package (name "giflib") -- cgit v1.2.3 From da2021bca1b54b6272b7fba2d6423b771161d619 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 7 Jan 2015 17:47:37 +0100 Subject: gnu: openjpeg: Update to 2.0.1. * gnu/packages/image.scm (openjpeg): Update to 2.0.1. --- gnu/packages/image.scm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index d979e83510..cdb9c1cfb2 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -188,16 +188,15 @@ (define-public jbig2dec (define-public openjpeg (package (name "openjpeg") - (version "2.0.0") + (version "2.0.1") (source (origin (method url-fetch) (uri - (string-append "http://openjpeg.googlecode.com/files/" name "-" - version ".tar.gz")) + (string-append "mirror://sourceforge/openjpeg.mirror/" name "-" + version ".tar.gz")) (sha256 - (base32 "1n05yrmscpgksrh2kfh12h18l0lw9j03mgmvwcg3hm8m0lwgak9k")))) - + (base32 "1c2xc3nl2mg511b63rk7hrckmy14681p1m44mzw3n1fyqnjm0b0z")))) (build-system cmake-build-system) (arguments ;; Trying to run `$ make check' results in a no rule fault. -- cgit v1.2.3 From 927d4d9bd84eece87ea455a927376ee6ddbfb46e Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 7 Jan 2015 17:43:18 +0100 Subject: gnu: poppler: build with openjpeg and lcms * gnu/packages/pdf.scm (poppler): build poppler with openjpeg 1.5 and lcms. --- gnu/packages/pdf.scm | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index 7d5100af24..0f9098d8cb 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2014 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -55,12 +56,13 @@ (define-public poppler ;; introspection: no ;; use gtk-doc: no ;; use libcurl: no - ;; use libopenjpeg: no (inputs `(("fontconfig" ,fontconfig) ("freetype" ,freetype) ("libjpeg-8" ,libjpeg-8) ("libpng" ,libpng) ("libtiff" ,libtiff) + ("lcms" ,lcms) + ("openjpeg-1" ,openjpeg-1) ("zlib" ,zlib) ;; To build poppler-glib (as needed by Evince), we need Cairo and @@ -75,8 +77,18 @@ (define-public poppler (arguments `(#:tests? #f ; no test data provided with the tarball #:configure-flags - '("--enable-xpdf-headers" ; to install header files - "--enable-zlib"))) + '("--enable-libopenjpeg" + "--enable-xpdf-headers" ; to install header files + "--enable-zlib") + #:phases + (alist-cons-before + 'configure 'setenv + (lambda _ + (setenv "CPATH" + (string-append (assoc-ref %build-inputs "openjpeg-1") + "/include/openjpeg-1.5" + ":" (or (getenv "CPATH") "")))) + %standard-phases))) (synopsis "PDF rendering library") (description "Poppler is a PDF rendering library based on the xpdf-3.0 code base.") -- cgit v1.2.3 From c6cb82f5d5739fcc84281e5dc91076c37f1db89c Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 7 Jan 2015 17:01:17 -0600 Subject: import: gnu: Propagate the key-download argument. * guix/import/gnu.scm (gnu->guix-package): Pass the key-download argument on to gnu-package->sexp. --- guix/import/gnu.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guix/import/gnu.scm b/guix/import/gnu.scm index 1947f489fb..b5f67bd2d4 100644 --- a/guix/import/gnu.scm +++ b/guix/import/gnu.scm @@ -102,7 +102,7 @@ (define* (gnu->guix-package name (let ((version (gnu-release-version release))) (match (find-packages (regexp-quote name)) ((info . _) - (gnu-package->sexp info release)) + (gnu-package->sexp info release #:key-download key-download)) (() (raise (condition (&message -- cgit v1.2.3 From 1ff2619bc114aface6b7b9d818f7208f9af677df Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Thu, 8 Jan 2015 14:38:54 -0600 Subject: import: Factorize utility functions. * guix/import/pypi.scm (hash-table->alist, flatten, assoc-ref*, url-fetch, json-fetch): Pull procedures from here into... * guix/import/utils.scm: Here and... * guix/import/json.scm: Here. New file. * Makefile.am (MODULE)[HAVE_GUILE_JSON]: Add it. * guix/import/gnu.scm (file-sha256): Move from here to... * guix/hash.scm: Here. * tests/pypi.scm (pypi->guix-package): Update mock module reference. --- Makefile.am | 1 + guix/hash.scm | 5 +++++ guix/import/gnu.scm | 5 +---- guix/import/json.scm | 32 ++++++++++++++++++++++++++++++++ guix/import/pypi.scm | 47 +---------------------------------------------- guix/import/utils.scm | 48 +++++++++++++++++++++++++++++++++++++++++++++++- tests/pypi.scm | 2 +- 7 files changed, 88 insertions(+), 52 deletions(-) create mode 100644 guix/import/json.scm diff --git a/Makefile.am b/Makefile.am index bc0b95232e..c2bb1762ff 100644 --- a/Makefile.am +++ b/Makefile.am @@ -174,6 +174,7 @@ SCM_TESTS = \ if HAVE_GUILE_JSON MODULES += \ + guix/import/json.scm \ guix/import/pypi.scm \ guix/scripts/import/pypi.scm diff --git a/guix/hash.scm b/guix/hash.scm index fb85f47586..593c2e1aee 100644 --- a/guix/hash.scm +++ b/guix/hash.scm @@ -26,6 +26,7 @@ (define-module (guix hash) #:export (sha256 open-sha256-port port-sha256 + file-sha256 open-sha256-input-port)) ;;; Commentary: @@ -129,6 +130,10 @@ (define (port-sha256 port) (close-port out) (get))) +(define (file-sha256 file) + "Return the SHA256 hash (a bytevector) of FILE." + (call-with-input-file file port-sha256)) + (define (open-sha256-input-port port) "Return an input port that wraps PORT and a thunk to get the hash of all the data read from PORT. The thunk always returns the same value." diff --git a/guix/import/gnu.scm b/guix/import/gnu.scm index b5f67bd2d4..7160fcf7ba 100644 --- a/guix/import/gnu.scm +++ b/guix/import/gnu.scm @@ -18,6 +18,7 @@ (define-module (guix import gnu) #:use-module (guix gnu-maintenance) + #:use-module (guix import utils) #:use-module (guix utils) #:use-module (guix store) #:use-module (guix hash) @@ -38,10 +39,6 @@ (define-module (guix import gnu) ;;; ;;; Code: -(define (file-sha256 file) - "Return the SHA256 hash of FILE as a bytevector." - (call-with-input-file file port-sha256)) - (define (qualified-url url) "Return a fully-qualified URL based on URL." (if (string-prefix? "/" url) diff --git a/guix/import/json.scm b/guix/import/json.scm new file mode 100644 index 0000000000..c3092a5a9d --- /dev/null +++ b/guix/import/json.scm @@ -0,0 +1,32 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 David Thompson +;;; Copyright © 2015 Eric Bavier +;;; +;;; 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 json) + #:use-module (json) + #:use-module (guix utils) + #:use-module (guix import utils) + #:export (json-fetch)) + +(define (json-fetch url) + "Return an alist representation of the JSON resource URL, or #f on failure." + (call-with-temporary-output-file + (lambda (temp port) + (and (url-fetch url temp) + (hash-table->alist + (call-with-input-file temp json->scm)))))) diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm index 88f4a8e896..8567cad79c 100644 --- a/guix/import/pypi.scm +++ b/guix/import/pypi.scm @@ -27,40 +27,15 @@ (define-module (guix import pypi) #:use-module (web uri) #:use-module (guix utils) #:use-module (guix import utils) + #:use-module (guix import json) #:use-module (guix base32) #:use-module (guix hash) #:use-module (guix packages) #:use-module (guix licenses) #:use-module (guix build-system python) - #:use-module ((guix build download) #:prefix build:) #:use-module (gnu packages python) #:export (pypi->guix-package)) -(define (hash-table->alist table) - "Return an alist represenation of TABLE." - (map (match-lambda - ((key . (lst ...)) - (cons key - (map (lambda (x) - (if (hash-table? x) - (hash-table->alist x) - x)) - lst))) - ((key . (? hash-table? table)) - (cons key (hash-table->alist table))) - (pair pair)) - (hash-map->list cons table))) - -(define (flatten lst) - "Return a list that recursively concatenates all sub-lists of LIST." - (fold-right - (match-lambda* - (((sub-list ...) memo) - (append (flatten sub-list) memo)) - ((elem memo) - (cons elem memo))) - '() lst)) - (define (join lst delimiter) "Return a list that contains the elements of LST, each separated by DELIMETER." @@ -71,13 +46,6 @@ (define (join lst delimiter) ((elem . rest) (cons* elem delimiter (join rest delimiter))))) -(define (assoc-ref* alist key . rest) - "Return the value for KEY from ALIST. For each additional key specified, -recursively apply the procedure to the sub-list." - (if (null? rest) - (assoc-ref alist key) - (apply assoc-ref* (assoc-ref alist key) rest))) - (define string->license (match-lambda ("GNU LGPL" lgpl2.0) @@ -88,19 +56,6 @@ (define string->license ("Apache License, Version 2.0" asl2.0) (_ #f))) -(define (url-fetch url file-name) - "Save the contents of URL to FILE-NAME. Return #f on failure." - (parameterize ((current-output-port (current-error-port))) - (build:url-fetch url file-name))) - -(define (json-fetch url) - "Return an alist representation of the JSON resource URL, or #f on failure." - (call-with-temporary-output-file - (lambda (temp port) - (and (url-fetch url temp) - (hash-table->alist - (call-with-input-file temp json->scm)))))) - (define (pypi-fetch name) "Return an alist representation of the PyPI metadata for the package NAME, or #f on failure." diff --git a/guix/import/utils.scm b/guix/import/utils.scm index 062cfc54f3..969491d28d 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -20,7 +20,16 @@ (define-module (guix import utils) #:use-module (ice-9 match) #:use-module (ice-9 regex) #:use-module (srfi srfi-1) - #:export (factorize-uri)) + #:use-module (guix hash) + #:use-module (guix utils) + #:use-module ((guix build download) #:prefix build:) + #:export (factorize-uri + + hash-table->alist + flatten + assoc-ref* + + url-fetch)) (define (factorize-uri uri version) "Factorize URI, a package tarball URI as a string, such that any occurrences @@ -49,3 +58,40 @@ (define (factorize-uri uri version) result)))) '() indices)))))) + +(define (hash-table->alist table) + "Return an alist represenation of TABLE." + (map (match-lambda + ((key . (lst ...)) + (cons key + (map (lambda (x) + (if (hash-table? x) + (hash-table->alist x) + x)) + lst))) + ((key . (? hash-table? table)) + (cons key (hash-table->alist table))) + (pair pair)) + (hash-map->list cons table))) + +(define (flatten lst) + "Return a list that recursively concatenates all sub-lists of LST." + (fold-right + (match-lambda* + (((sub-list ...) memo) + (append (flatten sub-list) memo)) + ((elem memo) + (cons elem memo))) + '() lst)) + +(define (assoc-ref* alist key . rest) + "Return the value for KEY from ALIST. For each additional key specified, +recursively apply the procedure to the sub-list." + (if (null? rest) + (assoc-ref alist key) + (apply assoc-ref* (assoc-ref alist key) rest))) + +(define (url-fetch url file-name) + "Save the contents of URL to FILE-NAME. Return #f on failure." + (parameterize ((current-output-port (current-error-port))) + (build:url-fetch url file-name))) diff --git a/tests/pypi.scm b/tests/pypi.scm index 124c512d54..53c34d9e93 100644 --- a/tests/pypi.scm +++ b/tests/pypi.scm @@ -60,7 +60,7 @@ (define test-source (test-assert "pypi->guix-package" ;; Replace network resources with sample data. - (mock ((guix import pypi) url-fetch + (mock ((guix import utils) url-fetch (lambda (url file-name) (with-output-to-file file-name (lambda () -- cgit v1.2.3 From 694b317c2dfac5f8b284a5831e20d89cc112bd6b Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Thu, 8 Jan 2015 14:41:15 -0600 Subject: tests: import: Factorize utility function. * tests/pypi.scm (mock): Move this... * guix/tests.scm: to here. --- guix/tests.scm | 11 +++++++++++ tests/pypi.scm | 9 +-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/guix/tests.scm b/guix/tests.scm index 82ae7e2084..36341cb4cc 100644 --- a/guix/tests.scm +++ b/guix/tests.scm @@ -27,6 +27,7 @@ (define-module (guix tests) #:export (open-connection-for-tests random-text random-bytevector + mock with-derivation-narinfo dummy-package)) @@ -70,6 +71,16 @@ (define (random-bytevector n) (loop (1+ i))) bv)))) +(define-syntax-rule (mock (module proc replacement) body ...) + "Within BODY, replace the definition of PROC from MODULE with the definition +given by REPLACEMENT." + (let* ((m (resolve-module 'module)) + (original (module-ref m 'proc))) + (dynamic-wind + (lambda () (module-set! m 'proc replacement)) + (lambda () body ...) + (lambda () (module-set! m 'proc original))))) + ;;; ;;; Narinfo files, as used by the substituter. diff --git a/tests/pypi.scm b/tests/pypi.scm index 53c34d9e93..45cf7cac4f 100644 --- a/tests/pypi.scm +++ b/tests/pypi.scm @@ -20,17 +20,10 @@ (define-module (test-pypi) #:use-module (guix import pypi) #:use-module (guix base32) #:use-module (guix hash) + #:use-module (guix tests) #:use-module (srfi srfi-64) #:use-module (ice-9 match)) -(define-syntax-rule (mock (module proc replacement) body ...) - (let* ((m (resolve-module 'module)) - (original (module-ref m 'proc))) - (dynamic-wind - (lambda () (module-set! m 'proc replacement)) - (lambda () body ...) - (lambda () (module-set! m 'proc original))))) - (define test-json "{ \"info\": { -- cgit v1.2.3 From d45dc6da5c802024f31dba95919c06205c5e31e4 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Thu, 8 Jan 2015 14:51:13 -0600 Subject: import: Add CPAN importer. * guix/import/cpan.scm, guix/scripts/import/cpan.scm, tests/cpan.scm: New files. * Makefile.am (MODULE)[HAVE_GUILE_JSON]: Add them. * guix/scripts/import.scm (importers): Add cpan. * doc/guix.texi (Requirements): Mention `guix import cpan` as a user of guile-json. (Invoking guix import): Document new `guix import cpan` command. --- Makefile.am | 8 ++- doc/guix.texi | 24 +++++-- guix/import/cpan.scm | 167 +++++++++++++++++++++++++++++++++++++++++++ guix/scripts/import.scm | 2 +- guix/scripts/import/cpan.scm | 91 +++++++++++++++++++++++ tests/cpan.scm | 107 +++++++++++++++++++++++++++ 6 files changed, 392 insertions(+), 7 deletions(-) create mode 100644 guix/import/cpan.scm create mode 100644 guix/scripts/import/cpan.scm create mode 100644 tests/cpan.scm diff --git a/Makefile.am b/Makefile.am index c2bb1762ff..5ee743470b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -176,9 +176,13 @@ if HAVE_GUILE_JSON MODULES += \ guix/import/json.scm \ guix/import/pypi.scm \ - guix/scripts/import/pypi.scm + guix/scripts/import/pypi.scm \ + guix/import/cpan.scm \ + guix/scripts/import/cpan.scm -SCM_TESTS += tests/pypi.scm +SCM_TESTS += \ + tests/pypi.scm \ + tests/cpan.scm endif diff --git a/doc/guix.texi b/doc/guix.texi index 12a1808137..8341a707d0 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -258,10 +258,10 @@ interest primarily for developers and not for casual users. @item Installing @uref{http://gnutls.org/, GnuTLS-Guile} will allow you to access @code{https} URLs with the @command{guix download} -command (@pxref{Invoking guix download}) and the @command{guix import -pypi} command. This is primarily of interest to developers. -@xref{Guile Preparations, how to install the GnuTLS bindings for Guile,, -gnutls-guile, GnuTLS-Guile}. +command (@pxref{Invoking guix download}), the @command{guix import pypi} +command, and the @command{guix import cpan} command. This is primarily +of interest to developers. @xref{Guile Preparations, how to install the +GnuTLS bindings for Guile,, gnutls-guile, GnuTLS-Guile}. @end itemize Unless @code{--disable-daemon} was passed to @command{configure}, the @@ -2957,6 +2957,22 @@ package: guix import pypi itsdangerous @end example +@item cpan +@cindex CPAN +Import meta-data from @uref{https://www.metacpan.org/, MetaCPAN}. +Information is taken from the JSON-formatted meta-data provided through +@uref{https://api.metacpan.org/, MetaCPAN's API} and includes most +relevant information. License information should be checked closely. +Package dependencies are included but may in some cases needlessly +include core Perl modules. + +The command command below imports meta-data for the @code{Acme::Boolean} +Perl module: + +@example +guix import cpan Acme::Boolean +@end example + @item nix Import meta-data from a local copy of the source of the @uref{http://nixos.org/nixpkgs/, Nixpkgs distribution}@footnote{This diff --git a/guix/import/cpan.scm b/guix/import/cpan.scm new file mode 100644 index 0000000000..5f4602a8d2 --- /dev/null +++ b/guix/import/cpan.scm @@ -0,0 +1,167 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Eric Bavier +;;; +;;; 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 cpan) + #:use-module (ice-9 match) + #:use-module (ice-9 regex) + #:use-module (srfi srfi-1) + #:use-module (json) + #:use-module (guix hash) + #:use-module (guix store) + #:use-module (guix base32) + #:use-module ((guix download) #:select (download-to-store)) + #:use-module (guix import utils) + #:use-module (guix import json) + #:export (cpan->guix-package)) + +;;; Commentary: +;;; +;;; Generate a package declaration template for the latest version of a CPAN +;;; module, using meta-data from metacpan.org. +;;; +;;; Code: + +(define string->license + (match-lambda + ;; List of valid values from https://metacpan.org/pod/CPAN::Meta::Spec. + ;; Some licenses are excluded based on their absense from (guix licenses). + ("agpl_3" 'agpl3) + ;; apache_1_1 + ("apache_2_0" 'asl2.0) + ;; artistic_1_0 + ;; artistic_2_0 + ("bsd" 'bsd-3) + ("freebsd" 'bsd-2) + ;; gfdl_1_2 + ("gfdl_1_3" 'fdl1.3+) + ("gpl_1" 'gpl1) + ("gpl_2" 'gpl2) + ("gpl_3" 'gpl3) + ("lgpl_2_1" 'lgpl2.1) + ("lgpl_3_0" 'lgpl3) + ("mit" 'x11) + ;; mozilla_1_0 + ("mozilla_1_1" 'mpl1.1) + ("openssl" 'openssl) + ("perl_5" 'gpl1+) ;and Artistic 1 + ("qpl_1_0" 'qpl) + ;; ssleay + ;; sun + ("zlib" 'zlib) + ((x) (string->license x)) + ((lst ...) `(list ,@(map string->license lst))) + (_ #f))) + +(define (module->name module) + "Transform a 'module' name into a 'release' name" + (regexp-substitute/global #f "::" module 'pre "-" 'post)) + +(define (cpan-fetch module) + "Return an alist representation of the CPAN metadata for the perl module MODULE, +or #f on failure. MODULE should be e.g. \"Test::Script\"" + ;; This API always returns the latest release of the module. + (json-fetch (string-append "http://api.metacpan.org/release/" + ;; XXX: The 'release' api requires the "release" + ;; name of the package. This substitution seems + ;; reasonably consistent across packages. + (module->name module)))) + +(define (cpan-home name) + (string-append "http://search.cpan.org/dist/" name)) + +(define (cpan-module->sexp meta) + "Return the `package' s-expression for a CPAN module from the metadata in +META." + (define name + (assoc-ref meta "distribution")) + + (define (guix-name name) + (if (string-prefix? "perl-" name) + (string-downcase name) + (string-append "perl-" (string-downcase name)))) + + (define version + (assoc-ref meta "version")) + + (define (convert-inputs phases) + ;; Convert phase dependencies into a list of name/variable pairs. + (match (flatten + (map (lambda (ph) + (filter-map (lambda (t) + (assoc-ref* meta "metadata" "prereqs" ph t)) + '("requires" "recommends" "suggests"))) + phases)) + (#f + '()) + ((inputs ...) + (delete-duplicates + ;; Listed dependencies may include core modules. Filter those out. + (filter-map (match-lambda + ((or (module . "0") ("perl" . _)) + ;; TODO: A stronger test might to run MODULE through + ;; `corelist' from our perl package. This current test + ;; seems to be only a loose convention. + #f) + ((module . _) + (let ((name (guix-name (module->name module)))) + (list name + (list 'unquote (string->symbol name)))))) + inputs))))) + + (define (maybe-inputs guix-name inputs) + (match inputs + (() + '()) + ((inputs ...) + (list (list guix-name + (list 'quasiquote inputs)))))) + + (define source-url + (assoc-ref meta "download_url")) + + (let ((tarball (with-store store + (download-to-store store source-url)))) + `(package + (name ,(guix-name name)) + (version ,version) + (source (origin + (method url-fetch) + (uri (string-append ,@(factorize-uri source-url version))) + (sha256 + (base32 + ,(bytevector->nix-base32-string (file-sha256 tarball)))))) + (build-system perl-build-system) + ,@(maybe-inputs 'native-inputs + ;; "runtime" and "test" may also be needed here. See + ;; https://metacpan.org/pod/CPAN::Meta::Spec#Phases, + ;; which says they are required during building. We + ;; have not yet had a need for cross-compiled perl + ;; modules, however, so we leave them out. + (convert-inputs '("configure" "build"))) + ,@(maybe-inputs 'inputs + (convert-inputs '("runtime"))) + (home-page ,(string-append "http://search.cpan.org/dist/" name)) + (synopsis ,(assoc-ref meta "abstract")) + (description fill-in-yourself!) + (license ,(string->license (assoc-ref meta "license")))))) + +(define (cpan->guix-package module-name) + "Fetch the metadata for PACKAGE-NAME from metacpan.org, and return the +`package' s-expression corresponding to that package, or #f on failure." + (let ((module-meta (cpan-fetch module-name))) + (and=> module-meta cpan-module->sexp))) diff --git a/guix/scripts/import.scm b/guix/scripts/import.scm index 86ef05bc2c..7e75c10b3e 100644 --- a/guix/scripts/import.scm +++ b/guix/scripts/import.scm @@ -73,7 +73,7 @@ (define %standard-import-options '()) ;;; Entry point. ;;; -(define importers '("gnu" "nix" "pypi")) +(define importers '("gnu" "nix" "pypi" "cpan")) (define (resolve-importer name) (let ((module (resolve-interface diff --git a/guix/scripts/import/cpan.scm b/guix/scripts/import/cpan.scm new file mode 100644 index 0000000000..1f4dedf23f --- /dev/null +++ b/guix/scripts/import/cpan.scm @@ -0,0 +1,91 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Eric Bavier +;;; +;;; 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 cpan) + #:use-module (guix ui) + #:use-module (guix utils) + #:use-module (guix import cpan) + #: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-cpan)) + + +;;; +;;; Command-line options. +;;; + +(define %default-options + '()) + +(define (show-help) + (display (_ "Usage: guix import cpan PACKAGE-NAME +Import and convert the CPAN package for PACKAGE-NAME.\n")) + (display (_ " + -h, --help display this help and exit")) + (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 cpan"))) + %standard-import-options)) + + +;;; +;;; Entry point. +;;; + +(define (guix-import-cpan . 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 (cpan->guix-package package-name))) + (unless sexp + (leave (_ "failed to download meta-data for package '~a'~%") + package-name)) + sexp)) + (() + (leave (_ "too few arguments~%"))) + ((many ...) + (leave (_ "too many arguments~%")))))) diff --git a/tests/cpan.scm b/tests/cpan.scm new file mode 100644 index 0000000000..af7b36e684 --- /dev/null +++ b/tests/cpan.scm @@ -0,0 +1,107 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Eric Bavier +;;; +;;; 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-cpan) + #:use-module (guix import cpan) + #:use-module (guix base32) + #:use-module (guix hash) + #:use-module (guix tests) + #:use-module (srfi srfi-64) + #:use-module (ice-9 match)) + +(define test-json + "{ + \"metadata\" : { + \"prereqs\" : { + \"configure\" : { + \"requires\" : { + \"ExtUtils::MakeMaker\" : \"0\", + \"Module::Build\" : \"0.28\" + } + }, + \"runtime\" : { + \"requires\" : { + \"Getopt::Std\" : \"0\", + \"Test::Script\" : \"1.05\", + } + } + } + \"name\" : \"Foo-Bar\", + \"version\" : \"0.1\" + } + \"name\" : \"Foo-Bar-0.1\", + \"distribution\" : \"Foo-Bar\", + \"license\" : [ + \"perl_5\" + ], + \"abstract\" : \"Fizzle Fuzz\", + \"download_url\" : \"http://example.com/Foo-Bar-0.1.tar.gz\", + \"author\" : \"GUIX\", + \"version\" : \"0.1\" +}") + +(define test-source + "foobar") + +(test-begin "cpan") + +(test-assert "cpan->guix-package" + ;; Replace network resources with sample data. + (mock ((guix build download) url-fetch + (lambda* (url file-name #:key (mirrors '())) + (with-output-to-file file-name + (lambda () + (display + (match url + ("http://api.metacpan.org/release/Foo-Bar" + test-json) + ("http://example.com/Foo-Bar-0.1.tar.gz" + test-source) + (_ (error "Unexpected URL: " url)))))))) + (match (cpan->guix-package "Foo::Bar") + (('package + ('name "perl-foo-bar") + ('version "0.1") + ('source ('origin + ('method 'url-fetch) + ('uri ('string-append "http://example.com/Foo-Bar-" + 'version ".tar.gz")) + ('sha256 + ('base32 + (? string? hash))))) + ('build-system 'perl-build-system) + ('native-inputs + ('quasiquote + (("perl-module-build" ('unquote 'perl-module-build))))) + ('inputs + ('quasiquote + (("perl-test-script" ('unquote 'perl-test-script))))) + ('home-page "http://search.cpan.org/dist/Foo-Bar") + ('synopsis "Fizzle Fuzz") + ('description 'fill-in-yourself!) + ('license 'gpl1+)) + (string=? (bytevector->nix-base32-string + (call-with-input-string test-source port-sha256)) + hash)) + (x + (pk 'fail x #f))))) + +(test-end "cpan") + + +(exit (= (test-runner-fail-count (test-runner-current)) 0)) -- cgit v1.2.3 From eb9dfcb3c4c5a3de7548afc35c7a3344f820c478 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 9 Jan 2015 23:33:05 +0100 Subject: nls: Update 'eo' translation. --- po/packages/eo.po | 1107 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 1027 insertions(+), 80 deletions(-) diff --git a/po/packages/eo.po b/po/packages/eo.po index 2e48d61064..9a251db2a9 100644 --- a/po/packages/eo.po +++ b/po/packages/eo.po @@ -1,27 +1,127 @@ # Esperanto messages for GNU Guix -# Copyright (C) 2013, 2014 Free Software Foundation, Inc. +# Copyright (C) 2013, 2014, 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the guix package. -# Felipe Castro , 2013, 2014. +# Felipe Castro , 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: guix-packages 0.7-pre1\n" +"Project-Id-Version: guix-packages 0.8\n" "Report-Msgid-Bugs-To: ludo@gnu.org\n" -"POT-Creation-Date: 2014-07-14 11:59+0200\n" -"PO-Revision-Date: 2014-07-14 11:28-0300\n" +"POT-Creation-Date: 2014-11-10 15:37+0100\n" +"PO-Revision-Date: 2015-01-09 09:14-0300\n" "Last-Translator: Felipe Castro \n" "Language-Team: Esperanto \n" "Language: eo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.10\n" -#: gnu/packages/base.scm:65 +#: gnu/packages/aspell.scm:42 +msgid "Spell checker" +msgstr "Literumilo" + +#: gnu/packages/aspell.scm:44 +msgid "" +"Aspell is a spell-checker which can be used either as a library or as\n" +"a standalone program. Notable features of Aspell include its full support of\n" +"documents written in the UTF-8 encoding and its ability to use multiple\n" +"dictionaries, including personal ones." +msgstr "" + +#: gnu/packages/aspell.scm:84 +msgid "This package provides a dictionary for the GNU Aspell spell checker." +msgstr "Tiu ĉi pako provizas vortaron por la literumilo GNU Aspell." + +#: gnu/packages/backup.scm:87 +msgid "Encrypted backup using rsync algorithm" +msgstr "Ĉifrita savkopio uzanta algoritmon rsync" + +#: gnu/packages/backup.scm:89 +msgid "" +"Duplicity backs up directories by producing encrypted tar-format volumes\n" +"and uploading them to a remote or local file server. Because duplicity uses\n" +"librsync, the incremental archives are space efficient and only record the\n" +"parts of files that have changed since the last backup. Because duplicity\n" +"uses GnuPG to encrypt and/or sign these archives, they will be safe from\n" +"spying and/or modification by the server." +msgstr "" + +#: gnu/packages/backup.scm:123 +msgid "Simple incremental backup tool" +msgstr "Simpla alkrementa savkopiilo" + +#: gnu/packages/backup.scm:125 +msgid "" +"Hdup2 is a backup utilty, its aim is to make backup really simple. The\n" +"backup scheduling is done by means of a cron job. It supports an\n" +"include/exclude mechanism, remote backups, encrypted backups and split\n" +"backups (called chunks) to allow easy burning to CD/DVD." +msgstr "" + +#: gnu/packages/backup.scm:178 +msgid "Multi-format archive and compression library" +msgstr "Mult-forma biblioteko por arĥivi kaj densigi" + +#: gnu/packages/backup.scm:180 +msgid "" +"Libarchive provides a flexible interface for reading and writing\n" +"archives in various formats such as tar and cpio. Libarchive also supports\n" +"reading and writing archives compressed using various compression filters such\n" +"as gzip and bzip2. The library is inherently stream-oriented; readers\n" +"serially iterate through the archive, writers serially add things to the\n" +"archive. In particular, note that there is currently no built-in support for\n" +"random access nor for in-place modification." +msgstr "" + +#: gnu/packages/backup.scm:243 +msgid "Provide a list of files to backup" +msgstr "Provizas liston da dosieroj por savkopii" + +#: gnu/packages/backup.scm:245 +msgid "" +"Rdup is a utility inspired by rsync and the plan9 way of doing backups.\n" +"Rdup itself does not backup anything, it only print a list of absolute\n" +"filenames to standard output. Auxiliary scripts are needed that act on this\n" +"list and implement the backup strategy." +msgstr "" + +#: gnu/packages/backup.scm:275 +msgid "Tar-compatible archiver" +msgstr "Arĥivilo kongrua al tar" + +#: gnu/packages/backup.scm:277 +msgid "" +"Btar is a tar-compatible archiver which allows arbitrary compression and\n" +"ciphering, redundancy, differential backup, indexed extraction, multicore\n" +"compression, input and output serialisation, and tolerance to partial archive\n" +"errors." +msgstr "" + +#: gnu/packages/backup.scm:305 +msgid "Local/remote mirroring+incremental backup" +msgstr "Loka/demalproksima spegula+alkrementa savkopio" + +#: gnu/packages/backup.scm:307 +msgid "" +"Rdiff-backup backs up one directory to another, possibly over a network.\n" +"The target directory ends up a copy of the source directory, but extra reverse\n" +"diffs are stored in a special subdirectory of that target directory, so you\n" +"can still recover files lost some time ago. The idea is to combine the best\n" +"features of a mirror and an incremental backup. Rdiff-backup also preserves\n" +"subdirectories, hard links, dev files, permissions, uid/gid ownership,\n" +"modification times, extended attributes, acls, and resource forks. Also,\n" +"rdiff-backup can operate in a bandwidth efficient manner over a pipe, like\n" +"rsync. Thus you can use rdiff-backup and ssh to securely back a hard drive up\n" +"to a remote location, and only the differences will be transmitted. Finally,\n" +"rdiff-backup is easy to use and settings have sensical defaults." +msgstr "" + +#: gnu/packages/base.scm:56 msgid "Hello, GNU world: An example GNU package" msgstr "Saluton, mondo GNU: ekzemplo de pako GNU" -#: gnu/packages/base.scm:67 +#: gnu/packages/base.scm:58 msgid "" "GNU Hello prints the message \"Hello, world!\" and then exits. It\n" "serves as an example of standard GNU coding practices. As such, it supports\n" @@ -31,11 +131,11 @@ msgstr "" "funkcias kiel ekzemplo de norma kodumada tradicio de GNU. Tiel, ĝi subtenas\n" "komand-liniajn argumentojn, plurajn lingvojn, kaj tiel plu." -#: gnu/packages/base.scm:85 +#: gnu/packages/base.scm:76 msgid "Print lines matching a pattern" msgstr "Montri liniojn kongruajn al ŝablono" -#: gnu/packages/base.scm:87 +#: gnu/packages/base.scm:78 msgid "" "grep is a tool for finding text inside files. Text is found by\n" "matching a pattern provided by the user in one or many files. The pattern\n" @@ -53,11 +153,11 @@ msgstr "" "ekzemple, lini-numerojn. GNU grep oferaj multajn aldonojn kompare al la\n" "originala aplikaĵo, inkluzive, ekzemple, rikuran serĉadon en dosierujoj." -#: gnu/packages/base.scm:109 +#: gnu/packages/base.scm:100 msgid "Stream editor" msgstr "Flu-redaktilo" -#: gnu/packages/base.scm:124 +#: gnu/packages/base.scm:115 msgid "" "Sed is a non-interactive, text stream editor. It receives a text\n" "input from a file or from standard input and it then applies a series of text\n" @@ -70,11 +170,11 @@ msgstr "" "Ĝi estas ofte uzata por anstataŭigi teksto-ŝablonojn en fluo. La GNU-a \n" "realigo oferas plurajn aldonojn kompare al la ordinara aplikaĵo." -#: gnu/packages/base.scm:144 +#: gnu/packages/base.scm:135 msgid "Managing tar archives" msgstr "Administrado de arĥivoj tar" -#: gnu/packages/base.scm:146 +#: gnu/packages/base.scm:137 msgid "" "Tar provides the ability to create tar archives, as well as the\n" "ability to extract, update or list files in an existing archive. It is\n" @@ -90,11 +190,11 @@ msgstr "" "dato de kreo/modifo. GNU tar oferas multajn aldonojn kompare\n" "al la ordinara aplikaĵo." -#: gnu/packages/base.scm:173 +#: gnu/packages/base.scm:161 msgid "Apply differences to originals, with optional backups" msgstr "Apliki malsamojn al originaloj, kun nedevigaj savkopioj" -#: gnu/packages/base.scm:175 +#: gnu/packages/base.scm:163 msgid "" "Patch is a program that applies changes to files based on differences\n" "laid out as by the program \"diff\". The changes may be applied to one or more\n" @@ -103,11 +203,11 @@ msgid "" "differences." msgstr "" -#: gnu/packages/base.scm:195 +#: gnu/packages/base.scm:183 msgid "Comparing and merging files" msgstr "Komparo kaj kunmikso de dosieroj" -#: gnu/packages/base.scm:197 +#: gnu/packages/base.scm:185 msgid "" "GNU Diffutils is a package containing tools for finding the\n" "differences between files. The \"diff\" command is used to show how two files\n" @@ -116,11 +216,11 @@ msgid "" "interactive means to merge two files." msgstr "" -#: gnu/packages/base.scm:224 +#: gnu/packages/base.scm:212 msgid "Operating on files matching given criteria" msgstr "Operacio sur dosieroj kongruantaj al indikita kriterio" -#: gnu/packages/base.scm:226 +#: gnu/packages/base.scm:214 msgid "" "Findutils supplies the basic file directory searching utilities of the\n" "GNU system. It consists of two primary searching utilities: \"find\"\n" @@ -130,11 +230,11 @@ msgid "" "used to apply commands with arbitrarily long arguments." msgstr "" -#: gnu/packages/base.scm:278 +#: gnu/packages/base.scm:264 msgid "Core GNU utilities (file, text, shell)" msgstr "Nukleaj utilaĵoj GNU (file, text, shell)" -#: gnu/packages/base.scm:280 +#: gnu/packages/base.scm:266 msgid "" "GNU Coreutils includes all of the basic command-line tools that are\n" "expected in a POSIX system. These provide the basic file, shell and text\n" @@ -142,11 +242,11 @@ msgid "" "functionality beyond that which is outlined in the POSIX standard." msgstr "" -#: gnu/packages/base.scm:314 +#: gnu/packages/base.scm:300 msgid "Remake files automatically" msgstr "Reprocezi dosierojn aŭtomate" -#: gnu/packages/base.scm:316 +#: gnu/packages/base.scm:302 msgid "" "Make is a program that is used to control the production of\n" "executables or other files from their source files. The process is\n" @@ -156,24 +256,25 @@ msgid "" "change. GNU make offers many powerful extensions over the standard utility." msgstr "" -#: gnu/packages/base.scm:361 +#: gnu/packages/base.scm:347 msgid "Binary utilities: bfd gas gprof ld" msgstr "Duumaj utilaĵoj: bfd gas gprof ld" -#: gnu/packages/base.scm:363 +#: gnu/packages/base.scm:349 msgid "" "GNU Binutils is a collection of tools for working with binary files.\n" -"Perhaps the most notable are \"ld\", a linker, and \"as\", an assembler. Other\n" -"tools include programs to display binary profiling information, list the\n" -"strings in a binary file, and utilities for working with archives. The \"bfd\"\n" -"library for working with executable and object formats is also included." +"Perhaps the most notable are \"ld\", a linker, and \"as\", an assembler.\n" +"Other tools include programs to display binary profiling information, list\n" +"the strings in a binary file, and utilities for working with archives. The\n" +"\"bfd\" library for working with executable and object formats is also\n" +"included." msgstr "" -#: gnu/packages/base.scm:504 +#: gnu/packages/base.scm:491 msgid "The GNU C Library" msgstr "La Biblioteko GNU C" -#: gnu/packages/base.scm:506 +#: gnu/packages/base.scm:493 msgid "" "Any Unix-like operating system needs a C library: the library which\n" "defines the \"system calls\" and other basic facilities such as open, malloc,\n" @@ -183,50 +284,186 @@ msgid "" "with the Linux kernel." msgstr "" -#: gnu/packages/base.scm:575 +#: gnu/packages/base.scm:562 msgid "Database of current and historical time zones" msgstr "Datumbazo de nuna kaj pasintaj temp-zonoj" -#: gnu/packages/base.scm:576 +#: gnu/packages/base.scm:563 msgid "" "The Time Zone Database (often called tz or zoneinfo)\n" "contains code and data that represent the history of local time for many\n" -"representative locations around the globe. It is updated periodically to\n" +"representative locations around the globe. It is updated periodically to\n" "reflect changes made by political bodies to time zone boundaries, UTC offsets,\n" "and daylight-saving rules." msgstr "" -#: gnu/packages/base.scm:1004 -msgid "GNU C++ standard library (intermediate)" -msgstr "GNU C++ norma biblioteko (intermeza)" +#: gnu/packages/databases.scm:83 +msgid "Berkeley database" +msgstr "Datumbazo de Berkeley" + +#: gnu/packages/databases.scm:85 +msgid "" +"Berkeley DB is an embeddable database allowing developers the choice of\n" +"SQL, Key/Value, XML/XQuery or Java Object storage for their data model." +msgstr "" + +#: gnu/packages/databases.scm:143 +msgid "Fast, easy to use, and popular database" +msgstr "Rapida, faciluzebla, kaj populara datumbazo" + +#: gnu/packages/databases.scm:145 +msgid "" +"MySQL is a fast, reliable, and easy to use relational database\n" +"management system that supports the standardized Structured Query\n" +"Language." +msgstr "" + +#: gnu/packages/databases.scm:166 +msgid "Powerful object-relational database system" +msgstr "Potenca objekt-rilata datumbaza sistemo" + +#: gnu/packages/databases.scm:168 +msgid "" +"PostgreSQL is a powerful object-relational database system. It is fully\n" +"ACID compliant, has full support for foreign keys, joins, views, triggers, and\n" +"stored procedures (in multiple languages). It includes most SQL:2008 data\n" +"types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and\n" +"TIMESTAMP. It also supports storage of binary large objects, including\n" +"pictures, sounds, or video." +msgstr "" + +#: gnu/packages/databases.scm:203 +msgid "Manipulate plain text files as databases" +msgstr "Manipuli simplajn tekst-dosierojn kiel datumbazojn" + +#: gnu/packages/databases.scm:205 +msgid "" +"GNU Recutils is a set of tools and libraries for creating and\n" +"manipulating text-based, human-editable databases. Despite being text-based,\n" +"databases created with Recutils carry all of the expected features such as\n" +"unique fields, primary keys, time stamps and more. Many different field\n" +"types are supported, as is encryption." +msgstr "" + +#: gnu/packages/databases.scm:243 +msgid "The SQLite database management system" +msgstr "La datumbaza administra sistemo SQLite" + +#: gnu/packages/databases.scm:245 +msgid "" +"SQLite is a software library that implements a self-contained, serverless,\n" +"zero-configuration, transactional SQL database engine. SQLite is the most\n" +"widely deployed SQL database engine in the world. The source code for SQLite\n" +"is in the public domain." +msgstr "" + +#: gnu/packages/databases.scm:280 +msgid "Trivial database" +msgstr "Ordinara datumbazo" + +#: gnu/packages/databases.scm:282 +msgid "" +"TDB is a Trivial Database. In concept, it is very much like GDBM,\n" +"and BSD's DB except that it allows multiple simultaneous writers and uses\n" +"locking internally to keep writers from trampling on each other. TDB is also\n" +"extremely small." +msgstr "" + +#: gnu/packages/databases.scm:301 +msgid "Database independent interface for Perl" +msgstr "Datumbaz-sendependa interfaco por Perl" + +#: gnu/packages/databases.scm:302 +msgid "This package provides an database interface for Perl." +msgstr "Tiu ĉi pako provizas datumbazan interfacon por Perl." -#: gnu/packages/base.scm:1098 -msgid "The linker wrapper" -msgstr "La ligila ĉirkaŭanto" +#: gnu/packages/databases.scm:321 +msgid "SQlite interface for Perl" +msgstr "Interfaco de SQLite por Perl" -#: gnu/packages/base.scm:1100 +#: gnu/packages/databases.scm:322 msgid "" -"The linker wrapper (or `ld-wrapper') wraps the linker to add any\n" -"missing `-rpath' flags, and to detect any misuse of libraries outside of the\n" -"store." +"DBD::SQLite is a Perl DBI driver for SQLite, that includes\n" +"the entire thing in the distribution. So in order to get a fast transaction\n" +"capable RDBMS working for your Perl project you simply have to install this\n" +"module, and nothing else." msgstr "" -#: gnu/packages/base.scm:1264 -msgid "Complete GCC tool chain for C/C++ development" -msgstr "Kompleta ilaro GCC por kodumado en C/C++" +#: gnu/packages/databases.scm:342 +msgid "Data source abstraction library" +msgstr "Datumar-fonta abstrakta biblioteko" -#: gnu/packages/base.scm:1266 +#: gnu/packages/databases.scm:343 msgid "" -"This package provides a complete GCC tool chain for C/C++ development to\n" -"be installed in user profiles. This includes GCC, as well as libc (headers\n" -"and binaries, plus debugging symbols in the 'debug' output), and Binutils." +"Unixodbc is a library providing an API with which to access\n" +"data sources. Data sources include SQL Servers and any software with an ODBC\n" +"Driver." msgstr "" -#: gnu/packages/guile.scm:99 gnu/packages/guile.scm:166 +#: gnu/packages/gcc.scm:254 +msgid "GNU Compiler Collection" +msgstr "GNU-a kompila kolekto" + +#: gnu/packages/gcc.scm:256 +msgid "" +"GCC is the GNU Compiler Collection. It provides compiler front-ends\n" +"for several languages, including C, C++, Objective-C, Fortran, Java, Ada, and\n" +"Go. It also includes runtime support libraries for these languages." +msgstr "" + +#: gnu/packages/gcc.scm:340 +msgid "Manipulating sets and relations of integer points bounded by linear constraints" +msgstr "Manipulo de aroj kaj rilatoj de entjeraj punktoj ligataj per linearaj limigoj" + +#: gnu/packages/gcc.scm:343 +msgid "" +"isl is a library for manipulating sets and relations of integer points\n" +"bounded by linear constraints. Supported operations on sets include\n" +"intersection, union, set difference, emptiness check, convex hull, (integer)\n" +"affine hull, integer projection, computing the lexicographic minimum using\n" +"parametric integer programming, coalescing and parametric vertex\n" +"enumeration. It also includes an ILP solver based on generalized basis\n" +"reduction, transitive closures on maps (which may encode infinite graphs),\n" +"dependence analysis and bounds on piecewise step-polynomials." +msgstr "" + +#: gnu/packages/gcc.scm:375 +msgid "Library to generate code for scanning Z-polyhedra" +msgstr "Biblioteko por krei kodumaron por skani Z-pluredrojn" + +#: gnu/packages/gcc.scm:377 +msgid "" +"CLooG is a free software library to generate code for scanning\n" +"Z-polyhedra. That is, it finds a code (e.g., in C, FORTRAN...) that\n" +"reaches each integral point of one or more parameterized polyhedra.\n" +"CLooG has been originally written to solve the code generation problem\n" +"for optimizing compilers based on the polytope model. Nevertheless it\n" +"is used now in various area e.g., to build control automata for\n" +"high-level synthesis or to find the best polynomial approximation of a\n" +"function. CLooG may help in any situation where scanning polyhedra\n" +"matters. While the user has full control on generated code quality,\n" +"CLooG is designed to avoid control overhead and to produce a very\n" +"effective code." +msgstr "" + +#: gnu/packages/gettext.scm:74 +msgid "Tools and documentation for translation" +msgstr "Iloj kaj dokumentado por tradukado" + +#: gnu/packages/gettext.scm:76 +msgid "" +"GNU Gettext is a package providing a framework for translating the\n" +"textual output of programs into multiple languages. It provides translators\n" +"with the means to create message catalogs, as well as an Emacs mode to work\n" +"with them, and a runtime library to load translated messages from the\n" +"catalogs. Nearly all GNU packages use Gettext." +msgstr "" + +#: gnu/packages/guile.scm:100 gnu/packages/guile.scm:163 msgid "Scheme implementation intended especially for extensions" msgstr "Realigo de Scheme celata speciale por aldonoj" -#: gnu/packages/guile.scm:101 gnu/packages/guile.scm:168 +#: gnu/packages/guile.scm:102 gnu/packages/guile.scm:165 msgid "" "Guile is the GNU Ubiquitous Intelligent Language for Extensions, the\n" "official extension language of the GNU system. It is an implementation of\n" @@ -235,18 +472,18 @@ msgid "" "without requiring the source code to be rewritten." msgstr "" -#: gnu/packages/guile.scm:211 +#: gnu/packages/guile.scm:208 msgid "Framework for building readers for GNU Guile" msgstr "Framo por konstrui legilojn por GNU Guile" -#: gnu/packages/guile.scm:213 +#: gnu/packages/guile.scm:210 msgid "" "Guile-Reader is a simple framework for building readers for GNU Guile.\n" "\n" "The idea is to make it easy to build procedures that extend Guile’s read\n" -"procedure. Readers supporting various syntax variants can easily be written,\n" +"procedure. Readers supporting various syntax variants can easily be written,\n" "possibly by re-using existing “token readers” of a standard Scheme\n" -"readers. For example, it is used to implement Skribilo’s R5RS-derived\n" +"readers. For example, it is used to implement Skribilo’s R5RS-derived\n" "document syntax.\n" "\n" "Guile-Reader’s approach is similar to Common Lisp’s “read table”, but\n" @@ -254,21 +491,23 @@ msgid "" "many readers as needed)." msgstr "" -#: gnu/packages/guile.scm:267 +#: gnu/packages/guile.scm:263 msgid "Guile bindings to ncurses" msgstr "Bindoj de Guile por ncurses" -#: gnu/packages/guile.scm:269 +#: gnu/packages/guile.scm:265 msgid "" "guile-ncurses provides Guile language bindings for the ncurses\n" "library." msgstr "" +"guile-ncurses provizas lingvo-bindojn de Guile por la biblioteko\n" +"ncurses." -#: gnu/packages/guile.scm:289 +#: gnu/packages/guile.scm:285 msgid "Run jobs at scheduled times" msgstr "Lanĉi taskojn je antaŭplanitaj horoj" -#: gnu/packages/guile.scm:291 +#: gnu/packages/guile.scm:287 msgid "" "GNU Mcron is a complete replacement for Vixie cron. It is used to run\n" "tasks on a schedule, such as every hour or every Monday. Mcron is written in\n" @@ -276,39 +515,470 @@ msgid "" "format is also supported." msgstr "" -#: gnu/packages/guile.scm:319 +#: gnu/packages/guile.scm:315 msgid "Collection of useful Guile Scheme modules" msgstr "Aro da utilaj moduloj de Guile Scheme" -#: gnu/packages/guile.scm:321 +#: gnu/packages/guile.scm:317 msgid "" -"guile-lib is intended as an accumulation place for pure-scheme Guile\n" +"Guile-Lib is intended as an accumulation place for pure-scheme Guile\n" "modules, allowing for people to cooperate integrating their generic Guile\n" "modules into a coherent library. Think \"a down-scaled, limited-scope CPAN\n" "for Guile\"." msgstr "" -#: gnu/packages/guile.scm:352 +#: gnu/packages/guile.scm:348 msgid "JSON module for Guile" msgstr "Modulo JSON por Guile" -#: gnu/packages/guile.scm:354 +#: gnu/packages/guile.scm:350 msgid "" "Guile-json supports parsing and building JSON documents according to the\n" -"http:://json.org specification. These are the main features:\n" +"http:://json.org specification. These are the main features:\n" "- Strictly complies to http://json.org specification.\n" "- Build JSON documents programmatically via macros.\n" "- Unicode support for strings.\n" "- Allows JSON pretty printing." msgstr "" +#: gnu/packages/guile.scm:381 +msgid "Create charts and graphs in Guile" +msgstr "Krei diagramojn kaj grafikaĵojn en Guile" + +#: gnu/packages/guile.scm:383 +msgid "" +"Guile-Charting is a Guile Scheme library to create bar charts and graphs\n" +"using the Cairo drawing library." +msgstr "" + +#: gnu/packages/inkscape.scm:78 +msgid "Vector graphics editor" +msgstr "Vektor-grafika redaktilo" + +#: gnu/packages/inkscape.scm:79 +msgid "" +"Inkscape is a vector graphics editor. What sets Inkscape\n" +"apart is its use of Scalable Vector Graphics (SVG), an XML-based W3C standard,\n" +"as the native format." +msgstr "" + +#: gnu/packages/linux.scm:131 +msgid "GNU Linux-Libre kernel headers" +msgstr "GNU Linux-Libre kernaj kapdosieroj" + +#: gnu/packages/linux.scm:132 +msgid "Headers of the Linux-Libre kernel." +msgstr "Kapdosieroj de la kerno Linux-Libre." + +#: gnu/packages/linux.scm:163 +msgid "Tools for loading and managing Linux kernel modules" +msgstr "Iloj por ŝargi kaj administri linuks-kernajn modulojn" + +#: gnu/packages/linux.scm:165 +msgid "" +"Tools for loading and managing Linux kernel modules, such as `modprobe',\n" +"`insmod', `lsmod', and more." +msgstr "" + +#: gnu/packages/linux.scm:296 +msgid "100% free redistribution of a cleaned Linux kernel" +msgstr "100% libera redistribuo de purigita Linuks-kerno" + +#: gnu/packages/linux.scm:298 +msgid "" +"GNU Linux-Libre is a free (as in freedom) variant of the Linux kernel.\n" +"It has been modified to remove all non-free binary blobs." +msgstr "" + +#: gnu/packages/linux.scm:341 +msgid "Pluggable authentication modules for Linux" +msgstr "Konekteblaj aŭtentikigaj moduloj por Linukso" + +#: gnu/packages/linux.scm:343 +msgid "" +"A *Free* project to implement OSF's RFC 86.0.\n" +"Pluggable authentication modules are small shared object files that can\n" +"be used through the PAM API to perform tasks, like authenticating a user\n" +"at login. Local and dynamic reconfiguration are its key features" +msgstr "" + +#: gnu/packages/linux.scm:370 +msgid "Small utilities that use the proc filesystem" +msgstr "Etaj utilaĵoj kiuj uzas la dosiersistemon proc" + +#: gnu/packages/linux.scm:372 +msgid "" +"This PSmisc package is a set of some small useful utilities that\n" +"use the proc filesystem. We're not about changing the world, but\n" +"providing the system administrator with some help in common tasks." +msgstr "" + +#: gnu/packages/linux.scm:416 +msgid "Collection of utilities for the Linux kernel" +msgstr "Aro da utilaĵoj por la Linuks-kerno" + +#: gnu/packages/linux.scm:418 +msgid "Util-linux is a random collection of utilities for the Linux kernel." +msgstr "Util-linux estas hazarda aro da utilaĵoj por la Linuks-kerno." + +#: gnu/packages/linux.scm:472 +msgid "Utilities that give information about processes" +msgstr "Utilaĵoj kiuj informas pri procezoj" + +#: gnu/packages/linux.scm:474 +msgid "" +"Procps is the package that has a bunch of small useful utilities\n" +"that give information about processes using the Linux /proc file system.\n" +"The package includes the programs ps, top, vmstat, w, kill, free,\n" +"slabtop, and skill." +msgstr "" + +#: gnu/packages/linux.scm:499 +msgid "Tools for working with USB devices, such as lsusb" +msgstr "Iloj por labori kun USB-aparatoj, kiel lsusb" + +#: gnu/packages/linux.scm:501 +msgid "Tools for working with USB devices, such as lsusb." +msgstr "Iloj por labori kun USB-aparatoj, kiel lsusb." + +#: gnu/packages/linux.scm:542 +msgid "Creating and checking ext2/ext3/ext4 file systems" +msgstr "Kreo kaj kontrolo de dosiersistemoj ext2/ext3/ext4" + +#: gnu/packages/linux.scm:544 +msgid "This package provides tools for manipulating ext2/ext3/ext4 file systems." +msgstr "Tiu ĉi pako provizas ilojn por manipuli dosiersistemojn ext2/ext3/ext4." + +#: gnu/packages/linux.scm:575 +msgid "Statically-linked fsck.* commands from e2fsprogs" +msgstr "Statik-ligitaj komandoj fsck.* el e2fsprogs" + +#: gnu/packages/linux.scm:577 +msgid "" +"This package provides statically-linked command of fsck.ext[234] taken\n" +"from the e2fsprogs package. It is meant to be used in initrds." +msgstr "" + +#: gnu/packages/linux.scm:596 +msgid "System call tracer for Linux" +msgstr "Sistem-voka ŝpursekvilo por Linukso" + +#: gnu/packages/linux.scm:598 +msgid "" +"strace is a system call tracer, i.e. a debugging tool which prints out a\n" +"trace of all the system calls made by a another process/program." +msgstr "" + +#: gnu/packages/linux.scm:617 +msgid "The Advanced Linux Sound Architecture libraries" +msgstr "La bibliotekoj de Altnivela Linuksa Sona Arkitekturo" + +#: gnu/packages/linux.scm:619 gnu/packages/linux.scm:661 +msgid "" +"The Advanced Linux Sound Architecture (ALSA) provides audio and\n" +"MIDI functionality to the Linux-based operating system." +msgstr "" +"La Altnivela Linuksa Sona Arkitekturo (ALSA) provizas sonan kaj\n" +"MIDI-an funkciojn por linuks-surbazita operaci-sistemo." + +#: gnu/packages/linux.scm:659 +msgid "Utilities for the Advanced Linux Sound Architecture (ALSA)" +msgstr "Utilaĵoj por la Altnivela Linuksa Sona Arkitekturo (ALSA)" + +#: gnu/packages/linux.scm:683 +msgid "Program to configure the Linux IP packet filtering rules" +msgstr "Programo por agordi la IP-pakajn filtrajn regulojn de Linukso" + +#: gnu/packages/linux.scm:685 +msgid "" +"iptables is the userspace command line program used to configure the\n" +"Linux 2.4.x and later IPv4 packet filtering ruleset. It is targeted towards\n" +"system administrators. Since Network Address Translation is also configured\n" +"from the packet filter ruleset, iptables is used for this, too. The iptables\n" +"package also includes ip6tables. ip6tables is used for configuring the IPv6\n" +"packet filter." +msgstr "" + +# # Parou aqui!!!! +#: gnu/packages/linux.scm:733 +msgid "Utilities for controlling TCP/IP networking and traffic in Linux" +msgstr "Utilaĵoj por regi reton TCP/IP kaj trafikon en Linukso" + +#: gnu/packages/linux.scm:735 +msgid "" +"Iproute2 is a collection of utilities for controlling TCP/IP\n" +"networking and traffic with the Linux kernel.\n" +"\n" +"Most network configuration manuals still refer to ifconfig and route as the\n" +"primary network configuration tools, but ifconfig is known to behave\n" +"inadequately in modern network environments. They should be deprecated, but\n" +"most distros still include them. Most network configuration systems make use\n" +"of ifconfig and thus provide a limited feature set. The /etc/net project aims\n" +"to support most modern network technologies, as it doesn't use ifconfig and\n" +"allows a system administrator to make use of all iproute2 features, including\n" +"traffic control.\n" +"\n" +"iproute2 is usually shipped in a package called iproute or iproute2 and\n" +"consists of several tools, of which the most important are ip and tc. ip\n" +"controls IPv4 and IPv6 configuration and tc stands for traffic control. Both\n" +"tools print detailed usage messages and are accompanied by a set of\n" +"manpages." +msgstr "" + +#: gnu/packages/linux.scm:827 +msgid "Tools for controlling the network subsystem in Linux" +msgstr "Iloj por regi la retan subsistemon en Linukso" + +#: gnu/packages/linux.scm:829 +msgid "" +"This package includes the important tools for controlling the network\n" +"subsystem of the Linux kernel. This includes arp, hostname, ifconfig,\n" +"netstat, rarp and route. Additionally, this package contains utilities\n" +"relating to particular network hardware types (plipconfig, slattach) and\n" +"advanced aspects of IP configuration (iptunnel, ipmaddr)." +msgstr "" + +#: gnu/packages/linux.scm:862 +msgid "Library for working with POSIX capabilities" +msgstr "Biblioteko por labori kun kapabloj POSIX" + +#: gnu/packages/linux.scm:864 +msgid "" +"Libcap2 provides a programming interface to POSIX capabilities on\n" +"Linux-based operating systems." +msgstr "" +"Libcap2 provizas program-interfacon por kapabloj POSIX en\n" +"operaciumaj sistemoj bazitaj sur Linukso." + +#: gnu/packages/linux.scm:896 +msgid "Manipulate Ethernet bridges" +msgstr "Manipuli pontojn Ethernet" + +#: gnu/packages/linux.scm:898 +msgid "" +"Utilities for Linux's Ethernet bridging facilities. A bridge is a way\n" +"to connect two Ethernet segments together in a protocol independent way.\n" +"Packets are forwarded based on Ethernet address, rather than IP address (like\n" +"a router). Since forwarding is done at Layer 2, all protocols can go\n" +"transparently through a bridge." +msgstr "" + +#: gnu/packages/linux.scm:920 +msgid "NetLink protocol library suite" +msgstr "Biblioteka programaro por la protokolo NetLink" + +#: gnu/packages/linux.scm:922 +msgid "" +"The libnl suite is a collection of libraries providing APIs to netlink\n" +"protocol based Linux kernel interfaces. Netlink is an IPC mechanism primarly\n" +"between the kernel and user space processes. It was designed to be a more\n" +"flexible successor to ioctl to provide mainly networking related kernel\n" +"configuration and monitoring interfaces." +msgstr "" + +#: gnu/packages/linux.scm:955 +msgid "Analyze power consumption on Intel-based laptops" +msgstr "Analizi konsumon de potenco en tekkomputiloj bazitaj sur Intel" + +#: gnu/packages/linux.scm:957 +msgid "" +"PowerTOP is a Linux tool to diagnose issues with power consumption and\n" +"power management. In addition to being a diagnostic tool, PowerTOP also has\n" +"an interactive mode where the user can experiment various power management\n" +"settings for cases where the operating system has not enabled these\n" +"settings." +msgstr "" + +#: gnu/packages/linux.scm:979 +msgid "Audio mixer for X and the console" +msgstr "Son-miksilo por X kaj la konzolo" + +#: gnu/packages/linux.scm:981 +msgid "" +"Aumix adjusts an audio mixer from X, the console, a terminal,\n" +"the command line or a script." +msgstr "" + +#: gnu/packages/linux.scm:1005 +msgid "Displays the IO activity of running processes" +msgstr "Montri la en/eligan aktivaĵon de rulantaj procezoj" + +#: gnu/packages/linux.scm:1007 +msgid "" +"Iotop is a Python program with a top like user interface to show the\n" +"processes currently causing I/O." +msgstr "" + +#: gnu/packages/linux.scm:1058 +msgid "Support file systems implemented in user space" +msgstr "Subteni dosiersistemojn realigatajn en la uzant-spaco" + +#: gnu/packages/linux.scm:1060 +msgid "" +"As a consequence of its monolithic design, file system code for Linux\n" +"normally goes into the kernel itself---which is not only a robustness issue,\n" +"but also an impediment to system extensibility. FUSE, for \"file systems in\n" +"user space\", is a kernel module and user-space library that tries to address\n" +"part of this problem by allowing users to run file system implementations as\n" +"user-space processes." +msgstr "" + +#: gnu/packages/linux.scm:1085 +msgid "User-space union file system" +msgstr "Uzant-spaca unuiga dosiersistemo" + +#: gnu/packages/linux.scm:1087 +msgid "" +"UnionFS-FUSE is a flexible union file system implementation in user\n" +"space, using the FUSE library. Mounting a union file system allows you to\n" +"\"aggregate\" the contents of several directories into a single mount point.\n" +"UnionFS-FUSE additionally supports copy-on-write." +msgstr "" + +#: gnu/packages/linux.scm:1112 +msgid "User-space union file system (statically linked)" +msgstr "Uzant-spaca unuiga dosiersistemo (statike ligita)" + +#: gnu/packages/linux.scm:1154 +msgid "Mount remote file systems over SSH" +msgstr "Munti demalproksimajn dosiersistemojn per SSH" + +#: gnu/packages/linux.scm:1156 +msgid "" +"This is a file system client based on the SSH File Transfer Protocol.\n" +"Since most SSH servers already support this protocol it is very easy to set\n" +"up: on the server side there's nothing to do; on the client side mounting the\n" +"file system is as easy as logging into the server with an SSH client." +msgstr "" + +#: gnu/packages/linux.scm:1204 +msgid "Tools for non-uniform memory access (NUMA) machines" +msgstr "Iloj por maŝinoj kun ne-kontinua memor-aliro (NUMA)" + +#: gnu/packages/linux.scm:1206 +msgid "" +"NUMA stands for Non-Uniform Memory Access, in other words a system whose\n" +"memory is not all in one place. The numactl program allows you to run your\n" +"application program on specific CPU's and memory nodes. It does this by\n" +"supplying a NUMA memory policy to the operating system before running your\n" +"program.\n" +"\n" +"The package contains other commands, such as numademo, numastat and memhog.\n" +"The numademo command provides a quick overview of NUMA performance on your\n" +"system." +msgstr "" + +#: gnu/packages/linux.scm:1269 +msgid "Linux keyboard utilities and keyboard maps" +msgstr "Linuksaj klavar-utilaĵoj kaj klavar-mapoj" + +#: gnu/packages/linux.scm:1271 +msgid "" +"This package contains keytable files and keyboard utilities compatible\n" +"for systems using the Linux kernel. This includes commands such as\n" +"'loadkeys', 'setfont', 'kbdinfo', and 'chvt'." +msgstr "" + +#: gnu/packages/linux.scm:1290 +msgid "Monitor file accesses" +msgstr "Observi dosier-alirojn" + +#: gnu/packages/linux.scm:1292 +msgid "" +"The inotify-tools packages provides a C library and command-line tools\n" +"to use Linux' inotify mechanism, which allows file accesses to be monitored." +msgstr "" + +#: gnu/packages/linux.scm:1330 +msgid "Kernel module tools" +msgstr "Iloj por kerno-moduloj" + +#: gnu/packages/linux.scm:1331 +msgid "" +"Kmod is a set of tools to handle common tasks with Linux\n" +"kernel modules like insert, remove, list, check properties, resolve\n" +"dependencies and aliases.\n" +"\n" +"These tools are designed on top of libkmod, a library that is shipped with\n" +"kmod. The aim is to be compatible with tools, configurations and indices\n" +"from the module-init-tools project." +msgstr "" + +#: gnu/packages/linux.scm:1380 +msgid "Userspace device management" +msgstr "Administro de uzant-spaca aparato" + +#: gnu/packages/linux.scm:1381 +msgid "" +"Udev is a daemon which dynamically creates and removes\n" +"device nodes from /dev/, handles hotplug events and loads drivers at boot\n" +"time." +msgstr "" + +#: gnu/packages/linux.scm:1470 +msgid "Logical volume management for Linux" +msgstr "Administro de logika volumo por Linukso" + +#: gnu/packages/linux.scm:1472 +msgid "" +"LVM2 is the logical volume management tool set for Linux-based systems.\n" +"This package includes the user-space libraries and tools, including the device\n" +"mapper. Kernel components are part of Linux-libre." +msgstr "" + +#: gnu/packages/linux.scm:1499 +msgid "Tools for manipulating Linux Wireless Extensions" +msgstr "Iloj por manipuli linuksan \"Wireless Extensions\"" + +#: gnu/packages/linux.scm:1500 +msgid "" +"Wireless Tools are used to manipulate the Linux Wireless\n" +"Extensions. The Wireless Extension is an interface allowing you to set\n" +"Wireless LAN specific parameters and get the specific stats." +msgstr "" + +#: gnu/packages/linux.scm:1572 +msgid "Utilities to read temperature/voltage/fan sensors" +msgstr "Utilaĵoj por legi temperaturan/tensian/ventolilan sensilojn" + +#: gnu/packages/linux.scm:1574 +msgid "" +"Lm-sensors is a hardware health monitoring package for Linux. It allows\n" +"you to access information from temperature, voltage, and fan speed sensors.\n" +"It works with most newer systems." +msgstr "" + +#: gnu/packages/linux.scm:1609 +msgid "Hardware health information viewer" +msgstr "Montrilo de informoj pri la aparatara sano" + +#: gnu/packages/linux.scm:1611 +msgid "" +"Xsensors reads data from the libsensors library regarding hardware\n" +"health such as temperature, voltage and fan speed and displays the information\n" +"in a digital read-out." +msgstr "" + +#: gnu/packages/linux.scm:1654 +msgid "Linux profiling with performance counters" +msgstr "Linuksa trajt-esplorado kun rendiment-akumuliloj" + +#: gnu/packages/linux.scm:1656 +msgid "" +"perf is a tool suite for profiling using hardware performance counters,\n" +"with support in the Linux kernel. perf can instrument CPU performance\n" +"counters, tracepoints, kprobes, and uprobes (dynamic tracing). It is capable\n" +"of lightweight profiling. This package contains the user-land tools and in\n" +"particular the 'perf' command." +msgstr "" + #: gnu/packages/lout.scm:109 -msgid "Lout, a document layout system similar in style to LaTeX" -msgstr "Lout, dokument-aranĝa sistemo simila al LaTeX, laŭ stilo" +msgid "Document layout system" +msgstr "Dokument-aranĵa sistemo" #: gnu/packages/lout.scm:111 msgid "" -"The Lout document formatting system is now reads a high-level description of\n" +"The Lout document formatting system reads a high-level description of\n" "a document similar in style to LaTeX and produces a PostScript or plain text\n" "output file.\n" "\n" @@ -325,15 +995,292 @@ msgid "" "beginning." msgstr "" -#: gnu/packages/recutils.scm:58 -msgid "Manipulate plain text files as databases" -msgstr "Manipuli simplajn tekst-dosierojn kiel datumbazojn" +#: gnu/packages/mpd.scm:62 +msgid "Music Player Daemon client library" +msgstr "Klienta biblioteko por \"Music Player Daemon\"" -#: gnu/packages/recutils.scm:60 +#: gnu/packages/mpd.scm:63 msgid "" -"GNU Recutils is a set of tools and libraries for creating and\n" -"manipulating text-based, human-editable databases. Despite being text-based,\n" -"databases created with Recutils carry all of the expected features such as\n" -"unique fields, primary keys, time stamps and more. Many different field types\n" -"are supported, as is encryption." +"A stable, documented, asynchronous API library for\n" +"interfacing MPD in the C, C++ & Objective C languages." +msgstr "" + +#: gnu/packages/mpd.scm:121 +msgid "Music Player Daemon" +msgstr "Music Player Daemon (muzik-ludila demono)" + +#: gnu/packages/mpd.scm:122 +msgid "" +"Music Player Daemon (MPD) is a flexible, powerful,\n" +"server-side application for playing music. Through plugins and libraries it\n" +"can play a variety of sound files while being controlled by its network\n" +"protocol." +msgstr "" + +#: gnu/packages/mpd.scm:147 +msgid "Curses Music Player Daemon client" +msgstr "Kliento por \"Curses Music Player Daemon\"" + +#: gnu/packages/mpd.scm:148 +msgid "" +"ncmpc is a fully featured MPD client, which runs in a\n" +"terminal using ncurses." +msgstr "" + +#: gnu/packages/mpd.scm:169 +msgid "Featureful ncurses based MPD client inspired by ncmpc" +msgstr "Riĉa MPD-kliento bazita sur ncurses kaj inspirita de ncmpc" + +#: gnu/packages/mpd.scm:170 +msgid "" +"Ncmpcpp is an mpd client with a UI very similar to ncmpc,\n" +"but it provides new useful features such as support for regular expressions\n" +"for library searches, extended song format, items filtering, the ability to\n" +"sort playlists, and a local filesystem browser." +msgstr "" + +#: gnu/packages/pdf.scm:79 +msgid "PDF rendering library" +msgstr "PDF-bildiga biblioteko" + +#: gnu/packages/pdf.scm:81 +msgid "Poppler is a PDF rendering library based on the xpdf-3.0 code base." +msgstr "Poppler estas PDF-bildiga biblioteko bazita sur la kodum-bazo de xpdf-3.0" + +#: gnu/packages/pdf.scm:124 +msgid "Viewer for PDF files based on the Motif toolkit" +msgstr "Montrilo por PDF-dosieroj bazitaj sur la ilaro Motif" + +#: gnu/packages/pdf.scm:126 +msgid "Xpdf is a viewer for Portable Document Format (PDF) files" +msgstr "Xpdf estas montrilo por dosieroj PDF (portebla dokument-formo)" + +#: gnu/packages/pdf.scm:154 +msgid "Tools to work with the PDF file format" +msgstr "Iloj por labori kun la PDF dosierformo" + +#: gnu/packages/pdf.scm:156 +msgid "" +"PoDoFo is a C++ library and set of command-line tools to work with the\n" +"PDF file format. It can parse PDF files and load them into memory, and makes\n" +"it easy to modify them and write the changes to disk. It is primarily useful\n" +"for applications that wish to do lower level manipulation of PDF, such as\n" +"extracting content or merging files." msgstr "" + +#: gnu/packages/pdf.scm:217 +msgid "Lightweight PDF viewer and toolkit" +msgstr "Malpeza PDF-montrilo kaj ilaro" + +#: gnu/packages/pdf.scm:219 +msgid "" +"MuPDF is a C library that implements a PDF and XPS parsing and\n" +"rendering engine. It is used primarily to render pages into bitmaps,\n" +"but also provides support for other operations such as searching and\n" +"listing the table of contents and hyperlinks.\n" +"\n" +"The library ships with a rudimentary X11 viewer, and a set of command\n" +"line tools for batch rendering (pdfdraw), examining the file structure\n" +"(pdfshow), and rewriting files (pdfclean)." +msgstr "" + +#: gnu/packages/ratpoison.scm:60 +msgid "Simple mouse-free tiling window manager" +msgstr "Simpla mus-libera kaheleca fenestr-administrilo" + +#: gnu/packages/ratpoison.scm:62 +msgid "" +"Ratpoison is a simple window manager with no fat library\n" +"dependencies, no fancy graphics, no window decorations, and no\n" +"rodent dependence. It is largely modelled after GNU Screen which\n" +"has done wonders in the virtual terminal market.\n" +"\n" +"The screen can be split into non-overlapping frames. All windows\n" +"are kept maximized inside their frames to take full advantage of\n" +"your precious screen real estate.\n" +"\n" +"All interaction with the window manager is done through keystrokes.\n" +"Ratpoison has a prefix map to minimize the key clobbering that\n" +"cripples Emacs and other quality pieces of software." +msgstr "" + +#: gnu/packages/scanner.scm:52 +msgid "Raster image scanner library and drivers" +msgstr "Rastruma bild-skanila biblioteko kaj peliloj" + +#: gnu/packages/scanner.scm:53 +msgid "" +"SANE stands for \"Scanner Access Now Easy\" and is an API\n" +"proving access to any raster image scanner hardware (flatbed scanner,\n" +"hand-held scanner, video- and still-cameras, frame-grabbers, etc.). The\n" +"package contains the library and drivers." +msgstr "" + +#: gnu/packages/scheme.scm:126 +msgid "A Scheme implementation with integrated editor and debugger" +msgstr "Realigo de Scheme kun integrita redaktilo kaj erarserĉilo" + +#: gnu/packages/scheme.scm:128 +msgid "" +"GNU/MIT Scheme is an implementation of the Scheme programming\n" +"language. It provides an interpreter, a compiler and a debugger. It also\n" +"features an integrated Emacs-like editor and a large runtime library." +msgstr "" + +#: gnu/packages/scheme.scm:208 +msgid "Efficient Scheme compiler" +msgstr "Efika kompililo Scheme" + +#: gnu/packages/scheme.scm:210 +msgid "" +"Bigloo is a Scheme implementation devoted to one goal: enabling\n" +"Scheme based programming style where C(++) is usually\n" +"required. Bigloo attempts to make Scheme practical by offering\n" +"features usually presented by traditional programming languages\n" +"but not offered by Scheme and functional programming. Bigloo\n" +"compiles Scheme modules. It delivers small and fast stand alone\n" +"binary executables. Bigloo enables full connections between\n" +"Scheme and C programs and between Scheme and Java programs." +msgstr "" + +#: gnu/packages/scheme.scm:281 +msgid "Multi-tier programming language for the Web 2.0" +msgstr "Plurtavola programlingvo por la Web 2.0" + +#: gnu/packages/scheme.scm:283 +msgid "" +"HOP is a multi-tier programming language for the Web 2.0 and the\n" +"so-called diffuse Web. It is designed for programming interactive web\n" +"applications in many fields such as multimedia (web galleries, music players,\n" +"...), ubiquitous and house automation (SmartPhones, personal appliance),\n" +"mashups, office (web agendas, mail clients, ...), etc." +msgstr "" + +#: gnu/packages/scheme.scm:323 +msgid "R5RS Scheme implementation that compiles native code via C" +msgstr "Realigo R5RS de Scheme kiu kompilas originalan kodumaron per C" + +#: gnu/packages/scheme.scm:325 +msgid "" +"CHICKEN is a compiler for the Scheme programming language. CHICKEN\n" +"produces portable and efficient C, supports almost all of the R5RS Scheme\n" +"language standard, and includes many enhancements and extensions." +msgstr "" + +#: gnu/packages/scheme.scm:344 +msgid "Scheme implementation using a bytecode interpreter" +msgstr "Realigo de Scheme, kiu uzas bajtkodan interpretilon" + +#: gnu/packages/scheme.scm:346 +msgid "" +"Scheme 48 is an implementation of Scheme based on a byte-code\n" +"interpreter and is designed to be used as a testbed for experiments in\n" +"implementation techniques and as an expository tool." +msgstr "" + +#: gnu/packages/scheme.scm:419 +msgid "Implementation of Scheme and related languages" +msgstr "Realigo de Scheme kaj rilataj program-lingvoj" + +#: gnu/packages/scheme.scm:421 +msgid "" +"Racket is an implementation of the Scheme programming language (R5RS and\n" +"R6RS) and related languages, such as Typed Racket. It features a compiler and\n" +"a virtual machine with just-in-time native compilation, as well as a large set\n" +"of libraries." +msgstr "" + +#: gnu/packages/wordnet.scm:79 +msgid "Lexical database for the English language" +msgstr "Leksika datumbazo por la angla lingvo" + +#: gnu/packages/wordnet.scm:81 +msgid "" +"WordNet® is a large lexical database of English. Nouns, verbs,\n" +"adjectives and adverbs are grouped into sets of cognitive synonyms\n" +"(synsets), each expressing a distinct concept. Synsets are interlinked by\n" +"means of conceptual-semantic and lexical relations. The resulting network of\n" +"meaningfully related words and concepts can be navigated with the browser.\n" +"WordNet is also freely and publicly available for download. WordNet's\n" +"structure makes it a useful tool for computational linguistics and natural\n" +"language processing." +msgstr "" + +#: gnu/packages/zip.scm:56 +msgid "Compression and file packing utility" +msgstr "Utilaĵo por densigi kaj pakigi dosierojn" + +#: gnu/packages/zip.scm:58 +msgid "" +"Zip is a compression and file packaging/archive utility. Zip is useful\n" +"for packaging a set of files for distribution, for archiving files, and for\n" +"saving disk space by temporarily compressing unused files or directories.\n" +"Zip puts one or more compressed files into a single ZIP archive, along with\n" +"information about the files (name, path, date, time of last modification,\n" +"protection, and check information to verify file integrity). An entire\n" +"directory structure can be packed into a ZIP archive with a single command.\n" +"\n" +"Zip has one compression method (deflation) and can also store files without\n" +"compression. Zip automatically chooses the better of the two for each file.\n" +"Compression ratios of 2:1 to 3:1 are common for text files." +msgstr "" + +#: gnu/packages/zip.scm:98 +msgid "Decompression and file extraction utility" +msgstr "Utilaĵo por maldensigi kaj malpakigi dosierojn" + +#: gnu/packages/zip.scm:100 +msgid "" +"UnZip is an extraction utility for archives compressed in .zip format,\n" +"also called \"zipfiles\".\n" +"\n" +"UnZip lists, tests, or extracts files from a .zip archive. The default\n" +"behaviour (with no options) is to extract into the current directory, and\n" +"subdirectories below it, all files from the specified zipfile. UnZip\n" +"recreates the stored directory structure by default." +msgstr "" + +#: gnu/packages/zip.scm:134 +msgid "Library for accessing zip files" +msgstr "Biblioteko por aliri zip-dosierojn" + +#: gnu/packages/zip.scm:136 +msgid "ZZipLib is a library based on zlib for accessing zip files." +msgstr "ZZipLib estas biblioteko bazita sur zlib por aliri zip-dosierojn." + +#: gnu/packages/zip.scm:154 +msgid "Provides an interface to ZIP archive files" +msgstr "Provizas interfacon por arĥiv-dosierojn ZIP" + +#: gnu/packages/zip.scm:155 +msgid "" +"The Archive::Zip module allows a Perl program to create,\n" +"manipulate, read, and write Zip archive files." +msgstr "" +"La modulo Archive::Zip ebligas al Perl-programo krei,\n" +"manipuli, legi, kaj skribi arĥiv-dosierojn ZIP." + +#: gnu/packages/zsh.scm:63 +msgid "Powerful shell for interactive use and scripting" +msgstr "Potenca ŝelo por interaga uzo kaj por skriptoj" + +#: gnu/packages/zsh.scm:64 +msgid "" +"The Z shell (zsh) is a Unix shell that can be used\n" +"as an interactive login shell and as a powerful command interpreter\n" +"for shell scripting. Zsh can be thought of as an extended Bourne shell\n" +"with a large number of improvements, including some features of bash,\n" +"ksh, and tcsh." +msgstr "" + +#~ msgid "GNU C++ standard library (intermediate)" +#~ msgstr "GNU C++ norma biblioteko (intermeza)" + +#~ msgid "The linker wrapper" +#~ msgstr "La ligila ĉirkaŭanto" + +#~ msgid "Complete GCC tool chain for C/C++ development" +#~ msgstr "Kompleta ilaro GCC por kodumado en C/C++" + +#~ msgid "Lout, a document layout system similar in style to LaTeX" +#~ msgstr "Lout, dokument-aranĝa sistemo simila al LaTeX, laŭ stilo" -- cgit v1.2.3 From 0b6af195fe7476a15e498b24c67f9d8f6080a400 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 9 Jan 2015 23:33:42 +0100 Subject: derivations: Add 'derivation-output-names'. * guix/derivations.scm (derivation-output-names): New procedure. (derivation-prerequisites-to-build): Use it for #:outputs. (map-derivation): Likewise. * tests/derivations.scm ("derivation-output-names"): New test. --- guix/derivations.scm | 13 +++++++++---- tests/derivations.scm | 10 +++++++++- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/guix/derivations.scm b/guix/derivations.scm index 69cef1a4cd..5e96d9fa3c 100644 --- a/guix/derivations.scm +++ b/guix/derivations.scm @@ -58,6 +58,7 @@ (define-module (guix derivations) derivation-input-output-paths derivation-name + derivation-output-names fixed-output-derivation? offloadable-derivation? substitutable-derivation? @@ -135,6 +136,12 @@ (define (derivation-name drv) (let ((base (store-path-package-name (derivation-file-name drv)))) (string-drop-right base 4))) +(define (derivation-output-names drv) + "Return the names of the outputs of DRV." + (match (derivation-outputs drv) + (((names . _) ...) + names))) + (define (fixed-output-derivation? drv) "Return #t if DRV is a fixed-output derivation, such as the result of a download with a fixed hash (aka. `fetchurl')." @@ -180,9 +187,7 @@ (define substitutable-derivation? (define* (derivation-prerequisites-to-build store drv #:key (outputs - (map - car - (derivation-outputs drv))) + (derivation-output-names drv)) (use-substitutes? #t)) "Return two values: the list of derivation-inputs required to build the OUTPUTS of DRV and not already available in STORE, recursively, and the list @@ -844,7 +849,7 @@ (define rewritten-input replacements)))) (derivation-builder-environment-vars drv)) #:inputs (append (map list sources) inputs) - #:outputs (map car (derivation-outputs drv)) + #:outputs (derivation-output-names drv) #:hash (match (derivation-outputs drv) ((($ _ algo hash)) hash) diff --git a/tests/derivations.scm b/tests/derivations.scm index 4b36758c25..25e6f75657 100644 --- a/tests/derivations.scm +++ b/tests/derivations.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. ;;; @@ -178,6 +178,14 @@ (define prefix-len (string-length dir)) (let ((drv (derivation %store "foo-0.0" %bash '()))) (derivation-name drv))) +(test-equal "derivation-output-names" + '(("out") ("bar" "chbouib")) + (let ((drv1 (derivation %store "foo-0.0" %bash '())) + (drv2 (derivation %store "foo-0.0" %bash '() + #:outputs '("bar" "chbouib")))) + (list (derivation-output-names drv1) + (derivation-output-names drv2)))) + (test-assert "offloadable-derivation?" (and (offloadable-derivation? (derivation %store "foo" %bash '())) (not (offloadable-derivation? -- cgit v1.2.3 From e9651e39b315035eb9e87888155f8d6e33ef0567 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 10 Jan 2015 00:39:59 +0100 Subject: derivations: Add 'substitution-oracle' and use it. This makes 'guix environment PACKAGE' significantly faster when substitutes are enabled. Before that, it would lead to many invocations of 'guix substitute-binary', one per 'derivation-prerequisites-to-build' call. Now, all these are replaced by a single invocation. * guix/derivations.scm (derivation-output-paths, substitution-oracle): New procedures. (derivation-prerequisites-to-build): Replace #:use-substitutes? with #:substitutable?. Remove the local 'derivation-output-paths' and 'substitutable?'. * guix/ui.scm (show-what-to-build): Add 'substitutable?'. Pass it to 'derivation-prerequisites-to-build'. [built-or-substitutable?]: Use it instead of 'has-substitutes?'. * tests/derivations.scm ("derivation-prerequisites-to-build and substitutes"): Use #:substitutable? instead of #:use-substitutes?. --- guix/derivations.scm | 64 +++++++++++++++++++++++++++++++-------------------- guix/ui.scm | 16 +++++++++---- tests/derivations.scm | 3 ++- 3 files changed, 52 insertions(+), 31 deletions(-) diff --git a/guix/derivations.scm b/guix/derivations.scm index 5e96d9fa3c..ec438e833c 100644 --- a/guix/derivations.scm +++ b/guix/derivations.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. ;;; @@ -62,6 +62,7 @@ (define-module (guix derivations) fixed-output-derivation? offloadable-derivation? substitutable-derivation? + substitution-oracle derivation-hash read-derivation @@ -184,39 +185,52 @@ (define substitutable-derivation? ;; synonymous, see . offloadable-derivation?) +(define (derivation-output-paths drv sub-drvs) + "Return the output paths of outputs SUB-DRVS of DRV." + (match drv + (($ outputs) + (map (lambda (sub-drv) + (derivation-output-path (assoc-ref outputs sub-drv))) + sub-drvs)))) + +(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. + +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." + (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))) + '() + drv))) + (subst (substitutable-paths store paths))) + (cut member <> subst))) + (define* (derivation-prerequisites-to-build store drv #:key (outputs (derivation-output-names drv)) - (use-substitutes? #t)) + (substitutable? + (substitution-oracle store + (list drv)))) "Return two values: the list of derivation-inputs required to build the OUTPUTS of DRV and not already available in STORE, recursively, and the list -of required store paths that can be substituted. When USE-SUBSTITUTES? is #f, -that second value is the empty list." - (define (derivation-output-paths drv sub-drvs) - (match drv - (($ outputs) - (map (lambda (sub-drv) - (derivation-output-path (assoc-ref outputs sub-drv))) - sub-drvs)))) - +of required store paths that can be substituted. SUBSTITUTABLE? must be a +one-argument procedure similar to that returned by 'substitution-oracle'." (define built? (cut valid-path? store <>)) - (define substitutable? - ;; Return true if the given path is substitutable. Call - ;; `substitutable-paths' upfront, to benefit from parallelism in the - ;; substituter. - (if use-substitutes? - (let ((s (substitutable-paths store - (append - (derivation-output-paths drv outputs) - (append-map - derivation-input-output-paths - (derivation-prerequisites drv)))))) - (cut member <> s)) - (const #f))) - (define input-built? (compose (cut any built? <>) derivation-input-output-paths)) diff --git a/guix/ui.scm b/guix/ui.scm index c77e04172e..5bd4d1f8c2 100644 --- a/guix/ui.scm +++ b/guix/ui.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 © 2013 Mark H Weaver ;;; Copyright © 2013 Nikita Karetnikov ;;; Copyright © 2014 Alex Kost @@ -299,21 +299,27 @@ (define* (show-what-to-build store drv derivations listed in DRV. Return #t if there's something to build, #f otherwise. When USE-SUBSTITUTES?, check and report what is prerequisites are available for download." + (define substitutable? + ;; Call 'substitutation-oracle' upfront so we don't end up launching the + ;; substituter many times. This makes a big difference, especially when + ;; DRV is a long list as is the case with 'guix environment'. + (if use-substitutes? + (substitution-oracle store drv) + (const #f))) + (define (built-or-substitutable? drv) (let ((out (derivation->output-path drv))) ;; If DRV has zero outputs, OUT is #f. (or (not out) (or (valid-path? store out) - (and use-substitutes? - (has-substitutes? store out)))))) + (substitutable? out))))) (let*-values (((build download) (fold2 (lambda (drv build download) (let-values (((b d) (derivation-prerequisites-to-build store drv - #:use-substitutes? - use-substitutes?))) + #:substitutable? substitutable?))) (values (append b build) (append d download)))) '() '() diff --git a/tests/derivations.scm b/tests/derivations.scm index 25e6f75657..8e592ab6a1 100644 --- a/tests/derivations.scm +++ b/tests/derivations.scm @@ -589,7 +589,8 @@ (define %coreutils (derivation-prerequisites-to-build store drv)) ((build* download*) (derivation-prerequisites-to-build store drv - #:use-substitutes? #f))) + #:substitutable? + (const #f)))) (and (null? build) (equal? download (list output)) (null? download*) -- cgit v1.2.3 From c2d9355c369975c22f50c7f782c7e8fad8d89ab6 Mon Sep 17 00:00:00 2001 From: Jason Self Date: Fri, 9 Jan 2015 21:19:43 -0800 Subject: gnu: linux-libre: Update to 3.18.2 * gnu/packages/linux.scm (linux-libre): Update to version 3.18.2. --- 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 a2708a290f..6e5aaa1634 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -192,7 +192,7 @@ (define (lookup file) #f))) (define-public linux-libre - (let* ((version "3.18.1") + (let* ((version "3.18.2") (build-phase '(lambda* (#:key system inputs #:allow-other-keys #:rest args) ;; Apply the neat patch. @@ -265,7 +265,7 @@ (define-public linux-libre (uri (linux-libre-urls version)) (sha256 (base32 - "0yj6sz9cvsbhrc9jksr4wgg63crzmqh65903l7bq9k0gz1f3x1s8")))) + "0wji58x0zci13a499v6kbz3pyhs2gk6wsbv3fia8valxgbcppyhp")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) ("bc" ,bc) -- cgit v1.2.3 From 4923e06f2168632d1ef40bfcd1b36a43de85e561 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 11 Jan 2015 09:29:10 +0800 Subject: gnu: Move mozjs and nspr to (gnu packages gnuzilla). * gnu/packages/polkit.scm (mozjs, nspr): Move to... * gnu/packages/gnuzilla.scm (mozjs, nspr): ... here. New variables. --- gnu/packages/gnuzilla.scm | 72 +++++++++++++++++++++++++++++++++++++++++++++ gnu/packages/polkit.scm | 75 ++--------------------------------------------- 2 files changed, 74 insertions(+), 73 deletions(-) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 3ebc20dffa..a60ff76298 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -42,6 +42,78 @@ (define-module (gnu packages gnuzilla) #:use-module (gnu packages yasm) #:use-module (gnu packages zip)) +(define-public mozjs + (package + (name "mozjs") + (version "17.0.0") + (source (origin + (method url-fetch) + (uri (string-append + "https://ftp.mozilla.org/pub/mozilla.org/js/" + name version ".tar.gz")) + (sha256 + (base32 + "1fig2wf4f10v43mqx67y68z6h77sy900d1w0pz9qarrqx57rc7ij")))) + (build-system gnu-build-system) + (native-inputs + `(("perl", perl) + ("python" ,python-2))) + (arguments + `(#:phases + (alist-cons-before + 'configure 'chdir + (lambda _ + (chdir "js/src")) + (alist-replace + 'configure + ;; configure fails if it is followed by SHELL and CONFIG_SHELL + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (setenv "SHELL" (which "sh")) + (setenv "CONFIG_SHELL" (which "sh")) + (zero? (system* + "./configure" (string-append "--prefix=" out))))) + %standard-phases)))) + (home-page + "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey") + (synopsis "Mozilla javascript engine") + (description "SpiderMonkey is Mozilla's JavaScript engine written +in C/C++.") + (license license:mpl2.0))) ; and others for some files + +(define-public nspr + (package + (name "nspr") + (version "4.10.7") + (source (origin + (method url-fetch) + (uri (string-append + "https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v" + version "/src/nspr-" version ".tar.gz")) + (sha256 + (base32 + "0f1ri51yzjikigf6z31g03cdv6sgi9gw2c3vvv39psk3m37zb6iq")))) + (build-system gnu-build-system) + (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))) + (home-page + "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR") + (synopsis "Netscape API for system level and libc-like functions") + (description "Netscape Portable Runtime (NSPR) provides a +platform-neutral API for system level and libc-like functions. It is used +in the Mozilla clients.") + (license license:mpl2.0))) + (define-public icecat (package (name "icecat") diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm index 2be1d0b425..572d52404b 100644 --- a/gnu/packages/polkit.scm +++ b/gnu/packages/polkit.scm @@ -17,13 +17,14 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages polkit) - #:use-module ((guix licenses) #:select (lgpl2.0+ mpl2.0)) + #:use-module ((guix licenses) #:select (lgpl2.0+)) #: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 glib) + #:use-module (gnu packages gnuzilla) #:use-module (gnu packages linux) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -31,78 +32,6 @@ (define-module (gnu packages polkit) #:use-module (gnu packages qt) #:use-module (gnu packages xml)) -(define-public mozjs - (package - (name "mozjs") - (version "17.0.0") - (source (origin - (method url-fetch) - (uri (string-append - "https://ftp.mozilla.org/pub/mozilla.org/js/" - name version ".tar.gz")) - (sha256 - (base32 - "1fig2wf4f10v43mqx67y68z6h77sy900d1w0pz9qarrqx57rc7ij")))) - (build-system gnu-build-system) - (native-inputs - `(("perl", perl) - ("python" ,python-2))) - (arguments - `(#:phases - (alist-cons-before - 'configure 'chdir - (lambda _ - (chdir "js/src")) - (alist-replace - 'configure - ;; configure fails if it is followed by SHELL and CONFIG_SHELL - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (setenv "SHELL" (which "sh")) - (setenv "CONFIG_SHELL" (which "sh")) - (zero? (system* - "./configure" (string-append "--prefix=" out))))) - %standard-phases)))) - (home-page - "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey") - (synopsis "Mozilla javascript engine") - (description "SpiderMonkey is Mozilla's JavaScript engine written -in C/C++.") - (license mpl2.0))) ; and others for some files - -(define-public nspr - (package - (name "nspr") - (version "4.10.7") - (source (origin - (method url-fetch) - (uri (string-append - "https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v" - version "/src/nspr-" version ".tar.gz")) - (sha256 - (base32 - "0f1ri51yzjikigf6z31g03cdv6sgi9gw2c3vvv39psk3m37zb6iq")))) - (build-system gnu-build-system) - (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))) - (home-page - "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR") - (synopsis "Netscape API for system level and libc-like functions") - (description "Netscape Portable Runtime (NSPR) provides a -platform-neutral API for system level and libc-like functions. It is used -in the Mozilla clients.") - (license mpl2.0))) - (define-public polkit (package (name "polkit") -- cgit v1.2.3 From 1aaaff1a7b09d6cf30ebe82a80712f53b6e20d09 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 6 Jan 2015 23:57:31 +0800 Subject: gnu: Add nss. * gnu/packages/patches/nss-pkgconfig.patch: New file. * gnu-system.scm (dist_patch_DATA): Add it. * gnu/packages/gnuzilla.scm (nss): New variable. --- gnu-system.am | 1 + gnu/packages/gnuzilla.scm | 96 +++++++++++++ gnu/packages/patches/nss-pkgconfig.patch | 225 +++++++++++++++++++++++++++++++ 3 files changed, 322 insertions(+) create mode 100644 gnu/packages/patches/nss-pkgconfig.patch diff --git a/gnu-system.am b/gnu-system.am index 4086067b15..6453268623 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -422,6 +422,7 @@ dist_patch_DATA = \ gnu/packages/patches/mupdf-buildsystem-fix.patch \ gnu/packages/patches/mutt-CVE-2014-9116.patch \ gnu/packages/patches/net-tools-bitrot.patch \ + gnu/packages/patches/nss-pkgconfig.patch \ gnu/packages/patches/nvi-assume-preserve-path.patch \ gnu/packages/patches/orpheus-cast-errors-and-includes.patch \ gnu/packages/patches/ots-no-include-missing-file.patch \ diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index a60ff76298..8e397464ac 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2013, 2014 Ludovic Courtès ;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2015 Sou Bunnbu ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,6 +25,7 @@ (define-module (gnu packages gnuzilla) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) + #:use-module (gnu packages databases) #:use-module (gnu packages glib) #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) @@ -114,6 +116,100 @@ (define-public nspr in the Mozilla clients.") (license license:mpl2.0))) +(define-public nss + (package + (name "nss") + (version "3.17.3") + (source (origin + (method url-fetch) + (uri (string-append + "ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/" + "releases/NSS_3_17_3_RTM/src/nss-3.17.3.tar.gz")) + (sha256 + (base32 + "1m91z80x4zh1mxgf53bl33lp43gn1wxxx0y26mgz511gb81ykmgl")) + ;; Create nss.pc and nss-config. + (patches (list (search-patch "nss-pkgconfig.patch"))))) + (build-system gnu-build-system) + (outputs '("out" "bin")) + (arguments + '(#:parallel-build? #f ; failed + #:make-flags + (let* ((out (assoc-ref %outputs "out")) + (nspr (string-append (assoc-ref %build-inputs "nspr"))) + (rpath (string-append "-Wl,-rpath=" out "/lib/nss"))) + (list "-C" "nss" (string-append "PREFIX=" out) + "NSDISTMODE=copy" + "NSS_USE_SYSTEM_SQLITE=1" + (string-append "NSPR_INCLUDE_DIR=" nspr "/include/nspr") + ;; Add $out/lib/nss to RPATH. + (string-append "RPATH=" rpath) + (string-append "LDFLAGS=" rpath))) + #:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 ftw) + (ice-9 match) + (srfi srfi-26)) + #:imported-modules ((guix build gnu-build-system) + (guix build utils)) + #:phases + (alist-replace + 'configure + (lambda* (#:key system inputs #:allow-other-keys) + ;; Tells NSS to build for the 64-bit ABI if we are 64-bit system. + (when (string-prefix? "x86_64" system) + (setenv "USE_64" "1")) + #t) + (alist-replace + 'check + (lambda _ + ;; Use 127.0.0.1 instead of $HOST.$DOMSUF as HOSTADDR for testing. + ;; The later requires a working DNS or /etc/hosts. + (setenv "DOMSUF" "(none)") + (setenv "USE_IP" "TRUE") + (setenv "IP_ADDRESS" "127.0.0.1") + (zero? (system* "./nss/tests/all.sh"))) + (alist-replace + 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append (assoc-ref outputs "bin") "/bin")) + (inc (string-append out "/include/nss")) + (lib (string-append out "/lib/nss")) + (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>)) + ((obj) (string-append "dist/" obj))))) + ;; Install nss-config to $out/bin. + (mkdir-p (string-append out "/bin")) + (copy-file (string-append obj "/bin/nss-config") + (string-append out "/bin/nss-config")) + (delete-file (string-append obj "/bin/nss-config")) + ;; Install nss.pc to $out/lib/pkgconfig. + (mkdir-p (string-append out "/lib/pkgconfig")) + (copy-file (string-append obj "/lib/pkgconfig/nss.pc") + (string-append out "/lib/pkgconfig/nss.pc")) + (delete-file (string-append obj "/lib/pkgconfig/nss.pc")) + (rmdir (string-append obj "/lib/pkgconfig")) + ;; Install other files. + (copy-recursively "dist/public/nss" inc) + (copy-recursively (string-append obj "/bin") bin) + (copy-recursively (string-append obj "/lib") lib))) + %standard-phases))))) + (inputs + `(("sqlite" ,sqlite) + ("zlib" ,zlib))) + (propagated-inputs `(("nspr" ,nspr))) ; required by nss.pc. + (native-inputs `(("perl" ,perl))) + (home-page + "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS") + (synopsis "Network Security Services") + (description + "Network Security Services (NSS) is a set of libraries designed to support +cross-platform development of security-enabled client and server applications. +Applications built with NSS can support SSL v2 and v3, TLS, PKCS #5, PKCS #7, +PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security +standards.") + (license license:mpl2.0))) + (define-public icecat (package (name "icecat") diff --git a/gnu/packages/patches/nss-pkgconfig.patch b/gnu/packages/patches/nss-pkgconfig.patch new file mode 100644 index 0000000000..da5c48979e --- /dev/null +++ b/gnu/packages/patches/nss-pkgconfig.patch @@ -0,0 +1,225 @@ +Description: Create nss.pc and nss-config +Author: Lars Wendler +Source: http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/nss/files/nss-3.17.1-gentoo-fixups.patch + +Modifications: + Change libdir from ${prefix}/lib64 to ${prefix}/lib/nss. + Remove optional patching in nss/Makefile. + +--- nss-3.17.1/nss/config/Makefile ++++ nss-3.17.1/nss/config/Makefile +@@ -0,0 +1,40 @@ ++CORE_DEPTH = .. ++DEPTH = .. ++ ++include $(CORE_DEPTH)/coreconf/config.mk ++ ++NSS_MAJOR_VERSION = `grep "NSS_VMAJOR" ../lib/nss/nss.h | awk '{print $$3}'` ++NSS_MINOR_VERSION = `grep "NSS_VMINOR" ../lib/nss/nss.h | awk '{print $$3}'` ++NSS_PATCH_VERSION = `grep "NSS_VPATCH" ../lib/nss/nss.h | awk '{print $$3}'` ++PREFIX = /usr ++ ++all: export libs ++ ++export: ++ # Create the nss.pc file ++ mkdir -p $(DIST)/lib/pkgconfig ++ sed -e "s,@prefix@,$(PREFIX)," \ ++ -e "s,@exec_prefix@,\$${prefix}," \ ++ -e "s,@libdir@,\$${prefix}/lib/nss," \ ++ -e "s,@includedir@,\$${prefix}/include/nss," \ ++ -e "s,@NSS_MAJOR_VERSION@,$(NSS_MAJOR_VERSION),g" \ ++ -e "s,@NSS_MINOR_VERSION@,$(NSS_MINOR_VERSION)," \ ++ -e "s,@NSS_PATCH_VERSION@,$(NSS_PATCH_VERSION)," \ ++ nss.pc.in > nss.pc ++ chmod 0644 nss.pc ++ cp nss.pc $(DIST)/lib/pkgconfig ++ ++ # Create the nss-config script ++ mkdir -p $(DIST)/bin ++ sed -e "s,@prefix@,$(PREFIX)," \ ++ -e "s,@NSS_MAJOR_VERSION@,$(NSS_MAJOR_VERSION)," \ ++ -e "s,@NSS_MINOR_VERSION@,$(NSS_MINOR_VERSION)," \ ++ -e "s,@NSS_PATCH_VERSION@,$(NSS_PATCH_VERSION)," \ ++ nss-config.in > nss-config ++ chmod 0755 nss-config ++ cp nss-config $(DIST)/bin ++ ++libs: ++ ++dummy: all export libs ++ +--- nss-3.17.1/nss/config/nss-config.in ++++ nss-3.17.1/nss/config/nss-config.in +@@ -0,0 +1,145 @@ ++#!/bin/sh ++ ++prefix=@prefix@ ++ ++major_version=@NSS_MAJOR_VERSION@ ++minor_version=@NSS_MINOR_VERSION@ ++patch_version=@NSS_PATCH_VERSION@ ++ ++usage() ++{ ++ cat <&2 ++fi ++ ++lib_ssl=yes ++lib_smime=yes ++lib_nss=yes ++lib_nssutil=yes ++ ++while test $# -gt 0; do ++ case "$1" in ++ -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; ++ *) optarg= ;; ++ esac ++ ++ case $1 in ++ --prefix=*) ++ prefix=$optarg ++ ;; ++ --prefix) ++ echo_prefix=yes ++ ;; ++ --exec-prefix=*) ++ exec_prefix=$optarg ++ ;; ++ --exec-prefix) ++ echo_exec_prefix=yes ++ ;; ++ --includedir=*) ++ includedir=$optarg ++ ;; ++ --includedir) ++ echo_includedir=yes ++ ;; ++ --libdir=*) ++ libdir=$optarg ++ ;; ++ --libdir) ++ echo_libdir=yes ++ ;; ++ --version) ++ echo ${major_version}.${minor_version}.${patch_version} ++ ;; ++ --cflags) ++ echo_cflags=yes ++ ;; ++ --libs) ++ echo_libs=yes ++ ;; ++ ssl) ++ lib_ssl=yes ++ ;; ++ smime) ++ lib_smime=yes ++ ;; ++ nss) ++ lib_nss=yes ++ ;; ++ nssutil) ++ lib_nssutil=yes ++ ;; ++ *) ++ usage 1 1>&2 ++ ;; ++ esac ++ shift ++done ++ ++# Set variables that may be dependent upon other variables ++if test -z "$exec_prefix"; then ++ exec_prefix=`pkg-config --variable=exec_prefix nss` ++fi ++if test -z "$includedir"; then ++ includedir=`pkg-config --variable=includedir nss` ++fi ++if test -z "$libdir"; then ++ libdir=`pkg-config --variable=libdir nss` ++fi ++ ++if test "$echo_prefix" = "yes"; then ++ echo $prefix ++fi ++ ++if test "$echo_exec_prefix" = "yes"; then ++ echo $exec_prefix ++fi ++ ++if test "$echo_includedir" = "yes"; then ++ echo $includedir ++fi ++ ++if test "$echo_libdir" = "yes"; then ++ echo $libdir ++fi ++ ++if test "$echo_cflags" = "yes"; then ++ echo -I$includedir ++fi ++ ++if test "$echo_libs" = "yes"; then ++ libdirs="" ++ if test -n "$lib_ssl"; then ++ libdirs="$libdirs -lssl${major_version}" ++ fi ++ if test -n "$lib_smime"; then ++ libdirs="$libdirs -lsmime${major_version}" ++ fi ++ if test -n "$lib_nss"; then ++ libdirs="$libdirs -lnss${major_version}" ++ fi ++ if test -n "$lib_nssutil"; then ++ libdirs="$libdirs -lnssutil${major_version}" ++ fi ++ echo $libdirs ++fi ++ +--- nss-3.17.1/nss/config/nss.pc.in ++++ nss-3.17.1/nss/config/nss.pc.in +@@ -0,0 +1,12 @@ ++prefix=@prefix@ ++exec_prefix=@exec_prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++Name: NSS ++Description: Network Security Services ++Version: @NSS_MAJOR_VERSION@.@NSS_MINOR_VERSION@.@NSS_PATCH_VERSION@ ++Requires: nspr >= 4.8 ++Libs: -L${libdir} -lssl3 -lsmime3 -lnss3 -lnssutil3 ++Cflags: -I${includedir} ++ +--- nss-3.17.1/nss/manifest.mn ++++ nss-3.17.1/nss/manifest.mn +@@ -10,7 +10,7 @@ + + RELEASE = nss + +-DIRS = coreconf lib cmd ++DIRS = coreconf lib cmd config + + ifdef NSS_BUILD_GTESTS + DIRS += external_tests -- cgit v1.2.3 From cd287ba16211ceec970c5af698e52d475952b183 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Fri, 9 Jan 2015 21:37:30 +0800 Subject: gnu: Add ninja. * gnu/packages/ninja.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/ninja.scm | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 gnu/packages/ninja.scm diff --git a/gnu-system.am b/gnu-system.am index 6453268623..c29b13990b 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -191,6 +191,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/ncurses.scm \ gnu/packages/netpbm.scm \ gnu/packages/nettle.scm \ + gnu/packages/ninja.scm \ gnu/packages/node.scm \ gnu/packages/noweb.scm \ gnu/packages/ntp.scm \ diff --git a/gnu/packages/ninja.scm b/gnu/packages/ninja.scm new file mode 100644 index 0000000000..fe3f955b5d --- /dev/null +++ b/gnu/packages/ninja.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 ninja) + #:use-module ((guix licenses) #:select (asl2.0)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages python)) + +(define-public ninja + (package + (name "ninja") + (version "1.5.3") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/martine/ninja/" + "archive/v" version ".tar.gz")) + (sha256 + (base32 + "1h3yfwcfl61v493vna6jia2fizh8rpig7qw2504cvkr6gid3p5bw")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (alist-replace + 'configure + (lambda _ + (substitute* "src/subprocess-posix.cc" + (("/bin/sh") (which "sh")))) + (alist-replace + 'build + (lambda _ + (zero? (system* "./configure.py" "--bootstrap"))) + (alist-replace + 'check + (lambda _ + (and (zero? (system* "./configure.py")) + (zero? (system* "./ninja" "ninja_test")) + ;; SubprocessTest.SetWithLots fails with: + ;; Raise [ulimit -n] well above 1025 to make this test go. + ;; Skip it. + ;; + ;; SubprocessTest.InterruptChild fails when using 'system*': + ;; *** Failure in src/subprocess_test.cc:83 + ;; ExitInterrupted == subproc->Finish() + ;; Pass it by using 'system' instead of 'system*'. + (zero? (system (string-append + "./ninja_test " + "--gtest_filter=" + "-SubprocessTest.SetWithLots"))))) + (alist-replace + 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (doc (string-append out "/share/doc/ninja"))) + (mkdir-p bin) + (copy-file "ninja" (string-append bin "/ninja")) + (mkdir-p doc) + (copy-file "doc/manual.asciidoc" + (string-append doc "/manual.asciidoc")))) + %standard-phases)))))) + (native-inputs `(("python" ,python-2))) + (home-page "http://martine.github.io/ninja/") + (synopsis "Small build system") + (description + "Ninja is a small build system with a focus on speed. It differs from +other build systems in two major respects: it is designed to have its input +files generated by a higher-level build system, and it is designed to run +builds as fast as possible.") + (license asl2.0))) -- cgit v1.2.3 From 5b490ab52f2cdb1b4cd72c90d460af3666da61f7 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 3 Jan 2015 14:12:01 +0800 Subject: gnu: qt: Update to 5.4.0. * gnu/packages/qt.scm (qt): Update to 5.4.0. [origin]: Add snippet. --- gnu/packages/qt.scm | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 30b772d4d9..42df93321d 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014 Andreas Enge +;;; Copyright © 2015 Sou Bunnbu ;;; ;;; This file is part of GNU Guix. ;;; @@ -81,7 +82,7 @@ (define-public libxkbcommon (define-public qt (package (name "qt") - (version "5.3.2") + (version "5.4.0") (source (origin (method url-fetch) (uri (string-append "http://download.qt-project.org/official_releases/qt/" @@ -91,7 +92,14 @@ (define-public qt version ".tar.xz")) (sha256 (base32 - "1w4v53889kqpwxw45wcqz5bi6zx8xp434jpafk1vlmyb8hrzjnvz")))) + "176351k8ngczb324i8bbkrsz9pby7cvy2qnixfjwybzxp53xzndj")) + (snippet + '(begin + ;; Remove broken symlinks. + (delete-file "qtwebengine/src/3rdparty/chromium/third_party/\ +mesa/src/src/gallium/state_trackers/d3d1x/w32api") + (delete-file "qtwebengine/src/3rdparty/chromium/third_party/\ +webrtc/tools/e2e_quality/audio/perf"))))) (build-system gnu-build-system) (propagated-inputs `(("mesa" ,mesa))) @@ -129,7 +137,9 @@ (define-public qt (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (substitute* '("configure" "qtbase/configure") - (("/bin/pwd") (which "pwd"))) + (("/bin/pwd") (which "pwd"))) + (substitute* "qtbase/src/corelib/global/global.pri" + (("/bin/ls") (which "ls"))) ;; do not pass "--enable-fast-install", which makes the ;; configure process fail (zero? (system* -- cgit v1.2.3 From 0009ed71ad288358cbc7828954b5e1a3f18fd525 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 11 Jan 2015 19:51:51 +0800 Subject: gnu: qt: Add more inputs. * gnu/packages/qt.scm (qt): Add expat, pciutils, libxcomposite, libxcursor, libxfixes, libxinerama, libxml2, libxrandr, libxslt, libxtst, mtdev, nss, pcre, sqlite, eudev to 'inputs'. Add bison, flex, gperf, ninja, python-2, ruby, which to 'native-inputs'. --- gnu/packages/qt.scm | 47 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 42df93321d..0d6bbc8fc6 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -27,19 +27,27 @@ (define-module (gnu packages qt) #:use-module (gnu packages bison) #:use-module (gnu packages compression) #:use-module (gnu packages fontutils) + #:use-module (gnu packages flex) #:use-module (gnu packages gl) #:use-module (gnu packages glib) + #:use-module (gnu packages gnuzilla) + #:use-module (gnu packages gperf) #:use-module (gnu packages icu4c) #:use-module (gnu packages image) #:use-module (gnu packages linux) #:use-module (gnu packages databases) + #:use-module (gnu packages ninja) #:use-module (gnu packages openssl) + #:use-module (gnu packages pciutils) + #:use-module (gnu packages pcre) #: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 ruby) - #:use-module (gnu packages xorg)) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xorg) + #:use-module (gnu packages xml)) (define-public libxkbcommon (package @@ -106,21 +114,34 @@ (define-public qt (inputs `(("alsa-lib" ,alsa-lib) ("dbus" ,dbus) + ("expat" ,expat) ("fontconfig" ,fontconfig) ("freetype" ,freetype) ("glib" ,glib) ("icu4c" ,icu4c) ("libjpeg" ,libjpeg) + ("libpci" ,pciutils) ("libpng" ,libpng) ("libx11" ,libx11) + ("libxcomposite" ,libxcomposite) + ("libxcursor" ,libxcursor) + ("libxfixes" ,libxfixes) ("libxi" ,libxi) + ("libxinerama" ,libxinerama) ("libxkbcommon" ,libxkbcommon) + ("libxml2" ,libxml2) + ("libxrandr" ,libxrandr) ("libxrender" ,libxrender) + ("libxslt" ,libxslt) + ("libxtst" ,libxtst) + ("mtdev" ,mtdev) ("mysql" ,mysql) + ("nss" ,nss) ("openssl" ,openssl) ("pulseaudio" ,pulseaudio) - ("python-wrapper" ,python-wrapper) - ("ruby" ,ruby) + ("pcre" ,pcre) + ("sqlite" ,sqlite) + ("udev" ,eudev) ("xcb-util" ,xcb-util) ("xcb-util-image" ,xcb-util-image) ("xcb-util-keysyms" ,xcb-util-keysyms) @@ -128,8 +149,15 @@ (define-public qt ("xcb-util-wm" ,xcb-util-wm) ("zlib" ,zlib))) (native-inputs - `(("perl" ,perl) - ("pkg-config" ,pkg-config))) + `(("bison" ,bison) + ("flex" ,flex) + ("gperf" ,gperf) + ("ninja" ,ninja) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python-2) + ("ruby" ,ruby) + ("which" ,(@ (gnu packages which) which)))) (arguments `(#:phases (alist-replace @@ -140,6 +168,12 @@ (define-public qt (("/bin/pwd") (which "pwd"))) (substitute* "qtbase/src/corelib/global/global.pri" (("/bin/ls") (which "ls"))) + (substitute* "qtwebengine/src/3rdparty/chromium/build/common.gypi" + (("/bin/echo") (which "echo"))) + (substitute* "qtwebengine/src/3rdparty/chromium/third_party/\ +WebKit/Source/build/scripts/scripts.gypi" + (("/usr/bin/gcc") (which "gcc"))) + (setenv "NINJA_PATH" (which "ninja")) ;; do not pass "--enable-fast-install", which makes the ;; configure process fail (zero? (system* @@ -148,6 +182,9 @@ (define-public qt "-prefix" out "-opensource" "-confirm-license" + "-system-sqlite" + ;; explicitly link with openssl instead of dlopening it + "-openssl-linked" ;; explicitly link with dbus instead of dlopening it "-dbus-linked" ;; drop special machine instructions not supported -- cgit v1.2.3