From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-commits+bounces-1710607-garchives=archives.gentoo.org@lists.gentoo.org>
Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (4096 bits))
	(No client certificate requested)
	by finch.gentoo.org (Postfix) with ESMTPS id 746AF15813A
	for <garchives@archives.gentoo.org>; Sat, 18 Jan 2025 23:24:48 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 67EB6E08DA;
	Sat, 18 Jan 2025 23:24:47 +0000 (UTC)
Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (4096 bits))
	(No client certificate requested)
	by pigeon.gentoo.org (Postfix) with ESMTPS id 47B02E08DA
	for <gentoo-commits@lists.gentoo.org>; Sat, 18 Jan 2025 23:24:47 +0000 (UTC)
Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (4096 bits))
	(No client certificate requested)
	by smtp.gentoo.org (Postfix) with ESMTPS id 53351342FA0
	for <gentoo-commits@lists.gentoo.org>; Sat, 18 Jan 2025 23:24:46 +0000 (UTC)
Received: from localhost.localdomain (localhost [IPv6:::1])
	by oystercatcher.gentoo.org (Postfix) with ESMTP id 835CE252F
	for <gentoo-commits@lists.gentoo.org>; Sat, 18 Jan 2025 23:24:43 +0000 (UTC)
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Content-Transfer-Encoding: 8bit
Content-type: text/plain; charset=UTF-8
Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" <sam@gentoo.org>
Message-ID: <1737242663.93a65fbaad018306655e579b8d0f44ff5c663aea.sam@gentoo>
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-vcs/git/
X-VCS-Repository: repo/gentoo
X-VCS-Files: dev-vcs/git/git-9999.ebuild
X-VCS-Directories: dev-vcs/git/
X-VCS-Committer: sam
X-VCS-Committer-Name: Sam James
X-VCS-Revision: 93a65fbaad018306655e579b8d0f44ff5c663aea
X-VCS-Branch: master
Date: Sat, 18 Jan 2025 23:24:43 +0000 (UTC)
Precedence: bulk
List-Post: <mailto:gentoo-commits@lists.gentoo.org>
List-Help: <mailto:gentoo-commits+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org>
X-BeenThere: gentoo-commits@lists.gentoo.org
X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply
X-Archives-Salt: b63ff1f0-3bd6-4fb4-936e-f91fb7f96eab
X-Archives-Hash: e2d6e1d090b1bf5bd2cd544e4d3ad10e

commit:     93a65fbaad018306655e579b8d0f44ff5c663aea
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 18 23:23:51 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Jan 18 23:24:23 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=93a65fba

dev-vcs/git: sync 9999 with 9999-r*

The 'maint' branch is now on 2.48.x so has Meson.

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

 dev-vcs/git/git-9999.ebuild | 342 ++++++++++----------------------------------
 1 file changed, 75 insertions(+), 267 deletions(-)

diff --git a/dev-vcs/git/git-9999.ebuild b/dev-vcs/git/git-9999.ebuild
index 17a8afd1ac8b..f90f10f55f15 100644
--- a/dev-vcs/git/git-9999.ebuild
+++ b/dev-vcs/git/git-9999.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-doc-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,7 +177,6 @@ src_unpack() {
 		fi
 	else
 		git-r3_src_unpack
-		#cp "${FILESDIR}"/GIT-VERSION-GEN . || die
 	fi
 
 }
@@ -258,80 +191,61 @@ src_prepare() {
 	fi
 
 	default
+}
 
-	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
+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
+	)
+
+	# For non-live, we use a downloaded docs tarball instead.
+	if [[ ${PV} == *9999 ]] || use doc ; 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,170 +255,61 @@ 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 )
+	if use tk ; then
+		git_emake -C gitk-git
+		git_emake -C git-gui
 	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[@]} )
+	if use doc ; then
+		# Workaround fragments that still use the Makefile and can't
+		# find the bits from Meson's out-of-source build
+		ln -s "${BUILD_DIR}"/Documentation/asciidoc.conf "${S}"/Documentation/asciidoc.conf || die
 	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
+	git_emake -C contrib/diff-highlight
+	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
+}
 
-	# Now run the tests, keep going if we hit an error, and don't terminate on
-	# failure
-	local rc
+src_test() {
 	# t0610-reftable-basics.sh uses $A
 	local -x A=
-	einfo "Start test run"
-	#MAKEOPTS=-j1
-	nonfatal git_emake --keep-going test
-	rc=$?
 
-	# Display nice results, now print the results
-	pushd t &>/dev/null || die
-	nonfatal git_emake aggregate-results
+	meson_src_test
 
-	# And bail if there was a problem
-	[[ ${rc} -eq 0 ]] || die "Tests failed. Please file a bug!"
-
-	popd &>/dev/null || die
-	if use perl ; then
-		emake -C contrib/credential/netrc testverbose
-	fi
+	# TODO: Needs help finding built git with meson
+	#if use perl ; then
+	#	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
 	fi
 
+	if use doc ; then
+		cp -r "${ED}"/usr/share/doc/git-doc/. "${ED}"/usr/share/doc/${PF}/html || die
+		rm -rf "${ED}"/usr/share/doc/git-doc/ || die
+	fi
+
 	# Depending on the tarball and manual rebuild of the documentation, the
 	# manpages may exist in either OR both of these directories.
 	find man?/*.[157] >/dev/null 2>&1 && doman man?/*.[157]
 	find Documentation/*.[157] >/dev/null 2>&1 && doman Documentation/*.[157]
 	dodoc README* Documentation/{SubmittingPatches,CodingGuidelines}
+
 	use doc && dodir /usr/share/doc/${PF}/html
 	local d
 	for d in / /howto/ /technical/ ; do
@@ -516,8 +321,6 @@ src_install() {
 		fi
 	done
 	docinto /
-	# Upstream does not ship this pre-built :-(
-	use doc && doinfo Documentation/{git,gitman}.info
 
 	newbashcomp contrib/completion/git-completion.bash ${PN}
 	bashcomp_alias git gitk
@@ -543,10 +346,6 @@ src_install() {
 	dodoc git-subtree.txt
 	popd &>/dev/null || die
 
-	if use mediawiki ; then
-		git_emake -C contrib/mw-to-git DESTDIR="${D}" install
-	fi
-
 	# diff-highlight
 	dobin contrib/diff-highlight/diff-highlight
 	newdoc contrib/diff-highlight/README README.diff-highlight
@@ -562,9 +361,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 +393,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 +415,15 @@ 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 mediawiki ; then
+		git_emake -C contrib/mw-to-git DESTDIR="${D}" install
 	fi
 
 	if ! use subversion ; then
@@ -640,6 +443,11 @@ src_install() {
 		systemd_dounit "${FILESDIR}/git-daemon.socket"
 	fi
 
+	if use tk ; then
+		git_emake -C gitk-git DESTDIR="${D}" install
+		git_emake -C git-gui DESTDIR="${D}" install
+	fi
+
 	perl_delete_localpod
 
 	# Remove disabled linguas