diff options
Diffstat (limited to 'gnu/packages/package-management.scm')
-rw-r--r-- | gnu/packages/package-management.scm | 203 |
1 files changed, 184 insertions, 19 deletions
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 8fbe5b3064..917464543c 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -23,9 +23,12 @@ #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system gnu) - #:use-module ((guix licenses) #:select (gpl2+ gpl3+ lgpl2.1+)) + #:use-module (guix build-system python) + #:use-module ((guix licenses) #:select (gpl2+ gpl3+ lgpl2.1+ asl2.0)) #:use-module (gnu packages) #:use-module (gnu packages guile) + #:use-module (gnu packages file) + #:use-module (gnu packages backup) #:use-module (gnu packages compression) #:use-module (gnu packages gnupg) #:use-module (gnu packages databases) @@ -34,12 +37,17 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages gettext) #:use-module (gnu packages texinfo) + #:use-module (gnu packages nettle) #:use-module (gnu packages perl) #:use-module (gnu packages curl) #:use-module (gnu packages web) #:use-module (gnu packages man) #:use-module (gnu packages emacs) #:use-module (gnu packages bdw-gc) + #:use-module (gnu packages python) + #:use-module (gnu packages popt) + #:use-module (gnu packages gnuzilla) + #:use-module (gnu packages cpio) #:use-module (gnu packages tls)) (define (boot-guile-uri arch) @@ -52,17 +60,17 @@ arch "-linux" "/20131110/guile-2.0.9.tar.xz"))) -(define-public guix-0.8.3 +(define-public guix-0.9.0 (package (name "guix") - (version "0.8.3") + (version "0.9.0") (source (origin (method url-fetch) (uri (string-append "ftp://alpha.gnu.org/gnu/guix/guix-" version ".tar.gz")) (sha256 (base32 - "14n0nkj0ckhdwhghx1pml99hbjr1xdkn8x145j0xp1357vqlisnz")))) + "0h573z2br0bf43sxyzia9xlm03n3y43zg1snds3c2piq2m6kabrn")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list @@ -74,6 +82,7 @@ (string-append "--with-libgcrypt-prefix=" (assoc-ref %build-inputs "libgcrypt"))) + #:parallel-tests? #f ;work around <http://bugs.gnu.org/21097> #:phases (modify-phases %standard-phases (add-before 'configure 'copy-bootstrap-guile @@ -109,7 +118,17 @@ (substitute* "tests/containers.scm" (("^\\(test-assert" all) (string-append "(test-skip 1)\n" all))) + (when (file-exists? "tests/guix-environment-container.sh") + (substitute* "tests/guix-environment-container.sh" + (("guix environment --version") + "exit 77\n"))) #t)) + (add-before 'check 'set-SHELL + (lambda _ + ;; 'guix environment' tests rely on 'SHELL' having a + ;; correct value, so set it. + (setenv "SHELL" (which "sh")) + #t)) (add-after 'install 'wrap-program (lambda* (#:key inputs outputs #:allow-other-keys) @@ -176,9 +195,9 @@ the Nix package manager.") ;; ;; Note: use a short commit id; when using the long one, the limit on socket ;; file names is exceeded while running the tests. - (let ((commit "abbe2c6")) - (package (inherit guix-0.8.3) - (version (string-append "0.8.3." commit)) + (let ((commit "5c36edc")) + (package (inherit guix-0.9.0) + (version (string-append "0.9.0." commit)) (source (origin (method git-fetch) (uri (git-reference @@ -186,10 +205,15 @@ the Nix package manager.") (commit commit))) (sha256 (base32 - "1zgjj5knpz3qbbqdjm4yh436bzfgasc6p0k3xnx58hfjd88mdsga")) + "008fv3yj1jkxxma9vp8wzmkk3m82kgchaj9y7lpcvkqzcdhz8h7p")) (file-name (string-append "guix-" version "-checkout")))) (arguments - (substitute-keyword-arguments (package-arguments guix-0.8.3) + (substitute-keyword-arguments (package-arguments guix-0.9.0) + ((#:configure-flags flags) + ;; Set 'DOT_USER_PROGRAM' to the empty string so we don't keep a + ;; reference to Graphviz, whose closure is pretty big (too big for + ;; the GuixSD installation image.) + `(cons "ac_cv_path_DOT_USER_PROGRAM=dot" ,flags)) ((#:phases phases) `(modify-phases ,phases (add-after @@ -208,35 +232,48 @@ the Nix package manager.") ("texinfo" ,texinfo) ("graphviz" ,graphviz) ("help2man" ,help2man) - ,@(package-native-inputs guix-0.8.3)))))) + ,@(package-native-inputs guix-0.9.0)))))) (define-public guix guix-devel) (define-public nix (package (name "nix") - (version "1.8") + (version "1.10") (source (origin (method url-fetch) (uri (string-append "http://nixos.org/releases/nix/nix-" version "/nix-" version ".tar.xz")) (sha256 (base32 - "077hircacgi9y4n6kf48qp4laz1h3ab6sif3rcci1jy13f05w2m3")))) + "1xhh7l1dqwn6i3m51xp8l0aa95da3823w4h8n8hfxlcxaixcl4jn")))) (build-system gnu-build-system) ;; XXX: Should we pass '--with-store-dir=/gnu/store'? But then we'd also ;; need '--localstatedir=/var'. But then! The thing would use /var/nix ;; instead of /var/guix. So in the end, we do nothing special. + (arguments + '(#:configure-flags + ;; Set the prefixes of Perl libraries to avoid propagation. + (let ((perl-libdir (lambda (p) + (string-append + (assoc-ref %build-inputs p) + "/lib/perl5/site_perl")))) + (list (string-append "--with-dbi=" + (perl-libdir "perl-dbi")) + (string-append "--with-dbd-sqlite=" + (perl-libdir "perl-dbd-sqlite")) + (string-append "--with-www-curl=" + (perl-libdir "perl-www-curl")))))) (native-inputs `(("perl" ,perl) ("pkg-config" ,pkg-config))) (inputs `(("curl" ,curl) ("openssl" ,openssl) ("libgc" ,libgc) ("sqlite" ,sqlite) - ("bzip2" ,bzip2))) - (propagated-inputs `(("perl-www-curl" ,perl-www-curl) - ("perl-dbi" ,perl-dbi) - ("perl-dbd-sqlite" ,perl-dbd-sqlite))) + ("bzip2" ,bzip2) + ("perl-www-curl" ,perl-www-curl) + ("perl-dbi" ,perl-dbi) + ("perl-dbd-sqlite" ,perl-dbd-sqlite))) (home-page "http://nixos.org/nix/") (synopsis "The Nix package manager") (description @@ -251,21 +288,22 @@ sub-directory.") (define-public stow (package (name "stow") - (version "2.2.0") + (version "2.2.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/stow/stow-" version ".tar.gz")) (sha256 (base32 - "0arw1nsdlcvd7javkbk2bdvnc31d7dmb6fr25xyyi6ng76cxg2cb")))) + "1pvky9fayms4r6fhns8jd0vavszd7d979w62vfd5n88v614pdxz2")))) (build-system gnu-build-system) (inputs `(("perl" ,perl))) (native-inputs `(("perl-test-simple" ,perl-test-simple) ("perl-test-output" ,perl-test-output) - ("perl-capture-tiny" ,perl-capture-tiny))) + ("perl-capture-tiny" ,perl-capture-tiny) + ("perl-io-stringy" ,perl-io-stringy))) (home-page "https://www.gnu.org/software/stow/") (synopsis "Managing installed software packages") (description @@ -275,3 +313,130 @@ typically used for managing software packages installed from source, by letting you install them apart in distinct directories and then create symlinks to the files in a common directory such as /usr/local.") (license gpl2+))) + +(define-public rpm + (package + (name "rpm") + (version "4.12.0") + (source (origin + (method url-fetch) + (uri (string-append "http://rpm.org/releases/rpm-4.12.x/rpm-" + version ".tar.bz2")) + (sha256 + (base32 + "18hk47hc755nslvb7xkq4jb095z7va0nlcyxdpxayc4lmb8mq3bp")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--with-external-db" ;use the system's bdb + "--enable-python" + "--without-lua") + #:phases (modify-phases %standard-phases + (add-before 'configure 'set-nspr-search-path + (lambda* (#:key inputs #:allow-other-keys) + ;; nspr.pc contains the right -I flag pointing to + ;; 'include/nspr', but unfortunately 'configure' doesn't + ;; use 'pkg-config'. Thus, augment CPATH. + ;; Likewise for NSS. + (let ((nspr (assoc-ref inputs "nspr")) + (nss (assoc-ref inputs "nss"))) + (setenv "CPATH" + (string-append (getenv "CPATH") ":" + nspr "/include/nspr:" + nss "/include/nss")) + (setenv "LIBRARY_PATH" + (string-append (getenv "LIBRARY_PATH") ":" + nss "/lib/nss")) + #t))) + (add-after 'install 'fix-rpm-symlinks + (lambda* (#:key outputs #:allow-other-keys) + ;; 'make install' gets these symlinks wrong. Fix them. + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (with-directory-excursion bin + (for-each (lambda (file) + (delete-file file) + (symlink "rpm" file)) + '("rpmquery" "rpmverify")) + #t))))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("python" ,python-2) + ("xz" ,xz) + ("bdb" ,bdb) + ("popt" ,popt) + ("nss" ,nss) + ("nspr" ,nspr) + ("libarchive" ,libarchive) + ("nettle" ,nettle) ;XXX: actually a dependency of libarchive + ("file" ,file) + ("bzip2" ,bzip2) + ("zlib" ,zlib) + ("cpio" ,cpio))) + (home-page "http://www.rpm.org/") + (synopsis "The RPM Package Manager") + (description + "The RPM Package Manager (RPM) is a command-line driven package +management system capable of installing, uninstalling, verifying, querying, +and updating computer software packages. Each software package consists of an +archive of files along with information about the package like its version, a +description. There is also a library permitting developers to manage such +transactions from C or Python.") + + ;; The whole is GPLv2+; librpm itself is dual-licensed LGPLv2+ | GPLv2+. + (license gpl2+))) + +(define-public diffoscope + (package + (name "diffoscope") + (version "34") + (source (origin + (method git-fetch) + (uri (git-reference + (url + "https://anonscm.debian.org/cgit/reproducible/diffoscope.git") + (commit version))) + (sha256 + (base32 + "1g8b7bpkmns0355gkr3a244affwx4xzqwahwsl6ivw4z0qv7dih8")) + (file-name (string-append name "-" version "-checkout")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2 + #:phases (modify-phases %standard-phases + (add-before 'build 'disable-egg-zipping + (lambda _ + ;; Leave the .egg file uncompressed. + (let ((port (open-file "setup.cfg" "a"))) + (display "\n[easy_install]\nzip_ok = 0\n" + port) + (close-port port) + #t))) + (add-before 'build 'dependency-on-rpm + (lambda _ + (substitute* "setup.py" + ;; Somehow this requirement is reported as not met, + ;; even though rpm.py is in the search path. So + ;; delete it. + (("'rpm-python',") "")) + #t))) + ;; FIXME: Some obscure test failures. + #:tests? #f)) + (inputs `(("rpm" ,rpm) ;for rpm-python + ("python-file" ,python2-file) + ("python-debian" ,python2-debian) + ("python-libarchive-c" ,python2-libarchive-c) + ("python-tlsh" ,python2-tlsh) + + ;; Below are modules used for tests. + ("python-pytest" ,python2-pytest) + ("python-chardet" ,python2-chardet))) + (native-inputs `(("python-setuptools" ,python2-setuptools))) + (home-page "http://diffoscope.org/") + (synopsis "Compare files, archives, and directories in depth") + (description + "Diffoscope tries to get to the bottom of what makes files or directories +different. It recursively unpacks archives of many kinds and transforms +various binary formats into more human readable forms to compare them. It can +compare two tarballs, ISO images, or PDFs just as easily.") + (license gpl3+))) |