diff options
-rw-r--r-- | Makefile.am | 9 | ||||
-rw-r--r-- | doc/guix.texi | 24 | ||||
-rw-r--r-- | gnu-system.am | 2 | ||||
-rw-r--r-- | gnu/packages/gnuzilla.scm | 168 | ||||
-rw-r--r-- | gnu/packages/image.scm | 25 | ||||
-rw-r--r-- | gnu/packages/linux.scm | 4 | ||||
-rw-r--r-- | gnu/packages/ninja.scm | 87 | ||||
-rw-r--r-- | gnu/packages/patches/nss-pkgconfig.patch | 225 | ||||
-rw-r--r-- | gnu/packages/pdf.scm | 18 | ||||
-rw-r--r-- | gnu/packages/polkit.scm | 75 | ||||
-rw-r--r-- | gnu/packages/qt.scm | 63 | ||||
-rw-r--r-- | guix/base64.scm | 22 | ||||
-rw-r--r-- | guix/derivations.scm | 77 | ||||
-rw-r--r-- | guix/hash.scm | 5 | ||||
-rw-r--r-- | guix/import/cpan.scm | 167 | ||||
-rw-r--r-- | guix/import/gnu.scm | 7 | ||||
-rw-r--r-- | guix/import/json.scm | 32 | ||||
-rw-r--r-- | guix/import/pypi.scm | 47 | ||||
-rw-r--r-- | guix/import/utils.scm | 48 | ||||
-rw-r--r-- | guix/records.scm | 59 | ||||
-rw-r--r-- | guix/scripts/import.scm | 2 | ||||
-rw-r--r-- | guix/scripts/import/cpan.scm | 91 | ||||
-rwxr-xr-x | guix/scripts/substitute-binary.scm | 13 | ||||
-rw-r--r-- | guix/tests.scm | 11 | ||||
-rw-r--r-- | guix/ui.scm | 16 | ||||
-rw-r--r-- | po/packages/eo.po | 1107 | ||||
-rw-r--r-- | tests/cpan.scm | 107 | ||||
-rw-r--r-- | tests/derivations.scm | 13 | ||||
-rw-r--r-- | tests/lint.scm | 1 | ||||
-rw-r--r-- | tests/pypi.scm | 11 |
30 files changed, 2221 insertions, 315 deletions
diff --git a/Makefile.am b/Makefile.am index bc0b95232e..5ee743470b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 diff --git a/doc/guix.texi b/doc/guix.texi index 65d5eaea0e..55e63f35b5 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -258,10 +258,10 @@ interest primarily for developers and not for casual users. @item Installing @uref{http://gnutls.org/, GnuTLS-Guile} will allow you to access @code{https} URLs with the @command{guix download} -command (@pxref{Invoking guix download}) and the @command{guix import -pypi} command. This is primarily of interest to developers. -@xref{Guile Preparations, how to install the GnuTLS bindings for Guile,, -gnutls-guile, GnuTLS-Guile}. +command (@pxref{Invoking guix download}), the @command{guix import pypi} +command, and the @command{guix import cpan} command. This is primarily +of interest to developers. @xref{Guile Preparations, how to install the +GnuTLS bindings for Guile,, gnutls-guile, GnuTLS-Guile}. @end itemize Unless @code{--disable-daemon} was passed to @command{configure}, the @@ -2957,6 +2957,22 @@ package: guix import pypi itsdangerous @end example +@item cpan +@cindex CPAN +Import meta-data from @uref{https://www.metacpan.org/, MetaCPAN}. +Information is taken from the JSON-formatted meta-data provided through +@uref{https://api.metacpan.org/, MetaCPAN's API} and includes most +relevant information. License information should be checked closely. +Package dependencies are included but may in some cases needlessly +include core Perl modules. + +The command command below imports meta-data for the @code{Acme::Boolean} +Perl module: + +@example +guix import cpan Acme::Boolean +@end example + @item nix Import meta-data from a local copy of the source of the @uref{http://nixos.org/nixpkgs/, Nixpkgs distribution}@footnote{This diff --git a/gnu-system.am b/gnu-system.am index a00b83dbf4..70e347d2c0 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -191,6 +191,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/ncurses.scm \ gnu/packages/netpbm.scm \ gnu/packages/nettle.scm \ + gnu/packages/ninja.scm \ gnu/packages/node.scm \ gnu/packages/noweb.scm \ gnu/packages/ntp.scm \ @@ -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 \ diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 3ebc20dffa..8e397464ac 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -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") diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 7a22bf4942..cdb9c1cfb2 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -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") diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 00ac4d893a..727d14bbdf 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -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) diff --git a/gnu/packages/ninja.scm b/gnu/packages/ninja.scm new file mode 100644 index 0000000000..fe3f955b5d --- /dev/null +++ b/gnu/packages/ninja.scm @@ -0,0 +1,87 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Sou Bunnbu <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))) diff --git a/gnu/packages/patches/nss-pkgconfig.patch b/gnu/packages/patches/nss-pkgconfig.patch new file mode 100644 index 0000000000..da5c48979e --- /dev/null +++ b/gnu/packages/patches/nss-pkgconfig.patch @@ -0,0 +1,225 @@ +Description: Create nss.pc and nss-config +Author: Lars Wendler <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 diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index 7d5100af24..0f9098d8cb 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Andreas Enge <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.") diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm index 2be1d0b425..572d52404b 100644 --- a/gnu/packages/polkit.scm +++ b/gnu/packages/polkit.scm @@ -17,13 +17,14 @@ ;;; along with GNU Guix. If not, see <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") diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 30b772d4d9..0d6bbc8fc6 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014 Andreas Enge <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 diff --git a/guix/base64.scm b/guix/base64.scm index f7f7f5f4e1..e4d2ec589b 100644 --- a/guix/base64.scm +++ b/guix/base64.scm @@ -4,6 +4,8 @@ ;; (guix base64) by Nikita Karetnikov <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))))) diff --git a/guix/derivations.scm b/guix/derivations.scm index 69cef1a4cd..ec438e833c 100644 --- a/guix/derivations.scm +++ b/guix/derivations.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <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) diff --git a/guix/hash.scm b/guix/hash.scm index fb85f47586..593c2e1aee 100644 --- a/guix/hash.scm +++ b/guix/hash.scm @@ -26,6 +26,7 @@ #: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." diff --git a/guix/import/cpan.scm b/guix/import/cpan.scm new file mode 100644 index 0000000000..5f4602a8d2 --- /dev/null +++ b/guix/import/cpan.scm @@ -0,0 +1,167 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Eric Bavier <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))) diff --git a/guix/import/gnu.scm b/guix/import/gnu.scm index 1947f489fb..7160fcf7ba 100644 --- a/guix/import/gnu.scm +++ b/guix/import/gnu.scm @@ -18,6 +18,7 @@ (define-module (guix import gnu) #:use-module (guix gnu-maintenance) + #:use-module (guix import utils) #:use-module (guix utils) #:use-module (guix store) #:use-module (guix hash) @@ -38,10 +39,6 @@ ;;; ;;; 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 diff --git a/guix/import/json.scm b/guix/import/json.scm new file mode 100644 index 0000000000..c3092a5a9d --- /dev/null +++ b/guix/import/json.scm @@ -0,0 +1,32 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 David Thompson <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)))))) diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm index 88f4a8e896..8567cad79c 100644 --- a/guix/import/pypi.scm +++ b/guix/import/pypi.scm @@ -27,40 +27,15 @@ #: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." diff --git a/guix/import/utils.scm b/guix/import/utils.scm index 062cfc54f3..969491d28d 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -20,7 +20,16 @@ #: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))) diff --git a/guix/records.scm b/guix/records.scm index 93c52f0ffa..e7b86af9aa 100644 --- a/guix/records.scm +++ b/guix/records.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <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 diff --git a/guix/scripts/import.scm b/guix/scripts/import.scm index 86ef05bc2c..7e75c10b3e 100644 --- a/guix/scripts/import.scm +++ b/guix/scripts/import.scm @@ -73,7 +73,7 @@ rather than \\n." ;;; Entry point. ;;; -(define importers '("gnu" "nix" "pypi")) +(define importers '("gnu" "nix" "pypi" "cpan")) (define (resolve-importer name) (let ((module (resolve-interface diff --git a/guix/scripts/import/cpan.scm b/guix/scripts/import/cpan.scm new file mode 100644 index 0000000000..1f4dedf23f --- /dev/null +++ b/guix/scripts/import/cpan.scm @@ -0,0 +1,91 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Eric Bavier <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~%")))))) diff --git a/guix/scripts/substitute-binary.scm b/guix/scripts/substitute-binary.scm index 9c96411630..09b917fdf6 100755 --- a/guix/scripts/substitute-binary.scm +++ b/guix/scripts/substitute-binary.scm @@ -241,7 +241,7 @@ 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)) diff --git a/guix/tests.scm b/guix/tests.scm index 82ae7e2084..36341cb4cc 100644 --- a/guix/tests.scm +++ b/guix/tests.scm @@ -27,6 +27,7 @@ #: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. diff --git a/guix/ui.scm b/guix/ui.scm index c77e04172e..5bd4d1f8c2 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <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)))) '() '() diff --git a/po/packages/eo.po b/po/packages/eo.po index 2e48d61064..9a251db2a9 100644 --- a/po/packages/eo.po +++ b/po/packages/eo.po @@ -1,27 +1,127 @@ # Esperanto messages for GNU Guix -# Copyright (C) 2013, 2014 Free Software Foundation, Inc. +# Copyright (C) 2013, 2014, 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the guix package. -# Felipe Castro <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" diff --git a/tests/cpan.scm b/tests/cpan.scm new file mode 100644 index 0000000000..af7b36e684 --- /dev/null +++ b/tests/cpan.scm @@ -0,0 +1,107 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Eric Bavier <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)) diff --git a/tests/derivations.scm b/tests/derivations.scm index 4b36758c25..8e592ab6a1 100644 --- a/tests/derivations.scm +++ b/tests/derivations.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <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*) diff --git a/tests/lint.scm b/tests/lint.scm index 2aebbffd0a..c6931329d6 100644 --- a/tests/lint.scm +++ b/tests/lint.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013 Cyril Roelandt <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. ;;; diff --git a/tests/pypi.scm b/tests/pypi.scm index 124c512d54..45cf7cac4f 100644 --- a/tests/pypi.scm +++ b/tests/pypi.scm @@ -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 () |