2013-08-24 11:23:17 -04:00
|
|
|
|
;;; GNU Guix --- Functional package management for GNU
|
2016-01-05 07:58:36 -05:00
|
|
|
|
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
|
2015-02-21 13:59:08 -05:00
|
|
|
|
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
|
2013-08-24 11:23:17 -04:00
|
|
|
|
;;;
|
|
|
|
|
;;; 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 package-management)
|
|
|
|
|
#:use-module (guix packages)
|
|
|
|
|
#:use-module (guix download)
|
2014-06-27 17:06:55 -04:00
|
|
|
|
#:use-module (guix git-download)
|
2016-06-19 16:26:59 -04:00
|
|
|
|
#:use-module (guix gexp)
|
2014-06-27 17:06:55 -04:00
|
|
|
|
#:use-module (guix utils)
|
2013-08-24 11:23:17 -04:00
|
|
|
|
#:use-module (guix build-system gnu)
|
2015-10-25 19:13:03 -04:00
|
|
|
|
#:use-module (guix build-system python)
|
2016-06-19 16:26:59 -04:00
|
|
|
|
#:use-module ((guix build utils) #:select (with-directory-excursion))
|
2015-10-25 19:13:03 -04:00
|
|
|
|
#:use-module ((guix licenses) #:select (gpl2+ gpl3+ lgpl2.1+ asl2.0))
|
2013-12-11 07:55:17 -05:00
|
|
|
|
#:use-module (gnu packages)
|
2013-08-24 11:23:17 -04:00
|
|
|
|
#:use-module (gnu packages guile)
|
2015-10-25 19:13:03 -04:00
|
|
|
|
#:use-module (gnu packages file)
|
|
|
|
|
#:use-module (gnu packages backup)
|
2015-04-20 09:50:59 -04:00
|
|
|
|
#:use-module (gnu packages compression)
|
2013-08-24 11:23:17 -04:00
|
|
|
|
#:use-module (gnu packages gnupg)
|
gnu: Consolidate databases in (gnu packages databases).
* gnu/packages/databases.scm: New file, with the contents of the
following deleted files.
* gnu/packages/mysql.scm, gnu/packages/postgresql.scm,
gnu/packages/recutils.scm, gnu/packages/sqlite.scm,
gnu/packages/bdb.scm: Remove.
* gnu-system.am (GNU_SYSTEM_MODULES): Adjust accordingly.
* gnu/packages/apl.scm, gnu/packages/dc.scm, gnu/packages/games.scm,
gnu/packages/gnunet.scm, gnu/packages/linux.scm, gnu/packages/mail.scm,
gnu/packages/mpd.scm, gnu/packages/nvi.scm, gnu/packages/openldap.scm,
gnu/packages/package-management.scm, gnu/packages/python.scm,
gnu/packages/qt.scm, gnu/packages/rdf.scm,
gnu/packages/version-control.scm: Adjust to new module name.
2014-09-08 11:48:03 -04:00
|
|
|
|
#:use-module (gnu packages databases)
|
2014-06-27 17:06:55 -04:00
|
|
|
|
#:use-module (gnu packages graphviz)
|
|
|
|
|
#:use-module (gnu packages pkg-config)
|
|
|
|
|
#:use-module (gnu packages autotools)
|
|
|
|
|
#:use-module (gnu packages gettext)
|
2014-09-27 19:04:18 -04:00
|
|
|
|
#:use-module (gnu packages texinfo)
|
2015-10-25 19:13:03 -04:00
|
|
|
|
#:use-module (gnu packages nettle)
|
2014-09-27 19:04:18 -04:00
|
|
|
|
#:use-module (gnu packages perl)
|
|
|
|
|
#:use-module (gnu packages curl)
|
|
|
|
|
#:use-module (gnu packages web)
|
2015-06-11 17:10:26 -04:00
|
|
|
|
#:use-module (gnu packages man)
|
2014-11-12 15:56:59 -05:00
|
|
|
|
#:use-module (gnu packages emacs)
|
gnu: Rename module gnutls to tls.
* gnu/packages/gnutls.scm: Rename to...
* gnu/packages/tls.scm: ... this. Change module name accordingly.
* gnu/packages/{admin.scm, cups.scm, curl.scm, dc.scm, dns.scm, emacs.scm,
ftp.scm, gnome.scm, gnunet.scm, gnupg.scm, gsasl.scm, lynx.scm,
mail.scm, messaging.scm, package-management.scm, shishi.scm,
task-management.scm, version-control.scm, video.scm, vpn.scm,
webkit.scm, weechat.scm, wget.scm, wine.scm, xml.scm}: Adapt module
import to new name.
* gnu-system.am (GNU_SYSTEM_MODULES): Rename gnutls module to tls.
2015-07-03 15:41:22 -04:00
|
|
|
|
#:use-module (gnu packages bdw-gc)
|
2015-10-25 19:13:03 -04:00
|
|
|
|
#:use-module (gnu packages python)
|
|
|
|
|
#:use-module (gnu packages popt)
|
|
|
|
|
#:use-module (gnu packages gnuzilla)
|
|
|
|
|
#:use-module (gnu packages cpio)
|
2016-06-19 16:26:59 -04:00
|
|
|
|
#:use-module (gnu packages tls)
|
|
|
|
|
#:use-module (srfi srfi-1)
|
|
|
|
|
#:use-module (srfi srfi-26)
|
|
|
|
|
#:use-module (ice-9 popen)
|
|
|
|
|
#:use-module (ice-9 rdelim)
|
|
|
|
|
#:use-module (ice-9 match))
|
2013-08-24 11:23:17 -04:00
|
|
|
|
|
2015-01-27 04:17:28 -05:00
|
|
|
|
(define (boot-guile-uri arch)
|
|
|
|
|
"Return the URI for the bootstrap Guile tarball for ARCH."
|
|
|
|
|
(if (string=? "armhf" arch)
|
|
|
|
|
(string-append "http://alpha.gnu.org/gnu/guix/bootstrap/"
|
|
|
|
|
arch "-linux"
|
|
|
|
|
"/20150101/guile-2.0.11.tar.xz")
|
|
|
|
|
(string-append "http://alpha.gnu.org/gnu/guix/bootstrap/"
|
|
|
|
|
arch "-linux"
|
|
|
|
|
"/20131110/guile-2.0.9.tar.xz")))
|
|
|
|
|
|
2016-08-02 19:19:46 -04:00
|
|
|
|
(define-public guix-0.11.0
|
2013-08-24 11:23:17 -04:00
|
|
|
|
(package
|
|
|
|
|
(name "guix")
|
2016-08-02 19:19:46 -04:00
|
|
|
|
(version "0.11.0")
|
2013-08-24 11:23:17 -04:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "ftp://alpha.gnu.org/gnu/guix/guix-"
|
|
|
|
|
version ".tar.gz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2016-08-02 19:19:46 -04:00
|
|
|
|
"1cwrbpv4dq7aczwksmcfw9w8r2bzrb5ld9zvjcr90i804hjpcb93"))))
|
2013-08-24 11:23:17 -04:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:configure-flags (list
|
2013-09-24 16:37:51 -04:00
|
|
|
|
"--localstatedir=/var"
|
2014-06-04 10:01:53 -04:00
|
|
|
|
"--sysconfdir=/etc"
|
2015-04-21 11:43:57 -04:00
|
|
|
|
(string-append "--with-bash-completion-dir="
|
|
|
|
|
(assoc-ref %outputs "out")
|
|
|
|
|
"/etc/bash_completion.d")
|
2013-08-24 11:23:17 -04:00
|
|
|
|
(string-append "--with-libgcrypt-prefix="
|
|
|
|
|
(assoc-ref %build-inputs
|
|
|
|
|
"libgcrypt")))
|
2015-11-03 03:37:52 -05:00
|
|
|
|
#:parallel-tests? #f ;work around <http://bugs.gnu.org/21097>
|
2015-06-13 12:32:35 -04:00
|
|
|
|
#:phases (modify-phases %standard-phases
|
|
|
|
|
(add-before
|
|
|
|
|
'configure 'copy-bootstrap-guile
|
|
|
|
|
(lambda* (#:key system inputs #:allow-other-keys)
|
|
|
|
|
(define (boot-guile-version arch)
|
|
|
|
|
(if (string=? "armhf" arch)
|
|
|
|
|
"2.0.11"
|
|
|
|
|
"2.0.9"))
|
2015-01-27 04:17:28 -05:00
|
|
|
|
|
2015-06-13 12:32:35 -04:00
|
|
|
|
(define (copy arch)
|
|
|
|
|
(let ((guile (assoc-ref inputs
|
|
|
|
|
(string-append "boot-guile/"
|
|
|
|
|
arch)))
|
|
|
|
|
(target (string-append "gnu/packages/bootstrap/"
|
|
|
|
|
arch "-linux/"
|
|
|
|
|
"/guile-"
|
|
|
|
|
(boot-guile-version arch)
|
|
|
|
|
".tar.xz")))
|
|
|
|
|
(copy-file guile target)))
|
2013-08-24 11:23:17 -04:00
|
|
|
|
|
2015-06-13 12:32:35 -04:00
|
|
|
|
(copy "i686")
|
|
|
|
|
(copy "x86_64")
|
|
|
|
|
(copy "mips64el")
|
|
|
|
|
(copy "armhf")
|
2015-06-13 13:31:24 -04:00
|
|
|
|
#t))
|
2015-07-21 17:14:39 -04:00
|
|
|
|
(add-after
|
|
|
|
|
'unpack 'disable-container-tests
|
|
|
|
|
;; XXX FIXME: These tests fail within the build container.
|
|
|
|
|
(lambda _
|
|
|
|
|
(substitute* "tests/syscalls.scm"
|
|
|
|
|
(("^\\(test-assert \"(clone|setns|pivot-root)\"" all)
|
|
|
|
|
(string-append "(test-skip 1)\n" all)))
|
|
|
|
|
(substitute* "tests/containers.scm"
|
|
|
|
|
(("^\\(test-assert" all)
|
|
|
|
|
(string-append "(test-skip 1)\n" all)))
|
2015-11-03 03:37:52 -05:00
|
|
|
|
(when (file-exists? "tests/guix-environment-container.sh")
|
|
|
|
|
(substitute* "tests/guix-environment-container.sh"
|
|
|
|
|
(("guix environment --version")
|
|
|
|
|
"exit 77\n")))
|
2015-07-21 17:14:39 -04:00
|
|
|
|
#t))
|
2015-11-03 03:37:52 -05:00
|
|
|
|
(add-before 'check 'set-SHELL
|
|
|
|
|
(lambda _
|
|
|
|
|
;; 'guix environment' tests rely on 'SHELL' having a
|
|
|
|
|
;; correct value, so set it.
|
|
|
|
|
(setenv "SHELL" (which "sh"))
|
|
|
|
|
#t))
|
2015-06-13 13:31:24 -04:00
|
|
|
|
(add-after
|
|
|
|
|
'install 'wrap-program
|
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
|
|
|
;; Make sure the 'guix' command finds GnuTLS and
|
|
|
|
|
;; Guile-JSON automatically.
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(json (assoc-ref inputs "guile-json"))
|
|
|
|
|
(gnutls (assoc-ref inputs "gnutls"))
|
|
|
|
|
(path (string-append
|
|
|
|
|
json "/share/guile/site/2.0:"
|
|
|
|
|
gnutls "/share/guile/site/2.0")))
|
2016-03-29 16:11:59 -04:00
|
|
|
|
|
|
|
|
|
;; Ignore user settings so that a bogus
|
|
|
|
|
;; GUILE_LOAD_COMPILED_PATH does not prevent use of
|
|
|
|
|
;; 'guix', notably when it contains entries pointing to
|
|
|
|
|
;; incompatible .go files as reported at
|
|
|
|
|
;; <https://lists.gnu.org/archive/html/guix-devel/2016-03/msg01261.html>.
|
2015-06-13 13:31:24 -04:00
|
|
|
|
(wrap-program (string-append out "/bin/guix")
|
2016-03-29 16:11:59 -04:00
|
|
|
|
`("GUILE_LOAD_PATH" ":" = (,path))
|
|
|
|
|
`("GUILE_LOAD_COMPILED_PATH" ":" = (,path)))
|
|
|
|
|
|
2015-06-13 13:31:24 -04:00
|
|
|
|
#t))))))
|
2014-11-12 15:56:59 -05:00
|
|
|
|
(native-inputs `(("pkg-config" ,pkg-config)
|
2016-05-11 18:58:59 -04:00
|
|
|
|
("emacs" ,emacs-minimal))) ;for guix.el
|
2013-08-24 11:23:17 -04:00
|
|
|
|
(inputs
|
|
|
|
|
(let ((boot-guile (lambda (arch hash)
|
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
2015-01-27 04:17:28 -05:00
|
|
|
|
(uri (boot-guile-uri arch))
|
2013-08-24 11:23:17 -04:00
|
|
|
|
(sha256 hash)))))
|
|
|
|
|
`(("bzip2" ,bzip2)
|
2013-09-24 16:37:51 -04:00
|
|
|
|
("gzip" ,gzip)
|
2016-07-29 05:32:17 -04:00
|
|
|
|
("zlib" ,zlib) ;for 'guix publish'
|
2013-09-24 16:37:51 -04:00
|
|
|
|
|
2013-08-24 11:23:17 -04:00
|
|
|
|
("sqlite" ,sqlite)
|
|
|
|
|
("libgcrypt" ,libgcrypt)
|
|
|
|
|
("guile" ,guile-2.0)
|
|
|
|
|
|
|
|
|
|
("boot-guile/i686"
|
|
|
|
|
,(boot-guile "i686"
|
|
|
|
|
(base32
|
2013-12-11 07:55:17 -05:00
|
|
|
|
"0im800m30abgh7msh331pcbjvb4n02smz5cfzf1srv0kpx3csmxp")))
|
2013-08-24 11:23:17 -04:00
|
|
|
|
("boot-guile/x86_64"
|
|
|
|
|
,(boot-guile "x86_64"
|
|
|
|
|
(base32
|
2013-12-11 07:55:17 -05:00
|
|
|
|
"1w2p5zyrglzzniqgvyn1b55vprfzhgk8vzbzkkbdgl5248si0yq3")))
|
|
|
|
|
("boot-guile/mips64el"
|
|
|
|
|
,(boot-guile "mips64el"
|
|
|
|
|
(base32
|
2015-01-27 04:17:28 -05:00
|
|
|
|
"0fzp93lvi0hn54acc0fpvhc7bvl0yc853k62l958cihk03q80ilr")))
|
|
|
|
|
("boot-guile/armhf"
|
|
|
|
|
,(boot-guile "armhf"
|
|
|
|
|
(base32
|
|
|
|
|
"1mi3brl7l58aww34rawhvja84xc7l1b4hmwdmc36fp9q9mfx0lg5"))))))
|
2015-01-28 17:36:58 -05:00
|
|
|
|
(propagated-inputs
|
2015-05-12 10:32:08 -04:00
|
|
|
|
`(("gnutls" ,gnutls) ;for 'guix download' & co.
|
|
|
|
|
("guile-json" ,guile-json)
|
2016-07-03 03:06:33 -04:00
|
|
|
|
("geiser" ,geiser) ;for guix.el
|
|
|
|
|
("emacs-magit-popup" ,emacs-magit-popup))) ;for "M-x guix" command
|
2015-01-28 17:36:58 -05:00
|
|
|
|
|
2013-08-24 11:23:17 -04:00
|
|
|
|
(home-page "http://www.gnu.org/software/guix")
|
2013-12-01 16:33:23 -05:00
|
|
|
|
(synopsis "Functional package manager for installed software packages and versions")
|
2013-08-24 11:23:17 -04:00
|
|
|
|
(description
|
2013-12-01 16:33:23 -05:00
|
|
|
|
"GNU Guix is a functional package manager for the GNU system, and is
|
2014-09-13 09:31:31 -04:00
|
|
|
|
also a distribution thereof. It includes a virtual machine image. Besides
|
2013-12-01 16:33:23 -05:00
|
|
|
|
the usual package management features, it also supports transactional
|
2014-09-13 09:31:31 -04:00
|
|
|
|
upgrades and roll-backs, per-user profiles, and much more. It is based on
|
|
|
|
|
the Nix package manager.")
|
2016-04-14 16:18:56 -04:00
|
|
|
|
(license gpl3+)
|
|
|
|
|
(properties '((ftp-server . "alpha.gnu.org")))))
|
2013-09-24 16:40:33 -04:00
|
|
|
|
|
2014-10-12 18:29:09 -04:00
|
|
|
|
(define guix-devel
|
2014-06-27 17:06:55 -04:00
|
|
|
|
;; Development version of Guix.
|
2015-04-08 04:41:27 -04:00
|
|
|
|
;;
|
2016-03-25 05:22:02 -04:00
|
|
|
|
;; Note: use a very short commit id; with a longer one, the limit on
|
|
|
|
|
;; hash-bang lines would be exceeded while running the tests.
|
2016-08-03 04:56:45 -04:00
|
|
|
|
(let ((commit "4420940f20a2f36f29519f686bca7b85be6be5c9"))
|
2016-08-02 19:19:46 -04:00
|
|
|
|
(package (inherit guix-0.11.0)
|
2016-08-03 04:56:45 -04:00
|
|
|
|
(version (string-append "0.11.0-1." (string-take commit 4)))
|
2014-06-27 17:06:55 -04:00
|
|
|
|
(source (origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
2016-05-14 09:50:25 -04:00
|
|
|
|
;; "git://git.sv.gnu.org/guix.git" temporarily
|
|
|
|
|
;; unavailable (XXX).
|
|
|
|
|
(url "http://git.savannah.gnu.org/r/guix.git")
|
2015-01-13 05:41:51 -05:00
|
|
|
|
(commit commit)))
|
2014-06-27 17:06:55 -04:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2016-08-03 04:56:45 -04:00
|
|
|
|
"1c1rqsfc4vrclkk03aj1m8r1lzk9pfa61ax9hhhj5nw23bilsixc"))
|
2015-06-11 17:10:26 -04:00
|
|
|
|
(file-name (string-append "guix-" version "-checkout"))))
|
2014-06-27 17:06:55 -04:00
|
|
|
|
(arguments
|
2016-08-02 19:19:46 -04:00
|
|
|
|
(substitute-keyword-arguments (package-arguments guix-0.11.0)
|
2015-11-03 08:43:42 -05:00
|
|
|
|
((#: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))
|
2014-06-27 17:06:55 -04:00
|
|
|
|
((#:phases phases)
|
2015-07-09 17:41:38 -04:00
|
|
|
|
`(modify-phases ,phases
|
|
|
|
|
(add-after
|
|
|
|
|
'unpack 'bootstrap
|
|
|
|
|
(lambda _
|
|
|
|
|
;; Make sure 'msgmerge' can modify the PO files.
|
|
|
|
|
(for-each (lambda (po)
|
|
|
|
|
(chmod po #o666))
|
|
|
|
|
(find-files "." "\\.po$"))
|
2014-06-27 17:06:55 -04:00
|
|
|
|
|
2015-09-04 13:13:25 -04:00
|
|
|
|
(zero? (system* "sh" "bootstrap"))))))))
|
2014-06-27 17:06:55 -04:00
|
|
|
|
(native-inputs
|
|
|
|
|
`(("autoconf" ,(autoconf-wrapper))
|
|
|
|
|
("automake" ,automake)
|
|
|
|
|
("gettext" ,gnu-gettext)
|
|
|
|
|
("texinfo" ,texinfo)
|
|
|
|
|
("graphviz" ,graphviz)
|
2015-06-11 17:10:26 -04:00
|
|
|
|
("help2man" ,help2man)
|
2016-08-02 19:19:46 -04:00
|
|
|
|
,@(package-native-inputs guix-0.11.0))))))
|
2014-10-12 18:29:09 -04:00
|
|
|
|
|
2016-08-03 04:56:45 -04:00
|
|
|
|
(define-public guix guix-devel)
|
2014-09-27 19:04:18 -04:00
|
|
|
|
|
2016-06-19 16:26:59 -04:00
|
|
|
|
(define (source-file? file stat)
|
|
|
|
|
"Return true if FILE is likely a source file, false if it is a typical
|
|
|
|
|
generated file."
|
|
|
|
|
(define (wrong-extension? file)
|
|
|
|
|
(or (string-suffix? "~" file)
|
|
|
|
|
(member (file-extension file)
|
|
|
|
|
'("o" "a" "lo" "so" "go"))))
|
|
|
|
|
|
|
|
|
|
(match (basename file)
|
|
|
|
|
((or ".git" "autom4te.cache" "configure" "Makefile" "Makefile.in" ".libs")
|
|
|
|
|
#f)
|
|
|
|
|
((? wrong-extension?)
|
|
|
|
|
#f)
|
|
|
|
|
(_
|
|
|
|
|
#t)))
|
|
|
|
|
|
|
|
|
|
(define (make-git-predicate directory)
|
|
|
|
|
"Return a predicate that returns true if a file is part of the Git checkout
|
|
|
|
|
living at DIRECTORY. Upon Git failure, return #f instead of a predicate."
|
|
|
|
|
(define (parent-directory? thing directory)
|
|
|
|
|
;; Return #t if DIRECTORY is the parent of THING.
|
|
|
|
|
(or (string-suffix? thing directory)
|
|
|
|
|
(and (string-index thing #\/)
|
|
|
|
|
(parent-directory? (dirname thing) directory))))
|
|
|
|
|
|
|
|
|
|
(let* ((pipe (with-directory-excursion directory
|
|
|
|
|
(open-pipe* OPEN_READ "git" "ls-files")))
|
|
|
|
|
(files (let loop ((lines '()))
|
|
|
|
|
(match (read-line pipe)
|
|
|
|
|
((? eof-object?)
|
|
|
|
|
(reverse lines))
|
|
|
|
|
(line
|
|
|
|
|
(loop (cons line lines))))))
|
|
|
|
|
(status (close-pipe pipe)))
|
|
|
|
|
(and (zero? status)
|
|
|
|
|
(lambda (file stat)
|
|
|
|
|
(match (stat:type stat)
|
|
|
|
|
('directory
|
|
|
|
|
;; 'git ls-files' does not list directories, only regular files,
|
|
|
|
|
;; so we need this special trick.
|
|
|
|
|
(any (cut parent-directory? <> file) files))
|
|
|
|
|
((or 'regular 'symlink)
|
|
|
|
|
(any (cut string-suffix? <> file) files))
|
|
|
|
|
(_
|
|
|
|
|
#f))))))
|
|
|
|
|
|
|
|
|
|
(define-public current-guix
|
|
|
|
|
(let ((select? (delay (or (make-git-predicate
|
|
|
|
|
(string-append (current-source-directory)
|
|
|
|
|
"/../.."))
|
|
|
|
|
source-file?))))
|
|
|
|
|
(lambda ()
|
|
|
|
|
"Return a package representing Guix built from the current source tree.
|
|
|
|
|
This works by adding the current source tree to the store (after filtering it
|
|
|
|
|
out) and returning a package that uses that as its 'source'."
|
|
|
|
|
(package
|
|
|
|
|
(inherit guix)
|
|
|
|
|
(version (string-append (package-version guix) "+"))
|
|
|
|
|
(source (local-file "../.." "guix-current"
|
|
|
|
|
#:recursive? #t
|
|
|
|
|
#:select? (force select?)))))))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;;;
|
|
|
|
|
;;; Other tools.
|
|
|
|
|
;;;
|
|
|
|
|
|
2014-09-27 19:04:18 -04:00
|
|
|
|
(define-public nix
|
|
|
|
|
(package
|
|
|
|
|
(name "nix")
|
2016-02-20 05:22:26 -05:00
|
|
|
|
(version "1.11.2")
|
2014-09-27 19:04:18 -04:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "http://nixos.org/releases/nix/nix-"
|
|
|
|
|
version "/nix-" version ".tar.xz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2016-02-20 05:22:26 -05:00
|
|
|
|
"1mk9z75gklxcv6kzwwz1h5r2ci5kjy6bh7qwk4m5lf5v9s0k64pw"))))
|
2014-09-27 19:04:18 -04:00
|
|
|
|
(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.
|
2015-11-12 04:59:34 -05:00
|
|
|
|
(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"))))))
|
2014-09-27 19:04:18 -04:00
|
|
|
|
(native-inputs `(("perl" ,perl)
|
|
|
|
|
("pkg-config" ,pkg-config)))
|
|
|
|
|
(inputs `(("curl" ,curl)
|
|
|
|
|
("openssl" ,openssl)
|
|
|
|
|
("libgc" ,libgc)
|
|
|
|
|
("sqlite" ,sqlite)
|
2015-11-12 04:59:34 -05:00
|
|
|
|
("bzip2" ,bzip2)
|
|
|
|
|
("perl-www-curl" ,perl-www-curl)
|
|
|
|
|
("perl-dbi" ,perl-dbi)
|
|
|
|
|
("perl-dbd-sqlite" ,perl-dbd-sqlite)))
|
2014-09-27 19:04:18 -04:00
|
|
|
|
(home-page "http://nixos.org/nix/")
|
|
|
|
|
(synopsis "The Nix package manager")
|
|
|
|
|
(description
|
|
|
|
|
"Nix is a purely functional package manager. This means that it treats
|
|
|
|
|
packages like values in purely functional programming languages such as
|
|
|
|
|
Haskell—they are built by functions that don't have side-effects, and they
|
|
|
|
|
never change after they have been built. Nix stores packages in the Nix
|
|
|
|
|
store, usually the directory /nix/store, where each package has its own unique
|
|
|
|
|
sub-directory.")
|
|
|
|
|
(license lgpl2.1+)))
|
2015-02-21 13:59:08 -05:00
|
|
|
|
|
|
|
|
|
(define-public stow
|
|
|
|
|
(package
|
|
|
|
|
(name "stow")
|
2015-11-11 17:45:29 -05:00
|
|
|
|
(version "2.2.2")
|
2015-02-21 13:59:08 -05:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "mirror://gnu/stow/stow-"
|
|
|
|
|
version ".tar.gz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2015-11-11 17:45:29 -05:00
|
|
|
|
"1pvky9fayms4r6fhns8jd0vavszd7d979w62vfd5n88v614pdxz2"))))
|
2015-02-21 13:59:08 -05:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(inputs
|
|
|
|
|
`(("perl" ,perl)))
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("perl-test-simple" ,perl-test-simple)
|
|
|
|
|
("perl-test-output" ,perl-test-output)
|
2015-11-11 17:45:29 -05:00
|
|
|
|
("perl-capture-tiny" ,perl-capture-tiny)
|
|
|
|
|
("perl-io-stringy" ,perl-io-stringy)))
|
2015-02-21 13:59:08 -05:00
|
|
|
|
(home-page "https://www.gnu.org/software/stow/")
|
|
|
|
|
(synopsis "Managing installed software packages")
|
|
|
|
|
(description
|
|
|
|
|
"GNU Stow is a symlink manager. It generates symlinks to directories
|
|
|
|
|
of data and makes them appear to be merged into the same directory. It is
|
|
|
|
|
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+)))
|
2015-10-25 19:13:03 -04:00
|
|
|
|
|
|
|
|
|
(define-public rpm
|
|
|
|
|
(package
|
|
|
|
|
(name "rpm")
|
2016-05-29 13:57:13 -04:00
|
|
|
|
(version "4.12.0.1")
|
2015-10-25 19:13:03 -04:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "http://rpm.org/releases/rpm-4.12.x/rpm-"
|
|
|
|
|
version ".tar.bz2"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2016-05-29 13:57:56 -04:00
|
|
|
|
"0a82ym8phx7g0f3k6smvxnvzh7yv857l42xafk49689kzhld5pbp"))
|
|
|
|
|
(patches (search-patches "rpm-CVE-2014-8118.patch"))))
|
2015-10-25 19:13:03 -04:00
|
|
|
|
(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"
|
2016-01-05 07:58:36 -05:00
|
|
|
|
(string-append (getenv "C_INCLUDE_PATH") ":"
|
2015-10-25 19:13:03 -04:00
|
|
|
|
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+)))
|
|
|
|
|
|
2015-10-27 16:01:55 -04:00
|
|
|
|
(define-public diffoscope
|
|
|
|
|
(package
|
|
|
|
|
(name "diffoscope")
|
2016-08-12 01:53:56 -04:00
|
|
|
|
(version "56")
|
2015-10-27 16:01:55 -04:00
|
|
|
|
(source (origin
|
2016-02-24 19:15:01 -05:00
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (pypi-uri name version))
|
2015-10-27 16:01:55 -04:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2016-08-12 01:53:56 -04:00
|
|
|
|
"0nbbbp2c1374pl2ysqij2gk013pl49l1nqlg40jxsg95bwa6610l"))))
|
2015-10-27 16:01:55 -04:00
|
|
|
|
(build-system python-build-system)
|
|
|
|
|
(arguments
|
2016-02-24 19:15:01 -05:00
|
|
|
|
`(#: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',") ""))))
|
2015-10-27 16:01:55 -04:00
|
|
|
|
(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)
|
2016-02-24 19:15:01 -05:00
|
|
|
|
#t))))))
|
2015-10-27 16:01:55 -04:00
|
|
|
|
(inputs `(("rpm" ,rpm) ;for rpm-python
|
2016-02-24 19:15:01 -05:00
|
|
|
|
("python-file" ,python-file)
|
|
|
|
|
("python-debian" ,python-debian)
|
|
|
|
|
("python-libarchive-c" ,python-libarchive-c)
|
|
|
|
|
("python-tlsh" ,python-tlsh)
|
2015-10-27 16:01:55 -04:00
|
|
|
|
|
|
|
|
|
;; Below are modules used for tests.
|
2016-02-24 19:15:01 -05:00
|
|
|
|
("python-pytest" ,python-pytest)
|
|
|
|
|
("python-chardet" ,python-chardet)))
|
2015-10-27 16:01:55 -04:00
|
|
|
|
(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+)))
|