GNU bug report logs - #73030
git send-email missing perl packages

Previous Next

Package: guix;

Reported by: Simon Tournier <zimon.toutoune <at> gmail.com>

Date: Wed, 4 Sep 2024 18:59:02 UTC

Severity: normal

Merged with 73076

Done: Simon Tournier <zimon.toutoune <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Simon Tournier <zimon.toutoune <at> gmail.com>
To: 73030 <at> debbugs.gnu.org
Subject: bug#73030: git send-email missing perl packages [partially FIXED]
Date: Thu, 05 Sep 2024 04:03:38 +0200
Hi,

For the fixes see <https://issues.guix.gnu.org/73034>.

Explanation below.

On Wed, 04 Sep 2024 at 20:57, Simon Tournier <zimon.toutoune <at> gmail.com> wrote:

> --8<---------------cut here---------------start------------->8---
> Not using SSL_VERIFY_PEER due to out-of-date IO::Socket::SSL.
> To use SSL please install IO::Socket::SSL with version>=2.007 at /gnu/store/v6bivyjbg6bj07s8iqfzdm6hpvypc0p1-perl-5.36.0/lib/perl5/5.36.0/Net/SMTP.pm line 268.
> --8<---------------cut here---------------end--------------->8---

It is a regression introduced in core-updates, recently merged,

    f2886044: gnu: git: Remove labels and use gexps.

Well, it was not straightforward to spot the bug. :-) Especially when
’git bisect’ is useless.  Therefore, I locally reverted all the 8
suspicious commits modifying packages as git or git-minimal and then
investigated one by one.

Once the culprit had been identified, it was easier to spot the
unexpected part.  Roughly, this snippet:

               ;; Tell 'git-send-email' where perl modules are.
               (wrap-program git-se*
                 `("PERL5LIB" ":" prefix
                   ,(map (lambda (o) (string-append o "/lib/perl5/site_perl"))
                         (list
                          ,@(transitive-input-references
                             'inputs
                             (map (lambda (l)
                                    (assoc l (package-inputs this-package)))
                                  '("perl-authen-sasl"
                                    "perl-net-smtp-ssl"
                                    "perl-io-socket-ssl")))))))

had been translated into:

                ;; Tell 'git-send-email' where perl modules are.
                (wrap-program git-se*
                  `("PERL5LIB" ":" prefix
                    ,(search-path-as-list
                      '("lib/perl5/site_perl")
                      '#$(delete-duplicates
                          (append-map
                           (compose last package-transitive-propagated-inputs)
                           (list (this-package-input "perl-authen-sasl")
                                 (this-package-input "perl-net-smtp-ssl")
                                 (this-package-input "perl-io-socket-ssl")))))))

The former essentially reads:

--8<---------------cut here---------------start------------->8---
scheme@(guix-user)> ,use(gnu packages version-control)
scheme@(guix-user)> (define this-package git)
scheme@(guix-user)> ,pp (transitive-input-references
                             'inputs
                             (map (lambda (l)
                                    (assoc l (package-inputs this-package)))
                                  '("perl-authen-sasl"
                                    "perl-net-smtp-ssl"
                                    "perl-io-socket-ssl")))
$1 = ((assoc-ref inputs "perl-authen-sasl")
 (assoc-ref inputs "perl-net-smtp-ssl")
 (assoc-ref inputs "perl-io-socket-ssl")
 (assoc-ref inputs "perl-gssapi")
 (assoc-ref inputs "perl-digest-hmac")
 (assoc-ref inputs "perl-uri")
 (assoc-ref inputs "perl-net-ssleay"))
--8<---------------cut here---------------end--------------->8---

and the last essentially reads:

--8<---------------cut here---------------start------------->8---
scheme@(guix-user)> ,use(srfi srfi-1)
scheme@(guix-user)> (define (this-package-input name) (or (lookup-package-input this-package name) (lookup-package-native-input this-package name)))
scheme@(guix-user)> ,pp (append-map
                           (compose last package-transitive-propagated-inputs)
                           (list (this-package-input "perl-authen-sasl")
                                 (this-package-input "perl-net-smtp-ssl")
                                 (this-package-input "perl-io-socket-ssl")))
$2 = ("perl-gssapi"
 #<package perl-gssapi <at> 0.28 gnu/packages/web.scm:3527 72334030c580>
 "perl-net-ssleay"
 #<package perl-net-ssleay <at> 1.92 gnu/packages/tls.scm:819 72333ffc8e70>
 "perl-uri"
 #<package perl-uri <at> 5.05 gnu/packages/web.scm:4819 723340318160>)
--8<---------------cut here---------------end--------------->8---

Because ’last’ is applied before ’append-map’, it keeps only the last
elements of all the propagated-inputs for each of the 3.  For instance:

--8<---------------cut here---------------start------------->8---
scheme@(guix-user)> (package-transitive-propagated-inputs (this-package-input "perl-authen-sasl"))
$3 = (("perl-digest-hmac" #<package perl-digest-hmac <at> 1.04 gnu/packages/perl.scm:4029 72333e2ba420>) ("perl-gssapi" #<package perl-gssapi <at> 0.28 gnu/packages/web.scm:3527 72334030c580>))
--8<---------------cut here---------------end--------------->8---

When what is needed is all the package objects.  Therefore, it’s not
possible to compose.

--8<---------------cut here---------------start------------->8---
scheme@(guix-user)> ,pp (map last (append-map
                           package-transitive-propagated-inputs
                           (list (this-package-input "perl-authen-sasl")
                                 (this-package-input "perl-net-smtp-ssl")
                                 (this-package-input "perl-io-socket-ssl"))))
$4 = (#<package perl-digest-hmac <at> 1.04 gnu/packages/perl.scm:4029 72333e2ba420>
 #<package perl-gssapi <at> 0.28 gnu/packages/web.scm:3527 72334030c580>
 #<package perl-io-socket-ssl <at> 2.081 gnu/packages/web.scm:4206 723340310160>
 #<package perl-uri <at> 5.05 gnu/packages/web.scm:4819 723340318160>
 #<package perl-net-ssleay <at> 1.92 gnu/packages/tls.scm:819 72333ffc8e70>
 #<package perl-net-ssleay <at> 1.92 gnu/packages/tls.scm:819 72333ffc8e70>
 #<package perl-uri <at> 5.05 gnu/packages/web.scm:4819 723340318160>)
--8<---------------cut here---------------end--------------->8---

I guess that’s the same story for 'gitweb.cgi'.


Cheers,
simon




This bug report was last modified 313 days ago.

Previous Next


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