~ruther/guix-local

77448857311318fc9cd866afcb85ca98fccdb25b — Mark H Weaver 11 years ago 62c155c + 0009ed7
Merge branch 'master' into core-updates
M Makefile.am => Makefile.am +7 -2
@@ 174,10 174,15 @@ SCM_TESTS =					\
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


M doc/guix.texi => doc/guix.texi +20 -4
@@ 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

M gnu-system.am => gnu-system.am +2 -0
@@ 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				\


@@ 422,6 423,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	\

M gnu/packages/gnuzilla.scm => gnu/packages/gnuzilla.scm +168 -0
@@ 2,6 2,7 @@
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 24,6 25,7 @@
  #: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)


@@ 42,6 44,172 @@
  #: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 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")

M gnu/packages/image.scm => gnu/packages/image.scm +19 -6
@@ 2,6 2,7 @@
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;; Copyright © 2014 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 187,16 188,15 @@ work.")
(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.


@@ 217,9 217,22 @@ In addition to the basic codec, various other features are under
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 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")

M gnu/packages/linux.scm => gnu/packages/linux.scm +2 -2
@@ 192,7 192,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
     #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 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
             (uri (linux-libre-urls version))
             (sha256
              (base32
               "0yj6sz9cvsbhrc9jksr4wgg63crzmqh65903l7bq9k0gz1f3x1s8"))))
               "0wji58x0zci13a499v6kbz3pyhs2gk6wsbv3fia8valxgbcppyhp"))))
    (build-system gnu-build-system)
    (native-inputs `(("perl" ,perl)
                     ("bc" ,bc)

A gnu/packages/ninja.scm => gnu/packages/ninja.scm +87 -0
@@ 0,0 1,87 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages 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)))

A gnu/packages/patches/nss-pkgconfig.patch => gnu/packages/patches/nss-pkgconfig.patch +225 -0
@@ 0,0 1,225 @@
Description: Create nss.pc and nss-config
Author: Lars Wendler <polynomial-c@gentoo.org>
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 <<EOF
+Usage: nss-config [OPTIONS] [LIBRARIES]
+Options:
+	[--prefix[=DIR]]
+	[--exec-prefix[=DIR]]
+	[--includedir[=DIR]]
+	[--libdir[=DIR]]
+	[--version]
+	[--libs]
+	[--cflags]
+Dynamic Libraries:
+	nss
+	ssl
+	smime
+	nssutil
+EOF
+	exit $1
+}
+
+if test $# -eq 0; then
+	usage 1 1>&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

M gnu/packages/pdf.scm => gnu/packages/pdf.scm +15 -3
@@ 1,6 1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 55,12 56,13 @@
   ;;    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 @@
   (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.")

M gnu/packages/polkit.scm => gnu/packages/polkit.scm +2 -73
@@ 17,13 17,14 @@
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(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 @@
  #: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")

M gnu/packages/qt.scm => gnu/packages/qt.scm +55 -8
@@ 1,5 1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 26,19 27,27 @@
  #: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


@@ 81,7 90,7 @@ X11 (yet).")
(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,28 100,48 @@ X11 (yet).")
                                 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)))
    (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)


@@ 120,8 149,15 @@ X11 (yet).")
       ("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


@@ 129,7 165,15 @@ X11 (yet).")
          (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")))
              (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*


@@ 138,6 182,9 @@ X11 (yet).")
                      "-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

M guix/base64.scm => guix/base64.scm +20 -2
@@ 4,6 4,8 @@
;; (guix base64) by Nikita Karetnikov <nikita@karetnikov.org> on
;; February 12, 2014.
;;
;; Some optimizations made by Ludovic Courtès <ludo@gnu.org>, 2015.
;;
;; Copyright © 2009, 2010 Göran Weinholt <goran@weinholt.se>
;;
;; This program is free software: you can redistribute it and/or modify


@@ 33,7 35,23 @@
          (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 @@
                      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)))))

M guix/derivations.scm => guix/derivations.scm +48 -29
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 58,9 58,11 @@
            derivation-input-output-paths

            derivation-name
            derivation-output-names
            fixed-output-derivation?
            offloadable-derivation?
            substitutable-derivation?
            substitution-oracle
            derivation-hash

            read-derivation


@@ 135,6 137,12 @@
  (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')."


@@ 177,41 185,52 @@ download with a fixed hash (aka. `fetchurl')."
  ;; synonymous, see <http://bugs.gnu.org/18747>.
  offloadable-derivation?)

(define (derivation-output-paths drv sub-drvs)
  "Return the output paths of outputs SUB-DRVS of DRV."
  (match drv
    (($ <derivation> 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
                                             (map
                                              car
                                              (derivation-outputs drv)))
                                            (use-substitutes? #t))
                                             (derivation-output-names drv))
                                            (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
      (($ <derivation> 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))



@@ 844,7 863,7 @@ recursively."
                                                       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)
                             ((($ <derivation-output> _ algo hash))
                              hash)

M guix/hash.scm => guix/hash.scm +5 -0
@@ 26,6 26,7 @@
  #:export (sha256
            open-sha256-port
            port-sha256
            file-sha256
            open-sha256-input-port))

;;; Commentary:


@@ 129,6 130,10 @@ output 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."

A guix/import/cpan.scm => guix/import/cpan.scm +167 -0
@@ 0,0 1,167 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (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)))

M guix/import/gnu.scm => guix/import/gnu.scm +2 -5
@@ 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 @@
;;;
;;; 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)


@@ 102,7 99,7 @@ details.)"
     (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

A guix/import/json.scm => guix/import/json.scm +32 -0
@@ 0,0 1,32 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 David Thompson <davet@gnu.org>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (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))))))

M guix/import/pypi.scm => guix/import/pypi.scm +1 -46
@@ 27,40 27,15 @@
  #: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 @@ DELIMETER."
    ((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 @@ recursively apply the procedure to the sub-list."
   ("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."

M guix/import/utils.scm => guix/import/utils.scm +47 -1
@@ 20,7 20,16 @@
  #: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 @@ of the string VERSION is replaced by the symbol '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)))

M guix/records.scm => guix/records.scm +30 -29
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 267,15 267,12 @@ PORT, according to FIELDS.  FIELDS must be a list of field name/getter pairs."
       (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 @@ pairs.  Stop upon an empty line (after consuming it) or EOF."
           (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

M guix/scripts/import.scm => guix/scripts/import.scm +1 -1
@@ 73,7 73,7 @@ rather than \\n."
;;; Entry point.
;;;

(define importers '("gnu" "nix" "pypi"))
(define importers '("gnu" "nix" "pypi" "cpan"))

(define (resolve-importer name)
  (let ((module (resolve-interface

A guix/scripts/import/cpan.scm => guix/scripts/import/cpan.scm +91 -0
@@ 0,0 1,91 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (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~%"))))))

M guix/scripts/substitute-binary.scm => guix/scripts/substitute-binary.scm +5 -8
@@ 241,7 241,7 @@ failure."
    ((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 @@ No authentication and authorization checks are performed here!"
                     "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))

M guix/tests.scm => guix/tests.scm +11 -0
@@ 27,6 27,7 @@
  #:export (open-connection-for-tests
            random-text
            random-bytevector
            mock
            with-derivation-narinfo
            dummy-package))



@@ 70,6 71,16 @@
            (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.

M guix/ui.scm => guix/ui.scm +11 -5
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>


@@ 299,21 299,27 @@ error."
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))))
                        '() '()

M po/packages/eo.po => po/packages/eo.po +1027 -80
@@ 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 <fefcas@gmail.com>, 2013, 2014.
# Felipe Castro <fefcas@gmail.com>, 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 <fefcas@gmail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\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"

A tests/cpan.scm => tests/cpan.scm +107 -0
@@ 0,0 1,107 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (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))

M tests/derivations.scm => tests/derivations.scm +11 -2
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 178,6 178,14 @@
  (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?


@@ 581,7 589,8 @@
                    (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*)

M tests/lint.scm => tests/lint.scm +1 -0
@@ 1,6 1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;

M tests/pypi.scm => tests/pypi.scm +2 -9
@@ 20,17 20,10 @@
  #: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\": {


@@ 60,7 53,7 @@

(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 ()