gnu: Add RPM.

* gnu/packages/package-management.scm (rpm): New variable.
* gnu/packages/backup.scm (libarchive): Add comment.
This commit is contained in:
Ludovic Courtès 2015-10-26 00:13:03 +01:00
parent 64a719203f
commit e3e1ecf67c
2 changed files with 83 additions and 1 deletions

View File

@ -147,6 +147,7 @@ backups (called chunks) to allow easy burning to CD/DVD.")
(search-patch "libarchive-fix-lzo-test-case.patch")
(search-patch "libarchive-CVE-2013-0211.patch")))))
(build-system gnu-build-system)
;; TODO: Add -L/path/to/nettle in libarchive.pc.
(inputs
`(("zlib" ,zlib)
("nettle" ,nettle)

View File

@ -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)
@ -275,3 +283,76 @@ 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+)))