unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#70020] [PATCH 1/1] * gnu: Add debian-devscripts.
@ 2024-03-26 20:41 Steve George
  2024-03-31 21:08 ` Jelle Licht
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Steve George @ 2024-03-26 20:41 UTC (permalink / raw)
  To: 70020; +Cc: Steve George

* 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





^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [bug#70020] [PATCH 1/1] * gnu: Add debian-devscripts.
  2024-03-26 20:41 [bug#70020] [PATCH 1/1] * gnu: Add debian-devscripts Steve George
@ 2024-03-31 21:08 ` Jelle Licht
  2024-04-01 20:52 ` [bug#70020] [PATCH v2 0/1] RE: Add Debian-devscripts Steve George
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 12+ messages in thread
From: Jelle Licht @ 2024-03-31 21:08 UTC (permalink / raw)
  To: Steve George, 70020

Hi Steve,

Steve George <steve@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




^ permalink raw reply	[flat|nested] 12+ messages in thread

* [bug#70020] [PATCH v2 0/1] RE: Add Debian-devscripts
  2024-03-26 20:41 [bug#70020] [PATCH 1/1] * gnu: Add debian-devscripts Steve George
  2024-03-31 21:08 ` Jelle Licht
@ 2024-04-01 20:52 ` Steve George
  2024-04-01 20:52   ` [bug#70020] [PATCH v2 1/1] * gnu: Add debian-devscripts Steve George
  2024-04-15  9:29 ` [bug#70020] [PATCH v3 0/1] RE: Add Debian-devscripts Steve George
  2024-05-30 22:07 ` [bug#70020] [PATCH v4 0/1] Add debian-devscripts-bts Steve George
  3 siblings, 1 reply; 12+ messages in thread
From: Steve George @ 2024-04-01 20:52 UTC (permalink / raw)
  To: 70020; +Cc: jlicht, steve

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





^ permalink raw reply	[flat|nested] 12+ messages in thread

* [bug#70020] [PATCH v2 1/1] * gnu: Add debian-devscripts.
  2024-04-01 20:52 ` [bug#70020] [PATCH v2 0/1] RE: Add Debian-devscripts Steve George
@ 2024-04-01 20:52   ` Steve George
  0 siblings, 0 replies; 12+ messages in thread
From: Steve George @ 2024-04-01 20:52 UTC (permalink / raw)
  To: 70020; +Cc: jlicht, steve

* 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





^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [bug#70020] [PATCH v3 0/1] RE: Add Debian-devscripts
  2024-03-26 20:41 [bug#70020] [PATCH 1/1] * gnu: Add debian-devscripts Steve George
  2024-03-31 21:08 ` Jelle Licht
  2024-04-01 20:52 ` [bug#70020] [PATCH v2 0/1] RE: Add Debian-devscripts Steve George
@ 2024-04-15  9:29 ` Steve George
  2024-04-15  9:29   ` [bug#70020] [PATCH v3 1/1] gnu: Add debian-devscripts Steve George
  2024-05-30 22:07 ` [bug#70020] [PATCH v4 0/1] Add debian-devscripts-bts Steve George
  3 siblings, 1 reply; 12+ messages in thread
From: Steve George @ 2024-04-15  9:29 UTC (permalink / raw)
  To: 70020; +Cc: jlicht, Steve George

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





^ permalink raw reply	[flat|nested] 12+ messages in thread

* [bug#70020] [PATCH v3 1/1] gnu: Add debian-devscripts.
  2024-04-15  9:29 ` [bug#70020] [PATCH v3 0/1] RE: Add Debian-devscripts Steve George
@ 2024-04-15  9:29   ` Steve George
  2024-05-04  2:42     ` Vagrant Cascadian
  2024-05-04  7:06     ` Vagrant Cascadian
  0 siblings, 2 replies; 12+ messages in thread
From: Steve George @ 2024-04-15  9:29 UTC (permalink / raw)
  To: 70020; +Cc: jlicht, Steve George

* 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





^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [bug#70020] [PATCH v3 1/1] gnu: Add debian-devscripts.
  2024-04-15  9:29   ` [bug#70020] [PATCH v3 1/1] gnu: Add debian-devscripts Steve George
@ 2024-05-04  2:42     ` Vagrant Cascadian
  2024-05-04  7:06     ` Vagrant Cascadian
  1 sibling, 0 replies; 12+ messages in thread
From: Vagrant Cascadian @ 2024-05-04  2:42 UTC (permalink / raw)
  To: Steve George; +Cc: 70020, jlicht

[-- Attachment #1: Type: text/plain, Size: 2434 bytes --]

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

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [bug#70020] [PATCH v3 1/1] gnu: Add debian-devscripts.
  2024-04-15  9:29   ` [bug#70020] [PATCH v3 1/1] gnu: Add debian-devscripts Steve George
  2024-05-04  2:42     ` Vagrant Cascadian
@ 2024-05-04  7:06     ` Vagrant Cascadian
  2024-05-22 13:44       ` Simon Tournier
  1 sibling, 1 reply; 12+ messages in thread
From: Vagrant Cascadian @ 2024-05-04  7:06 UTC (permalink / raw)
  To: Steve George; +Cc: vagrant, 70020, jlicht

[-- Attachment #1: Type: text/plain, Size: 1020 bytes --]

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

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [bug#70020] [PATCH v3 1/1] gnu: Add debian-devscripts.
  2024-05-04  7:06     ` Vagrant Cascadian
@ 2024-05-22 13:44       ` Simon Tournier
  0 siblings, 0 replies; 12+ messages in thread
From: Simon Tournier @ 2024-05-22 13:44 UTC (permalink / raw)
  To: Vagrant Cascadian, Steve George; +Cc: vagrant, 70020, jlicht

Hi,

Nice addition!

On sam., 04 mai 2024 at 00:06, Vagrant Cascadian <vagrant@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




^ permalink raw reply	[flat|nested] 12+ messages in thread

* [bug#70020] [PATCH v4 0/1] Add debian-devscripts-bts
  2024-03-26 20:41 [bug#70020] [PATCH 1/1] * gnu: Add debian-devscripts Steve George
                   ` (2 preceding siblings ...)
  2024-04-15  9:29 ` [bug#70020] [PATCH v3 0/1] RE: Add Debian-devscripts Steve George
@ 2024-05-30 22:07 ` Steve George
  2024-05-30 22:07   ` [bug#70020] [PATCH v4 1/1] gnu: " Steve George
  3 siblings, 1 reply; 12+ messages in thread
From: Steve George @ 2024-05-30 22:07 UTC (permalink / raw)
  To: 70020; +Cc: vagrant, jlicht, Steve George, zimon.toutoune

* 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





^ permalink raw reply	[flat|nested] 12+ messages in thread

* [bug#70020] [PATCH v4 1/1] gnu: Add debian-devscripts-bts.
  2024-05-30 22:07 ` [bug#70020] [PATCH v4 0/1] Add debian-devscripts-bts Steve George
@ 2024-05-30 22:07   ` Steve George
  2024-05-31 18:29     ` bug#70020: " Vagrant Cascadian
  0 siblings, 1 reply; 12+ messages in thread
From: Steve George @ 2024-05-30 22:07 UTC (permalink / raw)
  To: 70020; +Cc: vagrant, jlicht, Steve George, zimon.toutoune

* 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





^ permalink raw reply related	[flat|nested] 12+ messages in thread

* bug#70020: [PATCH v4 1/1] gnu: Add debian-devscripts-bts.
  2024-05-30 22:07   ` [bug#70020] [PATCH v4 1/1] gnu: " Steve George
@ 2024-05-31 18:29     ` Vagrant Cascadian
  0 siblings, 0 replies; 12+ messages in thread
From: Vagrant Cascadian @ 2024-05-31 18:29 UTC (permalink / raw)
  To: Steve George, 70020-done; +Cc: jlicht, zimon.toutoune

[-- Attachment #1: Type: text/plain, Size: 854 bytes --]

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

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2024-05-31 18:31 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-26 20:41 [bug#70020] [PATCH 1/1] * gnu: Add debian-devscripts Steve George
2024-03-31 21:08 ` Jelle Licht
2024-04-01 20:52 ` [bug#70020] [PATCH v2 0/1] RE: Add Debian-devscripts Steve George
2024-04-01 20:52   ` [bug#70020] [PATCH v2 1/1] * gnu: Add debian-devscripts Steve George
2024-04-15  9:29 ` [bug#70020] [PATCH v3 0/1] RE: Add Debian-devscripts Steve George
2024-04-15  9:29   ` [bug#70020] [PATCH v3 1/1] gnu: Add debian-devscripts Steve George
2024-05-04  2:42     ` Vagrant Cascadian
2024-05-04  7:06     ` Vagrant Cascadian
2024-05-22 13:44       ` Simon Tournier
2024-05-30 22:07 ` [bug#70020] [PATCH v4 0/1] Add debian-devscripts-bts Steve George
2024-05-30 22:07   ` [bug#70020] [PATCH v4 1/1] gnu: " Steve George
2024-05-31 18:29     ` bug#70020: " Vagrant Cascadian

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).