[PATCH 1/1] * gnu: Add debian-devscripts.

  • Done
  • quality assurance status badge
Details
4 participants
  • Jelle Licht
  • Steve George
  • Vagrant Cascadian
  • Simon Tournier
Owner
unassigned
Submitted by
Steve George
Severity
normal

Debbugs page

S
S
Steve George wrote on 26 Mar 13:41 -0700
(address . guix-patches@gnu.org)(name . Steve George)(address . steve@futurile.net)
b6d8a95e03a346c44df5ba9cdfdf175c0c82131b.1711485320.git.steve@futurile.net
* gnu/packages/debian.scm (debian-devscripts): New variable.

Change-Id: Iff64afdb1f730f3d941617bc428a57d09c0381b2
---
gnu/packages/debian.scm | 66 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 66 insertions(+)

Toggle diff (102 lines)
diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
index 1715b963a93..ecec816d872 100644
--- a/gnu/packages/debian.scm
+++ b/gnu/packages/debian.scm
@@ -27,6 +27,7 @@ (define-module (gnu packages debian)
#:use-module (guix packages)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system perl)
#:use-module (guix build-system trivial)
#:use-module (gnu packages autotools)
#:use-module (gnu packages backup)
@@ -34,6 +35,7 @@ (define-module (gnu packages debian)
#:use-module (gnu packages bash)
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
+ #:use-module (gnu packages databases)
#:use-module (gnu packages dbm)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gnupg)
@@ -43,6 +45,8 @@ (define-module (gnu packages debian)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages web)
#:use-module (gnu packages wget)
#:use-module (srfi srfi-26))
@@ -211,6 +215,68 @@ (define-public ubuntu-keyring
(license (list license:public-domain ; the keys
license:gpl2+)))) ; see debian/copyright
+(define-public debian-devscripts
+ (package
+ (name "debian-devscripts")
+ (version "2.23.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://salsa.debian.org/debian/devscripts.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "031467rclglk1hdx8z2vzx5z88vpy0sk73qi8ni0sai3jx62ji75"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:tests? #f ; tests assume various Debian specific capabilities
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'build)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
+ (devscripts-lib (string-append (assoc-ref outputs "out")
+ "/lib/perl5/site_perl/Devscripts")))
+ (with-directory-excursion "scripts"
+ (substitute* "bts.pl" (("/bin/bash") (which "bash")))
+ (substitute* "bts.pl" (("/bin/rm") (which "rm")))
+ (substitute* "bts.pl" (("/bin/cat") (which "cat")))
+ ;; Avoid having to provide Debian's sensible-browser package
+ (substitute* "bts.pl"
+ (("my \\$browser;") "my $browser = $ENV{'BROWSER'};"))
+ (substitute* "bts.pl"
+ (("'sensible-browser',") "$browser,"))
+ (rename-file "bts.pl" "bts")
+ (install-file "bts" bin))
+ (with-directory-excursion "lib/Devscripts/"
+ (for-each (lambda (f) (install-file f devscripts-lib))
+ (find-files "./")))))))))
+ (native-inputs (list perl perl-libwww perl-uri pkg-config python))
+ (propagated-inputs
+ (list dpkg
+ perl-authen-sasl
+ perl-db-file
+ perl-encode
+ perl-file-homedir
+ perl-file-which
+ perl-ipc-run
+ perl-json
+ perl-libwww
+ perl-list-compare
+ perl-lwp-protocol-https
+ perl-moo
+ perl-uri))
+ (home-page "https://tracker.debian.org/pkg/devscripts")
+ (synopsis "Scripts to make the life of a Debian Package maintainer easier")
+ (description "Scripts that assist Debian packagers. Guix developers
+may find the bts command useful for interacting with GNU's debbugs server.")
+ (license license:gpl2)))
+
(define-public debootstrap
(package
(name "debootstrap")

base-commit: 40f53e8fb5b867e3a1e8fa798328423718282aac
--
2.41.0
J
J
Jelle Licht wrote on 31 Mar 14:08 -0700
87zfuef6sa.fsf@fsfe.org
Hi Steve,

Steve George <steve@futurile.net> writes:

Toggle quote (77 lines)
> * gnu/packages/debian.scm (debian-devscripts): New variable.
>
> Change-Id: Iff64afdb1f730f3d941617bc428a57d09c0381b2
> ---
> gnu/packages/debian.scm | 66 +++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 66 insertions(+)
>
> diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
> index 1715b963a93..ecec816d872 100644
> --- a/gnu/packages/debian.scm
> +++ b/gnu/packages/debian.scm
> @@ -27,6 +27,7 @@ (define-module (gnu packages debian)
> #:use-module (guix packages)
> #:use-module (guix build-system copy)
> #:use-module (guix build-system gnu)
> + #:use-module (guix build-system perl)
> #:use-module (guix build-system trivial)
> #:use-module (gnu packages autotools)
> #:use-module (gnu packages backup)
> @@ -34,6 +35,7 @@ (define-module (gnu packages debian)
> #:use-module (gnu packages bash)
> #:use-module (gnu packages compression)
> #:use-module (gnu packages crypto)
> + #:use-module (gnu packages databases)
> #:use-module (gnu packages dbm)
> #:use-module (gnu packages gettext)
> #:use-module (gnu packages gnupg)
> @@ -43,6 +45,8 @@ (define-module (gnu packages debian)
> #:use-module (gnu packages ncurses)
> #:use-module (gnu packages perl)
> #:use-module (gnu packages pkg-config)
> + #:use-module (gnu packages python)
> + #:use-module (gnu packages web)
> #:use-module (gnu packages wget)
> #:use-module (srfi srfi-26))
>
> @@ -211,6 +215,68 @@ (define-public ubuntu-keyring
> (license (list license:public-domain ; the keys
> license:gpl2+)))) ; see debian/copyright
>
> +(define-public debian-devscripts
> + (package
> + (name "debian-devscripts")
> + (version "2.23.7")
> + (source
> + (origin
> + (method git-fetch)
> + (uri (git-reference
> + (url "https://salsa.debian.org/debian/devscripts.git")
> + (commit (string-append "v" version))))
> + (file-name (git-file-name name version))
> + (sha256
> + (base32
> + "031467rclglk1hdx8z2vzx5z88vpy0sk73qi8ni0sai3jx62ji75"))))
> + (build-system gnu-build-system)
> + (arguments
> + (list
> + #:tests? #f ; tests assume various Debian specific capabilities
> + #:phases
> + #~(modify-phases %standard-phases
> + (delete 'configure)
> + (delete 'build)
> + (replace 'install
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
> + (devscripts-lib (string-append (assoc-ref outputs "out")
> + "/lib/perl5/site_perl/Devscripts")))

> + (with-directory-excursion "scripts"
> + (substitute* "bts.pl" (("/bin/bash") (which "bash")))
> + (substitute* "bts.pl" (("/bin/rm") (which "rm")))
> + (substitute* "bts.pl" (("/bin/cat") (which "cat")))
> + ;; Avoid having to provide Debian's sensible-browser package
> + (substitute* "bts.pl"
> + (("my \\$browser;") "my $browser = $ENV{'BROWSER'};"))
> + (substitute* "bts.pl"
> + (("'sensible-browser',") "$browser,"))
This could be separate phase, such as:
(add-after 'unpack 'patch-programs ...)


Toggle quote (3 lines)
> + (rename-file "bts.pl" "bts")
> + (install-file "bts" bin))

It seems this "only" installs bts, compared to the (huge) list of helper
scripts I see listed in the repo README.

IMHO not a blocker, but it should probably be reflected in either a
comment or the package synopsis, name or description. Perhaps an
acceptable compromise is to spin this off into just a 'bts' package?


Toggle quote (4 lines)
> + (with-directory-excursion "lib/Devscripts/"
> + (for-each (lambda (f) (install-file f devscripts-lib))
> + (find-files "./")))))))))

This seems to not install any bash completions or manpages. IWBN to
also install those, of at least make a comment w.r.t. them not being
installed at this time.


Toggle quote (16 lines)
> + (native-inputs (list perl perl-libwww perl-uri pkg-config python))
> + (propagated-inputs
> + (list dpkg
> + perl-authen-sasl
> + perl-db-file
> + perl-encode
> + perl-file-homedir
> + perl-file-which
> + perl-ipc-run
> + perl-json
> + perl-libwww
> + perl-list-compare
> + perl-lwp-protocol-https
> + perl-moo
> + perl-uri))

Would it be possible to wrap relevant scripts, in a similar manner to
bioperl-minimal, and make most of these normal inputs instead of
propagated-inputs?

dpkg seems like something that could be patched to directly refer to a
version directly in the store.

Toggle quote (5 lines)
> + (synopsis "Scripts to make the life of a Debian Package maintainer easier")
> + (description "Scripts that assist Debian packagers. Guix developers
> +may find the bts command useful for interacting with GNU's debbugs server.")

The description should contain full sentences. When you refer to bts,
I'd use @code{bts} Texinfo markup as well.

Toggle quote (2 lines)
> + (license license:gpl2)))

I did not check by going though all source files, but AFAICS, it's
gplv2+. Or does the gplv2 refer to the devscripts files and bts.pl? In
that case, a clarifying comment would be a welcome addition here.

Toggle quote (8 lines)
> (define-public debootstrap
> (package
> (name "debootstrap")
>
> base-commit: 40f53e8fb5b867e3a1e8fa798328423718282aac
> --
> 2.41.0

Thanks,
Jelle
S
S
Steve George wrote on 1 Apr 13:52 -0700
[PATCH v2 0/1] RE: Add Debian-devscripts
(address . 70020@debbugs.gnu.org)
cover.1712003588.git.steve@futurile.net
Hi Jelle - thanks for taking a look at this. I need some help with one of your requests, if you are able.

Stuck on:

I looked at bioperl-minimal and how it's creating a list of transitive inputs. I thought I had it but I'm stuck trying to 'unquote' in a Gexp context (I think that's the problem). Do you know any way to fix this? I guess the other option is to convert to the old type quoted list that bioperl-minimal is using.

Fixed:

1. Split phases
2. Set-up so additional scripts can be added later - decided not to for now
2. Install man pages (mostly - can't figure out how it's creating the bts man page)
3. Install completions (bts)
4. Rework the synopsis / description
5. Add comment about other scripts

Not changed:

* Left the name as-is, because I think some people will find 'bts' through the 'debian devscripts' name. But, changed the synopsis / description to clarify that it's not the massive list of scripts Debian has.
* Need to double check the license from your comment, and add a Texinfo markup.

Steve George (1):
* gnu: Add debian-devscripts.

gnu/packages/debian.scm | 104 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 104 insertions(+)


base-commit: 40f53e8fb5b867e3a1e8fa798328423718282aac
--
2.41.0
S
S
Steve George wrote on 1 Apr 13:52 -0700
[PATCH v2 1/1] * gnu: Add debian-devscripts.
(address . 70020@debbugs.gnu.org)
6ff2720d046e5b553bb655966c21a4041385ed96.1712003588.git.steve@futurile.net
* gnu/packages/debian.scm (debian-devscripts): New variable.

Change-Id: Iff64afdb1f730f3d941617bc428a57d09c0381b2
---
gnu/packages/debian.scm | 104 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 104 insertions(+)

Toggle diff (139 lines)
diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
index 1715b963a93..88060d3395d 100644
--- a/gnu/packages/debian.scm
+++ b/gnu/packages/debian.scm
@@ -27,6 +27,7 @@ (define-module (gnu packages debian)
#:use-module (guix packages)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system perl)
#:use-module (guix build-system trivial)
#:use-module (gnu packages autotools)
#:use-module (gnu packages backup)
@@ -34,6 +35,7 @@ (define-module (gnu packages debian)
#:use-module (gnu packages bash)
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
+ #:use-module (gnu packages databases)
#:use-module (gnu packages dbm)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gnupg)
@@ -43,7 +45,10 @@ (define-module (gnu packages debian)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages web)
#:use-module (gnu packages wget)
+ #:use-module (srfi srfi-1)
#:use-module (srfi srfi-26))
(define-public debian-archive-keyring
@@ -211,6 +216,105 @@ (define-public ubuntu-keyring
(license (list license:public-domain ; the keys
license:gpl2+)))) ; see debian/copyright
+(define-public debian-devscripts
+ (package
+ (name "debian-devscripts")
+ (version "2.23.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://salsa.debian.org/debian/devscripts.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "031467rclglk1hdx8z2vzx5z88vpy0sk73qi8ni0sai3jx62ji75"))))
+ (build-system perl-build-system) ;; bioperl-live used perl - I was using gnu
+ (arguments
+ (let ((transitive-inputs
+ (map (compose package-name cadr)
+ (delete-duplicates
+ (concatenate
+ (map (compose package-transitive-target-inputs cadr)
+ (package-inputs this-package)))))))
+ (list
+ #:tests? #f ; tests assume various Debian specific capabilities
+ #:phases
+ ;; only includes the bts command as that's useful for Guix packagers
+ #~(modify-phases %standard-phases
+ (add-after 'bootstrap 'patch-programs
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (with-directory-excursion "scripts"
+ (substitute* "bts.pl" (("/bin/bash") (which "bash")))
+ (substitute* "bts.pl" (("/bin/rm") (which "rm")))
+ (substitute* "bts.pl" (("/bin/cat") (which "cat")))
+ ;; Avoid having to provide Debian's sensible-browser package
+ (substitute* "bts.pl"
+ (("my \\$browser;") "my $browser = $ENV{'BROWSER'};"))
+ (substitute* "bts.pl"
+ (("'sensible-browser',") "$browser,"))
+ (rename-file "bts.pl" "bts"))))
+ (delete 'configure)
+ (delete 'build)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((bin (string-append #$output "/bin"))
+ (bashcomp (string-append #$output
+ "/etc/bash_completion.d"))
+ (perl-lib (string-join
+ (cons (string-append #$output
+ "/lib/perl5/site_perl/Devscripts")
+ (map (lambda (name)
+ (assoc-ref %build-inputs name))
+ #$transitive-inputs))
+ ":"))
+ ;(perl-lib (string-append #$output
+ ; "/lib/perl5/site_perl/Devscripts"))
+ (doc (string-append #$output
+ "/share/doc/" #$name "-" #$version)))
+ (with-directory-excursion "scripts"
+ (for-each (lambda (f) (install-file f bin))
+ '("bts"))
+ (mkdir-p bashcomp)
+ (copy-file "bts.bash_completion" (string-append bashcomp "/bts")))
+ ;(with-directory-excursion "lib/Devscripts/"
+ ;(for-each (lambda (f) (install-file f perl-lib))
+ ; (find-files "./")))
+ (for-each (lambda (f) (install-file f doc))
+ '("README")))))
+ (add-after 'install 'manpage
+ ;; FIXME: missing the man page for bts, how is it created?
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ( (man1 (string-append #$output "/share/man/man1"))
+ (man5 (string-append #$output "/share/man/man5")))
+ (with-directory-excursion "doc"
+ (invoke "make" "devscripts.1")
+ (install-file "devscripts.1" man1)
+ (install-file "devscripts.conf.5" man5)))))))))
+ (inputs (list dpkg perl-authen-sasl perl-db-file))
+ (native-inputs (list perl perl-libwww perl-uri pkg-config python))
+ (propagated-inputs
+ (list dpkg
+ perl-authen-sasl
+ perl-db-file
+ perl-encode
+ perl-file-homedir
+ perl-file-which
+ perl-ipc-run
+ perl-json
+ perl-libwww
+ perl-list-compare
+ perl-lwp-protocol-https
+ perl-moo
+ perl-uri))
+ (home-page "https://tracker.debian.org/pkg/devscripts")
+ (synopsis "BTS script from Debian's devscripts")
+ (description "This package only provides the bts script from the Debian
+devscripts archive. It's useful for Guix Developers that interacti with GNU's
+debbugs server.")
+ (license license:gpl2)))
+
(define-public debootstrap
(package
(name "debootstrap")
--
2.41.0
S
S
Steve George wrote on 15 Apr 02:29 -0700
[PATCH v3 0/1] RE: Add Debian-devscripts
(address . 70020@debbugs.gnu.org)
cover.1713173193.git.steve@futurile.net
Hi,

Fixed the propagated inputs; just one there now which I think is pretty reasonable.

All other changes requested included from the v2.


Steve George (1):
gnu: Add debian-devscripts.

gnu/packages/debian.scm | 151 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 151 insertions(+)


base-commit: 238e4ec73e4143f3a5a85b56ca00d395cdf60197
--
2.41.0
S
S
Steve George wrote on 15 Apr 02:29 -0700
[PATCH v3 1/1] gnu: Add debian-devscripts.
(address . 70020@debbugs.gnu.org)
03f2e0ee39ee8112655feccb2a72dc4764c4412b.1713173193.git.steve@futurile.net
* gnu/packages/debian.scm (debian-devscripts): New variable.

Change-Id: Iff64afdb1f730f3d941617bc428a57d09c0381b2
---
gnu/packages/debian.scm | 151 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 151 insertions(+)

Toggle diff (186 lines)
diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
index a88fb04feb..2c79afdc75 100644
--- a/gnu/packages/debian.scm
+++ b/gnu/packages/debian.scm
@@ -27,6 +27,7 @@ (define-module (gnu packages debian)
#:use-module (guix packages)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system perl)
#:use-module (guix build-system trivial)
#:use-module (gnu packages autotools)
#:use-module (gnu packages backup)
@@ -34,6 +35,7 @@ (define-module (gnu packages debian)
#:use-module (gnu packages bash)
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
+ #:use-module (gnu packages databases)
#:use-module (gnu packages dbm)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gnupg)
@@ -43,7 +45,10 @@ (define-module (gnu packages debian)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages web)
#:use-module (gnu packages wget)
+ #:use-module (srfi srfi-1)
#:use-module (srfi srfi-26))
(define-public debian-archive-keyring
@@ -236,6 +241,152 @@ (define-public ubuntu-keyring
(license (list license:public-domain ; the keys
license:gpl2+)))) ; see debian/copyright
+(define-public debian-devscripts
+ (package
+ (name "debian-devscripts")
+ (version "2.23.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://salsa.debian.org/debian/devscripts.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "031467rclglk1hdx8z2vzx5z88vpy0sk73qi8ni0sai3jx62ji75"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:tests? #f ; tests assume various Debian specific capabilities
+ #:phases
+ ;; only includes the bts command as that's useful for Guix packagers
+ #~(modify-phases %standard-phases
+ (add-after 'bootstrap 'patch-programs
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (with-directory-excursion "scripts"
+ (substitute* "bts.pl" (("/bin/bash") (which "bash")))
+ (substitute* "bts.pl" (("/bin/rm") (which "rm")))
+ (substitute* "bts.pl" (("/bin/cat") (which "cat")))
+ ;; Avoid having to provide Debian's sensible-browser package
+ (substitute* "bts.pl"
+ (("my \\$browser;") "my $browser = $ENV{'BROWSER'};"))
+ (substitute* "bts.pl"
+ (("'sensible-browser',") "$browser,"))
+ (rename-file "bts.pl" "bts"))))
+ (delete 'configure)
+ (delete 'build)
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((bindir (string-append #$output "/bin"))
+ (bashcomp (string-append #$output
+ "/etc/bash_completion.d"))
+ (perl-lib (string-append #$output
+ "/lib/perl5/site_perl/Devscripts"))
+ (wrap.pl
+ (lambda (scripts keys)
+ (for-each
+ (lambda (script)
+ (wrap-program script
+ `("PERL5LIB" ":" prefix
+ ,(cons
+ (string-append #$output
+ "/lib/perl5/site_perl")
+ (map
+ (lambda (key)
+ (string-append
+ (assoc-ref inputs key)
+ "/lib/perl5/site_perl"))
+ keys)))))
+ scripts)))
+ (doc (string-append #$output
+ "/share/doc/" #$name "-" #$version)))
+ (with-directory-excursion "scripts"
+ (for-each (lambda (f) (install-file f bindir))
+ '("bts"))
+ (mkdir-p bashcomp)
+ (copy-file "bts.bash_completion" (string-append bashcomp "/bts")))
+ (wrap.pl (find-files bindir)
+ (list "dpkg"
+ "perl-authen-sasl"
+ "perl-db-file"
+ "perl-encode"
+ "perl-encode-locale"
+ "perl-file-homedir"
+ "perl-file-listing"
+ "perl-file-which"
+ "perl-http-cookies"
+ "perl-http-daemon"
+ "perl-http-date"
+ "perl-http-message"
+ "perl-http-negotiate"
+ "perl-http-parser"
+ "perl-io-socket-ssl"
+ "perl-ipc-run"
+ "perl-json"
+ "perl-libwww"
+ "perl-list-compare"
+ "perl-lwp-protocol-https"
+ "perl-moo"
+ "perl-mozilla-ca"
+ "perl-net-http"
+ "perl-try-tiny"
+ "perl-uri"
+ "perl-www-robotrules"))
+ (with-directory-excursion "lib/Devscripts/"
+ (for-each (lambda (f) (install-file f perl-lib))
+ (find-files "./")))
+ (for-each (lambda (f) (install-file f doc))
+ '("README")))))
+ (add-after 'install 'manpage
+ ;; FIXME: missing the man page for bts, how is it created?
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ( (man1 (string-append #$output "/share/man/man1"))
+ (man5 (string-append #$output "/share/man/man5")))
+ (with-directory-excursion "doc"
+ (invoke "make" "devscripts.1")
+ (install-file "devscripts.1" man1)
+ (install-file "devscripts.conf.5" man5))))))))
+ (inputs
+ (list
+ bash-minimal
+ dpkg
+ perl-authen-sasl
+ perl-db-file
+ perl-encode
+ perl-encode-locale
+ perl-file-homedir
+ perl-file-listing
+ perl-file-which
+ perl-http-cookies
+ perl-http-daemon
+ perl-http-date
+ perl-http-message
+ perl-http-negotiate
+ perl-http-parser
+ perl-io-socket-ssl
+ perl-ipc-run
+ perl-json
+ perl-libwww
+ perl-list-compare
+ perl-lwp-protocol-https
+ perl-moo
+ perl-mozilla-ca
+ perl-net-http
+ perl-try-tiny
+ perl-uri
+ perl-www-robotrules))
+ (native-inputs
+ (list perl perl-libwww perl-uri pkg-config python))
+ (propagated-inputs
+ (list perl-lwp-protocol-https))
+ (home-page "https://tracker.debian.org/pkg/devscripts")
+ (synopsis "BTS script from Debian's devscripts")
+ (description "This package only provides the bts script from the Debian
+devscripts archive. It's useful for Guix Developers that interacting with GNU's
+debbugs server.")
+ (license license:gpl2)))
+
(define-public debootstrap
(package
(name "debootstrap")
--
2.41.0
V
V
Vagrant Cascadian wrote on 3 May 19:42 -0700
(name . Steve George)(address . steve@futurile.net)
87ikzuwb5o.fsf@wireframe
On 2024-04-15, Steve George wrote:
Toggle quote (11 lines)
> * gnu/packages/debian.scm (debian-devscripts): New variable.
>
> Change-Id: Iff64afdb1f730f3d941617bc428a57d09c0381b2
> ---
> gnu/packages/debian.scm | 151 ++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 151 insertions(+)
>
> diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
> index a88fb04feb..2c79afdc75 100644
> --- a/gnu/packages/debian.scm
> +++ b/gnu/packages/debian.scm
...
Toggle quote (4 lines)
> +(define-public debian-devscripts
> + (package
> + (name "debian-devscripts")

As someone who has used devscripts for years (decades?), I would find it
very surprising that it includes a single script! :)

It is essentially a huge grab bag of scripts (most of which I have never
used) ... so I would suggest "debian-devscripts-bts" or simply "debian-bts".

Or packaging more of the scripts? Not sure what would be generally
useful on guix as most are very debian-specific, but I am sometimes
surprised. :)


Toggle quote (3 lines)
> + (add-after 'install 'manpage
> + ;; FIXME: missing the man page for bts, how is it created?

I have not quite figured out exactly how it gets there, but according
the last build on debian:


it calls:

pod2man --utf8 --center=" " --release="Debian Utilities" bts.pl > bts.1

Presumably this is in one of the scripts/Makefile targets:

%.1: %.pl
podchecker $<
pod2man --utf8 --center=" " --release="Debian Utilities" $< > $@

Seems like they get pulled into SCRIPTS via a wildcard:

PL_FILES := $(wildcard *.pl)
SH_FILES = $(wildcard *.sh)
SCRIPTS = $(patsubst %.pl,%,$(PL_FILES)) $(patsubst %.sh,%,$(SH_FILES))

So it might be possible to get the Makefile to do the right thing ... or
just call pod2man (from "perl") directly since you're only packaging
bts.pl...


Toggle quote (6 lines)
> + (synopsis "BTS script from Debian's devscripts")
> + (description "This package only provides the bts script from the Debian
> +devscripts archive. It's useful for Guix Developers that interacting with GNU's
> +debbugs server.")
> + (license license:gpl2)))

This should definitely be changed to gpl2+ looking at scripts/bts.pl and
debian/copyright documents some exceptions; a few of the common files
might actually be a smattering of other licenses; this is where shipping
only a subset is very nice. :)


Hope that is helpful! :)


live well,
vagrant
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCZjWggwAKCRDcUY/If5cW
qnGuAQDuvpApduGOHhyW5DpHWzCkFZc7wp+S3fveR6yBlkVkBQEA5TYpSCRK7gZe
Lj4Eh1G4C1xtixNHDuPkfnpLqP+ZpwQ=
=Eg2S
-----END PGP SIGNATURE-----

V
V
Vagrant Cascadian wrote on 4 May 00:06 -0700
(name . Steve George)(address . steve@futurile.net)
875xvuvywl.fsf@wireframe
On 2024-04-15, Steve George wrote:
Toggle quote (4 lines)
> diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
> index a88fb04feb..2c79afdc75 100644
> --- a/gnu/packages/debian.scm
> +++ b/gnu/packages/debian.scm
...
Toggle quote (2 lines)
> + (wrap.pl (find-files bindir)
> + (list "dpkg"
...
Toggle quote (1 lines)
> + "perl-lwp-protocol-https"
...
Toggle quote (2 lines)
> + (inputs
> + (list
...
Toggle quote (1 lines)
> + perl-lwp-protocol-https
...
Toggle quote (5 lines)
> + (native-inputs
> + (list perl perl-libwww perl-uri pkg-config python))
> + (propagated-inputs
> + (list perl-lwp-protocol-https))

Despite perl-lwp-protocol-https being in inputs, propagated-inputs, and
included in a perl wrapper....

./pre-inst-env guix shell debian-devscripts -- bts --bts-server=debbugs.gnu.org show 70020
.bts-real: couldn't download http://debbugs.gnu.org/70020:
501 Protocol scheme 'https' is not supported (LWP::Protocol::https not installed)

Explicitly adding perl-lwp-protocol-https to guix shell did not help...


live well,
vagrant
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCZjXeigAKCRDcUY/If5cW
qhS2AP0fyK8NnPUfqRdQxnFLzsIreB3/CABNHVEpd8+CqRUl5AD9FUxMbAW+YB1E
UjWC9IMAikL/JaMb4JuievbpIZ7XxAc=
=WJEX
-----END PGP SIGNATURE-----

S
S
Simon Tournier wrote on 22 May 06:44 -0700
871q5u3qsb.fsf@gmail.com
Hi,

Nice addition!

On sam., 04 mai 2024 at 00:06, Vagrant Cascadian <vagrant@debian.org> wrote:

Toggle quote (2 lines)
> ./pre-inst-env guix shell debian-devscripts -- bts --bts-server=debbugs.gnu.org show 70020

Is it possible to patch ’bts’ to have debbugs.gnu.org as the default
server?

Cheers,
simon
S
S
Steve George wrote on 30 May 15:07 -0700
[PATCH v4 0/1] Add debian-devscripts-bts
(address . 70020@debbugs.gnu.org)
cover.1717106237.git.steve@futurile.net
* Renamed following Vagrant's v2 review: chose 'debian-devscripts-bts' so that potential Debian knowledgable users will find it if they search for devscripts, rather than debian-bts
* General bts man page following Vagrants help - thanks!
* Correctly wrapped Perl from inputs, so that imports work correctly
* Patched source to default to debbugs.gnu.org - tried to provide a config file but this didn't work

To test:

guix shell --development guix --container --nesting --network --preserve=^TERM$ --share=/var/log/guix --share=/etc/ssl coreutils nss-certs

./pre-inst-env guix package --install mutt w3m man-db bash-completion

./pre-inst-env guix install debian-devscripts-bts@2.23.7

GUIX_PROFILE="/home/steve/.guix-profile" ; . "$GUIX_PROFILE/etc/profile"

export DEBEMAIL=your@email.com
bts --online --mbox show 66208

export BROWSER=w3m
bts show 62262

man devscripts
man bts


Steve George (1):
gnu: Add debian-devscripts-bts.

gnu/packages/debian.scm | 159 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 159 insertions(+)


base-commit: ee8ff44519650706a563da96cf22b0f64dd22c34
--
2.41.0
S
S
Steve George wrote on 30 May 15:07 -0700
[PATCH v4 1/1] gnu: Add debian-devscripts-bts.
(address . 70020@debbugs.gnu.org)
27df2890a4034a0bc0287625be0e4a026d8b7107.1717106237.git.steve@futurile.net
* gnu/packages/debian.scm (debian-devscripts-bts): New variable.

Change-Id: Iff64afdb1f730f3d941617bc428a57d09c0381b2
---
gnu/packages/debian.scm | 159 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 159 insertions(+)

Toggle diff (194 lines)
diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
index a88fb04feb..03c007b1e2 100644
--- a/gnu/packages/debian.scm
+++ b/gnu/packages/debian.scm
@@ -27,6 +27,7 @@ (define-module (gnu packages debian)
#:use-module (guix packages)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system perl)
#:use-module (guix build-system trivial)
#:use-module (gnu packages autotools)
#:use-module (gnu packages backup)
@@ -34,6 +35,7 @@ (define-module (gnu packages debian)
#:use-module (gnu packages bash)
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
+ #:use-module (gnu packages databases)
#:use-module (gnu packages dbm)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gnupg)
@@ -43,7 +45,10 @@ (define-module (gnu packages debian)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages web)
#:use-module (gnu packages wget)
+ #:use-module (srfi srfi-1)
#:use-module (srfi srfi-26))
(define-public debian-archive-keyring
@@ -236,6 +241,160 @@ (define-public ubuntu-keyring
(license (list license:public-domain ; the keys
license:gpl2+)))) ; see debian/copyright
+(define-public debian-devscripts-bts
+ (package
+ (name "debian-devscripts-bts")
+ (version "2.23.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://salsa.debian.org/debian/devscripts.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "031467rclglk1hdx8z2vzx5z88vpy0sk73qi8ni0sai3jx62ji75"))))
+ (build-system perl-build-system)
+ (arguments
+ (list
+ #:tests? #f ; tests assume various Debian specific capabilities
+ #:phases
+ ;; only includes the bts command as that's useful for Guix packagers
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-programs
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (with-directory-excursion "scripts"
+ (substitute* "bts.pl" (("/bin/bash") (which "bash")))
+ (substitute* "bts.pl" (("/bin/rm") (which "rm")))
+ (substitute* "bts.pl" (("/bin/cat") (which "cat")))
+ ;; Avoid having to provide Debian's sensible-browser package
+ (substitute* "bts.pl"
+ (("my \\$browser;") "my $browser = $ENV{'BROWSER'};"))
+ (substitute* "bts.pl"
+ (("'sensible-browser',") "$browser,"))
+ ;; Use Guix's debbugs - patching the source as putting a config
+ ;; file into #$output/etc doesn't work
+ (substitute* "bts.pl"
+ (("= 'https://bugs.debian.org'")
+ "= 'https://debbugs.gnu.org'"))
+ (rename-file "bts.pl" "bts"))))
+ (delete 'configure)
+ (delete 'build)
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((bindir (string-append #$output "/bin"))
+ (bashcomp (string-append #$output
+ "/etc/bash_completion.d"))
+ (perl-lib (string-append #$output
+ "/lib/perl5/site_perl/Devscripts"))
+ (wrap.pl
+ (lambda (scripts keys)
+ (for-each
+ (lambda (script)
+ (wrap-program script
+ `("PERL5LIB" ":" prefix
+ ,(cons*
+ (getenv "PERL5LIB")
+ (string-append #$output
+ "/lib/perl5/site_perl")
+ (map
+ (lambda (key)
+ (string-append
+ (assoc-ref inputs key)
+ "/lib/perl5/site_perl"))
+ keys)))))
+ scripts)))
+ (doc (string-append #$output
+ "/share/doc/" #$name "-" #$version)))
+ (with-directory-excursion "scripts"
+ (for-each (lambda (f) (install-file f bindir))
+ '("bts"))
+ (mkdir-p bashcomp)
+ (copy-file "bts.bash_completion" (string-append bashcomp "/bts")))
+ (wrap.pl (find-files bindir)
+ (list "dpkg"
+ "perl-authen-sasl"
+ "perl-db-file"
+ "perl-encode"
+ "perl-encode-locale"
+ "perl-file-homedir"
+ "perl-file-listing"
+ "perl-file-which"
+ "perl-http-cookies"
+ "perl-http-daemon"
+ "perl-http-date"
+ "perl-http-message"
+ "perl-http-negotiate"
+ "perl-http-parser"
+ "perl-io-socket-ssl"
+ "perl-ipc-run"
+ "perl-json"
+ "perl-libwww"
+ "perl-list-compare"
+ "perl-lwp-protocol-https"
+ "perl-moo"
+ "perl-mozilla-ca"
+ "perl-net-http"
+ "perl-try-tiny"
+ "perl-uri"
+ "perl-www-robotrules"))
+ (with-directory-excursion "lib/Devscripts/"
+ (for-each (lambda (f) (install-file f perl-lib))
+ (find-files "./")))
+ (for-each (lambda (f) (install-file f doc))
+ '("README")))))
+ (add-after 'install 'manpage
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ( (man1 (string-append #$output "/share/man/man1"))
+ (man5 (string-append #$output "/share/man/man5")))
+ (with-directory-excursion "scripts"
+ (invoke "pod2man" "--utf8" "--center=' '" "bts" "bts.1")
+ (install-file "bts.1" man1))
+ (with-directory-excursion "doc"
+ (invoke "make" "devscripts.1")
+ (install-file "devscripts.1" man1)
+ (install-file "devscripts.conf.5" man5))))))))
+ (inputs
+ (list
+ bash-minimal
+ dpkg
+ perl-authen-sasl
+ perl-db-file
+ perl-encode
+ perl-encode-locale
+ perl-file-homedir
+ perl-file-listing
+ perl-file-which
+ perl-http-cookies
+ perl-http-daemon
+ perl-http-date
+ perl-http-message
+ perl-http-negotiate
+ perl-http-parser
+ perl-io-socket-ssl
+ perl-ipc-run
+ perl-json
+ perl-libwww
+ perl-list-compare
+ perl-lwp-protocol-https
+ perl-moo
+ perl-mozilla-ca
+ perl-net-http
+ perl-try-tiny
+ perl-uri
+ perl-www-robotrules))
+ (native-inputs
+ (list perl perl-libwww perl-uri pkg-config python))
+ (propagated-inputs
+ (list perl-lwp-protocol-https))
+ (home-page "https://tracker.debian.org/pkg/devscripts")
+ (synopsis "BTS script from Debian's devscripts")
+ (description "This package only provides the bts script from the Debian
+devscripts archive. It's useful for Guix Developers that interacting with GNU's
+debbugs server.")
+ (license license:gpl2+)))
+
(define-public debootstrap
(package
(name "debootstrap")
--
2.41.0
V
V
Vagrant Cascadian wrote on 31 May 11:29 -0700
874jadomvv.fsf@wireframe
On 2024-05-30, Steve George wrote:
Toggle quote (4 lines)
> * gnu/packages/debian.scm (debian-devscripts-bts): New variable.
>
> Change-Id: Iff64afdb1f730f3d941617bc428a57d09c0381b2

Thanks!

Pushed as fba6896f625dcbeef112387fc90abe83acae1720.

Made some minor changes ... there was some trailing whitespace in one of
the comments that guix lint complained about...

Toggle quote (4 lines)
> + (description "This package only provides the bts script from the Debian
> +devscripts archive. It's useful for Guix Developers that interacting with GNU's
> +debbugs server.")

And improved the grammar in the description:

(description "This package only provides the bts script from the Debian
-devscripts archive. It's useful for Guix Developers that interacting with GNU's
+devscripts archive. It's useful for Guix Developers that interact with GNU's
debbugs server.")


live well,
vagrant
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCZloXJQAKCRDcUY/If5cW
qp1FAP9hNcmzTAGRbHemeoeh/cB9Ks5Azy63KYrDwCed6jhXPgEA5CDH+uLhutFp
3eChYrLFFDKlJqYV22F+deEQyr13TAM=
=qD3t
-----END PGP SIGNATURE-----

Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 70020@patchwise.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 70020
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch