;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
#: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)
#: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)
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
(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
(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)
;;
;; 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 "71e2065a38cf2641b7eb8c557b0f043f5a42a649"))
+ (package (inherit guix-0.9.0)
+ (version (string-append "0.9.0." (string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
(commit commit)))
(sha256
(base32
- "1zgjj5knpz3qbbqdjm4yh436bzfgasc6p0k3xnx58hfjd88mdsga"))
+ "0wrrywfdc27yxjns55qdz5si49c8zcb9q5557g2kx48dbm7p0dzw"))
(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
("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.11.2")
(source (origin
(method url-fetch)
(uri (string-append "http://nixos.org/releases/nix/nix-"
version "/nix-" version ".tar.xz"))
(sha256
(base32
- "077hircacgi9y4n6kf48qp4laz1h3ab6sif3rcci1jy13f05w2m3"))))
+ "1mk9z75gklxcv6kzwwz1h5r2ci5kjy6bh7qwk4m5lf5v9s0k64pw"))))
(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
(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
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 "C_INCLUDE_PATH") ":"
+ 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 "49")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri name version))
+ (sha256
+ (base32
+ "1mf6b7j82ckn90ggz6bp6c2jydz87xj8r8jmfl4hg7jcmf7dxmim"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ ;; setup.py mistakenly requires python-magic from PyPi, even
+ ;; though the Python bindings of `file` are sufficient.
+ ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815844
+ (add-after 'unpack 'dependency-on-python-magic
+ (lambda _
+ (substitute* "setup.py"
+ (("'python-magic',") ""))))
+ (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))))))
+ (inputs `(("rpm" ,rpm) ;for rpm-python
+ ("python-file" ,python-file)
+ ("python-debian" ,python-debian)
+ ("python-libarchive-c" ,python-libarchive-c)
+ ("python-tlsh" ,python-tlsh)
+
+ ;; Below are modules used for tests.
+ ("python-pytest" ,python-pytest)
+ ("python-chardet" ,python-chardet)))
+ (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+)))