GNU bug report logs - #70020
[PATCH 1/1] * gnu: Add debian-devscripts.

Previous Next

Package: guix-patches;

Reported by: Steve George <steve <at> futurile.net>

Date: Tue, 26 Mar 2024 20:43:01 UTC

Severity: normal

Tags: patch

Done: Vagrant Cascadian <vagrant <at> debian.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 70020 in the body.
You can then email your comments to 70020 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#70020; Package guix-patches. (Tue, 26 Mar 2024 20:43:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Steve George <steve <at> futurile.net>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Tue, 26 Mar 2024 20:43:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Steve George <steve <at> futurile.net>
To: guix-patches <at> gnu.org
Cc: Steve George <steve <at> futurile.net>
Subject: [PATCH 1/1] * gnu: Add debian-devscripts.
Date: Tue, 26 Mar 2024 20:41:25 +0000
* 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,"))
+                        (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





Information forwarded to guix-patches <at> gnu.org:
bug#70020; Package guix-patches. (Sun, 31 Mar 2024 21:10:02 GMT) Full text and rfc822 format available.

Message #8 received at 70020 <at> debbugs.gnu.org (full text, mbox):

From: Jelle Licht <jlicht <at> fsfe.org>
To: Steve George <steve <at> futurile.net>, 70020 <at> debbugs.gnu.org
Subject: Re: [bug#70020] [PATCH 1/1] * gnu: Add debian-devscripts.
Date: Sun, 31 Mar 2024 23:08:53 +0200
Hi Steve,

Steve George <steve <at> futurile.net> writes:

> * 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 ...)


> +                        (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?


> +                      (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.


> +    (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.

> +    (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.")

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

> +    (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.

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

Thanks,
Jelle




Information forwarded to guix-patches <at> gnu.org:
bug#70020; Package guix-patches. (Mon, 01 Apr 2024 20:54:02 GMT) Full text and rfc822 format available.

Message #11 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Steve George <steve <at> futurile.net>
To: 70020 <at> debbugs.gnu.org
Cc: jlicht <at> fsfe.org, guix-patches <at> gnu.org, Steve George <steve <at> futurile.net>
Subject: [PATCH v2 0/1] RE: Add Debian-devscripts
Date: Mon,  1 Apr 2024 21:52:14 +0100
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





Information forwarded to guix-patches <at> gnu.org:
bug#70020; Package guix-patches. (Mon, 01 Apr 2024 20:54:02 GMT) Full text and rfc822 format available.

Message #14 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Steve George <steve <at> futurile.net>
To: 70020 <at> debbugs.gnu.org
Cc: jlicht <at> fsfe.org, guix-patches <at> gnu.org, Steve George <steve <at> futurile.net>
Subject: [PATCH v2 1/1] * gnu: Add debian-devscripts.
Date: Mon,  1 Apr 2024 21:52:15 +0100
* gnu/packages/debian.scm (debian-devscripts): New variable.

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

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





Information forwarded to guix-patches <at> gnu.org:
bug#70020; Package guix-patches. (Mon, 01 Apr 2024 20:54:03 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#70020; Package guix-patches. (Mon, 01 Apr 2024 20:54:03 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#70020; Package guix-patches. (Mon, 15 Apr 2024 09:31:02 GMT) Full text and rfc822 format available.

Message #23 received at 70020 <at> debbugs.gnu.org (full text, mbox):

From: Steve George <steve <at> futurile.net>
To: 70020 <at> debbugs.gnu.org
Cc: jlicht <at> fsfe.org, Steve George <steve <at> futurile.net>
Subject: [PATCH v3 0/1] RE: Add Debian-devscripts
Date: Mon, 15 Apr 2024 10:29:50 +0100
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





Information forwarded to guix-patches <at> gnu.org:
bug#70020; Package guix-patches. (Mon, 15 Apr 2024 09:32:03 GMT) Full text and rfc822 format available.

Message #26 received at 70020 <at> debbugs.gnu.org (full text, mbox):

From: Steve George <steve <at> futurile.net>
To: 70020 <at> debbugs.gnu.org
Cc: jlicht <at> fsfe.org, Steve George <steve <at> futurile.net>
Subject: [PATCH v3 1/1] gnu: Add debian-devscripts.
Date: Mon, 15 Apr 2024 10:29:51 +0100
* 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
@@ -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





Information forwarded to guix-patches <at> gnu.org:
bug#70020; Package guix-patches. (Sat, 04 May 2024 02:43:01 GMT) Full text and rfc822 format available.

Message #29 received at 70020 <at> debbugs.gnu.org (full text, mbox):

From: Vagrant Cascadian <vagrant <at> debian.org> 
To: Steve George <steve <at> futurile.net>
Cc: 70020 <at> debbugs.gnu.org, jlicht <at> fsfe.org
Subject: Re: [bug#70020] [PATCH v3 1/1] gnu: Add debian-devscripts.
Date: Fri, 03 May 2024 19:42:11 -0700
[Message part 1 (text/plain, inline)]
On 2024-04-15, Steve George wrote:
> * 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
...
> +(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. :)


> +          (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:

  https://buildd.debian.org/status/fetch.php?pkg=devscripts&arch=all&ver=2.23.7&stamp=1702422001&raw=0

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...


> +    (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
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#70020; Package guix-patches. (Sat, 04 May 2024 07:08:01 GMT) Full text and rfc822 format available.

Message #32 received at 70020 <at> debbugs.gnu.org (full text, mbox):

From: Vagrant Cascadian <vagrant <at> debian.org>
To: Steve George <steve <at> futurile.net>
Cc: vagrant <at> debian.org, 70020 <at> debbugs.gnu.org, jlicht <at> fsfe.org
Subject: Re: [bug#70020] [PATCH v3 1/1] gnu: Add debian-devscripts.
Date: Sat, 04 May 2024 00:06:50 -0700
[Message part 1 (text/plain, inline)]
On 2024-04-15, Steve George wrote:
> 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
...
> +                (wrap.pl (find-files bindir)
> +                         (list "dpkg"
...
> +                               "perl-lwp-protocol-https"
...
> +    (inputs
> +     (list
...
> +      perl-lwp-protocol-https
...
> +    (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
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#70020; Package guix-patches. (Wed, 22 May 2024 15:21:03 GMT) Full text and rfc822 format available.

Message #35 received at 70020 <at> debbugs.gnu.org (full text, mbox):

From: Simon Tournier <zimon.toutoune <at> gmail.com>
To: Vagrant Cascadian <vagrant <at> debian.org>, Steve George <steve <at> futurile.net>
Cc: vagrant <at> debian.org, 70020 <at> debbugs.gnu.org, jlicht <at> fsfe.org
Subject: Re: [bug#70020] [PATCH v3 1/1] gnu: Add debian-devscripts.
Date: Wed, 22 May 2024 15:44:04 +0200
Hi,

Nice addition!

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

>   ./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




Information forwarded to guix-patches <at> gnu.org:
bug#70020; Package guix-patches. (Thu, 30 May 2024 22:29:02 GMT) Full text and rfc822 format available.

Message #38 received at 70020 <at> debbugs.gnu.org (full text, mbox):

From: Steve George <steve <at> futurile.net>
To: 70020 <at> debbugs.gnu.org
Cc: vagrant <at> debian.org, jlicht <at> fsfe.org, Steve George <steve <at> futurile.net>,
 zimon.toutoune <at> gmail.com
Subject: [PATCH v4 0/1] Add debian-devscripts-bts
Date: Thu, 30 May 2024 23:07:18 +0100
* 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 <at> 2.23.7

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

export DEBEMAIL=your <at> 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





Information forwarded to guix-patches <at> gnu.org:
bug#70020; Package guix-patches. (Thu, 30 May 2024 22:29:02 GMT) Full text and rfc822 format available.

Message #41 received at 70020 <at> debbugs.gnu.org (full text, mbox):

From: Steve George <steve <at> futurile.net>
To: 70020 <at> debbugs.gnu.org
Cc: vagrant <at> debian.org, jlicht <at> fsfe.org, Steve George <steve <at> futurile.net>,
 zimon.toutoune <at> gmail.com
Subject: [PATCH v4 1/1] gnu: Add debian-devscripts-bts.
Date: Thu, 30 May 2024 23:07:19 +0100
* gnu/packages/debian.scm (debian-devscripts-bts): New variable.

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

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





Reply sent to Vagrant Cascadian <vagrant <at> debian.org>:
You have taken responsibility. (Fri, 31 May 2024 18:31:02 GMT) Full text and rfc822 format available.

Notification sent to Steve George <steve <at> futurile.net>:
bug acknowledged by developer. (Fri, 31 May 2024 18:31:02 GMT) Full text and rfc822 format available.

Message #46 received at 70020-done <at> debbugs.gnu.org (full text, mbox):

From: Vagrant Cascadian <vagrant <at> debian.org>
To: Steve George <steve <at> futurile.net>, 70020-done <at> debbugs.gnu.org
Cc: jlicht <at> fsfe.org, zimon.toutoune <at> gmail.com
Subject: Re: [PATCH v4 1/1] gnu: Add debian-devscripts-bts.
Date: Fri, 31 May 2024 11:29:56 -0700
[Message part 1 (text/plain, inline)]
On 2024-05-30, Steve George wrote:
> * 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...

> +    (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
[signature.asc (application/pgp-signature, inline)]

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 29 Jun 2024 11:24:09 GMT) Full text and rfc822 format available.

This bug report was last modified 27 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.