[PATCH] gnu: git: Add credential-libsecret output.

  • Done
  • quality assurance status badge
Details
2 participants
  • Chris Marusich
  • Léo Le Bouter
Owner
unassigned
Submitted by
Léo Le Bouter
Severity
normal
L
L
Léo Le Bouter wrote on 2 Feb 2021 00:35
(address . guix-patches@gnu.org)(name . Léo Le Bouter)(address . lle-bout@zaclys.net)
20210201233518.31176-1-lle-bout@zaclys.net
* gnu/packages/version-control.scm (git):
[native-inputs]: Add pkg-config.
[inputs]: Add glib and libsecret.
[outputs]: Add "credential-libsecret".
[arguments]: Add 'install-credential-libsecret phase to #:phases to build and
install "git-credential-libsecret" to "credential-libsecret" output.
---
gnu/packages/version-control.scm | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)

Toggle diff (65 lines)
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index afbae86772..f78714da57 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -81,6 +81,8 @@
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gl)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
#:use-module (gnu packages golang)
#:use-module (gnu packages groff)
#:use-module (gnu packages guile)
@@ -194,7 +196,8 @@ as well as the classic centralized workflow.")
;; For subtree documentation.
("asciidoc" ,asciidoc-py3)
("docbook-xsl" ,docbook-xsl)
- ("xmlto" ,xmlto)))
+ ("xmlto" ,xmlto)
+ ("pkg-config" ,pkg-config)))
(inputs
`(("curl" ,curl)
("expat" ,expat)
@@ -220,11 +223,16 @@ as well as the classic centralized workflow.")
;; For 'git gui', 'gitk', and 'git citool'.
("tcl" ,tcl)
- ("tk" ,tk)))
+ ("tk" ,tk)
+
+ ;; For 'git-credential-libsecret'
+ ("glib" ,glib)
+ ("libsecret" ,libsecret)))
(outputs '("out" ; the core
"send-email" ; for git-send-email
"svn" ; git-svn
"credential-netrc" ; git-credential-netrc
+ "credential-libsecret" ; git-credential-libsecret
"subtree" ; git-subtree
"gui")) ; gitk, git gui
(arguments
@@ -262,6 +270,7 @@ as well as the classic centralized workflow.")
#:modules ((srfi srfi-1)
(srfi srfi-26)
+ ((guix build gnu-build-system) #:prefix gnu:)
,@%gnu-build-system-modules)
#:phases
(modify-phases %standard-phases
@@ -389,6 +398,13 @@ as well as the classic centralized workflow.")
`("PERL5LIB" ":" prefix
(,(string-append (assoc-ref outputs "out") "/share/perl5"))))
#t)))
+ (add-after 'install 'install-credential-libsecret
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((libsecret (assoc-ref outputs "credential-libsecret")))
+ (with-directory-excursion "contrib/credential/libsecret"
+ ((assoc-ref gnu:%standard-phases 'build))
+ (install-file "git-credential-libsecret"
+ (string-append libsecret "/bin"))))))
(add-after 'install 'install-subtree
(lambda* (#:key outputs #:allow-other-keys)
(let ((subtree (assoc-ref outputs "subtree")))
--
2.30.0
C
C
Chris Marusich wrote on 22 Feb 2021 02:10
(name . Léo Le Bouter)(address . lle-bout@zaclys.net)(address . 46247-close@debbugs.gnu.org)
87zgzw6h6j.fsf@gmail.com
Hi Léo,

I've committed this, with minor changes, as
c53ee79c4ce187b185a070977f69ad9d4fb55179.

Léo Le Bouter <lle-bout@zaclys.net> writes:

Toggle quote (8 lines)
> + (add-after 'install 'install-credential-libsecret
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let* ((libsecret (assoc-ref outputs "credential-libsecret")))
> + (with-directory-excursion "contrib/credential/libsecret"
> + ((assoc-ref gnu:%standard-phases 'build))
> + (install-file "git-credential-libsecret"
> + (string-append libsecret "/bin"))))))

A few days ago, I tested your patch (applied to
19783b9f553e433743fd695302df8cac4ec91ae1, which at the time was the
latest commit on master). Unfortunately, it caused git-minimal to fail
to build:

Toggle snippet (20 lines)
./pre-inst-env guix build git

...

starting phase `install-credential-libsecret'
make: pkg-config: No such file or directory
make: pkg-config: No such file or directory
gcc -g -O2 -o git-credential-libsecret.o -c git-credential-libsecret.c
git-credential-libsecret.c:29:10: fatal error: glib.h: No such file or directory
#include <glib.h>
^~~~~~~~
compilation terminated.
make: *** [Makefile:19: git-credential-libsecret.o] Error 1
command "make" "-j" "2" failed with status 2
builder for `/gnu/store/fwfv6k7jl8f77awgvs0lg3dnlx85nxd9-git-minimal-2.30.1.drv' failed with exit code 1
build of /gnu/store/fwfv6k7jl8f77awgvs0lg3dnlx85nxd9-git-minimal-2.30.1.drv failed
View build log at '/var/log/guix/drvs/fw/fv6k7jl8f77awgvs0lg3dnlx85nxd9-git-minimal-2.30.1.drv.bz2'.
guix build: error: build of `/gnu/store/fwfv6k7jl8f77awgvs0lg3dnlx85nxd9-git-minimal-2.30.1.drv' failed

The same command (./pre-inst-env guix build git) succeeded on commit
19783b9f553e433743fd695302df8cac4ec91ae1.

The problem was that git-minimal inherits the arguments (thus the
phases) from git, so it needs to also delete the newly added phase:

(delete 'build-subtree)
(delete 'split)
(delete 'install-man-pages)
(delete 'install-subtree)
(delete 'install-credential-netrc)
(delete 'install-credential-libsecret)

I also took the liberty of adding #t at the end of the new phase. My
understanding is that all successful phases should still be returning
#t, as described below, so please take care to always return #t at the
end of every phase:


Thank you for the contribution! I hope it streamlines your workflow!

--
Chris
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEy/WXVcvn5+/vGD+x3UCaFdgiRp0FAmAzBIQACgkQ3UCaFdgi
Rp1aJRAA0+lFgRzaAWto6r3SwVYPJ5DfqBnktCODLWpYOzwE7JrfRHyS9dgukE/+
0kT3P1Fkl9MQiOcRQP0BDfC31MHfUqzkk3GB8nu9ZFLoBTwUjnLB2DLJXhfW/zgK
GedegOopNEmTNZp5OIjzaBMsUPNYPNnDbJLdABkmt1A7QcFx4fawZeJOvLeBRwzR
9IoxxuEHZpoVJqT0outjEBoDHGF6w1i/Ov8VwBBd1sChl7yYGbUFsRQNaGiwPdIw
YtclYvnkNJzTJcr6tKQTxzXnEjuxDRhUtoxgXUZoEpZ95FXj29usuZK/PeHYDvPj
enWlqwRRu1Td4WJoyKHnJrVseDlcC2yQ68h8BaQLvjm9GCf5qbiQkT+tKqFsXFAo
YkDjIfVoHW//QZp+HynUX/Zt1hLjLJZBkrF4fmzTTRhwpX4XgTlk2Eo/pxFXRqS8
CGEkeodd9VmrcOFSQFvoE6LOd5gKiaxkzJp6INtsBnRVIIW7jwOdaTWEiu4/i2en
P15dldiBL2B8NIpPEmJdouefVdDyijrg3GTalMc45aNtWXKIlfphMmUpvHwEIVhR
dYVsSiq6GqOAGwBAM+MYqnfBh02lHXgunGuprBmI2OF4WBjbT5cNLZVdvf1pIBr7
J3mwV4emZUbw1VYmNn7+nJYCOIlvRI3Yc75M5X4KB+YR14bpFzo=
=vMm6
-----END PGP SIGNATURE-----

?