public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-vcs/git/, dev-vcs/git/files/
Date: Wed, 08 Jan 2025 03:40:31 +0000 (UTC)	[thread overview]
Message-ID: <1736307613.f8eea380998d17e09a492c81244eb12f2a3a4378.sam@gentoo> (raw)

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	other threads:[~2025-01-08  3:40 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-08  3:40 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-03-14 18:18 [gentoo-commits] repo/gentoo:master commit in: dev-vcs/git/, dev-vcs/git/files/ Sam James
2025-01-30  0:40 Sam James
2025-01-11  6:37 Sam James
2022-11-30  7:48 Sam James
2022-09-01  3:11 Sam James
2022-08-12 15:46 Sam James
2021-11-08 18:42 Mike Gilbert
2021-08-17 10:58 Lars Wendler
2020-02-17  9:48 Lars Wendler
2019-10-26 12:55 Lars Wendler
2019-05-14  8:58 Lars Wendler
2018-09-04 15:53 Lars Wendler
2018-06-06 14:34 Lars Wendler
2017-05-24  8:49 Lars Wendler
2017-02-25 20:38 Lars Wendler
2016-06-07 12:26 Lars Wendler
2016-05-08 22:57 Mike Gilbert
2016-01-05 10:04 Lars Wendler
2015-11-19 23:26 Robin H. Johnson
2015-10-10 11:17 Justin Lecher
2015-09-29 15:16 Lars Wendler
2015-09-06 23:16 Joshua Kinard

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1736307613.f8eea380998d17e09a492c81244eb12f2a3a4378.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox