From 2fc3fdcc2edb747ed59cbacc536073117b17e8ba Mon Sep 17 00:00:00 2001 From: MSVSphere Packaging Team Date: Tue, 26 Nov 2024 16:04:41 +0300 Subject: [PATCH] import git-2.45.2-3.el10 --- .git.metadata | 2 + .gitignore | 2 + ...try-harder-to-find-a-port-for-apache.patch | 73 + ...git-daemon-try-harder-to-find-a-port.patch | 88 ++ ...ib-git-svn-try-harder-to-find-a-port.patch | 85 ++ ...t-Ignore-cvsps-2.2b1-Branches-output.patch | 26 + SOURCES/git-gui.desktop | 9 + ...git-test-apache-davlockdbtype-config.patch | 14 + SOURCES/git.socket | 9 + SOURCES/git.xinetd.in | 14 + SOURCES/git@.service.in | 10 + SOURCES/gitweb-httpd.conf | 7 + SOURCES/gitweb.conf.in | 53 + SOURCES/gpgkey-junio.asc | 144 ++ SOURCES/print-failed-test-output | 26 + SPECS/git.spec | 1355 +++++++++++++++++ 16 files changed, 1917 insertions(+) create mode 100644 .git.metadata create mode 100644 .gitignore create mode 100644 SOURCES/0001-t-lib-httpd-try-harder-to-find-a-port-for-apache.patch create mode 100644 SOURCES/0002-t-lib-git-daemon-try-harder-to-find-a-port.patch create mode 100644 SOURCES/0003-t-lib-git-svn-try-harder-to-find-a-port.patch create mode 100644 SOURCES/git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch create mode 100644 SOURCES/git-gui.desktop create mode 100644 SOURCES/git-test-apache-davlockdbtype-config.patch create mode 100644 SOURCES/git.socket create mode 100644 SOURCES/git.xinetd.in create mode 100644 SOURCES/git@.service.in create mode 100644 SOURCES/gitweb-httpd.conf create mode 100644 SOURCES/gitweb.conf.in create mode 100644 SOURCES/gpgkey-junio.asc create mode 100644 SOURCES/print-failed-test-output create mode 100644 SPECS/git.spec diff --git a/.git.metadata b/.git.metadata new file mode 100644 index 0000000..e2e2068 --- /dev/null +++ b/.git.metadata @@ -0,0 +1,2 @@ +e164197ede0c38287bb59a50b18cd808629a7fc4 SOURCES/git-2.45.2.tar.sign +c7b6becec398e69130e4f066390e1519a417eb35 SOURCES/git-2.45.2.tar.xz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e0279c3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +SOURCES/git-2.45.2.tar.sign +SOURCES/git-2.45.2.tar.xz diff --git a/SOURCES/0001-t-lib-httpd-try-harder-to-find-a-port-for-apache.patch b/SOURCES/0001-t-lib-httpd-try-harder-to-find-a-port-for-apache.patch new file mode 100644 index 0000000..733f9c0 --- /dev/null +++ b/SOURCES/0001-t-lib-httpd-try-harder-to-find-a-port-for-apache.patch @@ -0,0 +1,73 @@ +From 89ccbc15948db9ddbf74530e3fd66dd78ae897ae Mon Sep 17 00:00:00 2001 +From: Todd Zullinger +Date: Sun, 21 Aug 2022 13:49:57 -0400 +Subject: [PATCH] t/lib-httpd: try harder to find a port for apache +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When running multiple builds concurrently, tests which run daemons, like +apache httpd, sometimes conflict with each other, leading to spurious +failures: + + ++ /usr/sbin/httpd -d '/tmp/git-t.ck9I/trash directory.t9118-git-svn-funky-branch-names/httpd' \ + -f /builddir/build/BUILD/git-2.37.2/t/lib-httpd/apache.conf -DDAV -DSVN -c 'Listen 127.0.0.1:9118' \ + -k start + (98)Address already in use: AH00072: make_sock: could not bind to address 127.0.0.1:9118 + no listening sockets available, shutting down + AH00015: Unable to open logs + ++ test 1 -ne 0 + +Try a bit harder to find an open port to use to avoid these intermittent +failures. If we fail to start httpd, increment the port number and try +again. By default, we make 3 attempts. This may be overridden by +setting GIT_TEST_START_HTTPD_TRIES to a different value. + +Helped-by: Ondřej Pohořelský +Signed-off-by: Todd Zullinger +--- + t/lib-httpd.sh | 29 ++++++++++++++++++----------- + 1 file changed, 18 insertions(+), 11 deletions(-) + +diff --git a/t/lib-httpd.sh b/t/lib-httpd.sh +index 2fb1b2ae56..4afdf5a6aa 100644 +--- a/t/lib-httpd.sh ++++ b/t/lib-httpd.sh +@@ -206,19 +206,26 @@ enable_cgipassauth () { + } + + start_httpd() { +- prepare_httpd >&3 2>&4 +- + test_atexit stop_httpd + +- "$LIB_HTTPD_PATH" -d "$HTTPD_ROOT_PATH" \ +- -f "$TEST_PATH/apache.conf" $HTTPD_PARA \ +- -c "Listen 127.0.0.1:$LIB_HTTPD_PORT" -k start \ +- >&3 2>&4 +- if test $? -ne 0 +- then +- cat "$HTTPD_ROOT_PATH"/error.log >&4 2>/dev/null +- test_skip_or_die GIT_TEST_HTTPD "web server setup failed" +- fi ++ i=0 ++ while test $i -lt ${GIT_TEST_START_HTTPD_TRIES:-3} ++ do ++ i=$(($i + 1)) ++ prepare_httpd >&3 2>&4 ++ say >&3 "Starting httpd on port $LIB_HTTPD_PORT" ++ "$LIB_HTTPD_PATH" -d "$HTTPD_ROOT_PATH" \ ++ -f "$TEST_PATH/apache.conf" $HTTPD_PARA \ ++ -c "Listen 127.0.0.1:$LIB_HTTPD_PORT" -k start \ ++ >&3 2>&4 ++ test $? -eq 0 && return ++ LIB_HTTPD_PORT=$(($LIB_HTTPD_PORT + 1)) ++ export LIB_HTTPD_PORT ++ # clean up modules symlink, prepare_httpd will re-create it ++ rm -f "$HTTPD_ROOT_PATH/modules" ++ done ++ cat "$HTTPD_ROOT_PATH"/error.log >&4 2>/dev/null ++ test_skip_or_die GIT_TEST_HTTPD "web server setup failed" + } + + stop_httpd() { diff --git a/SOURCES/0002-t-lib-git-daemon-try-harder-to-find-a-port.patch b/SOURCES/0002-t-lib-git-daemon-try-harder-to-find-a-port.patch new file mode 100644 index 0000000..37637bc --- /dev/null +++ b/SOURCES/0002-t-lib-git-daemon-try-harder-to-find-a-port.patch @@ -0,0 +1,88 @@ +From e90e1068ddc9cfa3badd23b16a46c57ed6d8308a Mon Sep 17 00:00:00 2001 +From: Todd Zullinger +Date: Fri, 26 Aug 2022 18:28:44 -0400 +Subject: [PATCH] t/lib-git-daemon: try harder to find a port + +As with the previous commit, try harder to find an open port to avoid +intermittent failures on busy/shared build systems. + +By default, we make 3 attempts. This may be overridden by setting +GIT_TEST_START_GIT_DAEMON_TRIES to a different value. + +Signed-off-by: Todd Zullinger +--- + t/lib-git-daemon.sh | 60 ++++++++++++++++++++++++++++----------------- + 1 file changed, 37 insertions(+), 23 deletions(-) + +diff --git a/t/lib-git-daemon.sh b/t/lib-git-daemon.sh +index e62569222b..c3e8dda9ff 100644 +--- a/t/lib-git-daemon.sh ++++ b/t/lib-git-daemon.sh +@@ -51,30 +51,44 @@ start_git_daemon() { + registered_stop_git_daemon_atexit_handler=AlreadyDone + fi + +- say >&3 "Starting git daemon ..." +- mkfifo git_daemon_output +- ${LIB_GIT_DAEMON_COMMAND:-git daemon} \ +- --listen=127.0.0.1 --port="$LIB_GIT_DAEMON_PORT" \ +- --reuseaddr --verbose --pid-file="$GIT_DAEMON_PIDFILE" \ +- --base-path="$GIT_DAEMON_DOCUMENT_ROOT_PATH" \ +- "$@" "$GIT_DAEMON_DOCUMENT_ROOT_PATH" \ +- >&3 2>git_daemon_output & +- GIT_DAEMON_PID=$! +- { +- read -r line <&7 +- printf "%s\n" "$line" >&4 +- cat <&7 >&4 & +- } 7&3 "Starting git daemon on port $LIB_GIT_DAEMON_PORT ..." ++ mkfifo git_daemon_output ++ ${LIB_GIT_DAEMON_COMMAND:-git daemon} \ ++ --listen=127.0.0.1 --port="$LIB_GIT_DAEMON_PORT" \ ++ --reuseaddr --verbose --pid-file="$GIT_DAEMON_PIDFILE" \ ++ --base-path="$GIT_DAEMON_DOCUMENT_ROOT_PATH" \ ++ "$@" "$GIT_DAEMON_DOCUMENT_ROOT_PATH" \ ++ >&3 2>git_daemon_output & ++ GIT_DAEMON_PID=$! ++ { ++ read -r line <&7 ++ printf "%s\n" "$line" >&4 ++ cat <&7 >&4 & ++ } 7 +Date: Fri, 26 Aug 2022 18:28:44 -0400 +Subject: [PATCH] t/lib-git-svn: try harder to find a port + +As with the previous commits, try harder to find an open port to avoid +intermittent failures on busy/shared build systems. + +By default, we make 3 attempts. This may be overridden by setting +GIT_TEST_START_SVNSERVE_TRIES to a different value. + +Run svnserve in daemon mode and use 'test_atexit' to stop it. This is +cleaner than running in the foreground with --listen-once and having to +manage the PID ourselves. + +Signed-off-by: Todd Zullinger +--- + t/lib-git-svn.sh | 34 +++++++++++++++++++++++++---- + t/t9113-git-svn-dcommit-new-file.sh | 1 - + 2 files changed, 30 insertions(+), 5 deletions(-) + +diff --git a/t/lib-git-svn.sh b/t/lib-git-svn.sh +index ea28971e8e..04e660e2ba 100644 +--- a/t/lib-git-svn.sh ++++ b/t/lib-git-svn.sh +@@ -17,6 +17,7 @@ fi + GIT_DIR=$PWD/.git + GIT_SVN_DIR=$GIT_DIR/svn/refs/remotes/git-svn + SVN_TREE=$GIT_SVN_DIR/svn-tree ++SVNSERVE_PIDFILE="$PWD"/daemon.pid + test_set_port SVNSERVE_PORT + + svn >/dev/null 2>&1 +@@ -119,10 +120,35 @@ require_svnserve () { + } + + start_svnserve () { +- svnserve --listen-port $SVNSERVE_PORT \ +- --root "$rawsvnrepo" \ +- --listen-once \ +- --listen-host 127.0.0.1 & ++ test_atexit stop_svnserve ++ ++ i=0 ++ while test $i -lt ${GIT_TEST_START_SVNSERVE_TRIES:-3} ++ do ++ say >&3 "Starting svnserve on port $SVNSERVE_PORT ..." ++ svnserve --listen-port $SVNSERVE_PORT \ ++ --root "$rawsvnrepo" \ ++ --daemon --pid-file="$SVNSERVE_PIDFILE" \ ++ --listen-host 127.0.0.1 ++ ret=$? ++ # increment port and retry if unsuccessful ++ if test $ret -ne 0 ++ then ++ SVNSERVE_PORT=$(($SVNSERVE_PORT + 1)) ++ export SVNSERVE_PORT ++ else ++ break ++ fi ++ done ++} ++ ++stop_svnserve () { ++ say >&3 "Stopping svnserve ..." ++ SVNSERVE_PID="$(cat "$SVNSERVE_PIDFILE")" ++ if test -n "$SVNSERVE_PID" ++ then ++ kill "$SVNSERVE_PID" 2>/dev/null ++ fi + } + + prepare_utf8_locale () { +diff --git a/t/t9113-git-svn-dcommit-new-file.sh b/t/t9113-git-svn-dcommit-new-file.sh +index e8479cec7a..5925891f5d 100755 +--- a/t/t9113-git-svn-dcommit-new-file.sh ++++ b/t/t9113-git-svn-dcommit-new-file.sh +@@ -28,7 +28,6 @@ test_expect_success 'create files in new directory with dcommit' " + echo hello > git-new-dir/world && + git update-index --add git-new-dir/world && + git commit -m hello && +- start_svnserve && + git svn dcommit + " + diff --git a/SOURCES/git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch b/SOURCES/git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch new file mode 100644 index 0000000..37a22dd --- /dev/null +++ b/SOURCES/git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch @@ -0,0 +1,26 @@ +From 09891c65a5f7409ce0bd37daced0ff31fbb1b1c9 Mon Sep 17 00:00:00 2001 +From: Todd Zullinger +Date: Mon, 23 Mar 2009 00:03:36 -0400 +Subject: [PATCH] git-cvsimport: Ignore cvsps-2.2b1 Branches: output + +Signed-off-by: Todd Zullinger +--- + git-cvsimport.perl | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/git-cvsimport.perl b/git-cvsimport.perl +index e439202..d020f1a 100755 +--- a/git-cvsimport.perl ++++ b/git-cvsimport.perl +@@ -952,7 +952,7 @@ while () { + } elsif (/^-+$/) { # end of unknown-line processing + $state = 1; + } elsif ($state != 11) { # ignore stuff when skipping +- print STDERR "* UNKNOWN LINE * $_\n"; ++ print STDERR "* UNKNOWN LINE * $_\n" unless /^Branches: /; + } + } + commit() if $branch and $state != 11; +-- +1.6.2.2 + diff --git a/SOURCES/git-gui.desktop b/SOURCES/git-gui.desktop new file mode 100644 index 0000000..f74f066 --- /dev/null +++ b/SOURCES/git-gui.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Git GUI +GenericName=Git GUI +Comment=A graphical interface to Git +Exec=git gui +Icon=/usr/share/git-gui/lib/git-gui.ico +Terminal=false +Type=Application +Categories=Development; diff --git a/SOURCES/git-test-apache-davlockdbtype-config.patch b/SOURCES/git-test-apache-davlockdbtype-config.patch new file mode 100644 index 0000000..882006a --- /dev/null +++ b/SOURCES/git-test-apache-davlockdbtype-config.patch @@ -0,0 +1,14 @@ +diff -ur b/t/lib-httpd/apache.conf a/t/lib-httpd/apache.conf +--- b/t/lib-httpd/apache.conf 2024-01-09 11:06:46.660868023 +0100 ++++ a/t/lib-httpd/apache.conf 2024-01-09 11:09:09.572713625 +0100 +@@ -272,7 +272,9 @@ + + LoadModule dav_module modules/mod_dav.so + LoadModule dav_fs_module modules/mod_dav_fs.so +- ++ ++ DavLockDBType sdbm ++ + DAVLockDB DAVLock + + Dav on diff --git a/SOURCES/git.socket b/SOURCES/git.socket new file mode 100644 index 0000000..3dec01d --- /dev/null +++ b/SOURCES/git.socket @@ -0,0 +1,9 @@ +[Unit] +Description=Git Activation Socket + +[Socket] +ListenStream=9418 +Accept=true + +[Install] +WantedBy=sockets.target diff --git a/SOURCES/git.xinetd.in b/SOURCES/git.xinetd.in new file mode 100644 index 0000000..d4ca95d --- /dev/null +++ b/SOURCES/git.xinetd.in @@ -0,0 +1,14 @@ +# default: off +# description: The git dæmon allows git repositories to be exported using \ +# the git:// protocol. + +service git +{ + disable = yes + socket_type = stream + wait = no + user = nobody + server = @GITEXECDIR@/git-daemon + server_args = --base-path=@BASE_PATH@ --export-all --user-path=public_git --syslog --inetd --verbose + log_on_failure += USERID +} diff --git a/SOURCES/git@.service.in b/SOURCES/git@.service.in new file mode 100644 index 0000000..7abcfeb --- /dev/null +++ b/SOURCES/git@.service.in @@ -0,0 +1,10 @@ +[Unit] +Description=Git Repositories Server Daemon +Documentation=man:git-daemon(1) + +[Service] +User=nobody +ExecStart=-@GITEXECDIR@/git-daemon --base-path=@BASE_PATH@ --export-all \ + --user-path=public_git --inetd --log-destination=stderr --verbose +StandardInput=socket +StandardError=journal diff --git a/SOURCES/gitweb-httpd.conf b/SOURCES/gitweb-httpd.conf new file mode 100644 index 0000000..4f4eac7 --- /dev/null +++ b/SOURCES/gitweb-httpd.conf @@ -0,0 +1,7 @@ +Alias /git /var/www/git + + + Options +ExecCGI + AddHandler cgi-script .cgi + DirectoryIndex gitweb.cgi + diff --git a/SOURCES/gitweb.conf.in b/SOURCES/gitweb.conf.in new file mode 100644 index 0000000..c04a96b --- /dev/null +++ b/SOURCES/gitweb.conf.in @@ -0,0 +1,53 @@ +# The gitweb config file is a fragment of perl code. You can set variables +# using "our $variable = value"; text from "#" character until the end of a +# line is ignored. See perlsyn(1) man page for details. +# +# See /usr/share/doc/gitweb-*/README and /usr/share/doc/gitweb-*/INSTALL for +# more details and available configuration variables. + +# Set the path to git projects. This is an absolute filesystem path which will +# be prepended to the project path. +#our $projectroot = "@PROJECTROOT@"; + +# Set the list of git base URLs used for URL to where fetch project from, i.e. +# the full URL is "$git_base_url/$project". By default this is empty +#our @git_base_url_list = qw(git://git.example.com +# ssh://git.example.com@PROJECTROOT@); + +# Enable the 'blame' blob view, showing the last commit that modified +# each line in the file. This can be very CPU-intensive. Disabled by default +#$feature{'blame'}{'default'} = [1]; +# +# Allow projects to override the default setting via git config file. +# Example: gitweb.blame = 0|1; +#$feature{'blame'}{'override'} = 1; + +# Disable the 'snapshot' link, providing a compressed archive of any tree. This +# can potentially generate high traffic if you have large project. Enabled for +# .tar.gz snapshots by default. +# +# Value is a list of formats defined in %known_snapshot_formats that you wish +# to offer. +#$feature{'snapshot'}{'default'} = []; +# +# Allow projects to override the default setting via git config file. +# Example: gitweb.snapshot = tbz2,zip; (use "none" to disable) +#$feature{'snapshot'}{'override'} = 1; + +# Disable grep search, which will list the files in currently selected tree +# containing the given string. This can be potentially CPU-intensive, of +# course. Enabled by default. +#$feature{'grep'}{'default'} = [0]; +# +# Allow projects to override the default setting via git config file. +# Example: gitweb.grep = 0|1; +#$feature{'grep'}{'override'} = 1; + +# Disable the pickaxe search, which will list the commits that modified a given +# string in a file. This can be practical and quite faster alternative to +# 'blame', but still potentially CPU-intensive. Enabled by default. +#$feature{'pickaxe'}{'default'} = [0]; +# +# Allow projects to override the default setting via git config file. +# Example: gitweb.pickaxe = 0|1; +#$feature{'pickaxe'}{'override'} = 1; diff --git a/SOURCES/gpgkey-junio.asc b/SOURCES/gpgkey-junio.asc new file mode 100644 index 0000000..5edb58f --- /dev/null +++ b/SOURCES/gpgkey-junio.asc @@ -0,0 +1,144 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBE6GdewBEADE3szNmKeUAUad22z1tWkLjLzyDcJpF7IzEnLs8bD1y0I6iqH0 +169ru5iXKn29wc+YAuxWorb4P5a2i2B/vs32hJy/rXE7dpvsAqlHLSGSDUJXiFzM +Bb9SfJO0EY2r+vqzeQgSUmhp/b4dAXVnMATFM37V83H/mq8REl5Wwb2rxP3pcv6W +F6i51+tPEWIUgo1N74QkR4wdLcPztDO9v7ZIaFKl+2GEGkx6Z+YjECTqQuyushjq +41K3UVmv+AmLhJYKA78HY5KqCkXrz8rCgoi+Ih+ZT2sgjx637yT84Dr/QDh7BkIB +blmpRQ+yoJlVDWI5/bI8rcdrPz+NmxaJ7dKEBg0qTclbwquacpwG1DCCD8NgQrwL +WVLGVdsT2qwek+KkmOs+iNBXY1TgKPAeuv0ZDKKYrCwYpN1K90oXk431g79bKsH5 +8Tybg5uW+e2i+H5gnDeyl481HOt8aHOPu9qIB/zIek6lDH69q3nGcf7k3prxDf3I +qYy6CPcpjTfpN4i/7gxQDNI+AIgbs21EE5Kg1TPUe0XgfdJMtIF+D6wTjbrLtDnn +09Iwz0SfIZR52IrZHxUlFXZFjk10RXYATtdMqEFgYgjYvYXxL9EEr7T5Dgso+qaE +wV0rrg0VDKrf/afrjGOeffumlhBhJnBnns1T+p65Vz5hyQl7SFKLw+Ix7wARAQAB +tCJKdW5pbyBDIEhhbWFubyA8Z2l0c3RlckBwb2JveC5jb20+iQI7BBMBAgAlAhsD +BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCToZ45QIZAQAKCRAg0E5acTZgp1TF +EACr+QRpfDmbGnUY1Rqy50Ap1eG0061vAapCMLmU+4kxqIRKm5/00YGmb7VxRCLD +pKNa0hkH+ftA4QmnPU4j4UEsh/vAa2BGCXRjB9RixTokvQf9iOXUGiHYv1kn+p3l +xg66bLnKV3dWScjV2IueDP4ypLEZHlWD9I/Unmrg2mJEAcz4gSAfBHWLOf/+JYAq +6j6erIxPS5ZtIz/twQf6MCoXXAXuM6tgUhdptJqG82WzSZMuWOfzmS6DSTuqK05h +9gpwdj5nz4jdh4u5sp+LKOqFw94JIRcE+wj5cljOOlX3Fqi84ADC8b/OzC3V9KGa +rNnBzWdnkIoNxbNBNF6wD1dgn1peueufaP9q5CO9ljKNSOGUClwvtJFrpZZL5Phe +NNFFkPSZpkmStcB6s8RHsyz5zuqxQUOWuvLVUDRW58yZR0WC1Xc/yi+cEFSUiKI5 +OqPNwC1v0xh7a/MObJQxTQCEKHLyVYlnohsf2RxzxaOOjgWmY2O+yH5G5ymfBie/ +Uw7zcSsJ89ovLAEG/10tkJVqIfza5Wexj3VAZbI+i7vx2gtlLqM23gGykqcv7VWm +FD5lFWGC4Sw8M7Jikm8vn99dxZnsBKjMqksjENUX1JeUZI+FHg2CNSVBX0J8yLnm +d8eJBkYXkU79J3GVex/WTzbFnSkPmw16MtAu/E9EKNbAILQgSnVuaW8gQyBIYW1h +bm8gPGp1bmlvQHBvYm94LmNvbT6JAjgEEwECACIFAk6GeL4CGwMGCwkIBwMCBhUI +AgkKCwQWAgMBAh4BAheAAAoJECDQTlpxNmCn6GMQAJ0V0jmyQ7Lvi5FBBgNTdY8q +fVbLFxEUVAsKf2x9QxhsOcL2heQRVkp10JKv4/VQLfDwr6Pv98FQchXlBmFiySAb +VihUVC+VJ3FhyKBtI14RXT6Nkwd18PXDvWXy2fKeiK9GPDWkufac0h/giz0T1xP7 +CHxDErQATMmYbkinyyM+xd1Nir6DUYcHJQIK2Dg2VPChkI0XXCQETLDbrC9fDwWg +1vP36PQZ+nw/cIRt+2xkq8HHUzB7kOnXHqPt1kb/Ry8hZwPnfV7g/V0MogoMLtz2 +33pqwuguLXP7zY3jTwAZZ9VTpuCTsdVWXJDlznMNurYi1yurCNuUvq/O/9JC8WBt +dVUuvFZGjRZWfP24W57iq/qz8CV6dThq5r4WygE83tMC3DaarNJ4f9dQUA4KpL7j +2EMXkgoXcEy1mieUCypdNiZj96hV8Q7apSLk2V4jtvLkJfzX053glqRJI35SX8Ok +SazZGYZHX6QfZlvznnrCF5x/xBzhbfr2Geo4rxL0BQsp2DQodqUCB23QzsPhWWff +YtkATaD5vovGeQ9Acd1u72jH3DO8tVMH85jMO4f+oc0h3lnkPS4F33QqlnErRo/I +Rm6jCsI/NgMZUYdh0EY5Iiq/e8e+u8gdo0akkwHlNvR4KrYrK/1K4h+i+UBIbJDZ +pqT/iH+yhJRQ3CAan8KStB9KdW5pbyBDIEhhbWFubyA8amNoQGdvb2dsZS5jb20+ +iQI4BBMBAgAiBQJOhnjVAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRAg +0E5acTZgp4SyD/9slQ1IkYqz+VXPnmHCQFhurYcHD8t1iGBqiXxI+gpA1Y3L1QL+ +aj0fplW4KuEPbJ7xlYdLA4J+M9kgkwt3Jufw+lM1pQM9tSB627rAbxUyczj4AFjZ +9v8GpqyZ3XPDe8NknI/V4Xlhsr+e3AHJPr355XacMkFGc3Rtw1quFVgrECttdzUD +6xtrhwYYVAYAnKr65943UtMLsVXkJLfjq8c1NZOCov9SwSb0N9IkEhSyihd/92Z2 +NH4d+B1QTIyWagL3GNN8LXXEHK+x+oA/nbhGbFg7bqhxUW4d2JaxKPy4U3nfdtSm +Mbiy16eUfMbbMyvB0jtLf6UFrxF5bJnYkiG18DcLSaX7Hsby8IVzZQZHYvkx5+7p +K2SBsdek3bu3punP3dWLJoMw+Vmm5Bk0Yl7pxzvsYQWhPV7+tpgglUSFQuIeXFrw +jVXP8Q+Ph9nO0vKIaeTcn1ISuq2XaoqhkLH+Zw1I/ruRtk2DJbZsg5BBGfA26BkZ +WJXlO6h33emPwkJ0FanlzRtMTqZ/4RiTXv5G1L/lypX1iq6fF2V+WTh2JmEKyY+2 +l0/19XRANfaDiYULoBvJEdCcIXLbaRTqjem+70ZGvAiCaGO52YvUhBo+XCgjucjc +qhxiF3wc24kzj1ZycrwbDa7VjftZAApN01CJ38mXGpZXiWZU4hjJx41wCbkCDQRO +iUo5ARAA8l5PToapmK0IHBpY5ohie53ZczLV5ojWKZXNsmVYNuSBBKpwC6VH2X85 +9dVd59HigAYsS1TbDCUNGC1bM0thJ9Y92fa1WnlEqyYQZDmJ4rt283DT2Gmrkng6 +XPjvr8PZeHKtvw7uLywfdm4x0WrGrH34g17BL82u/7k0JUOgJoPulIkO9Mls35UJ +SY/Zwk1EdkM4hHKmqJFIiW/DlPYh0Tj5x9Sukk0ATH/R/QdtpjvwJJZyph6gMhbi +YB+G+nR/WZy9vB+bFwPPaa0EudADoIZ9LkQzU/55KqNnKH9dPqPVWEOBZVZvPqiR +iyRuffMIJ0t9mtvc/jruS1qiTZdJoy2vl6K4Uqc+huvlHeCCYR0lGCeDB+Ixuz9x +d2ZdUxMgwgcNiQOCW70YWtxf0LF2seSJdLItHDBOu/f3cqKwNGUvcC3d/9qVb0wP +SI1mq18S02MGcvDySsjGtX7o4kujUqE2ZNCW6ORLJUC6zEYu3TRNWrXeS3uAP21x +UrEPkuTiJL7SCS12FYJt5agx5NIUKI7bkIUbLbiuhC4z47MFajW9Y5jUQk86dk7b +jGqVrXYIu92Dhxc2CND2fWaMpYRhwvHR6KQU1yYHYkGVlMHiozM5D+4dCRRVI8x3 +p/+ypFBZmZr7yTpv/qD0N8HHl2NAYvGRQdzjyFQOXERwaXuzjCkAEQEAAYkEWwQY +AQoAJgIbAhYhBJbgevJXcZVZgNrRACDQTlpxNmCnBQJeHMcfBQkenRjmAinBXSAE +GQECAAYFAk6JSjkACgkQsLXohpav5sukpRAAywCaKmo0HH77yNkqormnKtRBrz8j +tx68e//pq/AyCrghKUh91iLGYji3/E1qQe7p7Ne7WAn3uFZs22zrNKIDGxtMMCQT +C0Ne4BAvMh1NzwzzBCCyirs1ccLj5gKkoFkKfTo5U5NWNznYPM8uib1uY5vdRqIJ +2vJ7JJykNdcW5od42TtWsOxH2zTp4SRNmX8QPaRbfOxPdlKsbp0eIO6kk+Lx6gEv +WAtEda5xSd1PwyK7SfGadTm+8Rw5UeP1kRtuKQPm7sRBB0coXDVHpFi/nMWHzVxv +/NKhLAkzIbGOV6rL8ihVhXGqEgiD5Q+QdbaNsiLtHo5niBzpbnzvSopBYcOftrhc +PNDY0RYXYb/5JZUid/JBWKwV+zREEnbgtsYDbwFEDnCVIGyXAoxyas/S3b14izat +qgINxiYuxpDY+w1O5RywjOTdLPUWlL5YhH1W/gwbdyGiL4sh0v/fzNy0vKR5zPt1 +hICEA9YvCI7k3b74O6eiDB5fMIRPkNr6ubZWe0T6x4eL2EjSFRXIEmbmnAh93pdp +WFrXH+Sf1LKhBZzojgUsQU/rzB2R94S7Vx0Z+tzgDZ8fJe47ZUEfzJccyyGve/QA +sLLgTWRwRP3MSa1rC4wuWtDDMk/drw9CpmeFeRFn0oDIBo/m2mBv+UNAxSdijREz +vPRiwROma/RawVcJECDQTlpxNmCnTLQP/A1WNmgPCCyFqp812Zvgh0pAqceaM+dg +FlvNi5j5Jyw7/hicx2e0BXgKt64TEodphknCFzZIFDq3jJSdLt1l9NHpiLVM0Hf0 +cLFGF3eRHOID7PeGJGztLJ0CGhhSXaPh7nNLK0G9zXCAasedpowX4ZUntv+p/+Fr +jQ8eSgyyljvrlywK+tH07F1W6t6eMNOw7/AHx7fkOux4CDem1FsNbhZWX8YPUATo +vP1YLBXcrQgpJPpypG6up56D70ewTs4l+qNOISr3phG2egeEhYNwv6GUv8aelh69 +iaUHscT+DOXrFKq+RSHBMzGFFTrDJFDSu3d3A5Rg8KxJMcOxc00L3GMPchrFiJH7 +QShAQdU/ocF0MAA6n56g/QynxafFI/MRMXVTmF+lMBW/kK63pD3AJkIgvdLdht5o +s7aKlddPrmIulaELIDdF2MSicMmgWJcqFkqZH2HIC+gx26Fafn2vfiUqsEc4NTpZ +qhf66F9UjPKfYFfLhbGrmq/giAk1qjiGnBzCUQ9hXVqpmFfnVDjmQrk8KB9skDms +PJgZ4hzmj5AarCpFtDmE4W7Tvi/xqgrFZkPX/SDhTWInJGcWaOTvlc5dkjAxKT6X +LUGLScJHxhaovTGVzq1GWhhNCFhCs4AkWqPKhYfeZuWiuiMLZaEyJPfTufT7Svab +pOhlaD1YY8fvuQINBE6GdewBEADxm56jO5pnVRH13BsG38o1qD9mJppXhf0mb6dB +ORP1b3YJNaknQtxVPXSlXNAYNStYs9bWwn+RrYmOEfy0MWekqOBqgHDEf50ktZaz +hFd89dt58IA+WIFo7BFk1XIr4USdSEQeL7Pb4oSg5AYn8C3OlT7T3nxWBh9aEbat +EfiUMFKikLVVLdbEL7FBzEkypHfQCslDlq+ggAAVBzqrMIBn/idto87UrF2x/qd2 +P2PJl9pUf744pL9yzX+cNbQld0Yf6gQW9/r0UUW/CCU4qpPDvycyGIx3Y7PV/MjA +lre4qJv4khoSFasAAjDXzyUIYhw7yMmaAE/lEOVN7M6reYDvhaDCcWfEn8sjH03/ +Wa92vVx7boMx5RAEh8YE2KZHEZkAODlW4pnDKyaH38lj8pa0dh77RXAD6X1XPGwi +zpmjfrBBPGvUNGsdIpJaY4KEaZ0+v3bhvfU0DWB4dmJB3aPxC6CFtVA0QBGcbw16 +jUeA+2LUJgWMs86npHaPzD99J4Q+Smw9mZPfyT5O5yymYXOwIp50aUjkGCQcHtt7 +jisNkU52bFD2JcQJr8o67JIcqFNdhPAnxC+BN0QDtCyXT+wxC1Uvh9E//r3JPEQD +REfEUb3l+3Sarz1KCm3LUhx1XE82Z6c96tHopUfiOiwbtxv+8UypXT2ntKfprz1U +dMb5jwARAQABiQIfBBgBAgAJBQJOhnXsAhsMAAoJECDQTlpxNmCnFKYP/j6dmEQW +ZliWE8le9Qzh1WqTbHd5elaGJuW0KGQ+g9okWBkh+sLlPxxTk2f0b79Pc7K3OPy7 +89OcIsrbHD3jDp7TS9IVpX7kVZnvnts5oV3XcK5q84XDEQqa6UIlfiZkZJCzIX8N +kSAbv0UmmKKLKS+ANIEIZBKBrWxpYwvG2wBoWPkpNv5mdEuR9h3pZ1aCSZRXysMl +WXo5cMYuZUhabrOqTNP5efEm8iBREHzNSotsiOhHuu7OIPmvZJTUjMrR1wZMCw+Y +uNO2kT3t+ZFTxCx2aeRzqnI55LYFQVBpgSsap/seqRZfj7j7SBb2bSbCuhNedbAw +b3kDWSfJGy/IN6vPdsc3NdsYFK+X8cnypCu4pZDK2IU+CkVrq/ukR8TNdrpAYfEY +XbLq0XFOT0s4jIcjf3dAtlGW36hA0AKPw1BL3cyEGfv2sq75gkw1/jIYMXGc8URJ +y5AfgELIrO1dIjMsm6vFFLeHpAobEP87UEpqIyJtwEIfWdcV5YHYmlFkGd21Lnxp +f2dBAh5dc4MJpYmFZGScSDtTcYCDEXICTgedVOt4WCaV5mwpPeSEzr2TOVm6d1nU +lGBJCV6QPMEdyx03hRkwaTMth0D/SYCvUrjlGQ1VC4WuTveSBhTH7iDrjGSoXNJu +P2Oq+jb/iAfZxuetjpKFD6TCMR0Bcs/cEZuXuQINBFQduiABEACYnNg+kGmtkPmt +kQ/75P8lLsljMk9IIwXGmnFILLpHBM/tN+7wGDxODLY/pPZ2Qfmp7PZLr5Ok5Qnt +v/g+YCtVaTu5Cajt2TOsyH+AYDqtrjjHIt8d2kVloq79ONsCUojFtbFD1nf5W9Sk +WQgntHYRYY1MaCkNd3oUp74TQugzk8Q6UBDamAn1r4nfm6QNXstItqyWsCgQhixW +Qi4WzQc4iA/83t+qUJ+32smjk6J+rGUbbEH8zTASXmcDWYBuPgjo3YEjV+3/qNar +zncYneJfQXwFSgvcR9oUuBQ3ydWJd7sfiImuAnQdRfEC/JFb0iR9sJ395Pw5WQfM +Esrp0uL/Uig52mSrFyIfanxhrJP4j+CyCcJp1TaFINag5/YwHX3GzoikwXUukb+h +KxXxK9Vu8Eu2gAlKFaHt2x5Sc3D1d+nr2QyMkIThC6/d3+XUjgOIMWkCK5dgkuz6 +rs60cRQr8YBGf4Jgk/Xrkk/SjBjBlcTz9lrC06wBRCsa+0XxCAHlM7gVp0HvMn+h +Kx9ny7dPqaqhg8WXuBL0n8yAXXDSgDAin55mRbiKq2bNuMaEJvwKNFU6ENHGSngT +w/Pt6B0dbeB1SBVxJPGbGmk74BL8m5V67Kb7MDP05OLSZsUyNLQCpfSgYsUA14uV +GHE/vE6haP9/DwMLdyJ/CxSjQJMk+wARAQABiQRbBBgBCgAmAhsCFiEEluB68ldx +lVmA2tEAINBOWnE2YKcFAl4cxyAFCRkIqP8CKcFdIAQZAQIABgUCVB26IAAKCRB1 +lO7Hs/fKyah/D/wJ3v4WdqGo7KgW0kmWfFVWZLKwtb+16gcy6nIm7F7VUcODv+qR +LA/4UUg72yabVCXnMBi/eEHtkVZWlB/+tzg643DiRvXTCZiwoS5c6fTze55e/Z87 +qY7okf40aTR+qWuMgligI/LeXunr1Pu2jlJLMcUVh5QLxLZ8bDqpDgQM9zcdFmKQ +/ofUnK7y6gYyUl2KYJDYi0alzjTm+73/S0Mc7z08Yp/s+dtKPbU9imKCnNRkPTQp +cwlYHWJv0YPQ0TdOkid6HJC7CmZEPH845D+qojAjYBPogNIj/RaByaT3kN32zu8+ +jaZJSCnBM0l2lSh/qO7sQBZhqPX5pJDjjj7d/ATY7XxJCnK/2cZVSuVhMXPIFIAQ +G4ZYFUaQssjQKLN7BXJUo7+ec1AMkTiwDUocPza8h+fitcpOsWWJWWvZvkSObbuP +KGn7BgoTzEehO2Rz0QsNjgOa5SXxmc0zX7sbB1XiMxSe7gBZBOnYjhPVcidO3tWu +M/jXGfZAL9ISq6Zf47ebXA7Y+6Bx3oquMgtSN10gbdoJvjqEBJNN65wadvBP8+Sr +L+nWRGhsfmu8jupXdJe8h8ysXCboVkpXHuSu+lDjeL9WLqpwc/XkaOy7B6PfwIRa +YYHnsKs8ogvDuTRJPV4khizyt+A6aiQ1PQqxSKWGY+lzxbmBkPhp5v1N5wkQINBO +WnE2YKdkRQ//ZKvUegOZTtfivAZI888o4Ocpig3CFxJGlXa52JUnDhYFFpRtXRTP +gIdQ0zBvhNjmBnELNv5/D1ubnjqWBTaJpZgUXIljJufuWL7VdD57nAAMw2VLvNUe +38iytUYTAPevaJtLQ4jfj3E9MYH4tcMBmlZ75ZKqiHHH+7+V5J8TD/S01xROK7H1 +kGkXo49deB7K9oT4uno8kE5+AgmEMI80XiKjfQkh6tiG5I0W58DLeAOIxCRkm3kH +Bi22PpuAKhRelRQnAF9dLdlhZECy5eYl7JKQzOS/dQ0Z3zg+HuDBRyhrmV/go/9C +npFGUZBa+FOC1GMO07GKH8tZY99D5tDCAH6r6S+RrYS690mWpjXhqouBtJezld+X +dsgKwgKHk3IEM4m916O0E75kiNk/AD7vZowwEBvPsgN+CDXCPgH4J5x0p9uyxnKH +omLBd7cuJpio6gf4O1KTl1tlVGcb8f+AUR/MIe70NXyEtpYWMiPW3/0dKwt9APgW +KSX0c8Mp2XKH/vAEDx86XTfBNrnXyUanOQhbLQciYzolJjiPrB0C2NgFFFXSHPwC +ikyT5n2RehAJVmg3eufB1ZOKQgo7ue3ynkW4JidgyCUtsoYSmipl9Nhw1hA3ZNK1 +FVCx7tcmy0ZHFO+PV+p17oAC8ZCxSRE0oTeHKcgpF5+DRhQM/+UnmKg= +=7hTI +-----END PGP PUBLIC KEY BLOCK----- diff --git a/SOURCES/print-failed-test-output b/SOURCES/print-failed-test-output new file mode 100644 index 0000000..4e65662 --- /dev/null +++ b/SOURCES/print-failed-test-output @@ -0,0 +1,26 @@ +#!/bin/bash + +shopt -s failglob + +# Print output from failing tests +printf -v sep "%0.s-" {1..80} +for exit_file in t/test-results/*.exit; do + [ "$(< "$exit_file")" -eq 0 ] && continue + out_file="${exit_file%exit}out" + printf '\n%s\n%s\n%s\n' "$sep" "$out_file" "$sep" + cat "$out_file" +done + +# tar up test-results & $testdir, then print base64 encoded output +# +# copy $testdir contents to test-results to avoid absolute paths with tar +cp -a $testdir/* t/test-results/ +begin='-----BEGIN BASE64 MESSAGE-----' +end='-----END BASE64 MESSAGE-----' +printf '\n%s\n' 'test-results and trash directory output follows; decode via:' +printf '%s\n' "sed -n '/^${begin}$/,/^${end}$/{/^${begin}$/!{/^${end}$/!p}}' build.log | base64 -d >output.tar.zst" +printf '%s\n' "$begin" +tar -C t -cf - test-results/ | zstdmt -17 | base64 +printf '%s\n' "$end" + +exit 1 diff --git a/SPECS/git.spec b/SPECS/git.spec new file mode 100644 index 0000000..a3d2b6b --- /dev/null +++ b/SPECS/git.spec @@ -0,0 +1,1355 @@ +# 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 + +%global gitexecdir %{_libexecdir}/git-core + +# Settings for Fedora +%if 0%{?fedora} +# linkchecker is not available on EL +%bcond_without linkcheck +%else +%bcond_with linkcheck +%endif + +# Settings for Fedora >= 38 and EL >= 10 +%if 0%{?fedora} >= 38 || 0%{?rhel} >= 10 +%bcond_with perl_modcompat +%else +%bcond_without perl_modcompat +%endif + +# Settings for Fedora and EL == 9 +# In EL >= 10 docbook5-style-xsl, needed by asciidoctor, is unwanted package +%if 0%{?fedora} || 0%{?rhel} == 9 +%bcond_without asciidoctor +%else +%bcond_with asciidoctor +%endif + +# Settings for Fedora and EL >= 8 +%if 0%{?fedora} || 0%{?rhel} >= 8 +%bcond_with python2 +%bcond_without python3 +%global gitweb_httpd_conf gitweb.conf +%global use_glibc_langpacks 1 +%global use_perl_generators 1 +%global use_perl_interpreter 1 +%else +%bcond_without python2 +%bcond_with python3 +%global build_cflags %{build_cflags} -fPIC -std=gnu99 +%global gitweb_httpd_conf git.conf +%global use_glibc_langpacks 0 +%global use_perl_generators 0 +%global use_perl_interpreter 0 +%endif + +# Allow cvs subpackage to be toggled via --with/--without +# Disable cvs subpackage by default on EL >= 8 +%if 0%{?rhel} >= 8 +%bcond_with cvs +%else +%bcond_without cvs +%endif + +# Allow credential-libsecret subpackage to be toggled via --with/--without +%bcond_without libsecret + +# Allow p4 subpackage to be toggled via --with/--without +# Disable p4 package by default on EL >= 10 +%if 0%{?rhel} >= 10 +%bcond_with p4 +%else +%bcond_without p4 +%endif + +# Hardening flags for EL-7 +%if 0%{?rhel} == 7 +%global _hardened_build 1 +%endif + +# Define %%bash_completions_dir for EL <= 9 +%{?!bash_completions_dir:%global bash_completions_dir %{_datadir}/bash-completion/completions} + +# Set path to the package-notes linker script +%global _package_note_file %{_builddir}/%{name}-%{real_version}/.package_note-%{name}-%{version}-%{release}.%{_arch}.ld + +Name: git +Version: 2.45.2 +Release: 3%{?dist} +Summary: Fast Version Control System +License: BSD-3-Clause AND GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.1-or-later AND MIT +URL: https://git-scm.com/ + +# Note: real_version must be defined _after_ Version +%global real_version %(echo %{version} | tr '~' '.') + +# Adjust Source URL path for release candidates +%global rcpath %(test "%{version}" = "%{real_version}" || echo testing/) + +Source0: https://www.kernel.org/pub/software/scm/git/%{rcpath}%{name}-%{real_version}.tar.xz +Source1: https://www.kernel.org/pub/software/scm/git/%{rcpath}%{name}-%{real_version}.tar.sign + +# Junio C Hamano's key is used to sign git releases, it can be found in the +# junio-gpg-pub tag within git. +# +# (Note that the tagged blob in git contains a version of the key with an +# expired signing subkey. The subkey expiration has been extended on the +# public keyservers, but the blob in git has not been updated.) +# +# https://git.kernel.org/cgit/git/git.git/tag/?h=junio-gpg-pub +# https://git.kernel.org/cgit/git/git.git/blob/?h=junio-gpg-pub&id=7214aea37915ee2c4f6369eb9dea520aec7d855b +Source2: gpgkey-junio.asc + +# 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 + +# https://bugzilla.redhat.com/490602 +Patch0: git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch + +# https://bugzilla.redhat.com/2114531 +# 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 + +# Configurates Apache test server to use `DavLockDBType sdbm` +# Prevents t5540 failures on i686, s390x and ppc64le +Patch5: git-test-apache-davlockdbtype-config.patch + +%if %{with docs} +# pod2man is needed to build Git.3pm +BuildRequires: perl-podlators +%if %{with asciidoctor} +BuildRequires: docbook5-style-xsl +BuildRequires: rubygem-asciidoctor +%else +BuildRequires: asciidoc >= 8.4.1 +%endif +# endif with asciidoctor +BuildRequires: perl(File::Compare) +BuildRequires: xmlto +%if %{with linkcheck} +BuildRequires: linkchecker +%endif +# endif with linkcheck +%endif +# endif with docs +BuildRequires: coreutils +BuildRequires: desktop-file-utils +BuildRequires: diffutils +%if 0%{?rhel} && 0%{?rhel} < 9 +# Require epel-rpm-macros for the %%gpgverify macro on EL-7/EL-8, and +# %%build_cflags & %%build_ldflags on EL-7. +BuildRequires: epel-rpm-macros +%endif +# endif rhel < 9 +BuildRequires: expat-devel +BuildRequires: findutils +BuildRequires: gawk +BuildRequires: gcc +BuildRequires: gettext +BuildRequires: glibc-utils +BuildRequires: gnupg2 +BuildRequires: libcurl-devel +BuildRequires: make +BuildRequires: openssl-devel +BuildRequires: pcre2-devel +BuildRequires: perl(Error) +BuildRequires: perl(lib) +BuildRequires: perl(Test) +%if %{use_perl_generators} +BuildRequires: perl-generators +%endif +# endif use_perl_generators +%if %{use_perl_interpreter} +BuildRequires: perl-interpreter +%else +BuildRequires: perl +%endif +# endif use_perl_interpreter +BuildRequires: pkgconfig(bash-completion) +BuildRequires: sed +%if 0%{?fedora} || 0%{?rhel} >= 8 +BuildRequires: systemd-rpm-macros +%else +BuildRequires: systemd +%endif +BuildRequires: tcl +BuildRequires: tk +BuildRequires: xz +BuildRequires: zlib-devel >= 1.2 + +%if %{with tests} +# Test suite requirements +BuildRequires: acl +%if (0%{?fedora} && 0%{?fedora} < 40) || (0%{?rhel} >= 8 && 0%{?rhel} < 10) +# Needed by t5540-http-push-webdav.sh; recent httpd obviates this +BuildRequires: apr-util-bdb +%endif +%if 0%{?fedora} || 0%{?rhel} >= 8 +# Needed by t5559-http-fetch-smart-http2.sh +BuildRequires: mod_http2 +%endif +# endif fedora or rhel >= 8 +BuildRequires: bash +%if %{with cvs} +BuildRequires: cvs +BuildRequires: cvsps +%endif +# endif with cvs +%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 +%endif +# endif use_glibc_langpacks +%if 0%{?fedora} || 0%{?rhel} >= 9 +BuildRequires: gnupg2-smime +%endif +# endif fedora or el >= 9 +%if 0%{?fedora} || ( 0%{?rhel} >= 7 && ( "%{_arch}" == "ppc64le" || "%{_arch}" == "x86_64" ) ) +BuildRequires: highlight +%endif +# endif fedora or el7+ (ppc64le/x86_64) +%if 0%{?fedora} >= 37 +BuildRequires: httpd-core +%else +BuildRequires: httpd +%endif +# endif fedora >= 37 +%if 0%{?fedora} && ! ( 0%{?fedora} >= 35 || "%{_arch}" == "i386" || "%{_arch}" == "s390x" ) +BuildRequires: jgit +%endif +# endif fedora (except i386 and s390x) +BuildRequires: mod_dav_svn +BuildRequires: 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(Mail::Address) +BuildRequires: perl(Memoize) +BuildRequires: perl(POSIX) +BuildRequires: perl(Term::ReadLine) +BuildRequires: perl(Test::More) +BuildRequires: perl(Time::HiRes) +%if %{with python3} +BuildRequires: python3-devel +%else +%if %{with python2} +BuildRequires: python2-devel +%endif +# endif with python2 +%endif +# endif with python3 +BuildRequires: subversion +BuildRequires: subversion-perl +BuildRequires: tar +BuildRequires: time +BuildRequires: zip +BuildRequires: zstd +%endif +# endif with tests + +Requires: git-core = %{version}-%{release} +Requires: git-core-doc = %{version}-%{release} +%if ! %{defined perl_bootstrap} +Requires: perl(Term::ReadKey) +%endif +# endif ! defined perl_bootstrap +Requires: perl-Git = %{version}-%{release} + +# Obsolete git-cvs if it's disabled +%if %{without cvs} +Obsoletes: git-cvs < %{?epoch:%{epoch}:}%{version}-%{release} +%endif +# endif without cvs + +# Obsolete git-p4 if it's disabled +%if %{without p4} +Obsoletes: git-p4 < %{?epoch:%{epoch}:}%{version}-%{release} +%endif +# endif without p4 + +%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. + +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. + +%package all +Summary: Meta-package to pull in all git tools +BuildArch: noarch +Requires: git = %{version}-%{release} +%if %{with libsecret} +Requires: git-credential-libsecret = %{version}-%{release} +%endif +# endif with libsecret +%if %{with cvs} +Requires: git-cvs = %{version}-%{release} +%endif +# endif with cvs +Requires: git-daemon = %{version}-%{release} +Requires: git-email = %{version}-%{release} +Requires: git-gui = %{version}-%{release} +%if %{with p4} +Requires: git-p4 = %{version}-%{release} +%endif +# endif with p4 +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 +# endif ! defined perl_bootstrap +%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. + +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. + +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 +other SCMs, install the git-all meta-package. + +%package core-doc +Summary: Documentation files for git-core +BuildArch: noarch +Requires: git-core = %{version}-%{release} +%description core-doc +Documentation files for git-core package including man pages. + +%if %{with libsecret} +%package credential-libsecret +Summary: Git helper for accessing credentials via libsecret +BuildRequires: libsecret-devel +Requires: git = %{version}-%{release} +%description credential-libsecret +%{summary}. +%endif +# endif with libsecret + +%if %{with cvs} +%package cvs +Summary: Git tools for importing CVS repositories +BuildArch: noarch +Requires: git = %{version}-%{release} +Requires: cvs +Requires: cvsps +Requires: perl(DBD::SQLite) +%description cvs +%{summary}. +%endif +# endif with cvs + +%package daemon +Summary: Git protocol daemon +Requires: git-core = %{version}-%{release} +%{?systemd_requires} +%description daemon +The git daemon for supporting git:// access to git repositories + +%package email +Summary: Git tools for sending patches via email +BuildArch: noarch +Requires: git = %{version}-%{release} +Requires: perl(Authen::SASL) +Requires: perl(Cwd) +%if ! 0%{?rhel} +# RHEL lacks perl-Email-Valid (rhbz#2166718) +Requires: perl(Email::Valid) +%endif +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) +%description email +%{summary}. + +%package -n gitk +Summary: Git repository browser +BuildArch: noarch +Requires: git = %{version}-%{release} +Requires: git-gui = %{version}-%{release} +Requires: tk >= 8.4 +%description -n gitk +%{summary}. + +%package -n gitweb +Summary: Simple web interface to git repositories +BuildArch: noarch +Requires: git = %{version}-%{release} +%description -n gitweb +%{summary}. + +%package gui +Summary: Graphical interface to Git +BuildArch: noarch +Requires: gitk = %{version}-%{release} +Requires: tk >= 8.4 +%description gui +%{summary}. + +%package instaweb +Summary: Repository browser in gitweb +BuildArch: noarch +Requires: git = %{version}-%{release} +Requires: gitweb = %{version}-%{release} +%if 0%{?rhel} >= 9 +Requires: httpd +%else +Requires: lighttpd +%endif + +%description instaweb +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 +%else +%if %{with python2} +BuildRequires: python2-devel +%endif +# endif with python2 +%endif +# endif with python3 +Requires: git = %{version}-%{release} +%description p4 +%{summary}. +%endif +# endif with p4 + +%package -n perl-Git +Summary: Perl interface to Git +BuildArch: noarch +Requires: git = %{version}-%{release} +%if %{with perl_modcompat} +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +%endif +%description -n perl-Git +%{summary}. + +%package -n perl-Git-SVN +Summary: Perl interface to Git::SVN +BuildArch: noarch +Requires: git = %{version}-%{release} +%if %{with perl_modcompat} +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +%endif +%description -n perl-Git-SVN +%{summary}. + +%package subtree +Summary: Git tools to merge and split repositories +BuildArch: noarch +Requires: git-core = %{version}-%{release} +%description subtree +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) +%if ! %{defined perl_bootstrap} +Requires: perl(Term::ReadKey) +%endif +# endif ! defined perl_bootstrap +Requires: subversion +%description svn +%{summary}. + +%prep +# Verify GPG signatures +xz -dc '%{SOURCE0}' | %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data=- + +%autosetup -p1 -n %{name}-%{real_version} + +# Install print-failed-test-output script +install -p -m 755 %{SOURCE99} print-failed-test-output + +# Remove git-archimport +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 +# endif without cvs + +%if %{without p4} +# Remove git-p4 from command list +sed -i '/^git-p4/d' command-list.txt +%endif +# endif without p4 + +# 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. +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 0%{?rhel} && 0%{?rhel} < 8 +NO_UNCOMPRESS2 = 1 +%endif +%if %{with python3} +PYTHON_PATH = %{__python3} +%else +%if %{with python2} +PYTHON_PATH = %{__python2} +%else +NO_PYTHON = 1 +%endif +%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 +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 +# endif ! defined perl_bootstrap + +# 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} +%make_build -C contrib/credential/libsecret/ +%endif +# endif with libsecret + +%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 +%if %{with python2} +sed -i -e '1s@#! */usr/bin/env python$@#!%{__python2}@' \ + contrib/fast-import/import-zips.py +%else +# Remove contrib/fast-import/import-zips.py which requires python2. +rm -rf contrib/fast-import/import-zips.py +%endif +# endif with python2 + +%install +%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} +%endif +# endif with libsecret +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 +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} +sed "s|@PROJECTROOT@|%{_localstatedir}/lib/git|g" \ + %{SOURCE14} > %{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 +rm -rf contrib/diff-highlight/{Makefile,diff-highlight,*.perl,t} + +# Remove contrib/persistent-https; a) this code requires compilation; and b) it +# is licensed differently than git +rm -rf contrib/persistent-https + +# 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* +find %{buildroot} Documentation \( -type f -o -type l \) \ + \( -name 'git-cvs*' -o -name 'gitcvs*' \) -exec rm -f {} ';' +%endif +# endif without cvs + +%if %{without p4} +# Remove git-p4* and mergetools/p4merge +find %{buildroot} Documentation -type f -name 'git-p4*' -exec rm -f {} ';' +rm -f %{buildroot}%{gitexecdir}/mergetools/p4merge +%endif +# endif without p4 + +# Remove unneeded git-remote-testsvn so git-svn can be noarch +rm -f %{buildroot}%{gitexecdir}/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} +(find %{buildroot}%{_mandir} -type f | grep -vE "$exclude_re|Git" | sed -e s@^%{buildroot}@@ -e 's/$/*/' ) >> bin-man-doc-files +%else +rm -rf %{buildroot}%{_mandir} +%endif +# endif with docs + +mkdir -p %{buildroot}%{_localstatedir}/lib/git +install -Dp -m 0644 %{SOURCE16} %{buildroot}%{_unitdir}/git.socket +perl -p \ + -e "s|\@GITEXECDIR\@|%{gitexecdir}|g;" \ + -e "s|\@BASE_PATH\@|%{_localstatedir}/lib/git|g;" \ + %{SOURCE15} > %{buildroot}%{_unitdir}/git@.service + +# Setup bash completion +install -Dpm 644 contrib/completion/git-completion.bash %{buildroot}%{bash_completions_dir}/git +ln -s git %{buildroot}%{bash_completions_dir}/gitk + +# Install tcsh completion +mkdir -p %{buildroot}%{_datadir}/git-core/contrib/completion +install -pm 644 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 git-gui .desktop file +desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE12} + +# symlink git-citool to git-gui if they are identical +pushd %{buildroot}%{gitexecdir} >/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 +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 +%if %{with docs} +grep -vE "$not_core_re" bin-man-doc-files | grep "%{_mandir}" > man-doc-files-core +%endif +# endif with docs +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 +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 + +%if %{with docs} +cp -pr Documentation/*.html Documentation/docbook-xsl.css %{buildroot}%{_pkgdocdir}/ +cp -pr Documentation/{howto,technical} %{buildroot}%{_pkgdocdir}/ +find %{buildroot}%{_pkgdocdir}/{howto,technical} -type f \ + |grep -o "%{_pkgdocdir}.*$" >> man-doc-files-core +%endif +# endif with docs + +{ + find %{buildroot}%{_pkgdocdir} -type f -maxdepth 1 \ + | grep -o "%{_pkgdocdir}.*$" \ + | grep -vE "$not_core_doc_re" + find %{buildroot}%{_pkgdocdir}/{contrib,RelNotes} -type f \ + | grep -o "%{_pkgdocdir}.*$" + find %{buildroot}%{_pkgdocdir} -type d | grep -o "%{_pkgdocdir}.*$" \ + | sed "s/^/\%dir /" +} >> man-doc-files-core +##### #DOC + +%check +%if %{without tests} +echo "*** Skipping tests" +exit 0 +%endif +# endif without tests + +%if %{with docs} && %{with linkcheck} +# Test links in HTML documentation +find %{buildroot}%{_pkgdocdir} -name "*.html" -print0 | xargs -r0 linkchecker +%endif +# endif with docs && with linkcheck + +# Tests to skip on all releases and architectures +# +# t5559-http-fetch-smart-http2 runs t5551-http-fetch-smart with +# HTTP_PROTO=HTTP/2. Unfortunately, it fails quite regularly. +# https://lore.kernel.org/git/Y4fUntdlc1mqwad5@pobox.com/ +GIT_SKIP_TESTS="t5559" + +%if 0%{?rhel} && 0%{?rhel} < 8 +# Skip tests which require mod_http2 on el7 +GIT_SKIP_TESTS="$GIT_SKIP_TESTS t5559" +%endif +# endif rhel < 8 + +%ifarch aarch64 %{arm} %{power64} +# 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.36 '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 +# endif aarch64 %%{arm} %%{power64} + +%if 0%{?rhel} == 8 && "%{_arch}" == "s390x" +# Skip tests which fail on s390x on rhel-8 +# +# The following tests fail on s390x & el8. The cause should be investigated. +# However, it's a lower priority since the same tests work consistently on +# s390x with Fedora and RHEL-9. The failures seem to originate in t5300. +# +# t5300.10 'unpack without delta' +# t5300.12 'unpack with REF_DELTA' +# t5300.13 'unpack with REF_DELTA' +# t5300.14 'unpack with OFS_DELTA' +# t5300.18 'compare delta flavors' +# t5300.20 'use packed deltified (REF_DELTA) objects' +# t5300.23 'verify pack' +# t5300.24 'verify pack -v' +# t5300.25 'verify-pack catches mismatched .idx and .pack files' +# t5300.29 'verify-pack catches a corrupted sum of the index file itself' +# t5300.30 'build pack index for an existing pack' +# t5300.45 'make sure index-pack detects the SHA1 collision' +# t5300.46 'make sure index-pack detects the SHA1 collision (large blobs)' +# t5303.5 'create corruption in data of first object' +# t5303.7 '... and loose copy of second object allows for partial recovery' +# t5303.11 'create corruption in data of first delta' +# t6300.35 'basic atom: head objectsize:disk' +# t6300.91 'basic atom: tag objectsize:disk' +# t6300.92 'basic atom: tag *objectsize:disk' +GIT_SKIP_TESTS="$GIT_SKIP_TESTS t5300.1[02348] t5300.2[03459] t5300.30 t5300.4[56] t5303.[57] t5303.11 t6300.35 t6300.9[12]" +%endif +# endif rhel == 8 && arch == s390x + +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 + +# Create tmpdir for test output and update GIT_TEST_OPTS +# Also update GIT-BUILD-OPTIONS to keep make from any needless rebuilding +export 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 +%systemd_post git.socket + +%preun daemon +%systemd_preun git.socket + +%postun daemon +%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 + +%files all +# No files for you! + +%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 +%{!?_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 +%{bash_completions_dir}/git +%{_datadir}/git-core/ + +%files core-doc -f man-doc-files-core +%if 0%{?rhel} && 0%{?rhel} <= 7 +# .py files are only bytecompiled on EL <= 7 +%exclude %{_pkgdocdir}/contrib/*/*.py[co] +%endif +# endif rhel <= 7 +%{_pkgdocdir}/contrib/hooks + +%if %{with libsecret} +%files credential-libsecret +%{gitexecdir}/git-credential-libsecret +%endif +# endif with libsecret + +%if %{with cvs} +%files cvs +%{_pkgdocdir}/*git-cvs*.txt +%{_bindir}/git-cvsserver +%{gitexecdir}/*cvs* +%{?with_docs:%{_mandir}/man1/*cvs*.1*} +%{?with_docs:%{_pkgdocdir}/*git-cvs*.html} +%endif +# endif with cvs + +%files daemon +%{_pkgdocdir}/git-daemon*.txt +%{_unitdir}/git.socket +%{_unitdir}/git@.service +%{gitexecdir}/git-daemon +%{_localstatedir}/lib/git +%{?with_docs:%{_mandir}/man1/git-daemon*.1*} +%{?with_docs:%{_pkgdocdir}/git-daemon*.html} + +%files email +%{_pkgdocdir}/*email*.txt +%{gitexecdir}/*email* +%{?with_docs:%{_mandir}/man1/*email*.1*} +%{?with_docs:%{_pkgdocdir}/*email*.html} + +%files -n gitk +%{_pkgdocdir}/*gitk*.txt +%{_bindir}/*gitk* +%{_datadir}/gitk +%{bash_completions_dir}/gitk +%{?with_docs:%{_mandir}/man1/*gitk*.1*} +%{?with_docs:%{_pkgdocdir}/*gitk*.html} + +%files -n gitweb +%{_pkgdocdir}/*.gitweb +%{_pkgdocdir}/gitweb*.txt +%{?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 +%{_datadir}/git-gui/ +%{_pkgdocdir}/git-gui.txt +%{_pkgdocdir}/git-citool.txt +%{?with_docs:%{_mandir}/man1/git-gui.1*} +%{?with_docs:%{_pkgdocdir}/git-gui.html} +%{?with_docs:%{_mandir}/man1/git-citool.1*} +%{?with_docs:%{_pkgdocdir}/git-citool.html} + +%files instaweb +%{gitexecdir}/git-instaweb +%{_pkgdocdir}/git-instaweb.txt +%{?with_docs:%{_mandir}/man1/git-instaweb.1*} +%{?with_docs:%{_pkgdocdir}/git-instaweb.html} + +%if %{with p4} +%files p4 +%{gitexecdir}/*p4* +%{gitexecdir}/mergetools/p4merge +%{_pkgdocdir}/*p4*.txt +%{?with_docs:%{_mandir}/man1/*p4*.1*} +%{?with_docs:%{_pkgdocdir}/*p4*.html} +%endif +# endif with p4 + +%files -n perl-Git -f perl-git-files +%{?with_docs:%{_mandir}/man3/Git.3pm*} + +%files -n perl-Git-SVN -f perl-git-svn-files + +%files subtree +%{gitexecdir}/git-subtree +%{_pkgdocdir}/git-subtree.txt +%{?with_docs:%{_mandir}/man1/git-subtree.1*} +%{?with_docs:%{_pkgdocdir}/git-subtree.html} + +%files svn +%{gitexecdir}/git-svn +%{_pkgdocdir}/git-svn.txt +%{?with_docs:%{_mandir}/man1/git-svn.1*} +%{?with_docs:%{_pkgdocdir}/git-svn.html} + +%changelog +* Tue Nov 26 2024 MSVSphere Packaging Team - 2.45.2-3 +- Rebuilt for MSVSphere 10 + +* Fri Jul 19 2024 Ondřej Pohořelský - 2.45.2-3 +- build without perl_modcompat in EL >= 10 + +* Mon Jul 01 2024 Ondřej Pohořelský - 2.45.2-1 +- update to 2.45.2 +- add glibc-utils BuildRequires +- build docs with asciidoc instead of a asciidoctor +- drop git-p4 subpackage +- Resolves: RHEL-45572, RHEL-45215 + +* Mon Jun 24 2024 Troy Dawson - 2.43.1-2 +- Bump release for June 2024 mass rebuild + +* Mon Feb 12 2024 Ondřej Pohořelský - 2.43.1-1 +- update to 2.43.1 +- resolves: #2263575 + +* Wed Jan 24 2024 Fedora Release Engineering - 2.43.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 2.43.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Tue Nov 21 2023 Ondřej Pohořelský - 2.43.0-1 +- update to 2.43.0 + +* Tue Nov 14 2023 Ondřej Pohořelský - 2.42.1-1 +- update to 2.42.1 + +* Wed Nov 1 2023 Joe Orton - 2.42.0-2 +- remove explicit BR for apr-util-bdb (#2247532) + +* Tue Oct 03 2023 Ondřej Pohořelský - 2.42.0-1 +- update to 2.42.0 + +* Wed Jul 19 2023 Fedora Release Engineering - 2.41.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jun 01 2023 Todd Zullinger - 2.41.0-1 +- update to 2.41.0 + +* Wed May 24 2023 Todd Zullinger - 2.41.0~rc2-1 +- update to 2.41.0-rc2 + +* Fri May 19 2023 Todd Zullinger - 2.41.0~rc1-1 +- update to 2.41.0-rc1 + +* Mon May 15 2023 Todd Zullinger - 2.41.0~rc0-1 +- update to 2.41.0-rc0 + +* Fri May 12 2023 Todd Zullinger - 2.40.1-2 +- use tilde versioning for release candidates + +* Tue Apr 25 2023 Todd Zullinger - 2.40.1-1 +- update to 2.40.1 (CVE-2023-25652, CVE-2023-25815, CVE-2023-29007) + +* Mon Mar 13 2023 Todd Zullinger - 2.40.0-1 +- update to 2.40.0 + +* Tue Mar 07 2023 Todd Zullinger - 2.40.0-0.2.rc2 +- update to 2.40.0-rc2 + +* Wed Mar 01 2023 Todd Zullinger - 2.40.0-0.1.rc1 +- update to 2.40.0-rc1 + +* Fri Feb 24 2023 Todd Zullinger - 2.40.0-0.0.rc0 +- update to 2.40.0-rc0 + +* Tue Feb 14 2023 Todd Zullinger - 2.39.2-1 +- update to 2.39.2 (CVE-2023-22490, CVE-2023-23946) + +* Fri Feb 03 2023 Todd Zullinger - 2.39.1-2 +- drop perl Email::Valid dep on RHEL (#2166718) + +* Thu Jan 19 2023 Fedora Release Engineering - 2.39.1-1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Tue Jan 17 2023 Todd Zullinger - 2.39.1-1 +- update to 2.39.1 (CVE-2022-41903, CVE-2022-23521) + +* Mon Dec 12 2022 Todd Zullinger - 2.39.0-1 +- update to 2.39.0 + +* Mon Dec 05 2022 Todd Zullinger - 2.39.0-0.2.rc2 +- update to 2.39.0-rc2 + +* Wed Nov 30 2022 Todd Zullinger - 2.39.0-0.1.rc1 +- update to 2.39.0-rc1 + +* Wed Nov 23 2022 Todd Zullinger - 2.39.0-0.0.rc0 +- update to 2.39.0-rc0 +- add mod_http2 BuildRequires for tests + +* Sat Nov 12 2022 Todd Zullinger - 2.38.1-3 +- use %%bash_completions_dir + +* Mon Nov 07 2022 Todd Zullinger - 2.38.1-2 +- don't ship contrib/persistent-https as documentation +- update license data and convert to SPDX format + +* Tue Oct 18 2022 Todd Zullinger - 2.38.1-1 +- update to 2.38.1 (CVE-2022-39253, CVE-2022-39260) + +* Mon Oct 03 2022 Todd Zullinger - 2.38.0-1 +- update to 2.38.0 + +* Wed Sep 28 2022 Todd Zullinger - 2.38.0-0.2.rc2 +- update to 2.38.0-rc2 + +* Wed Sep 21 2022 Todd Zullinger - 2.38.0-0.1.rc1 +- update to 2.38.0-rc1 +- git-subtree sub-package is noarch + +* Fri Sep 16 2022 Todd Zullinger - 2.38.0-0.0.rc0 +- update to 2.38.0-rc0 + +* Tue Aug 30 2022 Todd Zullinger - 2.37.3-1 +- update to 2.37.3 +- remove %%changelog entries prior to 2020 +- tests: try harder to find open ports for apache, git, and svn + +* Sun Aug 14 2022 Todd Zullinger - 2.37.2-2 +- consolidate git-archimport removal in %%prep + +* Thu Aug 11 2022 Todd Zullinger - 2.37.2-1 +- update to 2.37.2 + +* Sat Jul 23 2022 Todd Zullinger - 2.37.1-2 +- require systemd-rpm-macros rather than systemd + +* Thu Jul 21 2022 Fedora Release Engineering - 2.37.1-1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Jul 12 2022 Todd Zullinger - 2.37.1-1 +- update to 2.37.1 (CVE-2022-29187) + +* Mon Jun 27 2022 Todd Zullinger - 2.37.0-1 +- update to 2.37.0 + +* Wed Jun 22 2022 Todd Zullinger - 2.37.0-0.2.rc2 +- update to 2.37.0-rc2 + +* Fri Jun 17 2022 Todd Zullinger - 2.37.0-0.1.rc1 +- update to 2.37.0-rc1 + +* Tue Jun 14 2022 Todd Zullinger - 2.37.0-0.0.rc0 +- update to 2.37.0-rc0 +- fix GIT_SKIP_TESTS for EL8 s390x +- remove --with/--without emacs build conditional + +* Fri Jun 03 2022 Jitka Plesnikova - 2.36.1-1.2 +- Perl 5.36 re-rebuild of bootstrapped packages + +* Wed Jun 01 2022 Jitka Plesnikova - 2.36.1-1.1 +- Perl 5.36 rebuild + +* Fri May 06 2022 Todd Zullinger - 2.36.1-1 +- update to 2.36.1 + +* Mon Apr 18 2022 Todd Zullinger - 2.36.0-1 +- update to 2.36.0 + +* Thu Apr 14 2022 Todd Zullinger - 2.36.0-0.3.rc2 +- usability improvements on top of CVE-2022-24765 + +* Wed Apr 13 2022 Todd Zullinger - 2.36.0-0.2.rc2 +- update to 2.36.0-rc2 (CVE-2022-24765) +- disable failing tests on s390x on EL8 + +* Fri Apr 08 2022 Todd Zullinger - 2.36.0-0.1.rc1 +- update to 2.36.0-rc1 + +* Tue Apr 05 2022 Todd Zullinger - 2.36.0-0.0.rc0 +- update to 2.36.0-rc0 +- use httpd-core for tests on Fedora >= 37 + +* Sat Jan 29 2022 Todd Zullinger - 2.35.1-1 +- update to 2.35.1 + +* Mon Jan 24 2022 Todd Zullinger - 2.35.0-1 +- update to 2.35.0 +- set path to linker script in %%_package_note_file + +* Sat Jan 22 2022 Todd Zullinger - 2.35.0-0.2.rc2.3 +- remove contrib/scalar to avoid cruft in git-core-doc + +* Fri Jan 21 2022 Todd Zullinger - 2.35.0-0.2.rc2.2 +- fix compilation on EL7 + +* Thu Jan 20 2022 Todd Zullinger - 2.35.0-0.2.rc2.1 +- checkout: avoid BUG() when hitting a broken repository (rhbz#2042920) + +* Wed Jan 19 2022 Todd Zullinger - 2.35.0-0.2.rc2 +- update to 2.35.0-rc2 + +* Sat Jan 15 2022 Todd Zullinger - 2.35.0-0.1.rc1 +- update to 2.35.0-rc1 + +* Mon Jan 10 2022 Todd Zullinger - 2.35.0-0.0.rc0 +- update to 2.35.0-rc0 + +* Thu Nov 25 2021 Todd Zullinger - 2.34.1-1 +- update to 2.34.1 +- fix gpgsm issues with gnupg-2.3 + +* Mon Nov 15 2021 Todd Zullinger - 2.34.0-1 +- update to 2.34.0 + +* Sun Nov 14 2021 Todd Zullinger - 2.33.1-3 +- add more git-email perl dependencies +- Resolves: rhbz#2020487 + +* Thu Nov 11 2021 Ondřej Pohořelský - 2.33.1-2 +- add Perl requires to git-email +- Resolves: rhbz#2020487 + +* Wed Oct 13 2021 Todd Zullinger - 2.33.1-1 +- update to 2.33.1 + +* Mon Sep 27 2021 Ondřej Pohořelský - 2.33.0-1 +- update to 2.33.0 +- contrib/hooks/multimail is no longer distributed with git + +* Tue Sep 14 2021 Sahana Prasad - 2.32.0-1.2 +- Rebuilt with OpenSSL 3.0.0 + +* Thu Jul 22 2021 Fedora Release Engineering - 2.32.0-1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Sun Jun 06 2021 Todd Zullinger - 2.32.0-1 +- update to 2.32.0 +- add perl(File::Compare) BuildRequires +- fix var to enable git-svn tests with httpd +- remove %%changelog entries prior to 2019 + +* Thu Jun 03 2021 Todd Zullinger - 2.32.0-0.5.rc3 +- drop jgit on Fedora >= 35 + Resolves: rhbz#1965808 + +* Wed Jun 02 2021 Todd Zullinger - 2.32.0-0.4.rc3 +- update to 2.32.0-rc3 + +* Fri May 28 2021 Todd Zullinger - 2.32.0-0.3.rc2 +- update to 2.32.0-rc2 + +* Mon May 24 2021 Jitka Plesnikova - 2.32.0-0.2.rc1 +- Perl 5.34 re-rebuild of bootstrapped packages + +* Sat May 22 2021 Todd Zullinger - 2.32.0-0.1.rc1 +- update to 2.32.0-rc1 +- rearrange python2/python3 conditionals +- re-enable git-p4 with python3 +- add coreutils BuildRequires +- remove unneeded NEEDS_CRYPTO_WITH_SSL + +* Fri May 21 2021 Jitka Plesnikova - 2.31.1-3.1 +- Perl 5.34 rebuild + +* Mon May 17 2021 Todd Zullinger - 2.32.0-0.0.rc0 +- update to 2.32.0-rc0 + +* Sun May 16 2021 Todd Zullinger +- clean up various dist conditionals + +* Wed Apr 21 2021 Todd Zullinger - 2.31.1-3 +- apply upstream patch to fix clone --bare segfault + Resolves: rhbz#1952030 + +* Tue Apr 06 2021 Todd Zullinger - 2.31.1-2 +- remove two stray %%defattr macros from %%files sections + +* Sat Mar 27 2021 Todd Zullinger - 2.31.1-1 +- update to 2.31.1 + +* Fri Mar 19 2021 Todd Zullinger - 2.31.0-2 +- fix git bisect with annotaged tags + +* Mon Mar 15 2021 Todd Zullinger - 2.31.0-1 +- update to 2.31.0 + +* Tue Mar 09 2021 Todd Zullinger - 2.31.0-0.2.rc2 +- update to 2.31.0-rc2 + +* Wed Mar 03 2021 Todd Zullinger - 2.31.0-0.1.rc1 +- update to 2.31.0-rc1 + +* Tue Mar 02 2021 Todd Zullinger - 2.31.0-0.0.rc0 +- update to 2.31.0-rc0 + +* Tue Mar 02 2021 Todd Zullinger - 2.30.1-3 +- use %%{gpgverify} macro to verify tarball signature + +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 2.30.1-2.1 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + +* Thu Feb 18 2021 Ondřej Pohořelský +- re-enable t7812-grep-icase-non-ascii on s390x + +* Tue Feb 09 2021 Todd Zullinger - 2.30.1-1 +- update to 2.30.1 + +* Mon Feb 08 2021 Ondřej Pohořelský - 2.30.0-2 +- add rhel 9 conditional to require httpd instead of lighttpd in git-instaweb + +* Tue Jan 26 2021 Fedora Release Engineering - 2.30.0-1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild