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