mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-25 20:19:18 -05:00
gnu: Add pbuilder.
* gnu/packages/debian.scm (pbuilder): New variable.
This commit is contained in:
parent
b456086c65
commit
d540e686ef
1 changed files with 150 additions and 1 deletions
|
@ -36,10 +36,13 @@ (define-module (gnu packages debian)
|
||||||
#:use-module (gnu packages gettext)
|
#:use-module (gnu packages gettext)
|
||||||
#:use-module (gnu packages gnupg)
|
#:use-module (gnu packages gnupg)
|
||||||
#:use-module (gnu packages guile)
|
#:use-module (gnu packages guile)
|
||||||
|
#:use-module (gnu packages linux)
|
||||||
|
#:use-module (gnu packages man)
|
||||||
#:use-module (gnu packages ncurses)
|
#:use-module (gnu packages ncurses)
|
||||||
#:use-module (gnu packages perl)
|
#:use-module (gnu packages perl)
|
||||||
#:use-module (gnu packages pkg-config)
|
#:use-module (gnu packages pkg-config)
|
||||||
#:use-module (gnu packages wget))
|
#:use-module (gnu packages wget)
|
||||||
|
#:use-module (srfi srfi-26))
|
||||||
|
|
||||||
(define-public debian-archive-keyring
|
(define-public debian-archive-keyring
|
||||||
(package
|
(package
|
||||||
|
@ -418,6 +421,152 @@ (define-public dpkg
|
||||||
handling the installation and removal of Debian software packages.")
|
handling the installation and removal of Debian software packages.")
|
||||||
(license license:gpl2+)))
|
(license license:gpl2+)))
|
||||||
|
|
||||||
|
(define-public pbuilder
|
||||||
|
(package
|
||||||
|
(name "pbuilder")
|
||||||
|
(version "0.231")
|
||||||
|
(source
|
||||||
|
(origin
|
||||||
|
(method git-fetch)
|
||||||
|
(uri (git-reference
|
||||||
|
(url "https://salsa.debian.org/pbuilder-team/pbuilder.git/")
|
||||||
|
(commit version)))
|
||||||
|
(file-name (git-file-name name version))
|
||||||
|
(sha256
|
||||||
|
(base32 "0z6f1fgcrkfql9ayc3d0nxra2y6cn91xd5lvr0hd8gdlp9xdvxbc"))))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(arguments
|
||||||
|
(list
|
||||||
|
#:modules `((guix build gnu-build-system)
|
||||||
|
(guix build utils)
|
||||||
|
(srfi srfi-26))
|
||||||
|
#:phases
|
||||||
|
#~(modify-phases %standard-phases
|
||||||
|
(delete 'configure) ; no configure script
|
||||||
|
(add-after 'unpack 'patch-source
|
||||||
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||||
|
|
||||||
|
;; Documentation requires tldp-one-page.xsl
|
||||||
|
(substitute* "Makefile"
|
||||||
|
((".*-C Documentation.*") ""))
|
||||||
|
|
||||||
|
;; Don't create #$output/var/cache/pbuilder/...
|
||||||
|
(substitute* '("Makefile"
|
||||||
|
"pbuildd/Makefile")
|
||||||
|
((".*/var/cache/pbuilder.*") ""))
|
||||||
|
|
||||||
|
;; Find the correct fallback location.
|
||||||
|
(substitute* '("pbuilder-checkparams"
|
||||||
|
"pbuilder-loadconfig"
|
||||||
|
"pbuilder-satisfydepends-apt"
|
||||||
|
"pbuilder-satisfydepends-aptitude"
|
||||||
|
"pbuilder-satisfydepends-classic"
|
||||||
|
"t/test_pbuilder-satisfydepends-classic")
|
||||||
|
(("\\$PBUILDER_ROOT(/usr)?") #$output))
|
||||||
|
|
||||||
|
;; Some hardcoded paths
|
||||||
|
(substitute* '("debuild-pbuilder"
|
||||||
|
"pbuilder"
|
||||||
|
"pbuilder-buildpackage"
|
||||||
|
"pbuilderrc"
|
||||||
|
"pdebuild"
|
||||||
|
"pdebuild-checkparams"
|
||||||
|
"pdebuild-internal")
|
||||||
|
(("/usr/lib/pbuilder")
|
||||||
|
(string-append #$output "/lib/pbuilder")))
|
||||||
|
(substitute* "pbuildd/buildd-config.sh"
|
||||||
|
(("/usr/share/doc/pbuilder")
|
||||||
|
(string-append #$output "/share/doc/pbuilder")))
|
||||||
|
(substitute* "pbuilder-unshare-wrapper"
|
||||||
|
(("/(s)?bin/ifconfig") "ifconfig")
|
||||||
|
(("/(s)?bin/ip") (search-input-file inputs "/sbin/ip")))
|
||||||
|
(substitute* "Documentation/Makefile"
|
||||||
|
(("/usr") ""))
|
||||||
|
|
||||||
|
;; Ensure PATH works both in Guix and within the Debian chroot.
|
||||||
|
(substitute* "pbuilderrc"
|
||||||
|
(("PATH=\"/usr/sbin:/usr/bin:/sbin:/bin")
|
||||||
|
"PATH=\"$PATH:/usr/sbin:/usr/bin:/sbin:/bin"))))
|
||||||
|
(add-after 'install 'create-etc-pbuilderrc
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
|
(with-output-to-file (string-append #$output "/etc/pbuilderrc")
|
||||||
|
(lambda ()
|
||||||
|
(format #t "# A couple of presets to make this work more smoothly.~@
|
||||||
|
MIRRORSITE=\"http://deb.debian.org/debian\"~@
|
||||||
|
if [ -r /run/setuid-programs/sudo ]; then~@
|
||||||
|
PBUILDERROOTCMD=\"/run/setuid-programs/sudo -E\"~@
|
||||||
|
fi~@
|
||||||
|
PBUILDERSATISFYDEPENDSCMD=\"~a/lib/pbuilder/pbuilder-satisfydepends-apt\"~%"
|
||||||
|
#$output)))))
|
||||||
|
(add-after 'install 'install-manpages
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
|
(let ((man (string-append #$output "/share/man/")))
|
||||||
|
(install-file "debuild-pbuilder.1" (string-append man "man1"))
|
||||||
|
(install-file "pdebuild.1" (string-append man "man1"))
|
||||||
|
(install-file "pbuilder.8" (string-append man "man8"))
|
||||||
|
(install-file "pbuilderrc.5" (string-append man "man5")))))
|
||||||
|
(add-after 'install 'wrap-programs
|
||||||
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||||
|
(for-each
|
||||||
|
(lambda (file)
|
||||||
|
(wrap-script file
|
||||||
|
`("PATH" ":" prefix
|
||||||
|
,(map (compose dirname (cut search-input-file inputs <>))
|
||||||
|
(list "/bin/cut"
|
||||||
|
"/bin/dpkg"
|
||||||
|
"/bin/grep"
|
||||||
|
"/bin/perl"
|
||||||
|
"/bin/sed"
|
||||||
|
"/bin/which"
|
||||||
|
"/sbin/debootstrap")))))
|
||||||
|
(cons*
|
||||||
|
(string-append #$output "/bin/pdebuild")
|
||||||
|
(string-append #$output "/sbin/pbuilder")
|
||||||
|
(find-files (string-append #$output "/lib/pbuilder"))))))
|
||||||
|
;; Move the 'check phase to after 'install.
|
||||||
|
(delete 'check)
|
||||||
|
(add-after 'validate-runpath 'check
|
||||||
|
(assoc-ref %standard-phases 'check)))
|
||||||
|
#:make-flags
|
||||||
|
;; No PREFIX, use DESTDIR instead.
|
||||||
|
#~(list (string-append "DESTDIR=" #$output)
|
||||||
|
(string-append "SYSCONFDIR=" #$output "/etc")
|
||||||
|
(string-append "BINDIR=" #$output "/bin")
|
||||||
|
(string-append "PKGLIBDIR=" #$output "/lib/pbuilder")
|
||||||
|
(string-append "SBINDIR=" #$output "/sbin")
|
||||||
|
(string-append "PKGDATADIR=" #$output "/share/pbuilder")
|
||||||
|
(string-append "EXAMPLEDIR=" #$output "/share/doc/pbuilder/examples")
|
||||||
|
"PBUILDDDIR=/share/doc/pbuilder/examples/pbuildd/")))
|
||||||
|
(inputs
|
||||||
|
(list dpkg
|
||||||
|
debootstrap
|
||||||
|
grep
|
||||||
|
guile-3.0 ; for wrap-script
|
||||||
|
iproute
|
||||||
|
perl
|
||||||
|
which))
|
||||||
|
(native-inputs
|
||||||
|
(list man-db
|
||||||
|
util-linux))
|
||||||
|
(home-page "https://pbuilder-team.pages.debian.net/pbuilder/")
|
||||||
|
(synopsis "Personal package builder for Debian packages")
|
||||||
|
(description
|
||||||
|
"@code{pbuilder} is a personal package builder for Debian packages.
|
||||||
|
@itemize
|
||||||
|
@item@code{pbuilder} constructs a chroot system, and builds a package inside the
|
||||||
|
chroot. It is an ideal system to use to check that a package has correct
|
||||||
|
build-dependencies. It uses @code{apt} extensively, and a local mirror, or a
|
||||||
|
fast connection to a Debian mirror is ideal, but not necessary.
|
||||||
|
@item@code{pbuilder create} uses debootstrap to create a chroot image.
|
||||||
|
@item@code{pbuilder update} updates the image to the current state of
|
||||||
|
testing/unstable/whatever.
|
||||||
|
@item@code{pbuilder build} takes a @code{*.dsc} file and builds a binary in the
|
||||||
|
chroot image.
|
||||||
|
@item@code{pdebuild} is a wrapper for Debian Developers, to allow running
|
||||||
|
@code{pbuilder} just like @code{debuild}, as a normal user.
|
||||||
|
@end itemize")
|
||||||
|
(license license:gpl2+)))
|
||||||
|
|
||||||
(define-public reprepro
|
(define-public reprepro
|
||||||
(package
|
(package
|
||||||
(name "reprepro")
|
(name "reprepro")
|
||||||
|
|
Loading…
Reference in a new issue