* bug#73030: git send-email missing perl packages
@ 2024-09-04 18:57 Simon Tournier
2024-09-05 2:03 ` bug#73030: git send-email missing perl packages [partially FIXED] Simon Tournier
2024-09-05 2:27 ` bug#73030: git send-email missing perl packages Simon Tournier
0 siblings, 2 replies; 3+ messages in thread
From: Simon Tournier @ 2024-09-04 18:57 UTC (permalink / raw)
To: 73030
Hi,
Using Guix 7fa9df4, I get the error:
--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---
when running “git send-email”. I have not investigated yet why it
fails. I notice this:
--8<---------------cut here---------------start------------->8---
$ guix gc --references $(readlink -f ~/.guix-profile/libexec/git-core/git-send-email)
/gnu/store/0yavjaj47a0g3lyw33q2m9whgl588ww7-perl-net-ssleay-1.92
/gnu/store/9wx8rvz984cizp3cq4ng2n1qlk2f1kkh-git-2.45.2
/gnu/store/h2vmf9krw1xmhdd5m52wqs0d7m2ryhxv-perl-gssapi-0.28
/gnu/store/pkd5amfn4wcqrd85x49035nhq8kxy906-perl-uri-5.05
/gnu/store/v6bivyjbg6bj07s8iqfzdm6hpvypc0p1-perl-5.36.0
/gnu/store/x47i4yafqxdav838aykda9c2hhhn9sa4-bash-minimal-5.1.16
/gnu/store/z542qwhy7nnzq7iyjpfxpib2vcx04j0r-git-2.45.2-send-email
--8<---------------cut here---------------end--------------->8---
which the package perl-io-socket-ssl seems missing.
To be precise, using my previous generation, I get:
bash-minimal-5.1.16
git-2.41.0
git-2.41.0-send-email
perl-5.36.0
perl-authen-sasl-2.16
perl-digest-hmac-1.04
perl-gssapi-0.28
perl-io-socket-ssl-2.081
perl-net-smtp-ssl-1.04
perl-net-ssleay-1.92
perl-uri-5.05
and now, I get:
bash-minimal-5.1.16
git-2.45.2
git-2.45.2-send-email
perl-5.36.0
perl-gssapi-0.28
perl-net-ssleay-1.92
perl-uri-5.05
So the difference reads:
perl-authen-sasl-2.16
perl-digest-hmac-1.04
perl-io-socket-ssl-2.081
perl-net-smtp-ssl-1.04
Other said, if I run:
guix shell git git:send-email \
perl \
perl-authen-sasl perl-digest-hmac perl-io-socket-ssl perl-net-smtp-ssl
then the error is gone.
Cheers,
simon
^ permalink raw reply [flat|nested] 3+ messages in thread
* bug#73030: git send-email missing perl packages [partially FIXED]
2024-09-04 18:57 bug#73030: git send-email missing perl packages Simon Tournier
@ 2024-09-05 2:03 ` Simon Tournier
2024-09-05 2:27 ` bug#73030: git send-email missing perl packages Simon Tournier
1 sibling, 0 replies; 3+ messages in thread
From: Simon Tournier @ 2024-09-05 2:03 UTC (permalink / raw)
To: 73030
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@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@0.28 gnu/packages/web.scm:3527 72334030c580>
"perl-net-ssleay"
#<package perl-net-ssleay@1.92 gnu/packages/tls.scm:819 72333ffc8e70>
"perl-uri"
#<package perl-uri@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@1.04 gnu/packages/perl.scm:4029 72333e2ba420>) ("perl-gssapi" #<package perl-gssapi@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@1.04 gnu/packages/perl.scm:4029 72333e2ba420>
#<package perl-gssapi@0.28 gnu/packages/web.scm:3527 72334030c580>
#<package perl-io-socket-ssl@2.081 gnu/packages/web.scm:4206 723340310160>
#<package perl-uri@5.05 gnu/packages/web.scm:4819 723340318160>
#<package perl-net-ssleay@1.92 gnu/packages/tls.scm:819 72333ffc8e70>
#<package perl-net-ssleay@1.92 gnu/packages/tls.scm:819 72333ffc8e70>
#<package perl-uri@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
^ permalink raw reply [flat|nested] 3+ messages in thread
* bug#73030: git send-email missing perl packages
2024-09-04 18:57 bug#73030: git send-email missing perl packages Simon Tournier
2024-09-05 2:03 ` bug#73030: git send-email missing perl packages [partially FIXED] Simon Tournier
@ 2024-09-05 2:27 ` Simon Tournier
1 sibling, 0 replies; 3+ messages in thread
From: Simon Tournier @ 2024-09-05 2:27 UTC (permalink / raw)
To: 73030
Hi,
Using the fix <https://issues.guix.gnu.org/73034>, I get this error:
--8<---------------cut here---------------start------------->8---
Need MIME::Base64 and Authen::SASL todo auth at /gnu/store/imnyk8h2s6qfwd602n5vqxax8h33j2k5-git-2.45.2-send-email/libexec/git-core/.git-send-email-real line 1655.
--8<---------------cut here---------------end--------------->8---
My bad!
The issue is that ’package-transitive-propagated-inputs’ does not return
the package itself but only the dependent ones. Hence the explicit
dependents packages themselves are therefore missing.
Here, the snippet that fixes.
--8<---------------cut here---------------start------------->8---
scheme@(guix-user)> ,pp (delete-duplicates
(let ((these-inputs
(list (this-package-input "perl-authen-sasl")
(this-package-input "perl-net-smtp-ssl")
(this-package-input "perl-io-socket-ssl"))))
(append
these-inputs
(map last
(append-map
package-transitive-propagated-inputs
these-inputs)))))
$4 = (#<package perl-authen-sasl@2.16 gnu/packages/web.scm:2476 72f60a906f20>
#<package perl-net-smtp-ssl@1.04 gnu/packages/web.scm:4512 72f60a9169a0>
#<package perl-io-socket-ssl@2.081 gnu/packages/web.scm:4206 72f60a90f160>
#<package perl-digest-hmac@1.04 gnu/packages/perl.scm:4029 72f60df5e420>
#<package perl-gssapi@0.28 gnu/packages/web.scm:3527 72f60a90c580>
#<package perl-uri@5.05 gnu/packages/web.scm:4819 72f60a916160>
#<package perl-net-ssleay@1.92 gnu/packages/tls.scm:819 72f60a7f3e70>)
--8<---------------cut here---------------end--------------->8---
compared to:
(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")
Therefore, see v2.
Cheers,
simon
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-09-05 2:55 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-04 18:57 bug#73030: git send-email missing perl packages Simon Tournier
2024-09-05 2:03 ` bug#73030: git send-email missing perl packages [partially FIXED] Simon Tournier
2024-09-05 2:27 ` bug#73030: git send-email missing perl packages Simon Tournier
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).