mbakke pushed a commit to branch core-updates in repository guix. commit 884548b476f2ee27c01cb0c9ad93c0cf9d33fa5e Merge: 0e30579845 fa894b3f4d Author: Marius Bakke <mar...@gnu.org> AuthorDate: Thu Sep 8 21:12:52 2022 +0200
Merge branch 'staging' into core-updates .dir-locals.el | 14 + Makefile.am | 4 - doc/contributing.texi | 15 +- doc/guix.texi | 31 +- etc/news.scm | 7 + etc/teams.scm.in | 12 + gnu/build/file-systems.scm | 15 +- gnu/build/linux-boot.scm | 18 +- gnu/build/shepherd.scm | 3 +- gnu/image.scm | 19 +- gnu/local.mk | 13 +- gnu/machine/digital-ocean.scm | 3 +- gnu/packages/admin.scm | 6 +- gnu/packages/algebra.scm | 50 +- gnu/packages/aux-files/linux-libre/5.18-arm.conf | 10437 --- gnu/packages/aux-files/linux-libre/5.18-arm64.conf | 10888 --- gnu/packages/aux-files/linux-libre/5.18-i686.conf | 11361 --- .../aux-files/linux-libre/5.18-x86_64.conf | 11468 --- gnu/packages/benchmark.scm | 51 +- gnu/packages/bioconductor.scm | 10 +- gnu/packages/bioinformatics.scm | 2 + gnu/packages/browser-extensions.scm | 4 +- gnu/packages/c.scm | 22 + gnu/packages/check.scm | 4 +- gnu/packages/chez.scm | 211 +- gnu/packages/chromium.scm | 6 +- gnu/packages/containers.scm | 78 +- gnu/packages/cpp.scm | 4 +- gnu/packages/crates-io.scm | 1275 +- gnu/packages/databases.scm | 18 +- gnu/packages/dictionaries.scm | 6 +- gnu/packages/diffoscope.scm | 2 - gnu/packages/disk.scm | 8 +- gnu/packages/elixir.scm | 4 +- gnu/packages/emacs-xyz.scm | 207 +- gnu/packages/engineering.scm | 92 + gnu/packages/erlang.scm | 4 +- gnu/packages/fonts.scm | 8 +- gnu/packages/fpga.scm | 32 + gnu/packages/game-development.scm | 53 - gnu/packages/games.scm | 97 + gnu/packages/geo.scm | 180 +- gnu/packages/gl.scm | 39 - gnu/packages/gnome.scm | 35 +- gnu/packages/gnunet.scm | 54 +- gnu/packages/gnustep.scm | 35 + gnu/packages/golang.scm | 23 + gnu/packages/graphics.scm | 172 +- gnu/packages/gstreamer.scm | 3 +- gnu/packages/gtk.scm | 4 +- gnu/packages/guile-xyz.scm | 119 +- gnu/packages/image-viewers.scm | 37 +- gnu/packages/kde-frameworks.scm | 10 +- gnu/packages/less.scm | 10 +- gnu/packages/linux.scm | 162 +- gnu/packages/lisp-check.scm | 76 +- gnu/packages/lisp-xyz.scm | 436 +- gnu/packages/lisp.scm | 59 + gnu/packages/llvm.scm | 119 +- gnu/packages/mail.scm | 73 + gnu/packages/man.scm | 39 +- gnu/packages/messaging.scm | 3 - gnu/packages/monitoring.scm | 6 +- gnu/packages/mono.scm | 175 - gnu/packages/music.scm | 6 +- gnu/packages/networking.scm | 4 +- gnu/packages/ntp.scm | 4 +- gnu/packages/ocaml.scm | 33 + gnu/packages/orange.scm | 2 +- gnu/packages/package-management.scm | 27 +- gnu/packages/password-utils.scm | 51 +- gnu/packages/patches/chez-scheme-bin-sh.patch | 76 + gnu/packages/patches/mono-mdoc-timestamping.patch | 15 - gnu/packages/patches/polkit-disable-systemd.patch | 30 + .../patches/python-apsw-3.39.2.1-test-fix.patch | 27 + .../racket-backport-8.6-cross-install.patch | 126 + .../racket-backport-8.6-docindex-write.patch | 36 + .../patches/racket-backport-8.6-hurd.patch | 609 + gnu/packages/patches/racket-backport-8.6-zuo.patch | 481 + .../patches/racket-chez-scheme-bin-sh.patch | 76 + ...h-via-rktio.patch => racket-rktio-bin-sh.patch} | 60 +- gnu/packages/patches/racket-zuo-bin-sh.patch | 74 + .../patches/rust-openssl-sys-no-vendor.patch | 7 +- .../patches/stex-copy-from-immutable-store.patch | 41 + gnu/packages/patches/turbovnc-custom-paths.patch | 299 + .../patches/turbovnc-find-system-packages.patch | 51 + gnu/packages/polkit.scm | 40 +- gnu/packages/python-compression.scm | 8 +- gnu/packages/python-science.scm | 4 +- gnu/packages/python-xyz.scm | 103 +- gnu/packages/python.scm | 2 +- gnu/packages/qt.scm | 316 +- gnu/packages/racket.scm | 240 +- gnu/packages/ruby.scm | 42 + gnu/packages/rust-apps.scm | 31 + gnu/packages/sdl.scm | 41 - gnu/packages/shellutils.scm | 25 + gnu/packages/sqlite.scm | 12 + gnu/packages/statistics.scm | 45 + gnu/packages/tcl.scm | 2 +- gnu/packages/terminals.scm | 4 +- gnu/packages/tex.scm | 134 +- gnu/packages/text-editors.scm | 10 +- gnu/packages/tls.scm | 2 +- gnu/packages/version-control.scm | 31 +- gnu/packages/video.scm | 19 +- gnu/packages/vim.scm | 28 + gnu/packages/vnc.scm | 193 + gnu/packages/webkit.scm | 1 + gnu/packages/wm.scm | 4 +- gnu/packages/xfce.scm | 4 +- gnu/services/base.scm | 2 +- gnu/services/desktop.scm | 6 +- gnu/services/web.scm | 7 +- gnu/system/image.scm | 3 +- gnu/system/images/novena.scm | 6 +- gnu/system/images/pine64.scm | 6 +- gnu/system/images/pinebook-pro.scm | 9 +- gnu/system/images/rock64.scm | 8 +- gnu/tests/dict.scm | 3 +- guix/build/profiles.scm | 7 +- guix/build/syscalls.scm | 116 +- guix/import/gnome.scm | 15 +- guix/platform.scm | 2 +- guix/read-print.scm | 59 +- guix/search-paths.scm | 20 +- guix/store.scm | 69 +- po/doc/guix-cookbook.fr.po | 6 +- po/doc/guix-manual.de.po | 24798 +++--- po/doc/guix-manual.es.po | 24423 +++--- po/doc/guix-manual.fr.po | 81214 ++++++++++++++----- po/doc/guix-manual.pt_BR.po | 23556 +++--- po/doc/guix-manual.ru.po | 23914 +++--- po/doc/guix-manual.zh_CN.po | 51207 ++++++++---- po/guix/bn.po | 659 +- po/guix/cs.po | 661 +- po/guix/da.po | 665 +- po/guix/de.po | 742 +- po/guix/eo.po | 665 +- po/guix/es.po | 671 +- po/guix/fa.po | 661 +- po/guix/fi.po | 659 +- po/guix/fr.po | 666 +- po/guix/hu.po | 665 +- po/guix/it.po | 731 +- po/guix/ja.po | 659 +- po/guix/ko.po | 661 +- po/guix/nl.po | 666 +- po/guix/oc.po | 659 +- po/guix/pl.po | 660 +- po/guix/pt_BR.po | 666 +- po/guix/ru.po | 661 +- po/guix/si.po | 659 +- po/guix/sk.po | 745 +- po/guix/sr.po | 665 +- po/guix/sv.po | 664 +- po/guix/ta.po | 664 +- po/guix/tr.po | 661 +- po/guix/uk.po | 659 +- po/guix/vi.po | 665 +- po/guix/zh_CN.po | 660 +- po/packages/da.po | 4886 +- po/packages/de.po | 4877 +- po/packages/eo.po | 4877 +- po/packages/es.po | 4877 +- po/packages/fa.po | 4877 +- po/packages/fi.po | 4877 +- po/packages/fr.po | 5955 +- po/packages/hu.po | 4877 +- po/packages/it.po | 4877 +- po/packages/ko.po | 4877 +- po/packages/nl.po | 4877 +- po/packages/oc.po | 4877 +- po/packages/pl.po | 4877 +- po/packages/pt_BR.po | 4877 +- po/packages/sk.po | 4877 +- po/packages/sr.po | 4877 +- po/packages/tr.po | 4877 +- po/packages/zh_CN.po | 4877 +- tests/guix-describe.sh | 4 +- tests/guix-shell.sh | 10 + tests/guix-system.sh | 29 +- tests/read-print.scm | 3 + 183 files changed, 202324 insertions(+), 186077 deletions(-) diff --cc gnu/packages/databases.scm index 57467135a6,84aa0f5ebc..cd7bf5e8f0 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@@ -3540,19 -3540,23 +3540,23 @@@ PickleShare." (define-public python-apsw (package (name "python-apsw") - (version "3.39.2.0") + (version "3.39.2.1") + ;; The compressed release has fetching functionality disabled. (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/rogerbinns/apsw") - (commit version))) - (file-name (git-file-name name version)) + (method url-fetch) + (uri (string-append + "https://github.com/rogerbinns/apsw/releases/download/" + version "/apsw-" version ".zip")) (sha256 (base32 - "0q7fnk8n3m5mpjzh6xyhj409k8sacdbjsfis98my9c50fdn5sr7y")))) + "06x3qgg71xz8l3kz8gz04wkfp5f6zfrg476a4mm1c5hikqyw6ykj")) + ;; Cherry-picked from upstream, remove when bumping to 3.39.3. + (patches + (search-patches "python-apsw-3.39.2.1-test-fix.patch")))) (build-system python-build-system) + (native-inputs (list unzip)) - (inputs (list sqlite-next)) ;SQLite 3.39 required. + (inputs (list sqlite)) (arguments (list #:phases #~(modify-phases %standard-phases diff --cc gnu/packages/polkit.scm index b63635618b,a5c1b0dc98..6fe7824a57 --- a/gnu/packages/polkit.scm +++ b/gnu/packages/polkit.scm @@@ -60,82 -59,45 +60,96 @@@ (name "polkit") (version "121") (source (origin - (method url-fetch) - (uri (string-append - "https://www.freedesktop.org/software/polkit/releases/" - name "-" version ".tar.gz")) - (patches (search-patches "polkit-disable-systemd.patch")) - (sha256 - (base32 - "1apz3bh7nbpmlp1cr00pb8z8wp0c7yb23ninb959jz3r38saxiwx")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Disable a test that requires Python, D-Bus and a few - ;; libraries and fails with "ERROR: timed out waiting for bus - ;; process to terminate". - (substitute* "test/meson.build" - (("subdir\\('polkitbackend'\\)") - "")) - ;; Look up actions and rules from /etc/polkit ... - (substitute* "src/polkitbackend/meson.build" - (("'-DPACKAGE_SYSCONF_DIR=.*,") - "'-DPACKAGE_SYSCONF_DIR=\"/etc\"',")) - (substitute* "src/polkitbackend/polkitbackendinteractiveauthority.c" - (("PACKAGE_DATA_DIR \"/polkit-1/actions\"") - "PACKAGE_SYSCONF_DIR \"/polkit-1/actions\"")) - ;; ... but install package files below the prefix. - (substitute* "meson.build" - (("pk_sysconfdir = get_option\\('sysconfdir'\\)") - "pk_sysconfdir = get_option('prefix') + '/etc'")) - ;; Set the setuid helper's real location. - (substitute* "src/polkitagent/polkitagentsession.c" - (("PACKAGE_PREFIX \"/lib/polkit-1/polkit-agent-helper-1\"") - "\"/run/setuid-programs/polkit-agent-helper-1\"")))))) + (method url-fetch) + (uri (string-append + "https://www.freedesktop.org/software/polkit/releases/" + name "-" version ".tar.gz")) ++ (patches (search-patches "polkit-disable-systemd.patch")) + (sha256 + (base32 - "1apz3bh7nbpmlp1cr00pb8z8wp0c7yb23ninb959jz3r38saxiwx")))) ++ "1apz3bh7nbpmlp1cr00pb8z8wp0c7yb23ninb959jz3r38saxiwx")) ++ (modules '((guix build utils))) ++ (snippet ++ '(begin ++ ;; This is so that the default example rules files can be ++ ;; installed along the package; otherwise it would fail ++ ;; attempting to write to /etc. Unlike with GNU Autotools, ++ ;; Meson can't override the pkgsysconfdir value at install ++ ;; time; instead, we rewrite the pkgsysconfdir references ++ ;; in the build system to point to #$output/etc. ++ ;; Look up actions and rules from /etc/polkit ... ++ (substitute* "src/polkitbackend/meson.build" ++ (("'-DPACKAGE_SYSCONF_DIR=.*,") ++ "'-DPACKAGE_SYSCONF_DIR=\"/etc\"',")) ++ (substitute* "src/polkitbackend/polkitbackendinteractiveauthority.c" ++ (("PACKAGE_DATA_DIR \"/polkit-1/actions\"") ++ "PACKAGE_SYSCONF_DIR \"/polkit-1/actions\"")) ++ ;; ... but install package files below the prefix. ++ (substitute* "meson.build" ++ (("pk_sysconfdir = get_option\\('sysconfdir'\\)") ++ "pk_sysconfdir = get_option('prefix') + '/etc'")) ++ ;; Set the setuid helper's real location. ++ (substitute* "src/polkitagent/polkitagentsession.c" ++ (("PACKAGE_PREFIX \"/lib/polkit-1/polkit-agent-helper-1\"") ++ "\"/run/setuid-programs/polkit-agent-helper-1\"")))))) (build-system meson-build-system) + (arguments + (list + #:imported-modules `(,@%meson-build-system-modules + (guix build syscalls)) + #:modules '((guix build meson-build-system) + (guix build syscalls) + (guix build utils) + (ice-9 match)) + #:configure-flags + #~(list "--sysconfdir=/etc" ++ "-Dsession_tracking=libelogind" + "-Dman=true" + "-Dtests=true" + ;; Work around cross-compilation failure. The build system + ;; probes for the _target_ gobject-introspection, but if we + ;; change it to native, Meson fails with: + ;; ERROR: Pkg-config binary for machine + ;; MachineChoice.BUILD not found, giving up. + ;; Just disable introspection for now. + #$@(if (%current-target-system) + '("-Dintrospection=false") + '())) + #:phases + #~(modify-phases %standard-phases - (add-after 'unpack 'adjust-install-time-etc-directory - ;; This is so that the default example rules files can be - ;; installed along the package; otherwise it would fail attempting - ;; to write to /etc. Unlike with GNU Autotools, Meson can't - ;; override the pkgsysconfdir value at install time; instead, we - ;; rewrite the pkgsysconfdir references in the build system to - ;; point to #$output/etc. - (lambda _ - (substitute* "meson.build" - (("pk_sysconfdir = get_option\\('sysconfdir')") - (format #f "pk_sysconfdir = '~a'" - (string-append #$output "/etc")))))) + (add-before 'check 'patch-bash + (lambda _ + (substitute* (list "subprojects/mocklibc-1.0/bin/mocklibc" + (string-append "../polkit-v." #$version + "/test/data/etc/passwd") + (string-append "../polkit-v." #$version + "/test/data/etc/polkit-1" + "/rules.d/10-testing.rules")) + (("/bin/(bash|false|true)" _ command) + (which command))))) + (replace 'check + (lambda* (#:key tests? test-options #:allow-other-keys) + (when tests? + ;; Run the test suite through tini to ensure signals are + ;; properly handled and zombie processes reaped. + (match (primitive-fork) + (0 ;child process + (set-child-subreaper!) + ;; Use tini so that signals are properly handled and + ;; doubly-forked processes get reaped; otherwise, + ;; python-dbusmock would waste time polling for the dbus + ;; processes it spawns to be reaped, in vain. + (apply execlp "tini" "--" + "meson" "--" "test" "-t" "0" "--print-errorlogs" + test-options)) + (pid + (match (waitpid pid) + ((_ . status) + (unless (zero? status) + (error "`meson test' exited with status" + status)))))))))))) (inputs - (list elogind - expat - linux-pam - mozjs-91 - nspr)) + (list duktape expat elogind linux-pam nspr)) (propagated-inputs (list glib)) ;required by polkit-gobject-1.pc (native-inputs diff --cc gnu/packages/version-control.scm index 54ad585c75,08bd80b586..813037a421 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@@ -220,141 -220,140 +220,141 @@@ Python 3.3 and later, rather than on Py (define-public git (package - (name "git") - (version "2.37.3") - (source (origin - (method url-fetch) - (uri (string-append "mirror://kernel.org/software/scm/git/git-" - version ".tar.xz")) - (sha256 - (base32 - "0yp8hdj0w18jhmmdflzz74z418cw95i08pc22yycyn8nyvbl2il1")))) - (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 - "053lj9wy8y2yr5jzpb0af4w50gz3ckhgc15wqx7is4z6k9a76lww")))) - ;; For subtree documentation. - ("asciidoc" ,asciidoc) - ("docbook-xsl" ,docbook-xsl) - ("xmlto" ,xmlto) - ("pkg-config" ,pkg-config))) - (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 - - ,(string-append "SHELL_PATH=" - (assoc-ref %build-inputs "bash") - "/bin/sh") - - ;; Tests require a bash with completion support. - ,(string-append "TEST_SHELL_PATH=" - (assoc-ref %build-inputs "bash-for-tests") - "/bin/bash") - - "USE_LIBPCRE2=yes" - - ;; 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 (,bash) - - #:test-target "test" - - ;; 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 - '())) - - #: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))) - #t))) - ;; 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) - ":")) - #t))))) - ;; Add cross curl-config script to PATH when cross-compiling. - ,@(if (%current-target-system) - '((add-before 'configure 'add-cross-curl-config + (name "git") - (version "2.37.2") ++ (version "2.37.3") + (source (origin + (method url-fetch) + (uri (string-append "mirror://kernel.org/software/scm/git/git-" + version ".tar.xz")) + (sha256 + (base32 - "00xhdm086bxm4v2p8m7ra7vf9kwdppw4l2n3vakfff253j19qg8w")))) ++ "0yp8hdj0w18jhmmdflzz74z418cw95i08pc22yycyn8nyvbl2il1")))) + (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 - "1zhn91fzyyz890a5hm0bvs0vnhy8c81q1fhsk2gfwbbh73z161nz")))) ++ "053lj9wy8y2yr5jzpb0af4w50gz3ckhgc15wqx7is4z6k9a76lww")))) + ;; 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 + + ,(string-append "SHELL_PATH=" + (assoc-ref %build-inputs "bash") + "/bin/sh") + + ;; Tests require a bash with completion support. + ,(string-append "TEST_SHELL_PATH=" + (assoc-ref %build-inputs "bash-for-tests") + "/bin/bash") + + "USE_LIBPCRE2=yes" + + ;; 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 (,bash) + + #:test-target "test" + + ;; 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 + '())) + + #: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:"