From 909732842d83780b11c54187d90ae4b198495b06 Mon Sep 17 00:00:00 2001 From: CHENYUAO Date: Wed, 12 Apr 2023 16:58:00 +0800 Subject: [PATCH] change spec file format --- git.spec | 559 +++++++++++++++++++++---------------------------------- 1 file changed, 211 insertions(+), 348 deletions(-) diff --git a/git.spec b/git.spec index 990533c..c3d2b8c 100644 --- a/git.spec +++ b/git.spec @@ -1,232 +1,150 @@ -%define anolis_release 2 - -# Pass --without docs to rpmbuild if you don't want the documentation -%bcond_without docs - -# Pass --without tests to rpmbuild if you don't want to run the tests -%bcond_without tests -%bcond_with linkcheck -%bcond_without asciidoctor -%bcond_without python3 -# Allow cvs subpackage to be toggled via --with/--without -%bcond_with cvs -# Allow credential-libsecret subpackage to be toggled via --with/--without -%bcond_without libsecret -# Allow p4 subpackage to be toggled via --with/--without -# Disable by default if we lack python3 support -%bcond_without p4 - -%global gitweb_httpd_conf gitweb.conf -%global use_glibc_langpacks 1 -%global use_perl_generators 1 -%global use_perl_interpreter 1 -%global gitexecdir %{_libexecdir}/git-core -%global bashcompdir %(pkg-config --variable=completionsdir bash-completion 2>/dev/null) -%global bashcomproot %(dirname %{bashcompdir} 2>/dev/null) -# Set path to the package-notes linker script +%define anolis_release 3 + +%bcond_without docs +%bcond_without tests +%bcond_with linkcheck +%bcond_without asciidoctor +%bcond_with cvs +%bcond_without libsecret +%bcond_without p4 + +%bcond_without use_glibc_langpacks +%bcond_without use_perl_generators +%bcond_without use_perl_interpreter + +%global bashcompdir %(pkg-config --variable=completionsdir bash-completion 2>/dev/null) +%global bashcomproot %(dirname %{bashcompdir} 2>/dev/null) %global _package_note_file %{_builddir}/%{name}-%{version}/.package_note-%{name}-%{version}-%{release}.%{_arch}.ld Name: git Version: 2.40.0 Release: %{anolis_release}%{?dist} -Summary: Fast Version Control System +Summary: Distributed version control system License: GPLv2 URL: https://git-scm.com/ Source0: https://www.kernel.org/pub/software/scm/git/%{?rcrev:testing/}%{name}-%{version}.tar.xz +Source1: git.xinetd.in +Source2: git-gui.desktop +Source3: gitweb-httpd.conf +Source4: gitweb.conf.in +Source5: git@.service.in +Source6: git.socket +Source7: print-failed-test-output -# Local sources begin at 10 to allow for additional future upstream sources -Source11: git.xinetd.in -Source12: git-gui.desktop -Source13: gitweb-httpd.conf -Source14: gitweb.conf.in -Source15: git@.service.in -Source16: git.socket - -# Script to print test failure output (used in %%check) -Source99: print-failed-test-output - -# fix git-cvsimport got noisy Patch0: git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch -# tests: try harder to find open ports for apache, git, and svn -# -# https://github.com/tmzullinger/git/commit/aedeaaf788 Patch1: 0001-t-lib-httpd-try-harder-to-find-a-port-for-apache.patch -# https://github.com/tmzullinger/git/commit/16750d024c Patch2: 0002-t-lib-git-daemon-try-harder-to-find-a-port.patch -# https://github.com/tmzullinger/git/commit/aa5105dc11 Patch3: 0003-t-lib-git-svn-try-harder-to-find-a-port.patch %if %{with docs} -# pod2man is needed to build Git.3pm BuildRequires: %{_bindir}/pod2man %if %{with asciidoctor} -BuildRequires: docbook5-style-xsl -BuildRequires: rubygem-asciidoctor +BuildRequires: docbook5-style-xsl rubygem-asciidoctor %else BuildRequires: asciidoc >= 8.4.1 %endif -BuildRequires: perl(File::Compare) -BuildRequires: xmlto +BuildRequires: perl(File::Compare) xmlto %if %{with linkcheck} BuildRequires: linkchecker %endif %endif -BuildRequires: coreutils -BuildRequires: desktop-file-utils -BuildRequires: diffutils -BuildRequires: expat-devel -BuildRequires: findutils -BuildRequires: gawk -BuildRequires: gcc -BuildRequires: gettext -BuildRequires: libcurl-devel -BuildRequires: make -BuildRequires: openssl-devel -BuildRequires: openssl -BuildRequires: pcre2-devel -BuildRequires: perl(Error) -BuildRequires: perl(lib) -BuildRequires: perl(Test) -%if %{use_perl_generators} +BuildRequires: coreutils desktop-file-utils diffutils expat-devel +BuildRequires: findutils gawk gettext sed +BuildRequires: gcc gcc-c++ make autoconf +BuildRequires: openssl openssl-devel libcurl-devel pcre2-devel +BuildRequires: perl(lib) perl(Error) perl(Test) +%if %{with use_perl_generators} BuildRequires: perl-generators %endif -%if %{use_perl_interpreter} +%if %{with use_perl_interpreter} BuildRequires: perl-interpreter %else BuildRequires: perl %endif BuildRequires: pkgconfig(bash-completion) -BuildRequires: sed -# For macros -BuildRequires: systemd -BuildRequires: tcl -BuildRequires: tk -BuildRequires: xz -BuildRequires: zlib-devel >= 1.2 +BuildRequires: systemd tcl tk xz zlib-devel >= 1.2 %if %{with tests} -# Test suite requirements -BuildRequires: acl -# Needed by t5559-http-fetch-smart-http2.sh -BuildRequires: mod_http2 -BuildRequires: bash +BuildRequires: bash acl mod_http2 %if %{with cvs} -BuildRequires: cvs -BuildRequires: cvsps +BuildRequires: cvs cvsps %endif -%if %{use_glibc_langpacks} -# glibc-all-langpacks and glibc-langpack-is are needed for GETTEXT_LOCALE and -# GETTEXT_ISO_LOCALE test prereq's, glibc-langpack-en ensures en_US.UTF-8. -BuildRequires: glibc-all-langpacks -BuildRequires: glibc-langpack-en -BuildRequires: glibc-langpack-is +%if %{with use_glibc_langpacks} +BuildRequires: glibc-all-langpacks glibc-langpack-en glibc-langpack-is %endif BuildRequires: gnupg2-smime %if "%{_arch}" == "x86_64" BuildRequires: highlight %endif -BuildRequires: httpd -BuildRequires: mod_ssl -BuildRequires: mod_dav_svn -BuildRequires: openssh-clients +BuildRequires: httpd mod_ssl mod_dav_svn openssh-clients BuildRequires: perl(App::Prove) -BuildRequires: perl(CGI) -BuildRequires: perl(CGI::Carp) -BuildRequires: perl(CGI::Util) -BuildRequires: perl(DBD::SQLite) -BuildRequires: perl(Digest::MD5) -BuildRequires: perl(Fcntl) -BuildRequires: perl(File::Basename) -BuildRequires: perl(File::Copy) -BuildRequires: perl(File::Find) -BuildRequires: perl(filetest) -BuildRequires: perl(HTTP::Date) -BuildRequires: perl(IO::Pty) -BuildRequires: perl(JSON) -BuildRequires: perl(JSON::PP) +BuildRequires: perl(CGI) perl(CGI::Carp) perl(CGI::Util) +BuildRequires: perl(DBD::SQLite) perl(Digest::MD5) +BuildRequires: perl(Fcntl) perl(File::Basename) perl(File::Copy) perl(File::Find) perl(filetest) +BuildRequires: perl(HTTP::Date) perl(IO::Pty) +BuildRequires: perl(JSON) perl(JSON::PP) BuildRequires: perl(Mail::Address) -BuildRequires: perl(Memoize) -BuildRequires: perl(POSIX) -BuildRequires: perl(Term::ReadLine) -BuildRequires: perl(Test::More) -BuildRequires: perl(Time::HiRes) -%if %{with python3} +BuildRequires: perl(Memoize) perl(POSIX) +BuildRequires: perl(Term::ReadLine) perl(Test::More) perl(Time::HiRes) BuildRequires: python3-devel -%endif -BuildRequires: subversion -BuildRequires: subversion-perl -BuildRequires: tar -BuildRequires: time -BuildRequires: zip +BuildRequires: subversion subversion-perl +BuildRequires: tar time zip %endif -Requires: git-core = %{version}-%{release} -Requires: git-core-doc = %{version}-%{release} + +Requires: git-core = %{version}-%{release} git-core-doc = %{version}-%{release} %if ! %{defined perl_bootstrap} Requires: perl(Term::ReadKey) %endif Requires: perl-Git = %{version}-%{release} - -# Obsolete git-cvs if it's disabled %if %{without cvs} Obsoletes: git-cvs < %{?epoch:%{epoch}:}%{version}-%{release} %endif - -# Obsolete git-p4 if it's disabled %if %{without p4} Obsoletes: git-p4 < %{?epoch:%{epoch}:}%{version}-%{release} %endif %description -Git is a fast, scalable, distributed revision control system with an -unusually rich command set that provides both high-level operations -and full access to internals. +Git is a free and open source distributed version control system designed +to handle everything from small to very large projects with speed and efficiency. -The git rpm installs common set of tools which are usually using with -small amount of dependencies. To install all git packages, including -tools for integrating with other SCMs, install the git-all meta-package. +Git is easy to learn and has a tiny footprint with lightning fast performance. +It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features +like cheap local branching, convenient staging areas, and multiple workflows. %package all Summary: Meta-package to pull in all git tools -BuildArch: noarch Requires: git = %{version}-%{release} +Requires: git-daemon = %{version}-%{release} +Requires: git-email = %{version}-%{release} +Requires: git-gui = %{version}-%{release} +Requires: git-subtree = %{version}-%{release} +Requires: git-svn = %{version}-%{release} +Requires: git-instaweb = %{version}-%{release} +Requires: gitk = %{version}-%{release} +Requires: perl-Git = %{version}-%{release} %if %{with libsecret} Requires: git-credential-libsecret = %{version}-%{release} %endif %if %{with cvs} Requires: git-cvs = %{version}-%{release} %endif -Requires: git-daemon = %{version}-%{release} -Requires: git-email = %{version}-%{release} -Requires: git-gui = %{version}-%{release} %if %{with p4} Requires: git-p4 = %{version}-%{release} %endif -Requires: git-subtree = %{version}-%{release} -Requires: git-svn = %{version}-%{release} -Requires: git-instaweb = %{version}-%{release} -Requires: gitk = %{version}-%{release} -Requires: perl-Git = %{version}-%{release} %if ! %{defined perl_bootstrap} Requires: perl(Term::ReadKey) %endif -%description all -Git is a fast, scalable, distributed revision control system with an -unusually rich command set that provides both high-level operations -and full access to internals. +BuildArch: noarch +%description all This is a dummy package which brings in all subpackages. %package core Summary: Core package of git with minimal functionality -Requires: less -Requires: openssh-clients -Requires: zlib >= 1.2 -%description core -Git is a fast, scalable, distributed revision control system with an -unusually rich command set that provides both high-level operations -and full access to internals. +Requires: less openssh-clients zlib >= 1.2 +%description core The git-core rpm installs really the core tools with minimal dependencies. Install git package for common set of tools. To install all git packages, including tools for integrating with @@ -234,8 +152,9 @@ other SCMs, install the git-all meta-package. %package core-doc Summary: Documentation files for git-core -BuildArch: noarch Requires: git-core = %{version}-%{release} +BuildArch: noarch + %description core-doc Documentation files for git-core package including man pages. @@ -245,7 +164,7 @@ Summary: Git helper for accessing credentials via libsecret BuildRequires: libsecret-devel Requires: git = %{version}-%{release} %description credential-libsecret -%{summary}. +Git helper for accessing credentials via libsecret. %endif %if %{with cvs} @@ -253,20 +172,20 @@ Requires: git = %{version}-%{release} Summary: Git tools for importing CVS repositories BuildArch: noarch Requires: git = %{version}-%{release} -Requires: cvs -Requires: cvsps -Requires: perl(DBD::SQLite) +Requires: cvs cvsps perl(DBD::SQLite) + %description cvs -%{summary}. +Git tools for importing CVS repositories %endif %package daemon -Summary: Git protocol daemon -Requires: git-core = %{version}-%{release} -Requires: systemd -Requires(post): systemd -Requires(preun): systemd -Requires(postun): systemd +Summary: Git protocol daemon +Requires: git-core = %{version}-%{release} +Requires: systemd +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd + %description daemon The git daemon for supporting git:// access to git repositories @@ -274,26 +193,15 @@ The git daemon for supporting git:// access to git repositories Summary: Git tools for sending patches via email BuildArch: noarch Requires: git = %{version}-%{release} -Requires: perl(Authen::SASL) -Requires: perl(Cwd) -Requires: perl(Email::Valid) -Requires: perl(File::Spec) -Requires: perl(File::Spec::Functions) -Requires: perl(File::Temp) -Requires: perl(IO::Socket::SSL) -Requires: perl(Mail::Address) -Requires: perl(MIME::Base64) -Requires: perl(MIME::QuotedPrint) -Requires: perl(Net::Domain) -Requires: perl(Net::SMTP) -Requires: perl(Net::SMTP::SSL) -Requires: perl(POSIX) -Requires: perl(Sys::Hostname) -Requires: perl(Term::ANSIColor) -Requires: perl(Term::ReadLine) -Requires: perl(Text::ParseWords) +Requires: perl(Authen::SASL) perl(Cwd) perl(Email::Valid) +Requires: perl(File::Spec) perl(File::Spec::Functions) perl(File::Temp) +Requires: perl(IO::Socket::SSL) perl(Mail::Address) +Requires: perl(MIME::Base64) perl(MIME::QuotedPrint) +Requires: perl(Net::Domain) perl(Net::SMTP) perl(Net::SMTP::SSL) +Requires: perl(POSIX) perl(Sys::Hostname) +Requires: perl(Term::ANSIColor) perl(Term::ReadLine) perl(Text::ParseWords) %description email -%{summary}. +Git tools for sending patches via email. %package -n gitk Summary: Git repository browser @@ -301,60 +209,63 @@ BuildArch: noarch Requires: git = %{version}-%{release} Requires: git-gui = %{version}-%{release} Requires: tk >= 8.4 + %description -n gitk -%{summary}. +Git repository browser. %package -n gitweb Summary: Simple web interface to git repositories -BuildArch: noarch Requires: git = %{version}-%{release} +BuildArch: noarch + %description -n gitweb -%{summary}. +Simple web interface to git repositories. %package gui Summary: Graphical interface to Git -BuildArch: noarch Requires: gitk = %{version}-%{release} Requires: tk >= 8.4 +BuildArch: noarch + %description gui -%{summary}. +Graphical interface to Git. %package instaweb Summary: Repository browser in gitweb -BuildArch: noarch Requires: git = %{version}-%{release} Requires: gitweb = %{version}-%{release} Requires: httpd +BuildArch: noarch %description instaweb -A simple script to set up gitweb and a web server for browsing the local -repository. +A simple script to set up gitweb and a web server for browsing the local repository. %if %{with p4} %package p4 Summary: Git tools for working with Perforce depots -BuildArch: noarch -%if %{with python3} BuildRequires: python3-devel -%endif Requires: git = %{version}-%{release} +BuildArch: noarch + %description p4 -%{summary}. +Git tools for working with Perforce depots. %endif %package -n perl-Git Summary: Perl interface to Git -BuildArch: noarch Requires: git = %{version}-%{release} +BuildArch: noarch + %description -n perl-Git -%{summary}. +Perl interface to Git. %package -n perl-Git-SVN Summary: Perl interface to Git::SVN -BuildArch: noarch Requires: git = %{version}-%{release} +BuildArch: noarch + %description -n perl-Git-SVN -%{summary}. +Perl interface to Git::SVN. %package subtree Summary: Git tools to merge and split repositories @@ -362,103 +273,85 @@ Requires: git-core = %{version}-%{release} BuildArch: noarch %description subtree -Git subtrees allow subprojects to be included within a subdirectory -of the main project, optionally including the subproject's entire -history. +Git subtrees allow subprojects to be included within a subdirectory of +the main project, optionally including the subproject's entire history. %package svn Summary: Git tools for interacting with Subversion repositories -BuildArch: noarch -Requires: git = %{version}-%{release} -Requires: perl(Digest::MD5) +Requires: git = %{version}-%{release} +Requires: perl(Digest::MD5) subversion %if ! %{defined perl_bootstrap} Requires: perl(Term::ReadKey) %endif -Requires: subversion +BuildArch: noarch + %description svn -%{summary}. +Git tools for interacting with Subversion repositories. %prep -%autosetup -p1 -n %{name}-%{version} - -# Install print-failed-test-output script -install -p -m 755 %{SOURCE99} print-failed-test-output +%autosetup -n %{name}-%{version} -p1 -# Remove git-archimport from command list +install -m 0755 -p %{SOURCE7} print-failed-test-output sed -i '/^SCRIPT_PERL += git-archimport\.perl$/d' Makefile sed -i '/^git-archimport/d' command-list.txt rm git-archimport.perl Documentation/git-archimport.txt %if %{without cvs} -# Remove git-cvs* from command list sed -i '/^git-cvs/d' command-list.txt %endif %if %{without p4} -# Remove git-p4 from command list sed -i '/^git-p4/d' command-list.txt %endif -# Use these same options for every invocation of 'make'. -# Otherwise it will rebuild in %%install due to flags changes. -# Pipe to tee to aid confirmation/verification of settings. +# parameters of make cat << \EOF | tee config.mak V = 1 CFLAGS = %{build_cflags} LDFLAGS = %{build_ldflags} + USE_LIBPCRE = 1 -ETC_GITCONFIG = %{_sysconfdir}/gitconfig INSTALL_SYMLINKS = 1 -GITWEB_PROJECTROOT = %{_localstatedir}/lib/git GNU_ROFF = 1 NO_PERL_CPAN_FALLBACKS = 1 -%if %{with python3} + +ETC_GITCONFIG = %{_sysconfdir}/gitconfig +GITWEB_PROJECTROOT = %{_localstatedir}/lib/git PYTHON_PATH = %{__python3} -%else -NO_PYTHON = 1 -%endif -%if %{with asciidoctor} -USE_ASCIIDOCTOR = 1 -%endif + htmldir = %{?_pkgdocdir}%{!?_pkgdocdir:%{_docdir}/%{name}-%{version}} prefix = %{_prefix} perllibdir = %{perl_vendorlib} gitwebdir = %{_localstatedir}/www/git -# Test options +%if %{with asciidoctor} +USE_ASCIIDOCTOR = 1 +%endif + DEFAULT_TEST_TARGET = prove GIT_PROVE_OPTS = --verbose --normalize %{?_smp_mflags} --formatter=TAP::Formatter::File GIT_TEST_OPTS = -x --verbose-log EOF -# Filter bogus perl requires -# packed-refs comes from a comment in contrib/hooks/update-paranoid %{?perl_default_filter} %global __requires_exclude %{?__requires_exclude:%__requires_exclude|}perl\\(packed-refs\\) %if ! %{defined perl_bootstrap} %global __requires_exclude %{?__requires_exclude:%__requires_exclude|}perl\\(Term::ReadKey\\) %endif -# Remove Git::LoadCPAN to ensure we use only system perl modules. This also -# allows the dependencies to be automatically processed by rpm. rm -rf perl/Git/LoadCPAN{.pm,/} grep -rlZ '^use Git::LoadCPAN::' | xargs -r0 sed -i 's/Git::LoadCPAN:://g' -# Update gitweb default home link string sed -i 's@"++GITWEB_HOME_LINK_STR++"@$ENV{"SERVER_NAME"} ? "git://" . $ENV{"SERVER_NAME"} : "projects"@' \ gitweb/gitweb.perl -# Move contrib/{contacts,subtree} docs to Documentation so they build with the -# proper asciidoc/docbook/xmlto options mv contrib/{contacts,subtree}/git-*.txt Documentation/ %build -# Improve build reproducibility export TZ=UTC export SOURCE_DATE_EPOCH=$(date -r version +%%s 2>/dev/null) %make_build all %{?with_docs:doc} - %make_build -C contrib/contacts/ all %if %{with libsecret} @@ -466,75 +359,60 @@ export SOURCE_DATE_EPOCH=$(date -r version +%%s 2>/dev/null) %endif %make_build -C contrib/credential/netrc/ - %make_build -C contrib/diff-highlight/ - %make_build -C contrib/subtree/ all -# Fix shebang in a few places to silence rpmlint complaints -# Remove contrib/fast-import/import-zips.py which requires python2. rm -rf contrib/fast-import/import-zips.py -# Use python3 to avoid an unnecessary python2 dependency, if possible. -%if %{with python3} sed -i -e '1s@#!\( */usr/bin/env python\|%{__python2}\)$@#!%{__python3}@' \ contrib/hg-to-git/hg-to-git.py -%endif %install -%make_install %{?with_docs:install-doc} +%make_install %{?with_docs:install-doc} %make_install -C contrib/contacts %if %{with libsecret} -install -pm 755 contrib/credential/libsecret/git-credential-libsecret \ - %{buildroot}%{gitexecdir} +install -m 0755 -p contrib/credential/libsecret/git-credential-libsecret %{buildroot}%{_libexecdir}/git-core %endif -install -pm 755 contrib/credential/netrc/git-credential-netrc \ - %{buildroot}%{gitexecdir} -# temporarily move contrib/credential/netrc aside to prevent it from being -# deleted in the docs preparation, so the tests can be run in %%check +install -m 0755 -p contrib/credential/netrc/git-credential-netrc %{buildroot}%{_libexecdir}/git-core + mv contrib/credential/netrc . %make_install -C contrib/subtree mkdir -p %{buildroot}%{_sysconfdir}/httpd/conf.d -install -pm 0644 %{SOURCE13} %{buildroot}%{_sysconfdir}/httpd/conf.d/%{gitweb_httpd_conf} +install -m 0644 -p %{SOURCE3} %{buildroot}%{_sysconfdir}/httpd/conf.d/gitweb.conf sed "s|@PROJECTROOT@|%{_localstatedir}/lib/git|g" \ - %{SOURCE14} > %{buildroot}%{_sysconfdir}/gitweb.conf + %{SOURCE4} > %{buildroot}%{_sysconfdir}/gitweb.conf -# install contrib/diff-highlight and clean up to avoid cruft in git-core-doc -install -Dpm 0755 contrib/diff-highlight/diff-highlight \ - %{buildroot}%{_datadir}/git-core/contrib/diff-highlight +install -D -m 0755 -p contrib/diff-highlight/diff-highlight %{buildroot}%{_datadir}/git-core/contrib/diff-highlight rm -rf contrib/diff-highlight/{Makefile,diff-highlight,*.perl,t} -# Remove contrib/scalar to avoid cruft in the git-core-doc docdir rm -rf contrib/scalar - -# Clean up contrib/subtree to avoid cruft in the git-core-doc docdir rm -rf contrib/subtree/{INSTALL,Makefile,git-subtree*,t} -%if %{without cvs} # Remove git-cvs* and gitcvs* +%if %{without cvs} find %{buildroot} Documentation \( -type f -o -type l \) \ \( -name 'git-cvs*' -o -name 'gitcvs*' \) -exec rm -f {} ';' %endif -%if %{without p4} # Remove git-p4* and mergetools/p4merge +%if %{without p4} find %{buildroot} Documentation -type f -name 'git-p4*' -exec rm -f {} ';' -rm -f %{buildroot}%{gitexecdir}/mergetools/p4merge +rm -f %{buildroot}%{_libexecdir}/git-core/mergetools/p4merge %endif # Remove unneeded git-remote-testsvn so git-svn can be noarch -rm -f %{buildroot}%{gitexecdir}/git-remote-testsvn +rm -f %{buildroot}%{_libexecdir}/git-core/git-remote-testsvn exclude_re="email|git-(citool|credential-libsecret|cvs|daemon|gui|instaweb|p4|subtree|svn)|gitk|gitweb|p4merge" (find %{buildroot}{%{_bindir},%{_libexecdir}} -type f -o -type l | grep -vE "$exclude_re" | sed -e s@^%{buildroot}@@) > bin-man-doc-files (find %{buildroot}{%{_bindir},%{_libexecdir}} -mindepth 1 -type d | grep -vE "$exclude_re" | sed -e 's@^%{buildroot}@%dir @') >> bin-man-doc-files (find %{buildroot}%{perl_vendorlib} -type f | sed -e s@^%{buildroot}@@) > perl-git-files (find %{buildroot}%{perl_vendorlib} -mindepth 1 -type d | sed -e 's@^%{buildroot}@%dir @') >> perl-git-files -# Split out Git::SVN files + grep Git/SVN perl-git-files > perl-git-svn-files sed -i "/Git\/SVN/ d" perl-git-files %if %{with docs} @@ -544,56 +422,46 @@ rm -rf %{buildroot}%{_mandir} %endif mkdir -p %{buildroot}%{_localstatedir}/lib/git -install -Dp -m 0644 %{SOURCE16} %{buildroot}%{_unitdir}/git.socket +install -Dp -m 0644 %{SOURCE6} %{buildroot}%{_unitdir}/git.socket perl -p \ - -e "s|\@GITEXECDIR\@|%{gitexecdir}|g;" \ + -e "s|\@GITEXECDIR\@|%{_libexecdir}/git-core|g;" \ -e "s|\@BASE_PATH\@|%{_localstatedir}/lib/git|g;" \ - %{SOURCE15} > %{buildroot}%{_unitdir}/git@.service + %{SOURCE5} > %{buildroot}%{_unitdir}/git@.service -# Setup bash completion -install -Dpm 644 contrib/completion/git-completion.bash %{buildroot}%{bashcompdir}/git +install -D -m 644 -p contrib/completion/git-completion.bash %{buildroot}%{bashcompdir}/git ln -s git %{buildroot}%{bashcompdir}/gitk -# Install tcsh completion mkdir -p %{buildroot}%{_datadir}/git-core/contrib/completion -install -pm 644 contrib/completion/git-completion.tcsh \ +install -m 0644 -p contrib/completion/git-completion.tcsh \ %{buildroot}%{_datadir}/git-core/contrib/completion/ -# Move contrib/hooks out of %%docdir mkdir -p %{buildroot}%{_datadir}/git-core/contrib mv contrib/hooks %{buildroot}%{_datadir}/git-core/contrib pushd contrib > /dev/null ln -s ../../../git-core/contrib/hooks popd > /dev/null -# Install git-prompt.sh mkdir -p %{buildroot}%{_datadir}/git-core/contrib/completion -install -pm 644 contrib/completion/git-prompt.sh \ - %{buildroot}%{_datadir}/git-core/contrib/completion/ +install -m 0644 -p contrib/completion/git-prompt.sh %{buildroot}%{_datadir}/git-core/contrib/completion/ -# install git-gui .desktop file -desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE12} +desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2} -# symlink git-citool to git-gui if they are identical -pushd %{buildroot}%{gitexecdir} >/dev/null +pushd %{buildroot}%{_libexecdir}/git-core >/dev/null if cmp -s git-gui git-citool 2>/dev/null; then ln -svf git-gui git-citool fi popd >/dev/null -# find translations %find_lang %{name} %{name}.lang cat %{name}.lang >> bin-man-doc-files -# quiet some rpmlint complaints chmod -R g-w %{buildroot} -chmod a-x %{buildroot}%{gitexecdir}/git-mergetool--lib -# These files probably are not needed +chmod a-x %{buildroot}%{_libexecdir}/git-core/git-mergetool--lib + find . -regex '.*/\.\(git\(attributes\|ignore\)\|perlcriticrc\)' -delete chmod a-x Documentation/technical/api-index.sh find contrib -type f -print0 | xargs -r0 chmod -x -# Split core files not_core_re="git-(add--interactive|contacts|credential-netrc|filter-branch|instaweb|request-pull|send-mail)|gitweb" grep -vE "$not_core_re|%{_mandir}" bin-man-doc-files > bin-files-core touch man-doc-files-core @@ -603,12 +471,11 @@ grep -vE "$not_core_re" bin-man-doc-files | grep "%{_mandir}" > man-doc-files-co grep -E "$not_core_re" bin-man-doc-files > bin-man-doc-git-files ##### DOC -# place doc files into %%{_pkgdocdir} and split them into expected packages -# contrib +# place doc files into %%{_pkgdocdir} and split them into expected packages contrib not_core_doc_re="(git-(cvs|gui|citool|daemon|instaweb|subtree))|p4|svn|email|gitk|gitweb" mkdir -p %{buildroot}%{_pkgdocdir}/ cp -pr CODE_OF_CONDUCT.md README.md Documentation/*.txt Documentation/RelNotes contrib %{buildroot}%{_pkgdocdir}/ -# Remove contrib/ files/dirs which have nothing useful for documentation + rm -rf %{buildroot}%{_pkgdocdir}/contrib/{contacts,credential}/ cp -p gitweb/INSTALL %{buildroot}%{_pkgdocdir}/INSTALL.gitweb cp -p gitweb/README %{buildroot}%{_pkgdocdir}/README.gitweb @@ -632,63 +499,46 @@ find %{buildroot}%{_pkgdocdir}/{howto,technical} -type f \ %check %if %{without tests} -echo "*** Skipping tests" +echo "+++ Skipping tests" exit 0 %endif %if %{with docs} && %{with linkcheck} -# Test links in HTML documentation find %{buildroot}%{_pkgdocdir} -name "*.html" -print0 | xargs -r0 linkchecker %endif -# Tests to skip on all releases and architectures -# apr-util-bdb is removed -GIT_SKIP_TESTS="$GIT_SKIP_TESTS t5540.5 t5540.6 t5540.7 t5540.8 t5540.9 t5540.10 t5540.11 t5540.13 t5540.15 t5540.16 t5540.17 t5540.18 t5540.19 t5540.20" +GIT_SKIP_TESTS="$GIT_SKIP_TESTS \ + t5540.5 t5540.6 t5540.7 t5540.8 t5540.9 t5540.10 t5540.11 \ + t5540.13 t5540.15 t5540.16 t5540.17 t5540.18 t5540.19 t5540.20" %ifarch aarch64 # Skip tests which fail on aarch64, arm, and ppc -# -# The following 2 tests use run_with_limited_cmdline, which calls ulimit -s 128 -# to limit the maximum stack size. -# t5541.37 'push 2000 tags over http' -# t5551.25 'clone the 2,000 tag repo to check OS command line overflow' GIT_SKIP_TESTS="$GIT_SKIP_TESTS t5541.37 t5551.25" %endif export GIT_SKIP_TESTS - -# Set LANG so various UTF-8 tests are run -export LANG=en_US.UTF-8 - -# Explicitly enable tests which may be skipped opportunistically -# Check for variables set via test_bool_env in the test suite: -# git grep 'test_bool_env GIT_' -- t/{lib-,t[0-9]}*.sh | -# sed -r 's/.* (GIT_[^ ]+) .*/\1/g' | sort -u export GIT_TEST_GIT_DAEMON=true export GIT_TEST_HTTPD=true export GIT_TEST_SVNSERVE=true export GIT_TEST_SVN_HTTPD=true +export LANG=en_US.UTF-8 + -# Create tmpdir for test output and update GIT_TEST_OPTS -# Also update GIT-BUILD-OPTIONS to keep make from any needless rebuilding testdir=$(mktemp -d -p /tmp git-t.XXXX) sed -i "s@^GIT_TEST_OPTS = .*@& --root=$testdir@" config.mak touch -r GIT-BUILD-OPTIONS ts sed -i "s@\(GIT_TEST_OPTS='.*\)'@\1 --root=$testdir'@" GIT-BUILD-OPTIONS touch -r ts GIT-BUILD-OPTIONS -# Run the tests %__make -C t all || ./print-failed-test-output -# Run contrib/credential/netrc tests mkdir -p contrib/credential mv netrc contrib/credential/ %make_build -C contrib/credential/netrc/ test || \ %make_build -C contrib/credential/netrc/ testverbose -# Clean up test dir rmdir --ignore-fail-on-non-empty "$testdir" %post daemon @@ -701,85 +551,88 @@ rmdir --ignore-fail-on-non-empty "$testdir" %systemd_postun_with_restart git.socket %files -f bin-man-doc-git-files -%{_datadir}/git-core/contrib/diff-highlight -%{_datadir}/git-core/contrib/hooks/update-paranoid -%{_datadir}/git-core/contrib/hooks/setgitperms.perl %{_datadir}/git-core/templates/hooks/fsmonitor-watchman.sample %{_datadir}/git-core/templates/hooks/pre-rebase.sample %{_datadir}/git-core/templates/hooks/prepare-commit-msg.sample +%{_datadir}/git-core/contrib/diff-highlight +%{_datadir}/git-core/contrib/hooks/update-paranoid +%{_datadir}/git-core/contrib/hooks/setgitperms.perl + %files all -# No files for you! +# empty files %files core -f bin-files-core -#NOTE: this is only use of the %%doc macro in this spec file and should not -# be used elsewhere +%{bashcomproot} +%{_datadir}/git-core/ %{!?_licensedir:%global license %doc} %license COPYING -# exclude is best way here because of troubles with symlinks inside git-core/ -%exclude %{_datadir}/git-core/contrib/diff-highlight -%exclude %{_datadir}/git-core/contrib/hooks/update-paranoid -%exclude %{_datadir}/git-core/contrib/hooks/setgitperms.perl %exclude %{_datadir}/git-core/templates/hooks/fsmonitor-watchman.sample %exclude %{_datadir}/git-core/templates/hooks/pre-rebase.sample %exclude %{_datadir}/git-core/templates/hooks/prepare-commit-msg.sample -%{bashcomproot} -%{_datadir}/git-core/ +%exclude %{_datadir}/git-core/contrib/diff-highlight +%exclude %{_datadir}/git-core/contrib/hooks/update-paranoid +%exclude %{_datadir}/git-core/contrib/hooks/setgitperms.perl + %files core-doc -f man-doc-files-core %{_pkgdocdir}/contrib/hooks %if %{with libsecret} %files credential-libsecret -%{gitexecdir}/git-credential-libsecret +%{_libexecdir}/git-core/git-credential-libsecret %endif %if %{with cvs} %files cvs -%{_pkgdocdir}/*git-cvs*.txt %{_bindir}/git-cvsserver -%{gitexecdir}/*cvs* -%{?with_docs:%{_mandir}/man1/*cvs*.1*} +%{_libexecdir}/git-core/*cvs* +%{_pkgdocdir}/*git-cvs*.txt %{?with_docs:%{_pkgdocdir}/*git-cvs*.html} +%{?with_docs:%{_mandir}/man1/*cvs*.1*} %endif %files daemon -%{_pkgdocdir}/git-daemon*.txt +%{_localstatedir}/lib/git +%{_libexecdir}/git-core/git-daemon %{_unitdir}/git.socket %{_unitdir}/git@.service -%{gitexecdir}/git-daemon -%{_localstatedir}/lib/git -%{?with_docs:%{_mandir}/man1/git-daemon*.1*} +%{_pkgdocdir}/git-daemon*.txt %{?with_docs:%{_pkgdocdir}/git-daemon*.html} +%{?with_docs:%{_mandir}/man1/git-daemon*.1*} + %files email +%{_libexecdir}/git-core/*email* %{_pkgdocdir}/*email*.txt -%{gitexecdir}/*email* -%{?with_docs:%{_mandir}/man1/*email*.1*} %{?with_docs:%{_pkgdocdir}/*email*.html} +%{?with_docs:%{_mandir}/man1/*email*.1*} + %files -n gitk -%{_pkgdocdir}/*gitk*.txt %{_bindir}/*gitk* %{_datadir}/gitk -%{?with_docs:%{_mandir}/man1/*gitk*.1*} +%{_pkgdocdir}/*gitk*.txt %{?with_docs:%{_pkgdocdir}/*gitk*.html} +%{?with_docs:%{_mandir}/man1/*gitk*.1*} + %files -n gitweb +%config(noreplace)%{_sysconfdir}/gitweb.conf +%config(noreplace)%{_sysconfdir}/httpd/conf.d/gitweb.conf %{_pkgdocdir}/*.gitweb +%{_localstatedir}/www/git/ %{_pkgdocdir}/gitweb*.txt +%{?with_docs:%{_pkgdocdir}/gitweb*.html} %{?with_docs:%{_mandir}/man1/gitweb.1*} %{?with_docs:%{_mandir}/man5/gitweb.conf.5*} -%{?with_docs:%{_pkgdocdir}/gitweb*.html} -%config(noreplace)%{_sysconfdir}/gitweb.conf -%config(noreplace)%{_sysconfdir}/httpd/conf.d/%{gitweb_httpd_conf} -%{_localstatedir}/www/git/ + %files gui -%{gitexecdir}/git-gui* -%{gitexecdir}/git-citool -%{_datadir}/applications/*git-gui.desktop +%{_libexecdir}/git-core/git-gui* +%{_libexecdir}/git-core/git-citool %{_datadir}/git-gui/ +%{_datadir}/applications/*git-gui.desktop %{_pkgdocdir}/git-gui.txt %{_pkgdocdir}/git-citool.txt %{?with_docs:%{_mandir}/man1/git-gui.1*} @@ -787,39 +640,49 @@ rmdir --ignore-fail-on-non-empty "$testdir" %{?with_docs:%{_mandir}/man1/git-citool.1*} %{?with_docs:%{_pkgdocdir}/git-citool.html} + + %files instaweb -%{gitexecdir}/git-instaweb +%{_libexecdir}/git-core/git-instaweb %{_pkgdocdir}/git-instaweb.txt -%{?with_docs:%{_mandir}/man1/git-instaweb.1*} %{?with_docs:%{_pkgdocdir}/git-instaweb.html} +%{?with_docs:%{_mandir}/man1/git-instaweb.1*} + %if %{with p4} %files p4 -%{gitexecdir}/*p4* -%{gitexecdir}/mergetools/p4merge +%{_libexecdir}/git-core/*p4* +%{_libexecdir}/git-core/mergetools/p4merge %{_pkgdocdir}/*p4*.txt -%{?with_docs:%{_mandir}/man1/*p4*.1*} %{?with_docs:%{_pkgdocdir}/*p4*.html} +%{?with_docs:%{_mandir}/man1/*p4*.1*} %endif -%files -n perl-Git -f perl-git-files -%{?with_docs:%{_mandir}/man3/Git.3pm*} %files -n perl-Git-SVN -f perl-git-svn-files +# empty files + +%files -n perl-Git -f perl-git-files +%{?with_docs:%{_mandir}/man3/Git.3pm*} %files subtree -%{gitexecdir}/git-subtree +%{_libexecdir}/git-core/git-subtree %{_pkgdocdir}/git-subtree.txt -%{?with_docs:%{_mandir}/man1/git-subtree.1*} %{?with_docs:%{_pkgdocdir}/git-subtree.html} +%{?with_docs:%{_mandir}/man1/git-subtree.1*} + %files svn -%{gitexecdir}/git-svn +%{_libexecdir}/git-core/git-svn %{_pkgdocdir}/git-svn.txt -%{?with_docs:%{_mandir}/man1/git-svn.1*} %{?with_docs:%{_pkgdocdir}/git-svn.html} +%{?with_docs:%{_mandir}/man1/git-svn.1*} + %changelog +* Wed Apr 12 2023 chen_yu_ao - 2.40.0-3 +- change spec file format + * Mon Mar 27 2023 mgb01105731 - 2.40.0-2 - Del Specific Fields -- Gitee