commit:     f8eea380998d17e09a492c81244eb12f2a3a4378
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Jan  8 03:28:30 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Jan  8 03:40:13 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f8eea380

dev-vcs/git: port live to meson

* Port to Meson, significantly simplifying the ebuild
* Drop two obsolete patches
  * submodule patch where the only remaining hunk was adding a single test
  * cvs patch given it already had a tonne of fuzz and wasn't adding any
    real value (keep USE=cvs as a convenience USE to control runtime Perl
    deps, though)
* Simplify a bunch of constructs that predate(?) REQUIRED_USE in the ebuild

Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-vcs/git/files/git-2.48.0_rc2-meson-deps.patch |  74 +++++
 dev-vcs/git/git-9999-r1.ebuild                    | 323 ++++------------------
 dev-vcs/git/git-9999-r2.ebuild                    | 323 ++++------------------
 dev-vcs/git/git-9999-r3.ebuild                    | 323 ++++------------------
 4 files changed, 218 insertions(+), 825 deletions(-)

diff --git a/dev-vcs/git/files/git-2.48.0_rc2-meson-deps.patch 
b/dev-vcs/git/files/git-2.48.0_rc2-meson-deps.patch
new file mode 100644
index 000000000000..c28112663a3d
--- /dev/null
+++ b/dev-vcs/git/files/git-2.48.0_rc2-meson-deps.patch
@@ -0,0 +1,74 @@
+--- a/perl/FromCPAN/Mail/meson.build
++++ b/perl/FromCPAN/Mail/meson.build
+@@ -4,4 +4,5 @@ test_dependencies += custom_target(
+   command: generate_perl_command,
+   install: true,
+   install_dir: get_option('datadir') / 'perl5/FromCPAN/Mail',
++  depends: [git_version_file],
+ )
+--- a/perl/FromCPAN/meson.build
++++ b/perl/FromCPAN/meson.build
+@@ -4,6 +4,7 @@ test_dependencies += custom_target(
+   command: generate_perl_command,
+   install: true,
+   install_dir: get_option('datadir') / 'perl5/FromCPAN',
++  depends: [git_version_file],
+ )
+ 
+ subdir('Mail')
+--- a/perl/Git/LoadCPAN/Mail/meson.build
++++ b/perl/Git/LoadCPAN/Mail/meson.build
+@@ -4,4 +4,5 @@ test_dependencies += custom_target(
+   command: generate_perl_command,
+   install: true,
+   install_dir: get_option('datadir') / 'perl5/Git/LoadCPAN/Mail',
++  depends: [git_version_file],
+ )
+--- a/perl/Git/LoadCPAN/meson.build
++++ b/perl/Git/LoadCPAN/meson.build
+@@ -4,6 +4,7 @@ test_dependencies += custom_target(
+   command: generate_perl_command,
+   install: true,
+   install_dir: get_option('datadir') / 'perl5/Git/LoadCPAN',
++  depends: [git_version_file],
+ )
+ 
+ subdir('Mail')
+--- a/perl/Git/SVN/Memoize/meson.build
++++ b/perl/Git/SVN/Memoize/meson.build
+@@ -4,4 +4,5 @@ test_dependencies += custom_target(
+   command: generate_perl_command,
+   install: true,
+   install_dir: get_option('datadir') / 'perl5/Git/SVN',
++  depends: [git_version_file],
+ )
+--- a/perl/Git/SVN/meson.build
++++ b/perl/Git/SVN/meson.build
+@@ -14,6 +14,7 @@ foreach source : [
+     command: generate_perl_command,
+     install: true,
+     install_dir: get_option('datadir') / 'perl5/Git/SVN',
++    depends: [git_version_file],
+   )
+ endforeach
+ 
+--- a/perl/Git/meson.build
++++ b/perl/Git/meson.build
+@@ -11,6 +11,7 @@ foreach source : [
+     command: generate_perl_command,
+     install: true,
+     install_dir: get_option('datadir') / 'perl5/Git',
++    depends: [git_version_file],
+   )
+ endforeach
+ 
+--- a/perl/meson.build
++++ b/perl/meson.build
+@@ -4,6 +4,7 @@ test_dependencies += custom_target(
+   command: generate_perl_command,
+   install: true,
+   install_dir: get_option('datadir') / 'perl5',
++  depends: [git_version_file],
+ )
+ 
+ subdir('Git')

diff --git a/dev-vcs/git/git-9999-r1.ebuild b/dev-vcs/git/git-9999-r1.ebuild
index 17a8afd1ac8b..8968424c04bd 100644
--- a/dev-vcs/git/git-9999-r1.ebuild
+++ b/dev-vcs/git/git-9999-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
@@ -8,7 +8,7 @@ GENTOO_DEPEND_ON_PERL=no
 # bug #329479: git-remote-testgit is not multiple-version aware
 PYTHON_COMPAT=( python3_{10..13} )
 
-inherit toolchain-funcs perl-module bash-completion-r1 optfeature plocale 
python-single-r1 systemd
+inherit toolchain-funcs perl-module bash-completion-r1 optfeature plocale 
python-single-r1 systemd meson
 
 PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN"
 
@@ -58,7 +58,7 @@ S="${WORKDIR}"/${MY_P}
 
 LICENSE="GPL-2"
 SLOT="0"
-IUSE="+blksha1 +curl cgi doc keyring +gpg highlight +iconv mediawiki +nls 
+pcre perforce +perl +safe-directory selinux subversion tk +webdav xinetd cvs 
test"
+IUSE="+curl cgi cvs doc keyring +gpg highlight +iconv mediawiki +nls +pcre 
perforce +perl +safe-directory selinux subversion test tk +webdav xinetd"
 
 # Common to both DEPEND and RDEPEND
 DEPEND="
@@ -122,7 +122,11 @@ BDEPEND="
        )
        keyring? ( virtual/pkgconfig )
        nls? ( sys-devel/gettext )
-       test? ( app-crypt/gnupg )
+       test? (
+               app-arch/unzip
+               app-crypt/gnupg
+               dev-lang/perl
+       )
 "
 
 # Live ebuild builds man pages and HTML docs, additionally
@@ -144,11 +148,7 @@ REQUIRED_USE="
 RESTRICT="!test? ( test )"
 
 PATCHES=(
-       # Avoid automagic CVS, bug #350330
-       "${FILESDIR}"/git-2.37.0_rc1-optional-cvs.patch
-
-       # Make submodule output quiet
-       "${FILESDIR}"/git-2.21.0-quiet-submodules-testcase.patch
+       "${FILESDIR}"/${PN}-2.48.0_rc2-meson-deps.patch
 )
 
 pkg_setup() {
@@ -163,72 +163,6 @@ pkg_setup() {
        fi
 }
 
-# This is needed because for some obscure reasons future calls to make don't
-# pick up these exports if we export them in src_unpack()
-exportmakeopts() {
-       local extlibs myopts
-
-       myopts=(
-               ASCIIDOC_NO_ROFF=YesPlease
-
-               $(usex perl 'INSTALLDIRS=vendor 
NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
-
-               $(usev elibc_musl NO_REGEX=NeedsStartEnd)
-               $(usev !cvs NO_CVS=YesPlease)
-               $(usev !iconv NO_ICONV=YesPlease)
-               $(usev !nls NO_GETTEXT=YesPlease)
-               $(usev !perforce NO_PYTHON=YesPlease)
-               $(usev !subversion NO_SVN_TESTS=YesPlease)
-               $(usev !tk NO_TCLTK=YesPlease)
-       )
-
-       if use blksha1 ; then
-               myopts+=( BLK_SHA1=YesPlease )
-       fi
-
-       if use curl ; then
-               use webdav || myopts+=( NO_EXPAT=YesPlease )
-       else
-               myopts+=( NO_CURL=YesPlease )
-       fi
-
-       # Broken assumptions because of static build system
-       myopts+=(
-               NO_FINK=YesPlease
-               NO_DARWIN_PORTS=YesPlease
-               INSTALL=install
-               TAR=tar
-               SHELL_PATH="${EPREFIX}/bin/sh"
-               SANE_TOOL_PATH=
-               OLD_ICONV=
-               NO_EXTERNAL_GREP=
-       )
-
-       # Can't define this to null, since the entire makefile depends on it
-       sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die
-
-       if use pcre; then
-               myopts+=( USE_LIBPCRE2=YesPlease )
-               extlibs+=( -lpcre2-8 )
-       fi
-
-       if [[ ${CHOST} == *-solaris* ]]; then
-               myopts+=(
-                       NEEDS_LIBICONV=YesPlease
-                       HAVE_CLOCK_MONOTONIC=1
-               )
-
-               if grep -Fq getdelim "${ESYSROOT}"/usr/include/stdio.h ; then
-                       myopts+=( HAVE_GETDELIM=1 )
-               fi
-       fi
-
-       myopts+=( ASCIIDOC8=YesPlease )
-
-       export MY_MAKEOPTS="${myopts[@]}"
-       export EXTLIBS="${extlibs[@]}"
-}
-
 src_unpack() {
        if [[ ${PV} != *9999 ]] ; then
                unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
@@ -243,95 +177,63 @@ src_unpack() {
                fi
        else
                git-r3_src_unpack
-               #cp "${FILESDIR}"/GIT-VERSION-GEN . || die
        fi
 
 }
 
-src_prepare() {
-       if ! use safe-directory ; then
-               # This patch neuters the "safe directory" detection.
-               # bugs #838271, #838223
-               PATCHES+=(
-                       "${FILESDIR}"/git-2.46.2-unsafe-directory.patch
-               )
-       fi
-
-       default
+src_configure() {
+       local emesonargs=(
+               $(meson_feature curl)
+               $(meson_feature cgi gitweb)
+               $(meson_feature webdav expat)
+               $(meson_feature iconv)
+               $(meson_feature nls gettext)
+               $(meson_feature pcre pcre2)
+               $(meson_feature perl)
+               $(meson_feature perforce python)
+               $(meson_use test tests)
+               -Dperl_cpan_fallback=false
+       )
 
-       if use prefix ; then
-               # bug #757309
-               sed -i \
-                       -e 
's:/usr/local/opt/gettext/:/do/not/look/elsewhere/:g' \
-                       -e 's:/opt/homebrew/:/do/not/look/elsewhere/:g' \
-                       config.mak.uname || die
+       # For non-live, we use a downloaded docs tarball instead.
+       if [[ ${PV} == *9999 ]] ; then
+               emesonargs+=(
+                       -Ddocs="man$(usev doc ',html')"
+               )
        fi
 
-       sed -i \
-               -e 's:^\(CFLAGS[[:space:]]*=\).*$:\1 $(OPTCFLAGS) -Wall:' \
-               -e 's:^\(LDFLAGS[[:space:]]*=\).*$:\1 $(OPTLDFLAGS):' \
-               -e 's:^\(CC[[:space:]]* =\).*$:\1$(OPTCC):' \
-               -e 's:^\(AR[[:space:]]* =\).*$:\1$(OPTAR):' \
-               -e 
"s:\(PYTHON_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
-               -e 
"s:\(PERL_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
-               Makefile || die
-
-       # Fix docbook2texi command
-       sed -r -i 
's/DOCBOOK2X_TEXI[[:space:]]*=[[:space:]]*docbook2x-texi/DOCBOOK2X_TEXI = 
docbook2texi.pl/' \
-               Documentation/Makefile || die
+       meson_src_configure
 }
 
 git_emake() {
-       # bug #320647: PYTHON_PATH
-       local PYTHON_PATH=""
-       use perforce && PYTHON_PATH="${PYTHON}"
-
        local mymakeargs=(
-               ${MY_MAKEOPTS}
-
                prefix="${EPREFIX}"/usr
                htmldir="${EPREFIX}"/usr/share/doc/${PF}/html
-               perllibdir="$(use perl && perl_get_raw_vendorlib)"
                sysconfdir="${EPREFIX}"/etc
+               perllibdir="$(use perl && perl_get_raw_vendorlib)"
 
                CC="$(tc-getCC)"
                CFLAGS="${CFLAGS}"
+               LDFLAGS="${LDFLAGS}"
                PKG_CONFIG="$(tc-getPKG_CONFIG)"
-
-               # TODO: --verbose?
-               GIT_TEST_OPTS="--no-color"
-
                OPTAR="$(tc-getAR)"
                OPTCC="$(tc-getCC)"
                OPTCFLAGS="${CFLAGS}"
                OPTLDFLAGS="${LDFLAGS}"
 
-               CURL_CONFIG="${ESYSROOT}/usr/bin/curl-config"
-               CURL_CFLAGS="$($(tc-getPKG_CONFIG) --cflags libcurl)"
-               CURL_LDFLAGS="$($(tc-getPKG_CONFIG) --libs libcurl)"
-
                PERL_PATH="${EPREFIX}/usr/bin/perl"
                PERL_MM_OPT=""
 
-               PYTHON_PATH="${PYTHON_PATH}"
-
                V=1
+
                "$@"
        )
 
        emake "${mymakeargs[@]}"
 }
 
-src_configure() {
-       exportmakeopts
-}
-
 src_compile() {
-       git_emake
-
-       if use perl && use cgi ; then
-               git_emake gitweb
-       fi
+       meson_src_compile
 
        if use perl ; then
                git_emake -C contrib/credential/netrc
@@ -341,160 +243,31 @@ src_compile() {
                git_emake -C contrib/credential/osxkeychain
        fi
 
-       pushd Documentation &>/dev/null || die
-       if [[ ${PV} == *9999 ]] ; then
-               git_emake man
-               if use doc ; then
-                       git_emake info html
-               fi
-       else
-               if use doc ; then
-                       git_emake info
-               fi
-       fi
-       popd &>/dev/null || die
-
        if use keyring ; then
                git_emake -C contrib/credential/libsecret
        fi
 
-       pushd contrib/subtree &>/dev/null || die
-       git_emake git-subtree
-       # git-subtree.1 requires the full USE=doc dependency stack
-       use doc && git_emake git-subtree.html git-subtree.1
-       popd &>/dev/null || die
-
-       git_emake -C contrib/diff-highlight
-
        if use mediawiki ; then
                git_emake -C contrib/mw-to-git
        fi
-}
 
-src_test() {
-       local disabled=(
-               # We make safe-directory optional
-               t0033-safe-directory.sh
-       )
-
-       local tests_cvs=(
-               t9200-git-cvsexportcommit.sh
-               t9400-git-cvsserver-server.sh
-               t9401-git-cvsserver-crlf.sh
-               t9402-git-cvsserver-refs.sh
-               t9600-cvsimport.sh
-               t9601-cvsimport-vendor-branch.sh
-               t9602-cvsimport-branches-tags.sh
-               t9603-cvsimport-patchsets.sh
-               t9604-cvsimport-timestamps.sh
-       )
-
-       local tests_perl=(
-               t3701-add-interactive.sh
-               t5502-quickfetch.sh
-               t5512-ls-remote.sh
-               t5520-pull.sh
-               t7106-reset-unborn-branch.sh
-               t7501-commit.sh
-       )
-       # Bug #225601 - t0004 is not suitable for root perm
-       # Bug #219839 - t1004 is not suitable for root perm
-       # t0001-init.sh - check for init notices EPERM*  fails
-       local tests_nonroot=(
-               t0001-init.sh
-               t0004-unwritable.sh
-               t0070-fundamental.sh
-               t1004-read-tree-m-u-wf.sh
-               t3700-add.sh
-               t7300-clean.sh
-       )
-       # t9100 still fails with symlinks in SVN 1.7
-       local test_svn=( t9100-git-svn-basic.sh )
-
-       # Unzip is used only for the testcase code, not by any normal parts of 
Git.
-       if ! has_version app-arch/unzip ; then
-               einfo "Disabling tar-tree tests"
-               disabled+=( t5000-tar-tree.sh )
-       fi
-
-       local cvs=0
-       use cvs && let cvs=${cvs}+1
-       if [[ ${EUID} -eq 0 ]] ; then
-               if [[ ${cvs} -eq 1 ]] ; then
-                       ewarn "Skipping CVS tests because CVS does not work as 
root!"
-                       ewarn "You should retest with FEATURES=userpriv!"
-                       disabled+=( ${tests_cvs[@]} )
-               fi
-               einfo "Skipping other tests that require being non-root"
-               disabled+=( ${tests_nonroot[@]} )
-       else
-               if [[ ${cvs} -gt 0 ]] && has_version dev-vcs/cvs ; then
-                       let cvs=${cvs}+1
-               fi
-
-               if [[ ${cvs} -gt 1 ]] && has_version "dev-vcs/cvs[server]" ; 
then
-                       let cvs=${cvs}+1
-               fi
-
-               if [[ ${cvs} -lt 3 ]] ; then
-                       einfo "Disabling CVS tests (needs 
dev-vcs/cvs[USE=server])"
-                       disabled+=( ${tests_cvs[@]} )
-               fi
-       fi
-
-       if ! use perl ; then
-               einfo "Disabling tests that need Perl"
-               disabled+=( ${tests_perl[@]} )
-       fi
-
-       einfo "Disabling tests that fail with SVN 1.7"
-       disabled+=( ${test_svn[@]} )
-
-       # Reset all previously disabled tests
-       pushd t &>/dev/null || die
-       local i
-       for i in *.sh.DISABLED ; do
-               [[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
-       done
-       einfo "Disabled tests:"
-       for i in ${disabled[@]} ; do
-               if [[ -f "${i}" ]] ; then
-                       mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
-               fi
-       done
-
-       # Avoid the test system removing the results because we want them 
ourselves
-       sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
-
-       # Clean old results first, must always run
-       nonfatal git_emake clean
-       popd &>/dev/null || die
-
-       # Now run the tests, keep going if we hit an error, and don't terminate 
on
-       # failure
-       local rc
-       # t0610-reftable-basics.sh uses $A
-       local -x A=
-       einfo "Start test run"
-       #MAKEOPTS=-j1
-       nonfatal git_emake --keep-going test
-       rc=$?
+       git_emake -C contrib/diff-highlight
 
-       # Display nice results, now print the results
-       pushd t &>/dev/null || die
-       nonfatal git_emake aggregate-results
+       git_emake -C contrib/subtree git-subtree
+       # git-subtree.1 requires the full USE=doc dependency stack
+       use doc && git_emake -C contrib/subtree git-subtree.html git-subtree.1
+}
 
-       # And bail if there was a problem
-       [[ ${rc} -eq 0 ]] || die "Tests failed. Please file a bug!"
+src_test() {
+       meson_src_test
 
-       popd &>/dev/null || die
        if use perl ; then
-               emake -C contrib/credential/netrc testverbose
+               git_emake -C contrib/credential/netrc testverbose
        fi
 }
 
 src_install() {
-       git_emake DESTDIR="${D}" install
+       meson_src_install
 
        if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
                dobin contrib/credential/osxkeychain/git-credential-osxkeychain
@@ -562,9 +335,7 @@ src_install() {
        dodoc contrib/contacts/git-contacts.txt
 
        if use keyring ; then
-               pushd contrib/credential/libsecret &>/dev/null || die
-               dobin git-credential-libsecret
-               popd &>/dev/null || die
+               dobin contrib/credential/libsecret/git-credential-libsecret
        fi
 
        dodir /usr/share/${PN}/contrib
@@ -596,7 +367,7 @@ src_install() {
                cp -rf "${S}"/contrib/${i} "${ED}"/usr/share/${PN}/contrib || 
die "Failed contrib ${i}"
        done
 
-       if use perl && use cgi ; then
+       if use cgi ; then
                # We used to install in /usr/share/${PN}/gitweb
                # but upstream installs in /usr/share/gitweb
                # so we will install a symlink and use their location for 
compat with other
@@ -618,9 +389,11 @@ src_install() {
        fi
 
        if use perl ; then
-               pushd contrib/credential/netrc &>/dev/null || die
-               dobin git-credential-netrc
-               popd &>/dev/null || die
+               dodir "$(perl_get_vendorlib)"
+               mv "${ED}"/usr/share/perl5/Git.pm "${ED}/$(perl_get_vendorlib)" 
|| die
+               mv "${ED}"/usr/share/perl5/Git "${ED}/$(perl_get_vendorlib)" || 
die
+
+               dobin contrib/credential/netrc/git-credential-netrc
        fi
 
        if ! use subversion ; then

diff --git a/dev-vcs/git/git-9999-r2.ebuild b/dev-vcs/git/git-9999-r2.ebuild
index 17a8afd1ac8b..8968424c04bd 100644
--- a/dev-vcs/git/git-9999-r2.ebuild
+++ b/dev-vcs/git/git-9999-r2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
@@ -8,7 +8,7 @@ GENTOO_DEPEND_ON_PERL=no
 # bug #329479: git-remote-testgit is not multiple-version aware
 PYTHON_COMPAT=( python3_{10..13} )
 
-inherit toolchain-funcs perl-module bash-completion-r1 optfeature plocale 
python-single-r1 systemd
+inherit toolchain-funcs perl-module bash-completion-r1 optfeature plocale 
python-single-r1 systemd meson
 
 PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN"
 
@@ -58,7 +58,7 @@ S="${WORKDIR}"/${MY_P}
 
 LICENSE="GPL-2"
 SLOT="0"
-IUSE="+blksha1 +curl cgi doc keyring +gpg highlight +iconv mediawiki +nls 
+pcre perforce +perl +safe-directory selinux subversion tk +webdav xinetd cvs 
test"
+IUSE="+curl cgi cvs doc keyring +gpg highlight +iconv mediawiki +nls +pcre 
perforce +perl +safe-directory selinux subversion test tk +webdav xinetd"
 
 # Common to both DEPEND and RDEPEND
 DEPEND="
@@ -122,7 +122,11 @@ BDEPEND="
        )
        keyring? ( virtual/pkgconfig )
        nls? ( sys-devel/gettext )
-       test? ( app-crypt/gnupg )
+       test? (
+               app-arch/unzip
+               app-crypt/gnupg
+               dev-lang/perl
+       )
 "
 
 # Live ebuild builds man pages and HTML docs, additionally
@@ -144,11 +148,7 @@ REQUIRED_USE="
 RESTRICT="!test? ( test )"
 
 PATCHES=(
-       # Avoid automagic CVS, bug #350330
-       "${FILESDIR}"/git-2.37.0_rc1-optional-cvs.patch
-
-       # Make submodule output quiet
-       "${FILESDIR}"/git-2.21.0-quiet-submodules-testcase.patch
+       "${FILESDIR}"/${PN}-2.48.0_rc2-meson-deps.patch
 )
 
 pkg_setup() {
@@ -163,72 +163,6 @@ pkg_setup() {
        fi
 }
 
-# This is needed because for some obscure reasons future calls to make don't
-# pick up these exports if we export them in src_unpack()
-exportmakeopts() {
-       local extlibs myopts
-
-       myopts=(
-               ASCIIDOC_NO_ROFF=YesPlease
-
-               $(usex perl 'INSTALLDIRS=vendor 
NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
-
-               $(usev elibc_musl NO_REGEX=NeedsStartEnd)
-               $(usev !cvs NO_CVS=YesPlease)
-               $(usev !iconv NO_ICONV=YesPlease)
-               $(usev !nls NO_GETTEXT=YesPlease)
-               $(usev !perforce NO_PYTHON=YesPlease)
-               $(usev !subversion NO_SVN_TESTS=YesPlease)
-               $(usev !tk NO_TCLTK=YesPlease)
-       )
-
-       if use blksha1 ; then
-               myopts+=( BLK_SHA1=YesPlease )
-       fi
-
-       if use curl ; then
-               use webdav || myopts+=( NO_EXPAT=YesPlease )
-       else
-               myopts+=( NO_CURL=YesPlease )
-       fi
-
-       # Broken assumptions because of static build system
-       myopts+=(
-               NO_FINK=YesPlease
-               NO_DARWIN_PORTS=YesPlease
-               INSTALL=install
-               TAR=tar
-               SHELL_PATH="${EPREFIX}/bin/sh"
-               SANE_TOOL_PATH=
-               OLD_ICONV=
-               NO_EXTERNAL_GREP=
-       )
-
-       # Can't define this to null, since the entire makefile depends on it
-       sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die
-
-       if use pcre; then
-               myopts+=( USE_LIBPCRE2=YesPlease )
-               extlibs+=( -lpcre2-8 )
-       fi
-
-       if [[ ${CHOST} == *-solaris* ]]; then
-               myopts+=(
-                       NEEDS_LIBICONV=YesPlease
-                       HAVE_CLOCK_MONOTONIC=1
-               )
-
-               if grep -Fq getdelim "${ESYSROOT}"/usr/include/stdio.h ; then
-                       myopts+=( HAVE_GETDELIM=1 )
-               fi
-       fi
-
-       myopts+=( ASCIIDOC8=YesPlease )
-
-       export MY_MAKEOPTS="${myopts[@]}"
-       export EXTLIBS="${extlibs[@]}"
-}
-
 src_unpack() {
        if [[ ${PV} != *9999 ]] ; then
                unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
@@ -243,95 +177,63 @@ src_unpack() {
                fi
        else
                git-r3_src_unpack
-               #cp "${FILESDIR}"/GIT-VERSION-GEN . || die
        fi
 
 }
 
-src_prepare() {
-       if ! use safe-directory ; then
-               # This patch neuters the "safe directory" detection.
-               # bugs #838271, #838223
-               PATCHES+=(
-                       "${FILESDIR}"/git-2.46.2-unsafe-directory.patch
-               )
-       fi
-
-       default
+src_configure() {
+       local emesonargs=(
+               $(meson_feature curl)
+               $(meson_feature cgi gitweb)
+               $(meson_feature webdav expat)
+               $(meson_feature iconv)
+               $(meson_feature nls gettext)
+               $(meson_feature pcre pcre2)
+               $(meson_feature perl)
+               $(meson_feature perforce python)
+               $(meson_use test tests)
+               -Dperl_cpan_fallback=false
+       )
 
-       if use prefix ; then
-               # bug #757309
-               sed -i \
-                       -e 
's:/usr/local/opt/gettext/:/do/not/look/elsewhere/:g' \
-                       -e 's:/opt/homebrew/:/do/not/look/elsewhere/:g' \
-                       config.mak.uname || die
+       # For non-live, we use a downloaded docs tarball instead.
+       if [[ ${PV} == *9999 ]] ; then
+               emesonargs+=(
+                       -Ddocs="man$(usev doc ',html')"
+               )
        fi
 
-       sed -i \
-               -e 's:^\(CFLAGS[[:space:]]*=\).*$:\1 $(OPTCFLAGS) -Wall:' \
-               -e 's:^\(LDFLAGS[[:space:]]*=\).*$:\1 $(OPTLDFLAGS):' \
-               -e 's:^\(CC[[:space:]]* =\).*$:\1$(OPTCC):' \
-               -e 's:^\(AR[[:space:]]* =\).*$:\1$(OPTAR):' \
-               -e 
"s:\(PYTHON_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
-               -e 
"s:\(PERL_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
-               Makefile || die
-
-       # Fix docbook2texi command
-       sed -r -i 
's/DOCBOOK2X_TEXI[[:space:]]*=[[:space:]]*docbook2x-texi/DOCBOOK2X_TEXI = 
docbook2texi.pl/' \
-               Documentation/Makefile || die
+       meson_src_configure
 }
 
 git_emake() {
-       # bug #320647: PYTHON_PATH
-       local PYTHON_PATH=""
-       use perforce && PYTHON_PATH="${PYTHON}"
-
        local mymakeargs=(
-               ${MY_MAKEOPTS}
-
                prefix="${EPREFIX}"/usr
                htmldir="${EPREFIX}"/usr/share/doc/${PF}/html
-               perllibdir="$(use perl && perl_get_raw_vendorlib)"
                sysconfdir="${EPREFIX}"/etc
+               perllibdir="$(use perl && perl_get_raw_vendorlib)"
 
                CC="$(tc-getCC)"
                CFLAGS="${CFLAGS}"
+               LDFLAGS="${LDFLAGS}"
                PKG_CONFIG="$(tc-getPKG_CONFIG)"
-
-               # TODO: --verbose?
-               GIT_TEST_OPTS="--no-color"
-
                OPTAR="$(tc-getAR)"
                OPTCC="$(tc-getCC)"
                OPTCFLAGS="${CFLAGS}"
                OPTLDFLAGS="${LDFLAGS}"
 
-               CURL_CONFIG="${ESYSROOT}/usr/bin/curl-config"
-               CURL_CFLAGS="$($(tc-getPKG_CONFIG) --cflags libcurl)"
-               CURL_LDFLAGS="$($(tc-getPKG_CONFIG) --libs libcurl)"
-
                PERL_PATH="${EPREFIX}/usr/bin/perl"
                PERL_MM_OPT=""
 
-               PYTHON_PATH="${PYTHON_PATH}"
-
                V=1
+
                "$@"
        )
 
        emake "${mymakeargs[@]}"
 }
 
-src_configure() {
-       exportmakeopts
-}
-
 src_compile() {
-       git_emake
-
-       if use perl && use cgi ; then
-               git_emake gitweb
-       fi
+       meson_src_compile
 
        if use perl ; then
                git_emake -C contrib/credential/netrc
@@ -341,160 +243,31 @@ src_compile() {
                git_emake -C contrib/credential/osxkeychain
        fi
 
-       pushd Documentation &>/dev/null || die
-       if [[ ${PV} == *9999 ]] ; then
-               git_emake man
-               if use doc ; then
-                       git_emake info html
-               fi
-       else
-               if use doc ; then
-                       git_emake info
-               fi
-       fi
-       popd &>/dev/null || die
-
        if use keyring ; then
                git_emake -C contrib/credential/libsecret
        fi
 
-       pushd contrib/subtree &>/dev/null || die
-       git_emake git-subtree
-       # git-subtree.1 requires the full USE=doc dependency stack
-       use doc && git_emake git-subtree.html git-subtree.1
-       popd &>/dev/null || die
-
-       git_emake -C contrib/diff-highlight
-
        if use mediawiki ; then
                git_emake -C contrib/mw-to-git
        fi
-}
 
-src_test() {
-       local disabled=(
-               # We make safe-directory optional
-               t0033-safe-directory.sh
-       )
-
-       local tests_cvs=(
-               t9200-git-cvsexportcommit.sh
-               t9400-git-cvsserver-server.sh
-               t9401-git-cvsserver-crlf.sh
-               t9402-git-cvsserver-refs.sh
-               t9600-cvsimport.sh
-               t9601-cvsimport-vendor-branch.sh
-               t9602-cvsimport-branches-tags.sh
-               t9603-cvsimport-patchsets.sh
-               t9604-cvsimport-timestamps.sh
-       )
-
-       local tests_perl=(
-               t3701-add-interactive.sh
-               t5502-quickfetch.sh
-               t5512-ls-remote.sh
-               t5520-pull.sh
-               t7106-reset-unborn-branch.sh
-               t7501-commit.sh
-       )
-       # Bug #225601 - t0004 is not suitable for root perm
-       # Bug #219839 - t1004 is not suitable for root perm
-       # t0001-init.sh - check for init notices EPERM*  fails
-       local tests_nonroot=(
-               t0001-init.sh
-               t0004-unwritable.sh
-               t0070-fundamental.sh
-               t1004-read-tree-m-u-wf.sh
-               t3700-add.sh
-               t7300-clean.sh
-       )
-       # t9100 still fails with symlinks in SVN 1.7
-       local test_svn=( t9100-git-svn-basic.sh )
-
-       # Unzip is used only for the testcase code, not by any normal parts of 
Git.
-       if ! has_version app-arch/unzip ; then
-               einfo "Disabling tar-tree tests"
-               disabled+=( t5000-tar-tree.sh )
-       fi
-
-       local cvs=0
-       use cvs && let cvs=${cvs}+1
-       if [[ ${EUID} -eq 0 ]] ; then
-               if [[ ${cvs} -eq 1 ]] ; then
-                       ewarn "Skipping CVS tests because CVS does not work as 
root!"
-                       ewarn "You should retest with FEATURES=userpriv!"
-                       disabled+=( ${tests_cvs[@]} )
-               fi
-               einfo "Skipping other tests that require being non-root"
-               disabled+=( ${tests_nonroot[@]} )
-       else
-               if [[ ${cvs} -gt 0 ]] && has_version dev-vcs/cvs ; then
-                       let cvs=${cvs}+1
-               fi
-
-               if [[ ${cvs} -gt 1 ]] && has_version "dev-vcs/cvs[server]" ; 
then
-                       let cvs=${cvs}+1
-               fi
-
-               if [[ ${cvs} -lt 3 ]] ; then
-                       einfo "Disabling CVS tests (needs 
dev-vcs/cvs[USE=server])"
-                       disabled+=( ${tests_cvs[@]} )
-               fi
-       fi
-
-       if ! use perl ; then
-               einfo "Disabling tests that need Perl"
-               disabled+=( ${tests_perl[@]} )
-       fi
-
-       einfo "Disabling tests that fail with SVN 1.7"
-       disabled+=( ${test_svn[@]} )
-
-       # Reset all previously disabled tests
-       pushd t &>/dev/null || die
-       local i
-       for i in *.sh.DISABLED ; do
-               [[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
-       done
-       einfo "Disabled tests:"
-       for i in ${disabled[@]} ; do
-               if [[ -f "${i}" ]] ; then
-                       mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
-               fi
-       done
-
-       # Avoid the test system removing the results because we want them 
ourselves
-       sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
-
-       # Clean old results first, must always run
-       nonfatal git_emake clean
-       popd &>/dev/null || die
-
-       # Now run the tests, keep going if we hit an error, and don't terminate 
on
-       # failure
-       local rc
-       # t0610-reftable-basics.sh uses $A
-       local -x A=
-       einfo "Start test run"
-       #MAKEOPTS=-j1
-       nonfatal git_emake --keep-going test
-       rc=$?
+       git_emake -C contrib/diff-highlight
 
-       # Display nice results, now print the results
-       pushd t &>/dev/null || die
-       nonfatal git_emake aggregate-results
+       git_emake -C contrib/subtree git-subtree
+       # git-subtree.1 requires the full USE=doc dependency stack
+       use doc && git_emake -C contrib/subtree git-subtree.html git-subtree.1
+}
 
-       # And bail if there was a problem
-       [[ ${rc} -eq 0 ]] || die "Tests failed. Please file a bug!"
+src_test() {
+       meson_src_test
 
-       popd &>/dev/null || die
        if use perl ; then
-               emake -C contrib/credential/netrc testverbose
+               git_emake -C contrib/credential/netrc testverbose
        fi
 }
 
 src_install() {
-       git_emake DESTDIR="${D}" install
+       meson_src_install
 
        if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
                dobin contrib/credential/osxkeychain/git-credential-osxkeychain
@@ -562,9 +335,7 @@ src_install() {
        dodoc contrib/contacts/git-contacts.txt
 
        if use keyring ; then
-               pushd contrib/credential/libsecret &>/dev/null || die
-               dobin git-credential-libsecret
-               popd &>/dev/null || die
+               dobin contrib/credential/libsecret/git-credential-libsecret
        fi
 
        dodir /usr/share/${PN}/contrib
@@ -596,7 +367,7 @@ src_install() {
                cp -rf "${S}"/contrib/${i} "${ED}"/usr/share/${PN}/contrib || 
die "Failed contrib ${i}"
        done
 
-       if use perl && use cgi ; then
+       if use cgi ; then
                # We used to install in /usr/share/${PN}/gitweb
                # but upstream installs in /usr/share/gitweb
                # so we will install a symlink and use their location for 
compat with other
@@ -618,9 +389,11 @@ src_install() {
        fi
 
        if use perl ; then
-               pushd contrib/credential/netrc &>/dev/null || die
-               dobin git-credential-netrc
-               popd &>/dev/null || die
+               dodir "$(perl_get_vendorlib)"
+               mv "${ED}"/usr/share/perl5/Git.pm "${ED}/$(perl_get_vendorlib)" 
|| die
+               mv "${ED}"/usr/share/perl5/Git "${ED}/$(perl_get_vendorlib)" || 
die
+
+               dobin contrib/credential/netrc/git-credential-netrc
        fi
 
        if ! use subversion ; then

diff --git a/dev-vcs/git/git-9999-r3.ebuild b/dev-vcs/git/git-9999-r3.ebuild
index 17a8afd1ac8b..8968424c04bd 100644
--- a/dev-vcs/git/git-9999-r3.ebuild
+++ b/dev-vcs/git/git-9999-r3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
@@ -8,7 +8,7 @@ GENTOO_DEPEND_ON_PERL=no
 # bug #329479: git-remote-testgit is not multiple-version aware
 PYTHON_COMPAT=( python3_{10..13} )
 
-inherit toolchain-funcs perl-module bash-completion-r1 optfeature plocale 
python-single-r1 systemd
+inherit toolchain-funcs perl-module bash-completion-r1 optfeature plocale 
python-single-r1 systemd meson
 
 PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN"
 
@@ -58,7 +58,7 @@ S="${WORKDIR}"/${MY_P}
 
 LICENSE="GPL-2"
 SLOT="0"
-IUSE="+blksha1 +curl cgi doc keyring +gpg highlight +iconv mediawiki +nls 
+pcre perforce +perl +safe-directory selinux subversion tk +webdav xinetd cvs 
test"
+IUSE="+curl cgi cvs doc keyring +gpg highlight +iconv mediawiki +nls +pcre 
perforce +perl +safe-directory selinux subversion test tk +webdav xinetd"
 
 # Common to both DEPEND and RDEPEND
 DEPEND="
@@ -122,7 +122,11 @@ BDEPEND="
        )
        keyring? ( virtual/pkgconfig )
        nls? ( sys-devel/gettext )
-       test? ( app-crypt/gnupg )
+       test? (
+               app-arch/unzip
+               app-crypt/gnupg
+               dev-lang/perl
+       )
 "
 
 # Live ebuild builds man pages and HTML docs, additionally
@@ -144,11 +148,7 @@ REQUIRED_USE="
 RESTRICT="!test? ( test )"
 
 PATCHES=(
-       # Avoid automagic CVS, bug #350330
-       "${FILESDIR}"/git-2.37.0_rc1-optional-cvs.patch
-
-       # Make submodule output quiet
-       "${FILESDIR}"/git-2.21.0-quiet-submodules-testcase.patch
+       "${FILESDIR}"/${PN}-2.48.0_rc2-meson-deps.patch
 )
 
 pkg_setup() {
@@ -163,72 +163,6 @@ pkg_setup() {
        fi
 }
 
-# This is needed because for some obscure reasons future calls to make don't
-# pick up these exports if we export them in src_unpack()
-exportmakeopts() {
-       local extlibs myopts
-
-       myopts=(
-               ASCIIDOC_NO_ROFF=YesPlease
-
-               $(usex perl 'INSTALLDIRS=vendor 
NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
-
-               $(usev elibc_musl NO_REGEX=NeedsStartEnd)
-               $(usev !cvs NO_CVS=YesPlease)
-               $(usev !iconv NO_ICONV=YesPlease)
-               $(usev !nls NO_GETTEXT=YesPlease)
-               $(usev !perforce NO_PYTHON=YesPlease)
-               $(usev !subversion NO_SVN_TESTS=YesPlease)
-               $(usev !tk NO_TCLTK=YesPlease)
-       )
-
-       if use blksha1 ; then
-               myopts+=( BLK_SHA1=YesPlease )
-       fi
-
-       if use curl ; then
-               use webdav || myopts+=( NO_EXPAT=YesPlease )
-       else
-               myopts+=( NO_CURL=YesPlease )
-       fi
-
-       # Broken assumptions because of static build system
-       myopts+=(
-               NO_FINK=YesPlease
-               NO_DARWIN_PORTS=YesPlease
-               INSTALL=install
-               TAR=tar
-               SHELL_PATH="${EPREFIX}/bin/sh"
-               SANE_TOOL_PATH=
-               OLD_ICONV=
-               NO_EXTERNAL_GREP=
-       )
-
-       # Can't define this to null, since the entire makefile depends on it
-       sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die
-
-       if use pcre; then
-               myopts+=( USE_LIBPCRE2=YesPlease )
-               extlibs+=( -lpcre2-8 )
-       fi
-
-       if [[ ${CHOST} == *-solaris* ]]; then
-               myopts+=(
-                       NEEDS_LIBICONV=YesPlease
-                       HAVE_CLOCK_MONOTONIC=1
-               )
-
-               if grep -Fq getdelim "${ESYSROOT}"/usr/include/stdio.h ; then
-                       myopts+=( HAVE_GETDELIM=1 )
-               fi
-       fi
-
-       myopts+=( ASCIIDOC8=YesPlease )
-
-       export MY_MAKEOPTS="${myopts[@]}"
-       export EXTLIBS="${extlibs[@]}"
-}
-
 src_unpack() {
        if [[ ${PV} != *9999 ]] ; then
                unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
@@ -243,95 +177,63 @@ src_unpack() {
                fi
        else
                git-r3_src_unpack
-               #cp "${FILESDIR}"/GIT-VERSION-GEN . || die
        fi
 
 }
 
-src_prepare() {
-       if ! use safe-directory ; then
-               # This patch neuters the "safe directory" detection.
-               # bugs #838271, #838223
-               PATCHES+=(
-                       "${FILESDIR}"/git-2.46.2-unsafe-directory.patch
-               )
-       fi
-
-       default
+src_configure() {
+       local emesonargs=(
+               $(meson_feature curl)
+               $(meson_feature cgi gitweb)
+               $(meson_feature webdav expat)
+               $(meson_feature iconv)
+               $(meson_feature nls gettext)
+               $(meson_feature pcre pcre2)
+               $(meson_feature perl)
+               $(meson_feature perforce python)
+               $(meson_use test tests)
+               -Dperl_cpan_fallback=false
+       )
 
-       if use prefix ; then
-               # bug #757309
-               sed -i \
-                       -e 
's:/usr/local/opt/gettext/:/do/not/look/elsewhere/:g' \
-                       -e 's:/opt/homebrew/:/do/not/look/elsewhere/:g' \
-                       config.mak.uname || die
+       # For non-live, we use a downloaded docs tarball instead.
+       if [[ ${PV} == *9999 ]] ; then
+               emesonargs+=(
+                       -Ddocs="man$(usev doc ',html')"
+               )
        fi
 
-       sed -i \
-               -e 's:^\(CFLAGS[[:space:]]*=\).*$:\1 $(OPTCFLAGS) -Wall:' \
-               -e 's:^\(LDFLAGS[[:space:]]*=\).*$:\1 $(OPTLDFLAGS):' \
-               -e 's:^\(CC[[:space:]]* =\).*$:\1$(OPTCC):' \
-               -e 's:^\(AR[[:space:]]* =\).*$:\1$(OPTAR):' \
-               -e 
"s:\(PYTHON_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
-               -e 
"s:\(PERL_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
-               Makefile || die
-
-       # Fix docbook2texi command
-       sed -r -i 
's/DOCBOOK2X_TEXI[[:space:]]*=[[:space:]]*docbook2x-texi/DOCBOOK2X_TEXI = 
docbook2texi.pl/' \
-               Documentation/Makefile || die
+       meson_src_configure
 }
 
 git_emake() {
-       # bug #320647: PYTHON_PATH
-       local PYTHON_PATH=""
-       use perforce && PYTHON_PATH="${PYTHON}"
-
        local mymakeargs=(
-               ${MY_MAKEOPTS}
-
                prefix="${EPREFIX}"/usr
                htmldir="${EPREFIX}"/usr/share/doc/${PF}/html
-               perllibdir="$(use perl && perl_get_raw_vendorlib)"
                sysconfdir="${EPREFIX}"/etc
+               perllibdir="$(use perl && perl_get_raw_vendorlib)"
 
                CC="$(tc-getCC)"
                CFLAGS="${CFLAGS}"
+               LDFLAGS="${LDFLAGS}"
                PKG_CONFIG="$(tc-getPKG_CONFIG)"
-
-               # TODO: --verbose?
-               GIT_TEST_OPTS="--no-color"
-
                OPTAR="$(tc-getAR)"
                OPTCC="$(tc-getCC)"
                OPTCFLAGS="${CFLAGS}"
                OPTLDFLAGS="${LDFLAGS}"
 
-               CURL_CONFIG="${ESYSROOT}/usr/bin/curl-config"
-               CURL_CFLAGS="$($(tc-getPKG_CONFIG) --cflags libcurl)"
-               CURL_LDFLAGS="$($(tc-getPKG_CONFIG) --libs libcurl)"
-
                PERL_PATH="${EPREFIX}/usr/bin/perl"
                PERL_MM_OPT=""
 
-               PYTHON_PATH="${PYTHON_PATH}"
-
                V=1
+
                "$@"
        )
 
        emake "${mymakeargs[@]}"
 }
 
-src_configure() {
-       exportmakeopts
-}
-
 src_compile() {
-       git_emake
-
-       if use perl && use cgi ; then
-               git_emake gitweb
-       fi
+       meson_src_compile
 
        if use perl ; then
                git_emake -C contrib/credential/netrc
@@ -341,160 +243,31 @@ src_compile() {
                git_emake -C contrib/credential/osxkeychain
        fi
 
-       pushd Documentation &>/dev/null || die
-       if [[ ${PV} == *9999 ]] ; then
-               git_emake man
-               if use doc ; then
-                       git_emake info html
-               fi
-       else
-               if use doc ; then
-                       git_emake info
-               fi
-       fi
-       popd &>/dev/null || die
-
        if use keyring ; then
                git_emake -C contrib/credential/libsecret
        fi
 
-       pushd contrib/subtree &>/dev/null || die
-       git_emake git-subtree
-       # git-subtree.1 requires the full USE=doc dependency stack
-       use doc && git_emake git-subtree.html git-subtree.1
-       popd &>/dev/null || die
-
-       git_emake -C contrib/diff-highlight
-
        if use mediawiki ; then
                git_emake -C contrib/mw-to-git
        fi
-}
 
-src_test() {
-       local disabled=(
-               # We make safe-directory optional
-               t0033-safe-directory.sh
-       )
-
-       local tests_cvs=(
-               t9200-git-cvsexportcommit.sh
-               t9400-git-cvsserver-server.sh
-               t9401-git-cvsserver-crlf.sh
-               t9402-git-cvsserver-refs.sh
-               t9600-cvsimport.sh
-               t9601-cvsimport-vendor-branch.sh
-               t9602-cvsimport-branches-tags.sh
-               t9603-cvsimport-patchsets.sh
-               t9604-cvsimport-timestamps.sh
-       )
-
-       local tests_perl=(
-               t3701-add-interactive.sh
-               t5502-quickfetch.sh
-               t5512-ls-remote.sh
-               t5520-pull.sh
-               t7106-reset-unborn-branch.sh
-               t7501-commit.sh
-       )
-       # Bug #225601 - t0004 is not suitable for root perm
-       # Bug #219839 - t1004 is not suitable for root perm
-       # t0001-init.sh - check for init notices EPERM*  fails
-       local tests_nonroot=(
-               t0001-init.sh
-               t0004-unwritable.sh
-               t0070-fundamental.sh
-               t1004-read-tree-m-u-wf.sh
-               t3700-add.sh
-               t7300-clean.sh
-       )
-       # t9100 still fails with symlinks in SVN 1.7
-       local test_svn=( t9100-git-svn-basic.sh )
-
-       # Unzip is used only for the testcase code, not by any normal parts of 
Git.
-       if ! has_version app-arch/unzip ; then
-               einfo "Disabling tar-tree tests"
-               disabled+=( t5000-tar-tree.sh )
-       fi
-
-       local cvs=0
-       use cvs && let cvs=${cvs}+1
-       if [[ ${EUID} -eq 0 ]] ; then
-               if [[ ${cvs} -eq 1 ]] ; then
-                       ewarn "Skipping CVS tests because CVS does not work as 
root!"
-                       ewarn "You should retest with FEATURES=userpriv!"
-                       disabled+=( ${tests_cvs[@]} )
-               fi
-               einfo "Skipping other tests that require being non-root"
-               disabled+=( ${tests_nonroot[@]} )
-       else
-               if [[ ${cvs} -gt 0 ]] && has_version dev-vcs/cvs ; then
-                       let cvs=${cvs}+1
-               fi
-
-               if [[ ${cvs} -gt 1 ]] && has_version "dev-vcs/cvs[server]" ; 
then
-                       let cvs=${cvs}+1
-               fi
-
-               if [[ ${cvs} -lt 3 ]] ; then
-                       einfo "Disabling CVS tests (needs 
dev-vcs/cvs[USE=server])"
-                       disabled+=( ${tests_cvs[@]} )
-               fi
-       fi
-
-       if ! use perl ; then
-               einfo "Disabling tests that need Perl"
-               disabled+=( ${tests_perl[@]} )
-       fi
-
-       einfo "Disabling tests that fail with SVN 1.7"
-       disabled+=( ${test_svn[@]} )
-
-       # Reset all previously disabled tests
-       pushd t &>/dev/null || die
-       local i
-       for i in *.sh.DISABLED ; do
-               [[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
-       done
-       einfo "Disabled tests:"
-       for i in ${disabled[@]} ; do
-               if [[ -f "${i}" ]] ; then
-                       mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
-               fi
-       done
-
-       # Avoid the test system removing the results because we want them 
ourselves
-       sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
-
-       # Clean old results first, must always run
-       nonfatal git_emake clean
-       popd &>/dev/null || die
-
-       # Now run the tests, keep going if we hit an error, and don't terminate 
on
-       # failure
-       local rc
-       # t0610-reftable-basics.sh uses $A
-       local -x A=
-       einfo "Start test run"
-       #MAKEOPTS=-j1
-       nonfatal git_emake --keep-going test
-       rc=$?
+       git_emake -C contrib/diff-highlight
 
-       # Display nice results, now print the results
-       pushd t &>/dev/null || die
-       nonfatal git_emake aggregate-results
+       git_emake -C contrib/subtree git-subtree
+       # git-subtree.1 requires the full USE=doc dependency stack
+       use doc && git_emake -C contrib/subtree git-subtree.html git-subtree.1
+}
 
-       # And bail if there was a problem
-       [[ ${rc} -eq 0 ]] || die "Tests failed. Please file a bug!"
+src_test() {
+       meson_src_test
 
-       popd &>/dev/null || die
        if use perl ; then
-               emake -C contrib/credential/netrc testverbose
+               git_emake -C contrib/credential/netrc testverbose
        fi
 }
 
 src_install() {
-       git_emake DESTDIR="${D}" install
+       meson_src_install
 
        if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
                dobin contrib/credential/osxkeychain/git-credential-osxkeychain
@@ -562,9 +335,7 @@ src_install() {
        dodoc contrib/contacts/git-contacts.txt
 
        if use keyring ; then
-               pushd contrib/credential/libsecret &>/dev/null || die
-               dobin git-credential-libsecret
-               popd &>/dev/null || die
+               dobin contrib/credential/libsecret/git-credential-libsecret
        fi
 
        dodir /usr/share/${PN}/contrib
@@ -596,7 +367,7 @@ src_install() {
                cp -rf "${S}"/contrib/${i} "${ED}"/usr/share/${PN}/contrib || 
die "Failed contrib ${i}"
        done
 
-       if use perl && use cgi ; then
+       if use cgi ; then
                # We used to install in /usr/share/${PN}/gitweb
                # but upstream installs in /usr/share/gitweb
                # so we will install a symlink and use their location for 
compat with other
@@ -618,9 +389,11 @@ src_install() {
        fi
 
        if use perl ; then
-               pushd contrib/credential/netrc &>/dev/null || die
-               dobin git-credential-netrc
-               popd &>/dev/null || die
+               dodir "$(perl_get_vendorlib)"
+               mv "${ED}"/usr/share/perl5/Git.pm "${ED}/$(perl_get_vendorlib)" 
|| die
+               mv "${ED}"/usr/share/perl5/Git "${ED}/$(perl_get_vendorlib)" || 
die
+
+               dobin contrib/credential/netrc/git-credential-netrc
        fi
 
        if ! use subversion ; then


Reply via email to