From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
To: 65924@debbugs.gnu.org
Cc: "Maxim Cournoyer" <maxim.cournoyer@gmail.com>,
"Maxim Cournoyer" <maxim.cournoyer@gmail.com>,
"Simon Tournier" <zimon.toutoune@gmail.com>,
"Ludovic Courtès" <ludo@gnu.org>
Subject: bug#65924: [PATCH core-updates 1/3] gnu: git: Remove labels and use gexps.
Date: Sat, 7 Oct 2023 23:18:49 -0400 [thread overview]
Message-ID: <1090d01a7ba277090c84cf66bc7bfaf22521f0e3.1696734901.git.maxim.cournoyer@gmail.com> (raw)
In-Reply-To: <cover.1696734901.git.maxim.cournoyer@gmail.com>
* gnu/packages/version-control.scm (git)
[native-inputs, inputs]: Remove labels.
[arguments]: Use gexps. Use gexp variables input searching procedures where
it makes sense.
---
gnu/packages/version-control.scm | 706 ++++++++++++++++---------------
1 file changed, 360 insertions(+), 346 deletions(-)
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index d9c53af71c..7a3c17efd8 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -230,358 +230,373 @@ (define git-cross-configure-flags
(define-public git
(package
- (name "git")
- (version "2.41.0")
- (source (origin
- (method url-fetch)
- (uri (string-append "mirror://kernel.org/software/scm/git/git-"
- version ".tar.xz"))
- (sha256
- (base32
- "0h40arw08xbpi2cbf7pvc947v963rjxz3inb2ar81zjc8byvlj77"))))
- (build-system gnu-build-system)
- (native-inputs
- `(("native-perl" ,perl)
- ;; Add bash-minimal explicitly to ensure it comes before bash-for-tests,
- ;; see <https://bugs.gnu.org/39513>.
- ("bash" ,bash-minimal)
- ("bash-for-tests" ,bash)
- ("gettext" ,gettext-minimal)
- ;; To build the man pages from the git sources, we would need a dependency
- ;; on a full XML tool chain, and building it actually takes ages. So we
- ;; use this lazy approach and use released tarball.
- ("git-manpages"
- ,(origin
- (method url-fetch)
- (uri (string-append
- "mirror://kernel.org/software/scm/git/git-manpages-"
- version ".tar.xz"))
- (sha256
- (base32
- "0xsqakgy0s60zpa13ilj6zj420kdh8pf4v3nrp1nziwj8ja4qymw"))))
- ;; For subtree documentation.
- ("asciidoc" ,asciidoc)
- ("docbook2x" ,docbook2x)
- ("docbook-xsl" ,docbook-xsl)
- ("libxslt" ,libxslt)
- ("pkg-config" ,pkg-config)
- ("texinfo" ,texinfo)
- ("xmlto" ,xmlto)))
- (inputs
- `(("curl" ,curl)
- ("expat" ,expat)
- ("openssl" ,openssl)
- ("perl" ,perl)
- ("python" ,python) ; for git-p4
- ("zlib" ,zlib)
-
- ;; For PCRE support in git grep (USE_LIBPCRE2).
- ("pcre" ,pcre2)
-
- ;; For 'gitweb.cgi'.
- ("perl-cgi" ,perl-cgi)
-
- ;; For 'git-svn'.
- ("subversion" ,subversion)
- ("perl-term-readkey" ,perl-term-readkey)
-
- ;; For 'git-send-email'.
- ("perl-authen-sasl" ,perl-authen-sasl)
- ("perl-net-smtp-ssl" ,perl-net-smtp-ssl)
- ("perl-io-socket-ssl" ,perl-io-socket-ssl)
-
- ;; For 'git gui', 'gitk', and 'git citool'.
- ("tcl" ,tcl)
- ("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
- `(#:make-flags `("V=1" ;more verbose compilation
+ (name "git")
+ (version "2.41.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://kernel.org/software/scm/git/git-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0h40arw08xbpi2cbf7pvc947v963rjxz3inb2ar81zjc8byvlj77"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ (list perl
+ ;; Add bash-minimal explicitly to ensure it comes before bash-for-tests,
+ ;; see <https://bugs.gnu.org/39513>.
+ bash-minimal
+ bash
+ gettext-minimal
+ ;; For subtree documentation.
+ asciidoc
+ docbook2x
+ docbook-xsl
+ libxslt
+ pkg-config
+ texinfo
+ xmlto))
+ (inputs
+ (list curl
+ expat
+ openssl
+ perl
+ python ;for git-p4
+ zlib
- ,(string-append "SHELL_PATH="
- (assoc-ref %build-inputs "bash")
- "/bin/sh")
+ ;; For PCRE support in git grep (USE_LIBPCRE2).
+ pcre2
- ;; Tests require a bash with completion support.
- ,(string-append "TEST_SHELL_PATH="
- (assoc-ref %build-inputs "bash-for-tests")
- "/bin/bash")
+ ;; For 'gitweb.cgi'.
+ perl-cgi
- "USE_LIBPCRE2=yes"
+ ;; For 'git-svn'.
+ subversion
+ perl-term-readkey
+
+ ;; For 'git-send-email'.
+ perl-authen-sasl
+ perl-net-smtp-ssl
+ perl-io-socket-ssl
+
+ ;; For 'git gui', 'gitk', and 'git citool'.
+ tcl
+ tk
+
+ ;; For 'git-credential-libsecret'
+ glib
+ 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
+ (list
+ #:make-flags
+ #~(list "V=1" ;more verbose compilation
+ (string-append "SHELL_PATH="
+ #$(this-package-native-input "bash-minimal")
+ "/bin/sh")
- ;; By default 'make install' creates hard links for
- ;; things in 'libexec/git-core', which leads to huge
- ;; nars; see <https://bugs.gnu.org/21949>.
- "NO_INSTALL_HARDLINKS=indeed")
+ ;; Tests require a bash with completion support.
+ (string-append "TEST_SHELL_PATH="
+ #$(this-package-native-input "bash")
+ "/bin/bash")
- ;; Make sure the full bash does not end up in the final closure.
- #:disallowed-references (,bash)
+ "USE_LIBPCRE2=yes"
- #:test-target "test"
+ ;; By default 'make install' creates hard links for
+ ;; things in 'libexec/git-core', which leads to huge
+ ;; nars; see <https://bugs.gnu.org/21949>.
+ "NO_INSTALL_HARDLINKS=indeed")
+
+ ;; Make sure the full bash does not end up in the final closure.
+ #:disallowed-references (list bash)
- ;; The explicit --with-tcltk forces the build system to hardcode the
- ;; absolute file name to 'wish'.
- #:configure-flags (list (string-append "--with-tcltk="
- (assoc-ref %build-inputs "tk")
- "/bin/wish8.6") ; XXX
- ,@(if (%current-target-system)
- git-cross-configure-flags
- '()))
+ #:test-target "test"
- #:modules ((srfi srfi-1)
+ ;; The explicit --with-tcltk forces the build system to hardcode the
+ ;; absolute file name to 'wish'.
+ #:configure-flags
+ #~(list (string-append "--with-tcltk="
+ (search-input-file %build-inputs
+ "bin/wish8.6"))
+ #$@(if (%current-target-system)
+ git-cross-configure-flags
+ #~()))
+
+ #:modules `((srfi srfi-1)
(srfi srfi-26)
((guix build gnu-build-system) #:prefix gnu:)
,@%gnu-build-system-modules)
- #:phases
- (modify-phases %standard-phases
- ,@(if (%current-target-system)
- ;; The git build system assumes build == host
- `((add-after 'unpack 'use-host-uname_S
- (lambda _
- (substitute* "config.mak.uname"
- (("uname_S := .*" all)
- (if (equal? ,(%current-target-system) "i586-pc-gnu")
- "uname_S := GNU\n"
- all))))))
- ;; We do not have bash-for-tests when cross-compiling.
- `((add-after 'unpack 'modify-PATH
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((path (string-split (getenv "PATH") #\:))
- (bash-full (assoc-ref inputs "bash-for-tests")))
- ;; Drop the test bash from PATH so that (which "sh") and
- ;; similar does the right thing.
- (setenv "PATH" (string-join
- (remove (cut string-prefix? bash-full <>) path)
- ":")))))))
- ;; Add cross curl-config script to PATH when cross-compiling.
- ,@(if (%current-target-system)
- '((add-before 'configure 'add-cross-curl-config
- (lambda* (#:key inputs #:allow-other-keys)
- (setenv "PATH"
- (string-append (assoc-ref inputs "curl") "/bin:"
- (getenv "PATH"))))))
- '())
- (add-after 'configure 'patch-makefiles
- (lambda _
- (substitute* "Makefile"
- (("/usr/bin/perl") (which "perl"))
- (("/usr/bin/python") (which "python3")))))
- (add-after 'configure 'add-PM.stamp
- (lambda _
- ;; Add the "PM.stamp" to avoid "no rule to make target".
- (call-with-output-file "perl/PM.stamp" (const #t))))
- (add-after 'build 'build-subtree
- (lambda* (#:key inputs #:allow-other-keys)
- (with-directory-excursion "contrib/subtree"
- (substitute* "Makefile"
- ;; Apparently `xmlto' does not bother to looks up the stylesheets
- ;; specified in the XML, unlike the above substitution. Instead it
- ;; uses a hard-coded URL. Work around it here, but if this is
- ;; common perhaps we should hardcode this path in xmlto itself.
- (("\\$\\(XMLTO\\) -m \\$\\(MANPAGE_XSL\\)")
- (string-append "$(XMLTO) -x "
- (string-append (assoc-ref inputs "docbook-xsl")
- "/xml/xsl/docbook-xsl-"
- ,(package-version docbook-xsl))
- "/manpages/docbook.xsl -m $(MANPAGE_XSL)")))
- (invoke "make")
- (invoke "make" "install")
- (invoke "make" "install-doc")
- (substitute* "git-subtree"
- (("/bin/sh") (which "sh"))))))
- (add-before 'check 'patch-tests
- (lambda _
- (let ((store-directory (%store-directory)))
- ;; These files contain some funny bytes that Guile is unable
- ;; to decode for shebang patching. Just delete them.
- (for-each delete-file '("t/t4201-shortlog.sh"
- "t/t7813-grep-icase-iso.sh"))
- ;; Many tests contain inline shell scripts (hooks etc).
- (substitute* (find-files "t" "\\.sh$")
- (("#!/bin/sh") (string-append "#!" (which "sh"))))
- ;; Un-do shebang patching here to prevent checksum mismatch.
- (substitute* '("t/t4034/perl/pre" "t/t4034/perl/post")
- (("^#!.*/bin/perl") "#!/usr/bin/perl"))
- (substitute* "t/t5003-archive-zip.sh"
- (("cp /bin/sh") (string-append "cp " (which "sh"))))
- (substitute* "t/t6030-bisect-porcelain.sh"
- (("\"/bin/sh\"") (string-append "\"" (which "sh") "\"")))
- ;; FIXME: This test runs `git commit` with a bogus EDITOR
- ;; and empty commit message, but does not fail the way it's
- ;; expected to. The test passes when invoked interactively.
- (substitute* "t/t7508-status.sh"
- (("\tcommit_template_commented") "\ttrue"))
- ;; More checksum mismatches due to odd shebangs.
- (substitute* "t/t9100-git-svn-basic.sh"
- (((string-append "\"#!" store-directory ".*/bin/sh")) "\"#!/bin/sh") )
- (substitute* "t/t9300-fast-import.sh"
- (((string-append "\t#!" store-directory ".*/bin/sh")) "\t#!/bin/sh")
- (((string-append "'#!" store-directory ".*/bin/sh")) "'#!/bin/sh"))
- ;; FIXME: Some hooks fail with "basename: command not found".
- ;; See 't/trash directory.t9164.../svn-hook.log'.
- (delete-file "t/t9164-git-svn-dcommit-concurrent.sh")
-
- ;; XXX: These tests fail intermittently for unknown reasons:
- ;; <https://bugs.gnu.org/29546>.
- (for-each delete-file
- '("t/t9128-git-svn-cmd-branch.sh"
- "t/t9167-git-svn-cmd-branch-subproject.sh"
- "t/t9141-git-svn-multiple-branches.sh")))))
- (add-after 'install 'install-info-manual
- (lambda* (#:key parallel-build? #:allow-other-keys)
- (define job-count (if parallel-build?
- (number->string (parallel-job-count))
- "1"))
- (invoke "make" "-C" "Documentation" "install-info"
- "-j" job-count
- ;; The Makefile refer to 'docbook2x-texi', but our binary
- ;; is named 'docbook2texi'.
- "DOCBOOK2X_TEXI=docbook2texi" "PERL_PATH=perl")))
- (add-after 'install 'install-shell-completion
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (completions (string-append out "/etc/bash_completion.d")))
- ;; TODO: Install the tcsh and zsh completions in the right place.
- (mkdir-p completions)
- (copy-file "contrib/completion/git-completion.bash"
- (string-append completions "/git")))))
- (add-after 'install 'install-credential-netrc
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((netrc (assoc-ref outputs "credential-netrc")))
- (install-file "contrib/credential/netrc/git-credential-netrc.perl"
- (string-append netrc "/bin"))
- (rename-file (string-append netrc "/bin/git-credential-netrc.perl")
- (string-append netrc "/bin/git-credential-netrc"))
- ;; Previously, Git.pm was automatically found by netrc.
- ;; Perl 5.26 changed how it locates modules so that @INC no
- ;; longer includes the current working directory (the Perl
- ;; community calls this "dotless @INC").
- (wrap-program (string-append netrc "/bin/git-credential-netrc")
- `("PERL5LIB" ":" prefix
- (,(string-append (assoc-ref outputs "out") "/share/perl5")))))))
- (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")))
- (install-file "contrib/subtree/git-subtree"
- (string-append subtree "/bin"))
- (install-file "contrib/subtree/git-subtree.1"
- (string-append subtree "/share/man/man1")))))
- (add-after 'install 'restore-sample-hooks-shebang
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (dir (string-append out "/share/git-core/templates/hooks")))
- (for-each (lambda (file)
- (format #t "restoring shebang on `~a'~%" file)
- (substitute* file
- (("^#!.*/bin/sh") "#!/bin/sh")))
- (find-files dir ".*")))))
- (add-after 'install 'split
- (lambda* (#:key inputs outputs #:allow-other-keys)
- ;; Split the binaries to the various outputs.
- (let* ((out (assoc-ref outputs "out"))
- (se (assoc-ref outputs "send-email"))
- (svn (assoc-ref outputs "svn"))
- (gui (assoc-ref outputs "gui"))
- (gitk (string-append out "/bin/gitk"))
- (gitk* (string-append gui "/bin/gitk"))
- (git-gui (string-append out "/libexec/git-core/git-gui"))
- (git-gui* (string-append gui "/libexec/git-core/git-gui"))
- (git-cit (string-append out "/libexec/git-core/git-citool"))
- (git-cit* (string-append gui "/libexec/git-core/git-citool"))
- (git-se (string-append out "/libexec/git-core/git-send-email"))
- (git-se* (string-append se "/libexec/git-core/git-send-email"))
- (git-svn (string-append out "/libexec/git-core/git-svn"))
- (git-svn* (string-append svn "/libexec/git-core/git-svn"))
- (git-sm (string-append out
- "/libexec/git-core/git-submodule")))
- (mkdir-p (string-append gui "/bin"))
- (mkdir-p (string-append gui "/libexec/git-core"))
- (mkdir-p (string-append se "/libexec/git-core"))
- (mkdir-p (string-append svn "/libexec/git-core"))
-
- (for-each (lambda (old new)
- (copy-file old new)
- (delete-file old)
- (chmod new #o555))
- (list gitk git-gui git-cit git-se git-svn)
- (list gitk* git-gui* git-cit* git-se* git-svn*))
-
- ;; Tell 'git-svn' where Subversion and perl-term-readkey are.
- (wrap-program git-svn*
- `("PATH" ":" prefix
- (,(string-append (assoc-ref inputs "subversion")
- "/bin")))
- `("PERL5LIB" ":" prefix
- ,(map (lambda (i) (string-append (assoc-ref inputs i)
- "/lib/perl5/site_perl"))
- '("subversion" "perl-term-readkey")))
-
- ;; XXX: The .so for SVN/Core.pm lacks a RUNPATH, so
- ;; help it find 'libsvn_client-1.so'.
- `("LD_LIBRARY_PATH" ":" prefix
- (,(string-append (assoc-ref inputs "subversion")
- "/lib"))))
-
- ;; 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")))))))
-
- ;; Tell 'gitweb.cgi' where perl modules are.
- (wrap-program (string-append out "/share/gitweb/gitweb.cgi")
- `("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-cgi")))))))
-
- ;; Tell 'git-submodule' where Perl is.
- (wrap-program git-sm
- `("PATH" ":" prefix
- (,(string-append (assoc-ref inputs "perl")
- "/bin")))))))
- (add-after 'split 'install-man-pages
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (man (string-append out "/share/man"))
- (manpages (assoc-ref inputs "git-manpages")))
- (mkdir-p man)
- (with-directory-excursion man
- (invoke "tar" "xvf" manpages)))))
- ,@(if (system-hurd?)
- '((add-after 'unpack 'delete-tests/hurd
- (lambda _
- (delete-file "t/t0052-simple-ipc.sh")
- (delete-file "t/t5562-http-backend-content-length.sh")
- (delete-file "t/t9902-completion.sh"))))
- '()))))
+ #:phases
+ #~(modify-phases %standard-phases
+ #$@(if (%current-target-system)
+ ;; The git build system assumes build == host
+ #~((add-after 'unpack 'use-host-uname_S
+ (lambda _
+ (substitute* "config.mak.uname"
+ (("uname_S := .*" all)
+ (if (equal? #$(%current-target-system) "i586-pc-gnu")
+ "uname_S := GNU\n"
+ all))))))
+ ;; We do not have a full bash when cross-compiling.
+ #~((add-after 'unpack 'modify-PATH
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((path (string-split (getenv "PATH") #\:))
+ (bash-full #$(this-package-native-input "bash")))
+ ;; Drop the test bash from PATH so that (which "sh")
+ ;; and similar does the right thing.
+ (setenv "PATH"
+ (string-join
+ (remove (cut string-prefix? bash-full <>)
+ path)
+ ":")))))))
+ ;; Add cross curl-config script to PATH when cross-compiling.
+ #$@(if (%current-target-system)
+ #~((add-before 'configure 'add-cross-curl-config
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "PATH"
+ (string-append
+ (dirname (search-input-file
+ inputs "bin/curl-config"))
+ ":" (getenv "PATH"))))))
+ #~())
+ (add-after 'configure 'patch-makefiles
+ (lambda _
+ (substitute* "Makefile"
+ (("/usr/bin/perl") (which "perl"))
+ (("/usr/bin/python") (which "python3")))))
+ (add-after 'configure 'add-PM.stamp
+ (lambda _
+ ;; Add the "PM.stamp" to avoid "no rule to make target".
+ (call-with-output-file "perl/PM.stamp" (const #t))))
+ (add-after 'build 'build-subtree
+ (lambda* (#:key native-inputs inputs #:allow-other-keys)
+ (with-directory-excursion "contrib/subtree"
+ (substitute* "Makefile"
+ ;; Apparently `xmlto' does not bother to looks up the
+ ;; stylesheets specified in the XML, unlike the above
+ ;; substitution. Instead it uses a hard-coded URL. Work
+ ;; around it here, but if this is common perhaps we should
+ ;; hardcode this path in xmlto itself.
+ (("\\$\\(XMLTO\\) -m \\$\\(MANPAGE_XSL\\)")
+ (string-append "$(XMLTO) -x "
+ (search-input-directory
+ (or native-inputs inputs)
+ (string-append
+ "xml/xsl/docbook-xsl-"
+ #$(package-version docbook-xsl)))
+ "/manpages/docbook.xsl -m $(MANPAGE_XSL)")))
+ (invoke "make")
+ (invoke "make" "install")
+ (invoke "make" "install-doc")
+ (substitute* "git-subtree"
+ (("/bin/sh") (which "sh"))))))
+ (add-before 'check 'patch-tests
+ (lambda _
+ (let ((store-directory (%store-directory)))
+ ;; These files contain some funny bytes that Guile is unable
+ ;; to decode for shebang patching. Just delete them.
+ (for-each delete-file '("t/t4201-shortlog.sh"
+ "t/t7813-grep-icase-iso.sh"))
+ ;; Many tests contain inline shell scripts (hooks etc).
+ (substitute* (find-files "t" "\\.sh$")
+ (("#!/bin/sh") (string-append "#!" (which "sh"))))
+ ;; Un-do shebang patching here to prevent checksum mismatch.
+ (substitute* '("t/t4034/perl/pre" "t/t4034/perl/post")
+ (("^#!.*/bin/perl") "#!/usr/bin/perl"))
+ (substitute* "t/t5003-archive-zip.sh"
+ (("cp /bin/sh") (string-append "cp " (which "sh"))))
+ (substitute* "t/t6030-bisect-porcelain.sh"
+ (("\"/bin/sh\"") (string-append "\"" (which "sh") "\"")))
+ ;; FIXME: This test runs `git commit` with a bogus EDITOR
+ ;; and empty commit message, but does not fail the way it's
+ ;; expected to. The test passes when invoked interactively.
+ (substitute* "t/t7508-status.sh"
+ (("\tcommit_template_commented") "\ttrue"))
+ ;; More checksum mismatches due to odd shebangs.
+ (substitute* "t/t9100-git-svn-basic.sh"
+ (((string-append "\"#!" store-directory ".*/bin/sh"))
+ "\"#!/bin/sh") )
+ (substitute* "t/t9300-fast-import.sh"
+ (((string-append "\t#!" store-directory ".*/bin/sh"))
+ "\t#!/bin/sh")
+ (((string-append "'#!" store-directory ".*/bin/sh"))
+ "'#!/bin/sh"))
+ ;; FIXME: Some hooks fail with "basename: command not found".
+ ;; See 't/trash directory.t9164.../svn-hook.log'.
+ (delete-file "t/t9164-git-svn-dcommit-concurrent.sh")
+
+ ;; XXX: These tests fail intermittently for unknown reasons:
+ ;; <https://bugs.gnu.org/29546>.
+ (for-each delete-file
+ '("t/t9128-git-svn-cmd-branch.sh"
+ "t/t9167-git-svn-cmd-branch-subproject.sh"
+ "t/t9141-git-svn-multiple-branches.sh")))))
+ (add-after 'install 'install-info-manual
+ (lambda* (#:key parallel-build? #:allow-other-keys)
+ (define job-count (if parallel-build?
+ (number->string (parallel-job-count))
+ "1"))
+ (invoke "make" "-C" "Documentation" "install-info"
+ "-j" job-count
+ ;; The Makefile refer to 'docbook2x-texi', but our binary
+ ;; is named 'docbook2texi'.
+ "DOCBOOK2X_TEXI=docbook2texi" "PERL_PATH=perl")))
+ (add-after 'install 'install-shell-completion
+ (lambda _
+ (let ((completions (string-append #$output
+ "/etc/bash_completion.d")))
+ ;; TODO: Install the tcsh and zsh completions in the right
+ ;; place.
+ (mkdir-p completions)
+ (copy-file "contrib/completion/git-completion.bash"
+ (string-append completions "/git")))))
+ (add-after 'install 'install-credential-netrc
+ (lambda _
+ (install-file "contrib/credential/netrc/git-credential-netrc.perl"
+ (string-append #$output:credential-netrc "/bin"))
+ (rename-file (string-append #$output:credential-netrc
+ "/bin/git-credential-netrc.perl")
+ (string-append #$output:credential-netrc
+ "/bin/git-credential-netrc"))
+ ;; Previously, Git.pm was automatically found by netrc.
+ ;; Perl 5.26 changed how it locates modules so that @INC no
+ ;; longer includes the current working directory (the Perl
+ ;; community calls this "dotless @INC").
+ (wrap-program (string-append #$output:credential-netrc
+ "/bin/git-credential-netrc")
+ `("PERL5LIB" ":" prefix
+ (,(string-append #$output "/share/perl5"))))))
+ (add-after 'install 'install-credential-libsecret
+ (lambda _
+ (with-directory-excursion "contrib/credential/libsecret"
+ ((assoc-ref gnu:%standard-phases 'build))
+ (install-file "git-credential-libsecret"
+ (string-append #$output:credential-libsecret
+ "/bin")))))
+ (add-after 'install 'install-subtree
+ (lambda _
+ (install-file "contrib/subtree/git-subtree"
+ (string-append #$output:subtree "/bin"))
+ (install-file "contrib/subtree/git-subtree.1"
+ (string-append #$output:subtree
+ "/share/man/man1"))))
+ (add-after 'install 'restore-sample-hooks-shebang
+ (lambda _
+ (let* ((dir (string-append #$output
+ "/share/git-core/templates/hooks")))
+ (for-each (lambda (file)
+ (format #t "restoring shebang on `~a'~%" file)
+ (substitute* file
+ (("^#!.*/bin/sh") "#!/bin/sh")))
+ (find-files dir ".*")))))
+ (add-after 'install 'split
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Split the binaries to the various outputs.
+ (let* ((out #$output)
+ (se #$output:send-email)
+ (svn #$output:svn)
+ (gui #$output:gui)
+ (gitk (string-append out "/bin/gitk"))
+ (gitk* (string-append gui "/bin/gitk"))
+ (git-gui (string-append
+ out "/libexec/git-core/git-gui"))
+ (git-gui* (string-append gui "/libexec/git-core/git-gui"))
+ (git-cit (string-append
+ out "/libexec/git-core/git-citool"))
+ (git-cit* (string-append
+ gui "/libexec/git-core/git-citool"))
+ (git-se (string-append
+ out "/libexec/git-core/git-send-email"))
+ (git-se* (string-append
+ se "/libexec/git-core/git-send-email"))
+ (git-svn (string-append out "/libexec/git-core/git-svn"))
+ (git-svn* (string-append svn "/libexec/git-core/git-svn"))
+ (git-sm (string-append
+ out "/libexec/git-core/git-submodule")))
+ (mkdir-p (string-append gui "/bin"))
+ (mkdir-p (string-append gui "/libexec/git-core"))
+ (mkdir-p (string-append se "/libexec/git-core"))
+ (mkdir-p (string-append svn "/libexec/git-core"))
+
+ (for-each (lambda (old new)
+ (copy-file old new)
+ (delete-file old)
+ (chmod new #o555))
+ (list gitk git-gui git-cit git-se git-svn)
+ (list gitk* git-gui* git-cit* git-se* git-svn*))
+
+ ;; Tell 'git-svn' where Subversion and perl-term-readkey are.
+
+ ;; FIXME: Old school 'assoc-ref' is used to retrieve
+ ;; subversion here, as #$(this-package-input "subversion")
+ ;; causes a dependency cycle for unknown reasons.
+ (wrap-program git-svn*
+ `("PATH" ":" prefix
+ (,(dirname (search-input-file inputs "bin/perl"))))
+ `("PERL5LIB" ":" prefix
+ ,(search-path-as-list
+ '("lib/perl5/site_perl")
+ (list (assoc-ref inputs "subversion")
+ #$(this-package-input "perl-term-readkey"))))
+
+ ;; XXX: The .so for SVN/Core.pm lacks a RUNPATH, so
+ ;; help it find 'libsvn_client-1.so'.
+ `("LD_LIBRARY_PATH" ":" prefix
+ (,(string-append (assoc-ref inputs "subversion")
+ "/lib"))))
+
+ ;; 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")))))))
+ ;; Tell 'gitweb.cgi' where perl modules are.
+ (wrap-program (string-append out "/share/gitweb/gitweb.cgi")
+ `("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-cgi")))))))
+
+ ;; Tell 'git-submodule' where Perl is.
+ (wrap-program git-sm
+ `("PATH" ":" prefix
+ (,(dirname (search-input-file inputs "bin/perl"))))))))
+ (add-after 'split 'install-man-pages
+ (lambda _
+ (let ((man (string-append #$output "/share/man")))
+ (mkdir-p man)
+ (with-directory-excursion man
+ (invoke
+ "tar" "xvf"
+ #$(origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://kernel.org/software/scm/git/"
+ "git-manpages-" version ".tar.xz"))
+ (sha256
+ (base32
+ "0xsqakgy0s60zpa13ilj6zj420kdh8pf4v3nrp1nziwj8ja4qymw"))))))))
+ #$@(if (system-hurd?)
+ #~((add-after 'unpack 'delete-tests/hurd
+ (lambda _
+ (delete-file "t/t0052-simple-ipc.sh")
+ (delete-file "t/t5562-http-backend-content-length.sh")
+ (delete-file "t/t9902-completion.sh"))))
+ #~()))))
(native-search-paths
;; For HTTPS access, Git needs a single-file certificate bundle, specified
@@ -641,9 +656,8 @@ (define-public git-minimal
(delete 'install-credential-libsecret)
(add-after 'install 'remove-unusable-perl-commands
(lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin"))
- (libexec (string-append out "/libexec")))
+ (let ((bin (string-append #$output "/bin"))
+ (libexec (string-append #$output "/libexec")))
(for-each (lambda (file)
(delete-file (string-append libexec
"/git-core/" file)))
@@ -663,11 +677,11 @@ (define-public git-minimal
;; These templates typically depend on Perl. Remove them.
(delete-file-recursively
- (string-append out "/share/git-core/templates/hooks"))
+ (string-append #$output "/share/git-core/templates/hooks"))
;; Gitweb depends on Perl as well.
(delete-file-recursively
- (string-append out "/share/gitweb")))))))
+ (string-append #$output "/share/gitweb")))))))
((#:make-flags flags)
#~(delete "USE_LIBPCRE2=yes" #$flags))
((#:configure-flags flags)
--
2.41.0
next prev parent reply other threads:[~2023-10-08 4:03 UTC|newest]
Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-13 18:00 bug#65924: git searches coreutils and util-linux commands in PATH Maxim Cournoyer
2023-09-13 22:27 ` Simon Tournier
2023-09-14 3:14 ` Maxim Cournoyer
2023-09-14 6:12 ` Simon Tournier
2023-10-04 16:14 ` Ludovic Courtès
2023-10-04 16:52 ` Simon Tournier
2023-10-05 3:41 ` Maxim Cournoyer
2023-10-05 16:21 ` Simon Tournier
2023-10-08 3:18 ` bug#65924: [PATCH core-updates 0/3] Fix 'git submodule' in pure environments Maxim Cournoyer
2023-10-08 3:18 ` Maxim Cournoyer [this message]
2023-10-08 7:09 ` bug#65924: [PATCH core-updates 1/3] gnu: git: Remove labels and use gexps Liliana Marie Prikler
2023-10-14 16:51 ` Ludovic Courtès
2023-10-15 19:55 ` Maxim Cournoyer
2023-10-08 3:18 ` bug#65924: [PATCH core-updates 2/3] gnu: git: Invert inheritance relationship Maxim Cournoyer
2023-10-08 7:03 ` Liliana Marie Prikler
2023-10-09 14:21 ` bug#65924: git searches coreutils and util-linux commands in PATH Maxim Cournoyer
2023-10-09 16:49 ` Liliana Marie Prikler
2023-10-09 18:21 ` Maxim Cournoyer
2023-10-09 18:33 ` Liliana Marie Prikler
2023-10-09 19:25 ` Maxim Cournoyer
2023-10-09 19:28 ` Liliana Marie Prikler
2023-10-09 19:44 ` Maxim Cournoyer
2023-10-09 21:03 ` bokr
2023-10-10 4:28 ` Liliana Marie Prikler
2023-10-09 19:17 ` Maxim Cournoyer
2023-10-14 16:54 ` bug#65924: [PATCH core-updates 2/3] gnu: git: Invert inheritance relationship Ludovic Courtès
2023-10-08 3:18 ` bug#65924: [PATCH core-updates 3/3] gnu: git-minimal: Add coreutils and sed to PATH Maxim Cournoyer
2023-10-14 17:01 ` Ludovic Courtès
2023-10-15 20:03 ` Maxim Cournoyer
2023-10-17 15:15 ` Maxim Cournoyer
2023-10-09 16:28 ` bug#65924: [PATCH 00/65] Export %default-gnu-imported-modules and %default-gnu-modules Maxim Cournoyer
2023-10-09 16:28 ` bug#65924: [PATCH core-updates 02/65] gnu: acl: Remove labels and trailing #t Maxim Cournoyer
2023-10-09 16:28 ` bug#65924: [PATCH core-updates 03/65] gnu: acl: Import the correct set of modules Maxim Cournoyer
2023-10-09 16:28 ` bug#65924: [PATCH core-updates 04/65] gnu: dirvish: " Maxim Cournoyer
2023-10-09 16:28 ` bug#65924: [PATCH core-updates 05/65] gnu: fio: " Maxim Cournoyer
2023-10-09 16:28 ` bug#65924: [PATCH core-updates 06/65] gnu: ccwl: " Maxim Cournoyer
2023-10-09 16:28 ` bug#65924: [PATCH core-updates 07/65] gnu: boost: " Maxim Cournoyer
2023-10-09 16:28 ` bug#65924: [PATCH core-updates 08/65] gnu: gcc-final: " Maxim Cournoyer
2023-10-09 16:28 ` bug#65924: [PATCH core-updates 09/65] gnu: epson-inkjet-printer-escpr: " Maxim Cournoyer
2023-10-09 16:28 ` bug#65924: [PATCH core-updates 10/65] gnu: splix: " Maxim Cournoyer
2023-10-09 16:37 ` Maxim Cournoyer
2023-10-09 16:36 ` bug#65924: git searches coreutils and util-linux commands in PATH Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 01/65] build-systems: gnu: Export %default-gnu-imported-modules and %default-gnu-modules Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 11/65] gnu: guile-curl: Import the correct set of modules Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 12/65] gnu: dpkg: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 13/65] gnu: dezyne: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 14/65] gnu: fastcap: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 15/65] gnu: fasthenry: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 16/65] gnu: seabios-qemu: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 17/65] gnu: font-amiri: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 18/65] gnu: xdg-utils: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 19/65] gnu: tsukundere: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 20/65] gnu: gcc-4.9: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 21/65] gnu: make-libstdc++: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 22/65] gnu: custom-gcc: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 23/65] gnu: gdb: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 24/65] gnu: genimage: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 25/65] gnu: gimp: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 26/65] gnu: pinentry-rofi: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 27/65] gnu: mozjs: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 28/65] gnu: icecat-minimal: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 29/65] gnu: icedove-minimal: " Maxim Cournoyer
2023-10-09 16:37 ` bug#65924: [PATCH core-updates 30/65] gnu: python-graph-tool: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 31/65] gnu: artanis: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 32/65] gnu: guilescript: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 33/65] gnu: guile-dsv: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 34/65] gnu: guile-di: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 35/65] gnu: guile-hall: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 36/65] gnu: haunt: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 37/65] gnu: guile-studio: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 38/65] gnu: guile-libyaml: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 39/65] gnu: guile-gitlab: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 40/65] gnu: guile-smc: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 41/65] gnu: rime-data: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 42/65] gnu: jbigkit: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 43/65] gnu: uftrace: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 44/65] gnu: mdadm-static: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 45/65] gnu: ecryptfs-utils: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 46/65] gnu: ghmm: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 47/65] gnu: %gcc-static: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 48/65] gnu: mumps: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 49/65] gnu: hypre: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 50/65] gnu: lingeling: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 51/65] gnu: guix-build-coordinator: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 52/65] gnu: nar-herder: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 53/65] gnu: python-sip-4: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 54/65] gnu: ratpoison: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 55/65] gnu: stklos: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 56/65] gnu: python-sepolgen: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 57/65] gnu: boxes: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 58/65] gnu: simh: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 59/65] gnu: stb: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 60/65] gnu: info-reader: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 61/65] gnu: git: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 62/65] gnu: ffmpeg-3.4: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 63/65] gnu: qemu: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 64/65] gnu: ganeti: " Maxim Cournoyer
2023-10-09 16:38 ` bug#65924: [PATCH core-updates 65/65] gnu: criu: " Maxim Cournoyer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1090d01a7ba277090c84cf66bc7bfaf22521f0e3.1696734901.git.maxim.cournoyer@gmail.com \
--to=maxim.cournoyer@gmail.com \
--cc=65924@debbugs.gnu.org \
--cc=ludo@gnu.org \
--cc=zimon.toutoune@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).