summaryrefslogtreecommitdiff
path: root/gnu/packages/package-management.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/package-management.scm')
-rw-r--r--gnu/packages/package-management.scm203
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+)))