Package: guix-patches;
Reported by: Efraim Flashner <efraim <at> flashner.co.il>
Date: Tue, 24 May 2022 08:10:01 UTC
Severity: normal
Tags: patch
Done: Efraim Flashner <efraim <at> flashner.co.il>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: help-debbugs <at> gnu.org (GNU bug Tracking System) To: Efraim Flashner <efraim <at> flashner.co.il> Subject: bug#55608: closed (Re: [bug#55608] [PATCH v2] gnu: Add pbuilder.) Date: Sun, 29 May 2022 13:05:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report #55608: [PATCH] gnu: Add pbuilder. which was filed against the guix-patches package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 55608 <at> debbugs.gnu.org. -- 55608: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=55608 GNU Bug Tracking System Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Efraim Flashner <efraim <at> flashner.co.il> To: 55608-done <at> debbugs.gnu.org Subject: Re: [bug#55608] [PATCH v2] gnu: Add pbuilder. Date: Sun, 29 May 2022 16:03:42 +0300[Message part 3 (text/plain, inline)]Patch pushed. Thanks for the review! -- Efraim Flashner <efraim <at> flashner.co.il> אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted[signature.asc (application/pgp-signature, inline)]
[Message part 5 (message/rfc822, inline)]
From: Efraim Flashner <efraim <at> flashner.co.il> To: guix-patches <at> gnu.org Cc: Vagrant Cascadian <vagrant <at> debian.org>, Efraim Flashner <efraim <at> flashner.co.il> Subject: [PATCH] gnu: Add pbuilder. Date: Tue, 24 May 2022 10:59:18 +0300* gnu/packages/debian.scm (pbuilder): New variable. --- gnu/packages/debian.scm | 145 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) With this I was able to use `sudo -E pbuilder create` to create a new base chroot for building packages and I was able to download the source packages for hello to run `sudo -E pbuilder build ~/hello_2.10-2.dsc` to actually build a hello binary. For reproducing: (on Guix System, in ~/.pbuilderrc, as a minimum: PBUILDERROOTCMD="/run/setuid-programs/sudo -E") wget https://ftp.debian.org/debian/pool/main/h/hello/hello_2.10-2.debian.tar.xz wget https://ftp.debian.org/debian/pool/main/h/hello/hello_2.10-2.dsc wget https://ftp.debian.org/debian/pool/main/h/hello/hello_2.10.orig.tar.gz guix shell pbuilder -- sudo -E pbuilder create guix shell pbuilder -- sudo -E pbuilder build /path/to/hello_2.10-2.dsc --- diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm index 2efd8114be..737ff9b892 100644 --- a/gnu/packages/debian.scm +++ b/gnu/packages/debian.scm @@ -36,6 +36,8 @@ (define-module (gnu packages debian) #:use-module (gnu packages gettext) #:use-module (gnu packages gnupg) #:use-module (gnu packages guile) + #:use-module (gnu packages linux) + #:use-module (gnu packages man) #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -417,6 +419,149 @@ (define-public dpkg handling the installation and removal of Debian software packages.") (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 + #:phases + #~(modify-phases %standard-phases + (delete 'configure) ; no configure script + (add-after 'unpack 'patch-source + (lambda* (#:key native-inputs 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 (or native-inputs 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\"~@ + 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-more 'wrap-programs + (lambda* (#:key native-inputs inputs outputs #:allow-other-keys) + (for-each + (lambda (file) + (wrap-script file + `("PATH" ":" prefix + (,(dirname (search-input-file (or native-inputs inputs) "/bin/cut")) + ,(dirname (search-input-file (or native-inputs inputs) "/bin/dpkg")) + ,(dirname (search-input-file (or native-inputs inputs) "/bin/grep")) + ,(dirname (search-input-file (or native-inputs inputs) "/bin/perl")) + ,(dirname (search-input-file (or native-inputs inputs) "/bin/sed")) + ,(dirname (search-input-file (or native-inputs inputs) "/bin/which")) + ,(dirname (search-input-file (or native-inputs inputs) "/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 'wrap-programs '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 <at> 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 <at> code{pbuilder create} uses debootstrap to create a chroot image. +@item <at> code{pbuilder update} updates the image to the current state of +testing/unstable/whatever. +@item <at> code{pbuilder build} takes a @code{*.dsc} file and builds a binary in the +chroot image. +@item <at> code{pdebuild} is a wrapper for Debian Developers, to allow running +@code{pbuilder} just like @code{debuild}, as a normal user. +@end itemize +NOTE: For Guix System it is recommended to put +@code{PBUILDERROOTCMD=\"/run/setuid-programs/sudo -E\"} inside of your +@file{~/.pbuilderrc}.") + (license license:gpl2+))) + (define-public reprepro (package (name "reprepro") base-commit: 1a1f9e7050a9b787b2111cb5af677510a0122e2b -- 2.36.1
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.