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

Reply via email to