dev-vcs/git: Sync with Gentoo

It's from Gentoo commit 18c2db9a438b32270277202cba113b00b90c7553.
This commit is contained in:
Krzesimir Nowak 2022-09-26 16:43:47 +02:00
parent 3fec30a26c
commit fda65de383
21 changed files with 1227 additions and 6742 deletions

View File

@ -1,30 +1,9 @@
DIST git-2.32.0.tar.xz 6551348 BLAKE2B 546203ce3f749ba806866a9e9767bc807794cec435fd0b60306ae6cd2b1b17a0159ef9774c79c4f59d0dba45b36941085b55f103e1820450d560bffa41d1058f SHA512 1ab3e7022ccee411d14a7da5c37d6259ef5c0f85ebed8f49698e25c65cbc7a46f8096919fcb6568360bfe284dd7475b596eee1a167db966096255a405853837c
DIST git-2.33.1.tar.xz 6558636 BLAKE2B f4959d5309f85e063448673a3f06f1d3cdd65ced5f5173cfe5a38df3b5547cae1c08275bda02e48307e8290628735e2ea1ff49222262e7cd29b252a6aa4d4a15 SHA512 16d417183232e1057bea754d59cdf4bbacc5f1527d1de6ee04cdd293a2512bfa7208e20f6130816605528b59cb1bc3188c5bddf1a42c1413095ee74e44dd2f91
DIST git-2.34.1.tar.xz 6623760 BLAKE2B 9b5d7a450ec495898bcc0e1f6ae87c0ad102d039cf7c4106cdfe3ada501d9bfaf22b83c522de383d3c01f7d5a29dbfd7fc44b371efa8fc3a418ab3c609a692c1 SHA512 a1a8e9e6f64b1da25508fbd2f783564dcdbe181fb5ff1ebab3bdac6db6094e18acc334479a1abf22ac17ce4f733cc3e10a664db9ab234cd523735a3f027b42db
DIST git-2.35.1.tar.xz 6874520 BLAKE2B 028ff97b47748871da145720d0d258a0dcf4acc60b10c787dee5703fcab5f6e621c5671ee9e7a25009e82a2830400f35fa232d88c62606a6687260c744680025 SHA512 926c6813ef61931e1a1c43dfd7b15e20dc5878c1752876bd08f039249c9ed09f20f096b2f01947de9c9522c942e9fa8c1363d7d31a488bbe3f93c0cff31fcbcb
DIST git-2.35.2.tar.xz 6876028 BLAKE2B 2d59f0ef195770b3bd57ef8160ab24da5e14025316bb0cce30048116c71e9c45f0818a12a95a84f680071454ef80e3071b615c64a165771c1c8720c20ff4dba8 SHA512 fac143daf547f4f1952101bc0006b53ac50c1741394a8c75dc517f595ce58b183c7daabcb23a7f9fc87fe22250e298441b0b7cc7af93820110877d65c036b76a
DIST git-2.35.3.tar.xz 6876328 BLAKE2B f584e9d94d167ba19bd2a00377f04eb4edf69cddbd2993a324178338b2e20e7fd126b51882ac7c7914c5118d0eab1ff9beddeb96a901a18fdfe027e21351ab61 SHA512 c92f8663988c57702bb5ee542ac8f36e8a43d377d16106ee462ce0b0a575b9d51baaafc654bf1821fbea2fe476ffd64d7fb87084c7de4dd8065b01d5083492c5
DIST git-2.36.0.tar.xz 7003024 BLAKE2B 72bb148fc5fded2976554788eaf599d20fe9f200ac1dd1ddd4ed89f7f5c8d6c1025907080620bab477b4efadf41d883e890dff73c80d0ff5f0becd83f13ebd88 SHA512 dce0d7dbe684af070271830a01bf1b9cc289182f5106f6e3303b1b3a0d5dc74bebf6ac0174373db05a28f5acc62acb095bc9385dabeeecc1d6e8567dce29b766
DIST git-2.36.1.tar.xz 7004044 BLAKE2B 99f54efb4ea1d8db0e3afd3dc9780cb37fc853e4757f4b37d68a6badd90eeed3e2943c97393eaed6adf61c82b97b5d01ca8d015784f5425072b1db14d39144ce SHA512 459432bd0c1d5a87c828a6fbf6d3473f14bf6b95783b3f27ea4f3af1ba9fd0e712a96a41276a16c6ebeb7ac3583a5f445eedd0a9e19fe160c2c8e309ec58818e
DIST git-2.37.0.tar.xz 6978796 BLAKE2B 204a06a6d35f4f1960d031c09eeef43273982e95c5825ab813899de3d30018c9e8d88425a51ce9447d4ae6183de1270017c6e0ecc9d601df897281e107def145 SHA512 2ae3c845c9d0e0f5245e47f95c958c86a4aa2c47dfe31bff6fc81b2434d2e9402b7eced18700c04ba7158ed6a72807a81c4cde6a26dd30c969b4267b8fce4d0a
DIST git-2.37.1.tar.xz 6980388 BLAKE2B b5423e4628f8c727aa74b3f7c7da12d46814eb45adfe84bf57e87a33e85a0a793ff690f4c1f7d2da4824bc8dd7d1df1c06cbe96adae857177d3fb204941b53ef SHA512 3c9cad6b4757f425ee53996d8d80db2226b246513cbcec9011022e02e4235d7ec38c7c1aada73bb3c9279a91d1aaf8664633356ce1dce847e0d371f702a5b766
DIST git-htmldocs-2.32.0.tar.xz 1381664 BLAKE2B d1b47aa99d32a252fd20df26eff44a558044f3a389379b161bb43621eb28375eb0621969849a31938ba7fc9fc58b140d27d703559ea5735d0a0ffd2e93cd9692 SHA512 12b84e342f0d19afe385ab8a685ae625e86c3295d1555992e0c427b361aa2cdfc89a679e7dbc468d3568a325dafbf699468aadcdb02f93e372eff3dd96a7cf7f
DIST git-htmldocs-2.33.1.tar.xz 1396744 BLAKE2B cbd65cf08fc7ea466fcd72820ba3e2135ade37f69c436a4ee7276dc71fb62f6270b71e2f46d981f5681a0fd3c30613d61680c2ef2460d0d7d292f7455e114128 SHA512 5b856b919067e1f644539d43a85aab6f602537ea0970b6248b471e3fa6756a8494f0525a69d22ad3795fcf9e106ff8439e0f6716ba0b8c895d7aad8c59e5bd74
DIST git-htmldocs-2.34.1.tar.xz 1406464 BLAKE2B 6ee2f58df3c1622d96ac4b1a70d4dc3d0c973635774dd6bb89fea3e502dd82d99d676e2f9cb33c14c429c3d4680cd6020213154099b3f7fe71ad67602ca9bc6c SHA512 cf9fa952d43e477528deece9f22d1bb63fa50b3a831fae20812c6af31c1dbaf193abe2fed48ac9966bcf1787442ceed19f00c00e524a1911f0ea31952a52fc8f
DIST git-2.37.3.tar.xz 6987464 BLAKE2B b672ed0a99532b2e2e69babbea9155e39f05590a76f55791ffed6ce4ef8b68d8e306a0a23819af26f34fcf3d16211c3a10ec58d86d81262f7a1261d0e51b1305 SHA512 9120050b01d8ac8d9f9e85f19cb84dc90c28f3beadc3ea94da94845f2eb5e35aa83eee8447a7ecef5190b8eb5d01be621be2e82bb3020e51e05037cd1fa9b58f
DIST git-2.38.0.rc1.tar.xz 7053024 BLAKE2B 40f734e30679694d9749741512eadd5b7ef42d47e40529cadaf5b8cba01ed5caf4534dbfc5c8ba13e4fee511cec8a7f4ffe844667b8930d660497764a6a8ad06 SHA512 2be15be5c687f7c65f9381ee34bfca00063ca2568981a9713a220f05cb16f7a1c4fdf628ab1971399e77d0b4b39d71b47d73e93b937d00efd965cf4c49e34af2
DIST git-htmldocs-2.35.1.tar.xz 1410148 BLAKE2B 68c3d12341271b861f42135bd4bd6e68ebcc6466931d383378b49aac42f77187f3fadc237974349cb0b50e4c5fb7a8ab185114341dd3012d159e420405d9ef91 SHA512 52a40644a7cd38caddecc43182863ca2f456644fff918ed4c8f826cbf269352c73d6bdc9119d25fcf537bc2fa38750791013329e4b0e32c8d14f0769dab85804
DIST git-htmldocs-2.35.2.tar.xz 1411248 BLAKE2B d4f318f6277015bb6aef3a556bbf7a9a6b02a7cf2f1ed696bb730b6a5fb32fe3dbdf01cf1737e2931f182bf451589349de53e7d02a868d40b013018973c5fe89 SHA512 118576bfeafd92b8b0dd92318504d74341a003358d937545c16fefcfde6b956fbaee0601e50b9a21719d2575a5a37585e36628b4ade8e42d9d0fec4ae616eaa0
DIST git-htmldocs-2.35.3.tar.xz 1411664 BLAKE2B c7d849b9573a257de47fc8d654f7f791d21917cf65315b4ae6909ba2ebbe90970bc9e6c9949266913b1e529e662bfc375acee26ebf9304162eeccc87ce3da067 SHA512 52b97dab838fff1a865ae4d449fbb77fbac3c528666d1b936c73bffac856f16583d1b182379bc4e6851f78bccab519c3ea7e5902fc502b2e8ab7bb85043c7eea
DIST git-htmldocs-2.36.0.tar.xz 1426148 BLAKE2B ba121e8f7d6a232f3df2b5a50c0f4a798c80808562c710f306f26fa79c124e5e1580c0626a2fce04f4a17b96d40a2683809550f37028cbc436b359de91100599 SHA512 62ee14c2f1ff34c0fbdf281ea2bb08bf6a24850d1d8dc68ffb12ae15e343c167ac869559395769fb352bd441baa8f2d45d696923a04e2f04bca921c990d75a9d
DIST git-htmldocs-2.36.1.tar.xz 1426284 BLAKE2B 2213f870b7fe35cc76ce8654ed8c50c0e9694c58acac4aa2350f826422db6bf2fc238fbd12075f98e84539fdf6ca5624984e21844d1d1c1ceb90e3b090438a7d SHA512 3aa2ca197a789161571a6961dae8c2723ff5ba05a2d8ce7443f7fd9ef46fe5a3d001364831345f3fc4e028140022d20afefbabdf4a82cdeb311167793b292c1f
DIST git-htmldocs-2.37.0.tar.xz 1444540 BLAKE2B 9249de4b49d0812cf5f3ceb0a062b396ca4f9482232c69c75177201d19c4094ca79acb61d47c9a80f9db8749ac634bb2cc3bb2fa96bd6b4a34798cf1da2dd74c SHA512 8f9ff2bfdb55db41805f4366c6eb6f116e37774b7dbbac193c4a817357c47c44664eb69eb1b55acfaabc513dbbd2393d7a93295b4443630f65bd6791fc742a87
DIST git-htmldocs-2.37.1.tar.xz 1445040 BLAKE2B a2f748787f8008d67ae065b3efb34b04df76d2d96ec933f4e7af8d4d2580bf9d163c52a6bfe81c030af59a61ac8e02edfca30a988f1e24b1044271869e9426df SHA512 0aba312ff889875873f91e86689b7e02f4a9953e2f9339f84a94a41ba185503dbe265547c8b4bb7f128519ae8f9f0a288903e0490af23387a5bf81e7cf3b4ddd
DIST git-manpages-2.32.0.tar.xz 491868 BLAKE2B 7598a864246aed771371924604ee13d3f51b839b10b254bb1159dd47266513f5cd6484aab200a7b4ed427edc76538a98e39a040a17201483965175f5e1c5f484 SHA512 5c9950bd5d6904972cddf4afad534197d843c0dee8198d14ec5a3448873cab37dac88295b2a4df3658749f048bda4800b54fdc850517be7208906c911832c66e
DIST git-manpages-2.33.1.tar.xz 494288 BLAKE2B 1f8bd4f23de31a285d3f4327e562dddafdf9f28e8b36334e54f5e280c81fc8170e8b153ca42baa642d02d8e6fdfcac9a8fdd3cee1e32c29bcd53f689d1a6c463 SHA512 d465a7b491046b7a5da6ad1fc6c62b351c69905932e0672263de5a1d3abe1113660cff9fe30c7be1d1695c6170ceca5a11b3f65e9b2d1545f35cc653e4c6ad62
DIST git-manpages-2.34.1.tar.xz 497280 BLAKE2B aa3c67cec861eb40eda3e7827d3e380fdfb6f189027fb7e5618258b80ac33918cb3c2ca4d2f8dc5fbee959578766564137e9c4818672f5138304270c486658fe SHA512 8f3b56fa477e5aafec3ef29933234c362a372f59ed95694c4fb82ebb82d2a8ebc0ac17ae36caa9185964eef1700ea8732816e73df4ddd918afc949a8371fa0d8
DIST git-htmldocs-2.37.3.tar.xz 1447620 BLAKE2B 4efb86fb5431fd96ec4bcad7ecd9d5ae1d3f81f57f17dab4d8343948758f66b549b2442330b20cdb4ecd96f2029f4e7a376de5561fd9eda70acc46d2cffd7090 SHA512 ecc483a1fecf8c056a57e14a59950dc8a00f7940453dd5e2ccfd8dab966a9fee47178a7bbf8988e2c9a67ea6d84ffc33be790c49f812fb0ba661b57b7ff7b6ef
DIST git-htmldocs-2.38.0.rc1.tar.xz 1478420 BLAKE2B 1d1f8c961b637b24a7475880769e4b8d949912a7200c997269906fb06e133a6e8ed74cee340d559f072f48da46034ecfff6b806f7a9402fe25c2249585d19255 SHA512 c0c27f09fb2ac6a3108c0c9689539ffaab5fc3850a4f17aa90d7a13fbdec980778a62596041c9edcf1fa8ee256294ae3cd21af142d5a21e0ee1c46e4cabd97e5
DIST git-manpages-2.35.1.tar.xz 497284 BLAKE2B 2d0d633320982243316575cc278df6c6a9ef181bf45ea9c1c8288e2677e4e71a33af96bada9bd90b03310be7dd33f2762b6b95489e267e2c191dcc7d1a715fe7 SHA512 0f4c46880f0e6d493112dcd4753fbe3702c06aa68be09bcbfc90263a355deba080995a08916b1f2404e4e17d720ee0de46a55e450c6cabeb1c147dcb2cd919d5
DIST git-manpages-2.35.2.tar.xz 497548 BLAKE2B 5e7c9e85879e57e5b157dc8d0a8b836d86e56e91c512079e46869b6e251cfd40d3a7016996cdb2d2323ca47180e50eb5d5f4bc93ce87713d61b34dcf714ba90e SHA512 70d483f2b14f5957c0b71cfc1131b0cfd8038e824ed93dea4b866fa539d582eb531edc284d89b70c188c85d0bd74096c171bbe42f0be550c6c14711b101a4046
DIST git-manpages-2.35.3.tar.xz 497672 BLAKE2B aef5a7c579392f55fa63f1ce36c03579f4fcce443e867ac2a162a3d72344639ee11949748a51547315579b37e0fc6d5915ea203ddc556b2511125781428ce001 SHA512 25ac8f1690ccbc0e36b7d05115aebde1911909307ac29d930158b61ecd68972b8a9c3af018d73f34251d42cabf8d3d392173a448ec948df0a3119c2a2b87bd60
DIST git-manpages-2.36.0.tar.xz 503604 BLAKE2B 438f533dce6628143c0ca348bc372017f049126933bf07a63ce9150114632a048778d8e0876970b406144aa584d512470ae4426be9c5bb8a3a581680ac9443a1 SHA512 67c2fb1c974ffe15aa09b9c36338f3ae9805573b35291e128210fc99c9fd97b1e26be571819d6b073c5adfe4c6f688c15e31790aa9eb62c1effacfb8aa21eb1c
DIST git-manpages-2.36.1.tar.xz 503680 BLAKE2B d43fc90584b2f9e3bae30460f0c545b4fb96a5c70ad03c73d655481e5737b75a8d7a293db5bfdd752aabfc835a4a11e77474a5a0f144c8791b2dd433a3e45b70 SHA512 dd2fd6c5186aac53d7834ccf0cb6c380758624bb4583c6c5703b5b7a24c65d4199403fbcf7033c69bd3dcfbe048baaef3e886b9ba99c8afeb375e18e5b3e6e40
DIST git-manpages-2.37.0.tar.xz 509992 BLAKE2B 67a1bc6e3a92b69d30b5e977b170cf11ac37d85dc318b35e12b728b8e17d6cfaaca7bbd343da8745be2547be8ad3dd9d930a24c0ba716dcb96aaf0610e25b11d SHA512 d739670caa11b70f3ed50665764e78a5b4c3d3d912976898d22d10d45ba3e2599b9e13d2a2502f97076a9d88b5f9e67bb11d204c8c43149b81e8243d28981711
DIST git-manpages-2.37.1.tar.xz 510044 BLAKE2B f1f79dcbb72d05258dd30ccaf76c2726de5400555d189a112786c2cecbe5cdd27879f27335ed48c84315c496bc28aa0f95e7498ee3c2672dea3071e274a1693b SHA512 5dec5aa33e707a3c3520c6391dddc8812c3c5d5f72c13a7a5f194dac08c5b73dd59b3ab777d699fba7ef5088767ee796b12de936f196224fee0ffdc31c8b8f62
DIST git-manpages-2.37.3.tar.xz 510096 BLAKE2B 0bc0b8c1818a06a6c7126119c04d2936bd38e997027bb31be5ad6bea2b43d71c5e9a76a29c576d84bd00c11f09bca7a67aa78a72f0171b41b93f6322c3b23808 SHA512 b25d4925f64e4de220dc9133d6e3ed13a397b160c27550c8700b76226f2b3a1611aec9ee24110ae16ebaceedc6617c6a04aa1b44270c7a0f166dd40d8f2f1132
DIST git-manpages-2.38.0.rc1.tar.xz 553876 BLAKE2B b5805f3206daf93aa80ed9718ef21637eac6807594359fe1aa1ed42954d29e5b47fe7729a07ff560a67b29ac47a25f8ebb54538e595069d5626b52d9f972cfcb SHA512 dd1a25ec5a3ee62e9daac683d73d92745587d7a601a15be2db2bb331842488afaddffefc1631eecbb9a910804476eff61e9e2b5a6e4dd98219b98f97e4750403

View File

@ -1,455 +0,0 @@
From 0c5ced8704ce69d7c84c2cc7cb26335616464468 Mon Sep 17 00:00:00 2001
From: Robin Johnson <robbat2@gentoo.org>
Date: Tue, 14 May 2019 08:53:06 +0200
Subject: [PATCH] Makefile: Add NO_CVS define to disable all CVS interface
utilities
Forward-ported from 1.7.12 to current git.git v1.8.4
Forward-ported from v1.8.4 to v1.8.5.1
Forward-ported from v1.8.5.3 to v1.9.0_rc3
Forward-ported from 1.9.0_rc3 to current git.git v2.0.0_rc0
Forward-ported from v2.0.0_rc0 to v2.0.0
Forward-ported from v2.0.0 to v2.2.2
Forward-ported from v2.2.2 to v2.8.4
Forward-ported from v2.8.4 to v2.10.0
Forward-ported from v2.10.0 to v2.12.0
Forward-ported from v2.12.0 to v2.17.0-rc1
Forward-ported from v2.17.0-rc1 to v2.18.0-rc1
Forward-ported from v2.18.0-rc1 to v2.22.0-rc0
Forward-ported from v2.22.0-rc0 to v2.31.0-rc0
Signed-off-by: Lars Wendler <polynomial-c@gentoo.org>
---
Makefile | 48 ++++++++++++++++++++++--------
t/t9200-git-cvsexportcommit.sh | 5 ++++
t/t9400-git-cvsserver-server.sh | 8 ++++-
t/t9401-git-cvsserver-crlf.sh | 15 ++++++----
t/t9600-cvsimport.sh | 41 +++++++++++++++----------
t/t9601-cvsimport-vendor-branch.sh | 11 +++++++
t/t9602-cvsimport-branches-tags.sh | 11 +++++++
t/t9603-cvsimport-patchsets.sh | 11 +++++++
t/test-lib.sh | 1 +
9 files changed, 118 insertions(+), 33 deletions(-)
diff --git a/Makefile b/Makefile
index 9b1bde2e0e..ae993a07fa 100644
--- a/Makefile
+++ b/Makefile
@@ -305,6 +305,8 @@ all::
# Define SANE_TEXT_GREP to "-a" if you use recent versions of GNU grep
# and egrep that are pickier when their input contains non-ASCII data.
#
+# Define NO_CVS if you do not want any CVS interface utilities.
+#
# The TCL_PATH variable governs the location of the Tcl interpreter
# used to optimize git-gui for your system. Only used if NO_TCLTK
# is not set. Defaults to the bare 'tclsh'.
@@ -580,6 +582,7 @@ PROGRAM_OBJS =
PROGRAMS =
EXCLUDED_PROGRAMS =
SCRIPT_PERL =
+SCRIPT_PERL_CVS =
SCRIPT_PYTHON =
SCRIPT_SH =
SCRIPT_LIB =
@@ -612,31 +615,33 @@ SCRIPT_LIB += git-sh-setup
SCRIPT_PERL += git-add--interactive.perl
SCRIPT_PERL += git-archimport.perl
-SCRIPT_PERL += git-cvsexportcommit.perl
-SCRIPT_PERL += git-cvsimport.perl
-SCRIPT_PERL += git-cvsserver.perl
SCRIPT_PERL += git-send-email.perl
SCRIPT_PERL += git-svn.perl
+SCRIPT_PERL_CVS += git-cvsexportcommit.perl
+SCRIPT_PERL_CVS += git-cvsimport.perl
+SCRIPT_PERL_CVS += git-cvsserver.perl
+
SCRIPT_PYTHON += git-p4.py
# Generated files for scripts
SCRIPT_SH_GEN = $(patsubst %.sh,%,$(SCRIPT_SH))
SCRIPT_PERL_GEN = $(patsubst %.perl,%,$(SCRIPT_PERL))
+SCRIPT_PERL_CVS_GEN = $(patsubst %.perl,%,$(SCRIPT_PERL_CVS))
SCRIPT_PYTHON_GEN = $(patsubst %.py,%,$(SCRIPT_PYTHON))
# Individual rules to allow e.g.
# "make -C ../.. SCRIPT_PERL=contrib/foo/bar.perl build-perl-script"
# from subdirectories like contrib/*/
.PHONY: build-perl-script build-sh-script build-python-script
-build-perl-script: $(SCRIPT_PERL_GEN)
+build-perl-script: $(SCRIPT_PERL_GEN) $(SCRIPT_PERL_CVS_GEN)
build-sh-script: $(SCRIPT_SH_GEN)
build-python-script: $(SCRIPT_PYTHON_GEN)
.PHONY: install-perl-script install-sh-script install-python-script
install-sh-script: $(SCRIPT_SH_GEN)
$(INSTALL) $^ '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
-install-perl-script: $(SCRIPT_PERL_GEN)
+install-perl-script: $(SCRIPT_PERL_GEN) $(SCRIPT_PERL_CVS_GEN)
$(INSTALL) $^ '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
install-python-script: $(SCRIPT_PYTHON_GEN)
$(INSTALL) $^ '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
@@ -645,12 +650,13 @@ install-python-script: $(SCRIPT_PYTHON_GEN)
clean-sh-script:
$(RM) $(SCRIPT_SH_GEN)
clean-perl-script:
- $(RM) $(SCRIPT_PERL_GEN)
+ $(RM) $(SCRIPT_PERL_GEN) $(SCRIPT_PERL_CVS_GEN)
clean-python-script:
$(RM) $(SCRIPT_PYTHON_GEN)
SCRIPTS = $(SCRIPT_SH_GEN) \
$(SCRIPT_PERL_GEN) \
+ $(SCRIPT_PERL_CVS_GEN) \
$(SCRIPT_PYTHON_GEN) \
git-instaweb
@@ -2233,13 +2239,27 @@ git.res: git.rc GIT-VERSION-FILE GIT-PREFIX
-DGIT_VERSION="\\\"$(GIT_VERSION)\\\"" -i $< -o $@
# This makes sure we depend on the NO_PERL setting itself.
-$(SCRIPT_PERL_GEN): GIT-BUILD-OPTIONS
+$(SCRIPT_PERL_GEN) $(SCRIPT_PERL_CVS_GEN): GIT-BUILD-OPTIONS
+
+_SCRIPT_PERL_GEN =
+_SCRIPT_PERL_NOGEN =
# Used for substitution in Perl modules. Disabled when using RUNTIME_PREFIX
# since the locale directory is injected.
perl_localedir_SQ = $(localedir_SQ)
ifndef NO_PERL
+_SCRIPT_PERL_GEN = $(SCRIPT_PERL_GEN)
+
+ifndef NO_CVS
+_SCRIPT_PERL_GEN += $(SCRIPT_PERL_CVS_GEN)
+else
+_SCRIPT_PERL_NOGEN += $(SCRIPT_PERL_CVS_GEN)
+_REASON = NO_CVS
+_REASON_CONTENT = $(NO_CVS)
+endif # NO_CVS
+
+$(_SCRIPT_PERL_GEN):
PERL_HEADER_TEMPLATE = perl/header_templates/fixed_prefix.template.pl
PERL_DEFINES = $(PERL_PATH_SQ):$(PERLLIB_EXTRA_SQ):$(perllibdir_SQ)
@@ -2260,7 +2280,7 @@ endif
PERL_DEFINES += $(gitexecdir) $(perllibdir) $(localedir)
-$(SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE
+$(_SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE
$(QUIET_GEN)$(RM) $@ $@+ && \
sed -e '1{' \
-e ' s|#!.*perl|#!$(PERL_PATH_SQ)|' \
@@ -2306,14 +2326,18 @@ git-instaweb: git-instaweb.sh GIT-SCRIPT-DEFINES
chmod +x $@+ && \
mv $@+ $@
else # NO_PERL
-$(SCRIPT_PERL_GEN) git-instaweb: % : unimplemented.sh
+_SCRIPT_PERL_NOGEN += $(SCRIPT_PERL_GEN) $(SCRIPT_PERL_CVS_GEN) git-instaweb
+_REASON = NO_PERL
+_REASON_CONTENT = $(NO_PERL)
+endif # NO_PERL
+
+$(_SCRIPT_PERL_NOGEN): % : unimplemented.sh
$(QUIET_GEN)$(RM) $@ $@+ && \
sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
- -e 's|@@REASON@@|NO_PERL=$(NO_PERL)|g' \
+ -e 's|@@REASON@@|$(_REASON)=$(_REASON_CONTENT)|g' \
unimplemented.sh >$@+ && \
chmod +x $@+ && \
mv $@+ $@
-endif # NO_PERL
# This makes sure we depend on the NO_PYTHON setting itself.
$(SCRIPT_PYTHON_GEN): GIT-BUILD-OPTIONS
@@ -2569,7 +2593,7 @@ LOCALIZED_C = $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H)
LOCALIZED_SH = $(SCRIPT_SH)
LOCALIZED_SH += git-rebase--preserve-merges.sh
LOCALIZED_SH += git-sh-setup.sh
-LOCALIZED_PERL = $(SCRIPT_PERL)
+LOCALIZED_PERL = $(SCRIPT_PERL) $(SCRIPT_PERL_CVS)
ifdef XGETTEXT_INCLUDE_TESTS
LOCALIZED_C += t/t0200/test.c
diff --git a/t/t9200-git-cvsexportcommit.sh b/t/t9200-git-cvsexportcommit.sh
index c5946cb0b8..223fd5409b 100755
--- a/t/t9200-git-cvsexportcommit.sh
+++ b/t/t9200-git-cvsexportcommit.sh
@@ -11,6 +11,11 @@ if ! test_have_prereq PERL; then
test_done
fi
+if ! test_have_prereq CVS; then
+ skip_all='skipping git cvsexportcommit tests, cvs not available'
+ test_done
+fi
+
cvs >/dev/null 2>&1
if test $? -ne 1
then
diff --git a/t/t9400-git-cvsserver-server.sh b/t/t9400-git-cvsserver-server.sh
index 2d29d486ee..2ca6db10e0 100755
--- a/t/t9400-git-cvsserver-server.sh
+++ b/t/t9400-git-cvsserver-server.sh
@@ -14,9 +14,15 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
. ./test-lib.sh
if ! test_have_prereq PERL; then
- skip_all='skipping git cvsserver tests, perl not available'
+ skip_all='skipping git-cvsserver tests, perl not available'
test_done
fi
+
+if ! test_have_prereq CVS; then
+ skip_all='skipping git-cvsserver tests, cvs not available'
+ test_done
+fi
+
cvs >/dev/null 2>&1
if test $? -ne 1
then
diff --git a/t/t9401-git-cvsserver-crlf.sh b/t/t9401-git-cvsserver-crlf.sh
index a34805acdc..0d7759f73b 100755
--- a/t/t9401-git-cvsserver-crlf.sh
+++ b/t/t9401-git-cvsserver-crlf.sh
@@ -60,15 +60,20 @@ check_status_options() {
return $stat
}
-cvs >/dev/null 2>&1
-if test $? -ne 1
+if ! test_have_prereq PERL
then
- skip_all='skipping git-cvsserver tests, cvs not found'
+ skip_all='skipping git-cvsserver tests, perl not available'
test_done
fi
-if ! test_have_prereq PERL
+if ! test_have_prereq CVS
then
- skip_all='skipping git-cvsserver tests, perl not available'
+ skip_all='skipping git-cvsserver tests, cvs not available'
+ test_done
+fi
+cvs >/dev/null 2>&1
+if test $? -ne 1
+then
+ skip_all='skipping git-cvsserver tests, cvs not found'
test_done
fi
perl -e 'use DBI; use DBD::SQLite' >/dev/null 2>&1 || {
diff --git a/t/t9600-cvsimport.sh b/t/t9600-cvsimport.sh
index 5680849218..7288db820b 100755
--- a/t/t9600-cvsimport.sh
+++ b/t/t9600-cvsimport.sh
@@ -11,14 +11,25 @@ if ! test_have_prereq NOT_ROOT; then
test_done
fi
-test_expect_success PERL 'setup cvsroot environment' '
+if ! test_have_prereq PERL
+then
+ skip_all='skipping git cvsimport tests, perl not available'
+ test_done
+fi
+if ! test_have_prereq CVS
+then
+ skip_all='skipping git cvsimport tests, cvs not available'
+ test_done
+fi
+
+test_expect_success 'setup cvsroot environment' '
CVSROOT=$(pwd)/cvsroot &&
export CVSROOT
'
-test_expect_success PERL 'setup cvsroot' '$CVS init'
+test_expect_success 'setup cvsroot' '$CVS init'
-test_expect_success PERL 'setup a cvs module' '
+test_expect_success 'setup a cvs module' '
mkdir "$CVSROOT/module" &&
$CVS co -d module-cvs module &&
@@ -50,23 +61,23 @@ EOF
)
'
-test_expect_success PERL 'import a trivial module' '
+test_expect_success 'import a trivial module' '
git cvsimport -a -R -z 0 -C module-git module &&
test_cmp module-cvs/o_fortuna module-git/o_fortuna
'
-test_expect_success PERL 'pack refs' '(cd module-git && git gc)'
+test_expect_success 'pack refs' '(cd module-git && git gc)'
-test_expect_success PERL 'initial import has correct .git/cvs-revisions' '
+test_expect_success 'initial import has correct .git/cvs-revisions' '
(cd module-git &&
git log --format="o_fortuna 1.1 %H" -1) > expected &&
test_cmp expected module-git/.git/cvs-revisions
'
-test_expect_success PERL 'update cvs module' '
+test_expect_success 'update cvs module' '
(cd module-cvs &&
cat <<EOF >o_fortuna &&
O Fortune,
@@ -94,7 +105,7 @@ EOF
)
'
-test_expect_success PERL 'update git module' '
+test_expect_success 'update git module' '
(cd module-git &&
git config cvsimport.trackRevisions true &&
@@ -105,7 +116,7 @@ test_expect_success PERL 'update git module' '
'
-test_expect_success PERL 'update has correct .git/cvs-revisions' '
+test_expect_success 'update has correct .git/cvs-revisions' '
(cd module-git &&
git log --format="o_fortuna 1.1 %H" -1 HEAD^ &&
@@ -113,7 +124,7 @@ test_expect_success PERL 'update has correct .git/cvs-revisions' '
test_cmp expected module-git/.git/cvs-revisions
'
-test_expect_success PERL 'update cvs module' '
+test_expect_success 'update cvs module' '
(cd module-cvs &&
echo 1 >tick &&
@@ -122,7 +133,7 @@ test_expect_success PERL 'update cvs module' '
)
'
-test_expect_success PERL 'cvsimport.module config works' '
+test_expect_success 'cvsimport.module config works' '
(cd module-git &&
git config cvsimport.module module &&
@@ -134,7 +145,7 @@ test_expect_success PERL 'cvsimport.module config works' '
'
-test_expect_success PERL 'second update has correct .git/cvs-revisions' '
+test_expect_success 'second update has correct .git/cvs-revisions' '
(cd module-git &&
git log --format="o_fortuna 1.1 %H" -1 HEAD^^ &&
@@ -143,7 +154,7 @@ test_expect_success PERL 'second update has correct .git/cvs-revisions' '
test_cmp expected module-git/.git/cvs-revisions
'
-test_expect_success PERL 'import from a CVS working tree' '
+test_expect_success 'import from a CVS working tree' '
$CVS co -d import-from-wt module &&
(cd import-from-wt &&
@@ -156,12 +167,12 @@ test_expect_success PERL 'import from a CVS working tree' '
'
-test_expect_success PERL 'no .git/cvs-revisions created by default' '
+test_expect_success 'no .git/cvs-revisions created by default' '
! test -e import-from-wt/.git/cvs-revisions
'
-test_expect_success PERL 'test entire HEAD' 'test_cmp_branch_tree main'
+test_expect_success 'test entire HEAD' 'test_cmp_branch_tree main'
test_done
diff --git a/t/t9601-cvsimport-vendor-branch.sh b/t/t9601-cvsimport-vendor-branch.sh
index 116cddba3a..a7e7299c81 100755
--- a/t/t9601-cvsimport-vendor-branch.sh
+++ b/t/t9601-cvsimport-vendor-branch.sh
@@ -37,6 +37,17 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
. ./lib-cvs.sh
+if ! test_have_prereq PERL
+then
+ skip_all='skipping git cvsimport tests, perl not available'
+ test_done
+fi
+if ! test_have_prereq CVS
+then
+ skip_all='skipping git cvsimport tests, cvs not available'
+ test_done
+fi
+
setup_cvs_test_repository t9601
test_expect_success PERL 'import a module with a vendor branch' '
diff --git a/t/t9602-cvsimport-branches-tags.sh b/t/t9602-cvsimport-branches-tags.sh
index e5266c9a87..0e1878ffd3 100755
--- a/t/t9602-cvsimport-branches-tags.sh
+++ b/t/t9602-cvsimport-branches-tags.sh
@@ -9,6 +9,17 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
. ./lib-cvs.sh
+if ! test_have_prereq PERL
+then
+ skip_all='skipping git cvsimport tests, perl not available'
+ test_done
+fi
+if ! test_have_prereq CVS
+then
+ skip_all='skipping git cvsimport tests, cvs not available'
+ test_done
+fi
+
setup_cvs_test_repository t9602
test_expect_success PERL 'import module' '
diff --git a/t/t9603-cvsimport-patchsets.sh b/t/t9603-cvsimport-patchsets.sh
index 0e9daa5768..598c8595c5 100755
--- a/t/t9603-cvsimport-patchsets.sh
+++ b/t/t9603-cvsimport-patchsets.sh
@@ -17,6 +17,17 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
. ./lib-cvs.sh
+if ! test_have_prereq PERL
+then
+ skip_all='skipping git cvsimport tests, perl not available'
+ test_done
+fi
+if ! test_have_prereq CVS
+then
+ skip_all='skipping git cvsimport tests, cvs not available'
+ test_done
+fi
+
setup_cvs_test_repository t9603
test_expect_failure PERL 'import with criss cross times on revisions' '
diff --git a/t/test-lib.sh b/t/test-lib.sh
index d3f6af6a65..588067bfd8 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -1482,6 +1482,7 @@ parisc* | hppa*)
esac
( COLUMNS=1 && test $COLUMNS = 1 ) && test_set_prereq COLUMNS_CAN_BE_1
+test -z "$NO_CVS" && test_set_prereq CVS
test -z "$NO_PERL" && test_set_prereq PERL
test -z "$NO_PTHREADS" && test_set_prereq PTHREADS
test -z "$NO_PYTHON" && test_set_prereq PYTHON
--
2.30.1

View File

@ -1,22 +0,0 @@
https://www.spinics.net/lists/git/msg417169.html
https://bugs.gentoo.org/751907
The test fails when ${D} is exported in the environment. It actually _shouldn't_
be exported in src_test anyway, but Portage isn't yet fixed for this because
it'll break misbehaving ebuilds (see e.g. pkgcheck's VariableScope warnings).
Upstream are currently discussing other patches and work to find other cases
of environment contamination.
--- a/t/t5582-fetch-negative-refspec.sh
+++ b/t/t5582-fetch-negative-refspec.sh
@@ -105,7 +105,6 @@ test_expect_success "fetch with negative pattern refspec does not expand prefix"
'
test_expect_success "fetch with negative refspec avoids duplicate conflict" '
- cd "$D" &&
(
cd one &&
git branch dups/a &&
--
2.30.2

View File

@ -0,0 +1,22 @@
Don't examine outside of the prefix for gettext on macOS/Darwin.
https://bugs.gentoo.org/757309
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -148,17 +148,6 @@ ifeq ($(uname_S),Darwin)
HAVE_NS_GET_EXECUTABLE_PATH = YesPlease
CSPRNG_METHOD = arc4random
- # Workaround for `gettext` being keg-only and not even being linked via
- # `brew link --force gettext`, should be obsolete as of
- # https://github.com/Homebrew/homebrew-core/pull/53489
- ifeq ($(shell test -d /usr/local/opt/gettext/ && echo y),y)
- BASIC_CFLAGS += -I/usr/local/include -I/usr/local/opt/gettext/include
- BASIC_LDFLAGS += -L/usr/local/lib -L/usr/local/opt/gettext/lib
- ifeq ($(shell test -x /usr/local/opt/gettext/bin/msgfmt && echo y),y)
- MSGFMT = /usr/local/opt/gettext/bin/msgfmt
- endif
- endif
-
# The builtin FSMonitor on MacOS builds upon Simple-IPC. Both require
# Unix domain sockets and PThreads.
ifndef NO_PTHREADS

View File

@ -0,0 +1,14 @@
Neuter the "safe directory" feature, except for tests.
--- a/setup.c
+++ b/setup.c
@@ -1157,7 +1157,9 @@ static int ensure_valid_ownership(const char *gitfile,
*/
read_very_early_config(safe_directory_cb, &data);
- return data.is_safe;
+ if (git_env_bool("GIT_TEST_ASSUME_DIFFERENT_OWNER", 0))
+ return data.is_safe;
+ return 1;
}
enum discovery_result {

View File

@ -1,13 +0,0 @@
#!/sbin/openrc-run
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
pidfile="/var/run/git-daemon.pid"
command="/usr/bin/git"
command_args="daemon ${GITDAEMON_OPTS}"
command_user="${GIT_USER:-nobody}:${GIT_GROUP:-nobody}"
start_stop_daemon_args="-e HOME= -e XDG_CONFIG_HOME= -b -m"
depend() {
use logger
}

View File

@ -1,644 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
GENTOO_DEPEND_ON_PERL=no
# bug #329479: git-remote-testgit is not multiple-version aware
PYTHON_COMPAT=( python3_{8..10} )
inherit toolchain-funcs perl-module bash-completion-r1 plocale python-single-r1 systemd
PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN"
if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="git://git.kernel.org/pub/scm/git/git.git"
# Please ensure that all _four_ 9999 ebuilds get updated; they track the 4 upstream branches.
# See https://git-scm.com/docs/gitworkflows#_graduation
# In order of stability:
# 9999-r0: maint
# 9999-r1: master
# 9999-r2: next
# 9999-r3: seen
case "${PVR}" in
9999) EGIT_BRANCH=maint ;;
9999-r1) EGIT_BRANCH=master ;;
9999-r2) EGIT_BRANCH=next;;
9999-r3) EGIT_BRANCH=seen ;;
esac
fi
MY_PV="${PV/_rc/.rc}"
MY_P="${PN}-${MY_PV}"
DOC_VER="${MY_PV}"
DESCRIPTION="stupid content tracker: distributed VCS designed for speed and efficiency"
HOMEPAGE="https://www.git-scm.com/"
if [[ ${PV} != *9999 ]]; then
SRC_URI_SUFFIX="xz"
SRC_URI_KORG="https://www.kernel.org/pub/software/scm/git"
[[ "${PV/rc}" != "${PV}" ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}
${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
doc? (
${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
)"
[[ "${PV}" == *_rc* ]] || \
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
LICENSE="GPL-2"
SLOT="0"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +ppcsha1 subversion tk +threads +webdav xinetd cvs test"
# Common to both DEPEND and RDEPEND
DEPEND="
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
dev-libs/openssl:0=
sys-libs/zlib
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:0= )
curl? (
net-misc/curl
webdav? ( dev-libs/expat )
)
iconv? ( virtual/libiconv )
"
RDEPEND="${DEPEND}
gpg? ( app-crypt/gnupg )
perl? (
dev-perl/Error
dev-perl/MailTools
dev-perl/Authen-SASL
>=virtual/perl-libnet-3.110.0-r4[ssl]
cgi? (
dev-perl/CGI
highlight? ( app-text/highlight )
)
cvs? (
>=dev-vcs/cvsps-2.1:0
dev-perl/DBI
dev-perl/DBD-SQLite
)
mediawiki? (
dev-perl/DateTime-Format-ISO8601
dev-perl/HTML-Tree
dev-perl/MediaWiki-API
)
subversion? (
dev-vcs/subversion[-dso(-),perl]
dev-perl/libwww-perl
dev-perl/TermReadKey
)
)
perforce? ( ${PYTHON_DEPS} )
"
# This is how info docs are created with Git:
# .txt/asciidoc --(asciidoc)---------> .xml/docbook
# .xml/docbook --(docbook2texi.pl)--> .texi
# .texi --(makeinfo)---------> .info
BDEPEND="
doc? (
app-text/asciidoc
app-text/docbook2X
app-text/xmlto
sys-apps/texinfo
)
gnome-keyring? ( virtual/pkgconfig )
nls? ( sys-devel/gettext )
test? ( app-crypt/gnupg )
"
# Live ebuild builds man pages and HTML docs, additionally
if [[ ${PV} == *9999 ]]; then
BDEPEND="${BDEPEND}
app-text/asciidoc"
fi
SITEFILE="50${PN}-gentoo.el"
S="${WORKDIR}/${MY_P}"
REQUIRED_USE="
cgi? ( perl )
cvs? ( perl )
mediawiki? ( perl )
mediawiki-experimental? ( mediawiki )
perforce? ( ${PYTHON_REQUIRED_USE} )
subversion? ( perl )
webdav? ( curl )
"
RESTRICT="!test? ( test )"
PATCHES=(
# bug #350330 - automagic CVS when we don't want it is bad.
"${FILESDIR}"/git-2.31.0_rc0-optional-cvs.patch
# Make submodule output quiet
"${FILESDIR}"/git-2.21.0-quiet-submodules-testcase.patch
# See bug #751907
# Test fails due to exported ${D} in src_test
"${FILESDIR}"/git-2.32.0-r1-test-t5582.patch
)
pkg_setup() {
if use subversion && has_version "dev-vcs/subversion[dso]" ; then
ewarn "Per Gentoo bugs #223747, #238586, when subversion is built"
ewarn "with USE=dso, there may be weird crashes in git-svn. You"
ewarn "have been warned."
fi
if use perforce ; then
python-single-r1_pkg_setup
fi
}
# This is needed because for some obscure reasons future calls to make don't
# pick up these exports if we export them in src_unpack()
exportmakeopts() {
local extlibs myopts
myopts=(
ASCIIDOC_NO_ROFF=YesPlease
$(usex cvs '' NO_CVS=YesPlease)
$(usex elibc_musl NO_REGEX=YesPlease '')
$(usex iconv '' NO_ICONV=YesPlease)
$(usex nls '' NO_GETTEXT=YesPlease)
$(usex perl 'INSTALLDIRS=vendor NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
$(usex perforce '' NO_PYTHON=YesPlease)
$(usex subversion '' NO_SVN_TESTS=YesPlease)
$(usex threads '' NO_PTHREADS=YesPlease)
$(usex tk '' NO_TCLTK=YesPlease)
)
if use blksha1 ; then
myopts+=( BLK_SHA1=YesPlease )
elif use ppcsha1 ; then
myopts+=( PPC_SHA1=YesPlease )
fi
if use curl ; then
use webdav || myopts+=( NO_EXPAT=YesPlease )
else
myopts+=( NO_CURL=YesPlease )
fi
# broken assumptions, because of static build system ...
myopts+=(
NO_FINK=YesPlease
NO_DARWIN_PORTS=YesPlease
INSTALL=install
TAR=tar
SHELL_PATH="${EPREFIX}/bin/sh"
SANE_TOOL_PATH=
OLD_ICONV=
NO_EXTERNAL_GREP=
)
# can't define this to null, since the entire makefile depends on it
sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die
if use pcre; then
myopts+=( USE_LIBPCRE2=YesPlease )
extlibs+=( -lpcre2-8 )
fi
if [[ ${CHOST} == *-solaris* ]]; then
myopts+=(
NEEDS_LIBICONV=YesPlease
HAVE_CLOCK_MONOTONIC=1
)
if grep -Fq getdelim "${EROOT}"/usr/include/stdio.h ; then
myopts+=( HAVE_GETDELIM=1 )
fi
fi
if has_version '>=app-text/asciidoc-8.0' ; then
myopts+=( ASCIIDOC8=YesPlease )
fi
export MY_MAKEOPTS="${myopts[@]}"
export EXTLIBS="${extlibs[@]}"
}
src_unpack() {
if [[ ${PV} != *9999 ]] ; then
unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
cd "${S}" || die
unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
if use doc ; then
pushd "${S}"/Documentation &>/dev/null || die
unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
popd &>/dev/null || die
fi
else
git-r3_src_unpack
#cp "${FILESDIR}"/GIT-VERSION-GEN .
fi
}
src_prepare() {
# add experimental patches to improve mediawiki support
# see patches for origin
if use mediawiki-experimental ; then
PATCHES+=(
"${FILESDIR}"/git-2.7.0-mediawiki-namespaces.patch
"${FILESDIR}"/git-2.7.0-mediawiki-subpages.patch
"${FILESDIR}"/git-2.7.0-mediawiki-500pages.patch
)
fi
default
if use prefix ; then
# bug #757309
eapply "${FILESDIR}"/git-2.31.0-darwin-prefix-gettext.patch
fi
sed -i \
-e 's:^\(CFLAGS[[:space:]]*=\).*$:\1 $(OPTCFLAGS) -Wall:' \
-e 's:^\(LDFLAGS[[:space:]]*=\).*$:\1 $(OPTLDFLAGS):' \
-e 's:^\(CC[[:space:]]* =\).*$:\1$(OPTCC):' \
-e 's:^\(AR[[:space:]]* =\).*$:\1$(OPTAR):' \
-e "s:\(PYTHON_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
-e "s:\(PERL_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
Makefile || die
# Fix docbook2texi command
sed -r -i 's/DOCBOOK2X_TEXI[[:space:]]*=[[:space:]]*docbook2x-texi/DOCBOOK2X_TEXI = docbook2texi.pl/' \
Documentation/Makefile || die
}
git_emake() {
# bug #320647: PYTHON_PATH
local PYTHON_PATH=""
use perforce && PYTHON_PATH="${PYTHON}"
emake ${MY_MAKEOPTS} \
prefix="${EPREFIX}"/usr \
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
perllibdir="$(use perl && perl_get_raw_vendorlib)" \
sysconfdir="${EPREFIX}"/etc \
GIT_TEST_OPTS="--no-color" \
OPTAR="$(tc-getAR)" \
OPTCC="$(tc-getCC)" \
OPTCFLAGS="${CFLAGS}" \
OPTLDFLAGS="${LDFLAGS}" \
PERL_PATH="${EPREFIX}/usr/bin/perl" \
PERL_MM_OPT="" \
PYTHON_PATH="${PYTHON_PATH}" \
V=1 \
"$@"
}
src_configure() {
exportmakeopts
}
src_compile() {
git_emake || die "emake failed"
if use perl && use cgi ; then
git_emake gitweb || die "emake gitweb (cgi) failed"
fi
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
pushd contrib/credential/osxkeychain &>/dev/null || die
git_emake CC=$(tc-getCC) CFLAGS="${CFLAGS}" \
|| die "emake credential-osxkeychain"
popd &>/dev/null || die
fi
pushd Documentation &>/dev/null || die
if [[ ${PV} == *9999 ]] ; then
git_emake man || die "emake man failed"
if use doc ; then
git_emake info html || die "emake info html failed"
fi
else
if use doc ; then
git_emake info || die "emake info html failed"
fi
fi
popd &>/dev/null || die
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
git_emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" PKG_CONFIG="$(tc-getPKG_CONFIG)"
popd &>/dev/null || die
fi
pushd contrib/subtree &>/dev/null || die
git_emake git-subtree || die
# git-subtree.1 requires the full USE=doc dependency stack
use doc && git_emake git-subtree.html git-subtree.1
popd &>/dev/null || die
pushd contrib/diff-highlight &>/dev/null || die
git_emake || die
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake || die
popd &>/dev/null || die
fi
}
src_install() {
git_emake DESTDIR="${D}" install || die "make install failed"
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
dobin contrib/credential/osxkeychain/git-credential-osxkeychain
fi
# Depending on the tarball and manual rebuild of the documentation, the
# manpages may exist in either OR both of these directories.
find man?/*.[157] >/dev/null 2>&1 && doman man?/*.[157]
find Documentation/*.[157] >/dev/null 2>&1 && doman Documentation/*.[157]
dodoc README* Documentation/{SubmittingPatches,CodingGuidelines}
use doc && dodir /usr/share/doc/${PF}/html
local d
for d in / /howto/ /technical/ ; do
docinto ${d}
dodoc Documentation${d}*.txt
if use doc ; then
docinto ${d}/html
dodoc Documentation${d}*.html
fi
done
docinto /
# Upstream does not ship this pre-built :-(
use doc && doinfo Documentation/{git,gitman}.info
newbashcomp contrib/completion/git-completion.bash ${PN}
bashcomp_alias git gitk
# Not really a bash-completion file (bug #477920)
# but still needed uncompressed (bug #507480)
insinto /usr/share/${PN}
doins contrib/completion/git-prompt.sh
#dobin contrib/fast-import/git-p4 # Moved upstream
#dodoc contrib/fast-import/git-p4.txt # Moved upstream
newbin contrib/fast-import/import-tars.perl import-tars
exeinto /usr/libexec/git-core/
newexe contrib/git-resurrect.sh git-resurrect
# git-subtree
pushd contrib/subtree &>/dev/null || die
git_emake DESTDIR="${D}" install || die "Failed to emake install for git-subtree"
if use doc ; then
# Do not move git subtree install-man outside USE=doc!
git_emake DESTDIR="${D}" install-man install-html || die "Failed to emake install-html install-man for git-subtree"
fi
newdoc README README.git-subtree
dodoc git-subtree.txt
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake DESTDIR="${D}" install
popd &>/dev/null || die
fi
# diff-highlight
dobin contrib/diff-highlight/diff-highlight
newdoc contrib/diff-highlight/README README.diff-highlight
# git-jump
exeinto /usr/libexec/git-core/
doexe contrib/git-jump/git-jump
newdoc contrib/git-jump/README git-jump.txt
# git-contacts
exeinto /usr/libexec/git-core/
doexe contrib/contacts/git-contacts
dodoc contrib/contacts/git-contacts.txt
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
dobin git-credential-libsecret
popd &>/dev/null || die
fi
dodir /usr/share/${PN}/contrib
# The following are excluded:
# completion - installed above
# diff-highlight - done above
# emacs - removed upstream
# examples - these are stuff that is not used in Git anymore actually
# git-jump - done above
# gitview - installed above
# p4import - excluded because fast-import has a better one
# patches - stuff the Git guys made to go upstream to other places
# persistent-https - TODO
# mw-to-git - TODO
# subtree - build seperately
# svnimport - use git-svn
# thunderbird-patch-inline - fixes thunderbird
local contrib_objects=(
buildsystems
fast-import
hg-to-git
hooks
remotes2config.sh
rerere-train.sh
stats
workdir
)
local i
for i in "${contrib_objects[@]}" ; do
cp -rf \
"${S}"/contrib/${i} \
"${ED}"/usr/share/${PN}/contrib \
|| die "Failed contrib ${i}"
done
if use perl && use cgi ; then
# We used to install in /usr/share/${PN}/gitweb
# but upstream installs in /usr/share/gitweb
# so we will install a symlink and use their location for compat with other
# distros
dosym ../gitweb /usr/share/${PN}/gitweb
# INSTALL discusses configuration issues, not just installation
docinto /
newdoc "${S}"/gitweb/INSTALL INSTALL.gitweb
newdoc "${S}"/gitweb/README README.gitweb
for d in "${ED}"/usr/lib{,64}/perl5/ ; do
if [[ -d "${d}" ]] ; then
find "${d}" -name .packlist -delete || die
fi
done
else
rm -rf "${ED}"/usr/share/gitweb
fi
if ! use subversion ; then
rm -f "${ED}"/usr/libexec/git-core/git-svn \
"${ED}"/usr/share/man/man1/git-svn.1*
fi
if use xinetd ; then
insinto /etc/xinetd.d
newins "${FILESDIR}"/git-daemon.xinetd git-daemon
fi
if ! use prefix ; then
newinitd "${FILESDIR}"/git-daemon-r1.initd git-daemon
newconfd "${FILESDIR}"/git-daemon.confd git-daemon
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" \
"git-daemon@.service"
systemd_dounit "${FILESDIR}/git-daemon.socket"
fi
perl_delete_localpod
# Remove disabled linguas
# we could remove sources in src_prepare, but install does not
# handle missing locale dir well
rm_loc() {
if [[ -e "${ED}/usr/share/locale/${1}" ]] ; then
rm -r "${ED}/usr/share/locale/${1}" || die
fi
}
plocale_for_each_disabled_locale rm_loc
}
src_test() {
local disabled=()
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
[[ ${cvs} -gt 0 ]] && \
has_version dev-vcs/cvs && \
let cvs=${cvs}+1
[[ ${cvs} -gt 1 ]] && \
has_version "dev-vcs/cvs[server]" && \
let cvs=${cvs}+1
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "tests failed. Please file a bug."
}
showpkgdeps() {
local pkg=$1
shift
elog " $(printf "%-17s:" ${pkg}) ${@}"
}
pkg_postinst() {
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
elog "These additional scripts need some dependencies:"
echo
showpkgdeps git-quiltimport "dev-util/quilt"
showpkgdeps git-instaweb \
"|| ( www-servers/lighttpd www-servers/apache www-servers/nginx )"
echo
use mediawiki-experimental && ewarn "Using experimental git-mediawiki patches. The stability of cloned wiki filesystems is not guaranteed."
}

View File

@ -1,640 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
GENTOO_DEPEND_ON_PERL=no
# bug #329479: git-remote-testgit is not multiple-version aware
PYTHON_COMPAT=( python3_{8..10} )
inherit toolchain-funcs perl-module bash-completion-r1 plocale python-single-r1 systemd
PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN"
if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://git.kernel.org/pub/scm/git/git.git"
# Please ensure that all _four_ 9999 ebuilds get updated; they track the 4 upstream branches.
# See https://git-scm.com/docs/gitworkflows#_graduation
# In order of stability:
# 9999-r0: maint
# 9999-r1: master
# 9999-r2: next
# 9999-r3: seen
case "${PVR}" in
9999) EGIT_BRANCH=maint ;;
9999-r1) EGIT_BRANCH=master ;;
9999-r2) EGIT_BRANCH=next;;
9999-r3) EGIT_BRANCH=seen ;;
esac
fi
MY_PV="${PV/_rc/.rc}"
MY_P="${PN}-${MY_PV}"
DOC_VER="${MY_PV}"
DESCRIPTION="stupid content tracker: distributed VCS designed for speed and efficiency"
HOMEPAGE="https://www.git-scm.com/"
if [[ ${PV} != *9999 ]]; then
SRC_URI_SUFFIX="xz"
SRC_URI_KORG="https://www.kernel.org/pub/software/scm/git"
[[ "${PV/rc}" != "${PV}" ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}
${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
doc? (
${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
)"
[[ "${PV}" == *_rc* ]] || \
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
LICENSE="GPL-2"
SLOT="0"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +ppcsha1 subversion tk +threads +webdav xinetd cvs test"
# Common to both DEPEND and RDEPEND
DEPEND="
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
dev-libs/openssl:0=
sys-libs/zlib
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:0= )
curl? (
net-misc/curl
webdav? ( dev-libs/expat )
)
iconv? ( virtual/libiconv )
"
RDEPEND="${DEPEND}
gpg? ( app-crypt/gnupg )
perl? (
dev-perl/Error
dev-perl/MailTools
dev-perl/Authen-SASL
>=virtual/perl-libnet-3.110.0-r4[ssl]
cgi? (
dev-perl/CGI
highlight? ( app-text/highlight )
)
cvs? (
>=dev-vcs/cvsps-2.1:0
dev-perl/DBI
dev-perl/DBD-SQLite
)
mediawiki? (
dev-perl/DateTime-Format-ISO8601
dev-perl/HTML-Tree
dev-perl/MediaWiki-API
)
subversion? (
dev-vcs/subversion[-dso(-),perl]
dev-perl/libwww-perl
dev-perl/TermReadKey
)
)
perforce? ( ${PYTHON_DEPS} )
"
# This is how info docs are created with Git:
# .txt/asciidoc --(asciidoc)---------> .xml/docbook
# .xml/docbook --(docbook2texi.pl)--> .texi
# .texi --(makeinfo)---------> .info
BDEPEND="
doc? (
app-text/asciidoc
app-text/docbook2X
app-text/xmlto
sys-apps/texinfo
)
gnome-keyring? ( virtual/pkgconfig )
nls? ( sys-devel/gettext )
test? ( app-crypt/gnupg )
"
# Live ebuild builds man pages and HTML docs, additionally
if [[ ${PV} == *9999 ]]; then
BDEPEND="${BDEPEND}
app-text/asciidoc"
fi
SITEFILE="50${PN}-gentoo.el"
S="${WORKDIR}/${MY_P}"
REQUIRED_USE="
cgi? ( perl )
cvs? ( perl )
mediawiki? ( perl )
mediawiki-experimental? ( mediawiki )
perforce? ( ${PYTHON_REQUIRED_USE} )
subversion? ( perl )
webdav? ( curl )
"
RESTRICT="!test? ( test )"
PATCHES=(
# bug #350330 - automagic CVS when we don't want it is bad.
"${FILESDIR}"/git-2.33.0_rc0-optional-cvs.patch
# Make submodule output quiet
"${FILESDIR}"/git-2.21.0-quiet-submodules-testcase.patch
)
pkg_setup() {
if use subversion && has_version "dev-vcs/subversion[dso]" ; then
ewarn "Per Gentoo bugs #223747, #238586, when subversion is built"
ewarn "with USE=dso, there may be weird crashes in git-svn. You"
ewarn "have been warned."
fi
if use perforce ; then
python-single-r1_pkg_setup
fi
}
# This is needed because for some obscure reasons future calls to make don't
# pick up these exports if we export them in src_unpack()
exportmakeopts() {
local extlibs myopts
myopts=(
ASCIIDOC_NO_ROFF=YesPlease
$(usex cvs '' NO_CVS=YesPlease)
$(usex elibc_musl NO_REGEX=YesPlease '')
$(usex iconv '' NO_ICONV=YesPlease)
$(usex nls '' NO_GETTEXT=YesPlease)
$(usex perl 'INSTALLDIRS=vendor NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
$(usex perforce '' NO_PYTHON=YesPlease)
$(usex subversion '' NO_SVN_TESTS=YesPlease)
$(usex threads '' NO_PTHREADS=YesPlease)
$(usex tk '' NO_TCLTK=YesPlease)
)
if use blksha1 ; then
myopts+=( BLK_SHA1=YesPlease )
elif use ppcsha1 ; then
myopts+=( PPC_SHA1=YesPlease )
fi
if use curl ; then
use webdav || myopts+=( NO_EXPAT=YesPlease )
else
myopts+=( NO_CURL=YesPlease )
fi
# broken assumptions, because of static build system ...
myopts+=(
NO_FINK=YesPlease
NO_DARWIN_PORTS=YesPlease
INSTALL=install
TAR=tar
SHELL_PATH="${EPREFIX}/bin/sh"
SANE_TOOL_PATH=
OLD_ICONV=
NO_EXTERNAL_GREP=
)
# can't define this to null, since the entire makefile depends on it
sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die
if use pcre; then
myopts+=( USE_LIBPCRE2=YesPlease )
extlibs+=( -lpcre2-8 )
fi
if [[ ${CHOST} == *-solaris* ]]; then
myopts+=(
NEEDS_LIBICONV=YesPlease
HAVE_CLOCK_MONOTONIC=1
)
if grep -Fq getdelim "${EROOT}"/usr/include/stdio.h ; then
myopts+=( HAVE_GETDELIM=1 )
fi
fi
if has_version '>=app-text/asciidoc-8.0' ; then
myopts+=( ASCIIDOC8=YesPlease )
fi
export MY_MAKEOPTS="${myopts[@]}"
export EXTLIBS="${extlibs[@]}"
}
src_unpack() {
if [[ ${PV} != *9999 ]] ; then
unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
cd "${S}" || die
unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
if use doc ; then
pushd "${S}"/Documentation &>/dev/null || die
unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
popd &>/dev/null || die
fi
else
git-r3_src_unpack
#cp "${FILESDIR}"/GIT-VERSION-GEN .
fi
}
src_prepare() {
# add experimental patches to improve mediawiki support
# see patches for origin
if use mediawiki-experimental ; then
PATCHES+=(
"${FILESDIR}"/git-2.7.0-mediawiki-namespaces.patch
"${FILESDIR}"/git-2.7.0-mediawiki-subpages.patch
"${FILESDIR}"/git-2.7.0-mediawiki-500pages.patch
)
fi
default
if use prefix ; then
# bug #757309
eapply "${FILESDIR}"/git-2.31.0-darwin-prefix-gettext.patch
fi
sed -i \
-e 's:^\(CFLAGS[[:space:]]*=\).*$:\1 $(OPTCFLAGS) -Wall:' \
-e 's:^\(LDFLAGS[[:space:]]*=\).*$:\1 $(OPTLDFLAGS):' \
-e 's:^\(CC[[:space:]]* =\).*$:\1$(OPTCC):' \
-e 's:^\(AR[[:space:]]* =\).*$:\1$(OPTAR):' \
-e "s:\(PYTHON_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
-e "s:\(PERL_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
Makefile || die
# Fix docbook2texi command
sed -r -i 's/DOCBOOK2X_TEXI[[:space:]]*=[[:space:]]*docbook2x-texi/DOCBOOK2X_TEXI = docbook2texi.pl/' \
Documentation/Makefile || die
}
git_emake() {
# bug #320647: PYTHON_PATH
local PYTHON_PATH=""
use perforce && PYTHON_PATH="${PYTHON}"
emake ${MY_MAKEOPTS} \
prefix="${EPREFIX}"/usr \
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
perllibdir="$(use perl && perl_get_raw_vendorlib)" \
sysconfdir="${EPREFIX}"/etc \
GIT_TEST_OPTS="--no-color" \
OPTAR="$(tc-getAR)" \
OPTCC="$(tc-getCC)" \
OPTCFLAGS="${CFLAGS}" \
OPTLDFLAGS="${LDFLAGS}" \
PERL_PATH="${EPREFIX}/usr/bin/perl" \
PERL_MM_OPT="" \
PYTHON_PATH="${PYTHON_PATH}" \
V=1 \
"$@"
}
src_configure() {
exportmakeopts
}
src_compile() {
git_emake || die "emake failed"
if use perl && use cgi ; then
git_emake gitweb || die "emake gitweb (cgi) failed"
fi
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
pushd contrib/credential/osxkeychain &>/dev/null || die
git_emake CC=$(tc-getCC) CFLAGS="${CFLAGS}" \
|| die "emake credential-osxkeychain"
popd &>/dev/null || die
fi
pushd Documentation &>/dev/null || die
if [[ ${PV} == *9999 ]] ; then
git_emake man || die "emake man failed"
if use doc ; then
git_emake info html || die "emake info html failed"
fi
else
if use doc ; then
git_emake info || die "emake info html failed"
fi
fi
popd &>/dev/null || die
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
git_emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" PKG_CONFIG="$(tc-getPKG_CONFIG)"
popd &>/dev/null || die
fi
pushd contrib/subtree &>/dev/null || die
git_emake git-subtree || die
# git-subtree.1 requires the full USE=doc dependency stack
use doc && git_emake git-subtree.html git-subtree.1
popd &>/dev/null || die
pushd contrib/diff-highlight &>/dev/null || die
git_emake || die
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake || die
popd &>/dev/null || die
fi
}
src_install() {
git_emake DESTDIR="${D}" install || die "make install failed"
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
dobin contrib/credential/osxkeychain/git-credential-osxkeychain
fi
# Depending on the tarball and manual rebuild of the documentation, the
# manpages may exist in either OR both of these directories.
find man?/*.[157] >/dev/null 2>&1 && doman man?/*.[157]
find Documentation/*.[157] >/dev/null 2>&1 && doman Documentation/*.[157]
dodoc README* Documentation/{SubmittingPatches,CodingGuidelines}
use doc && dodir /usr/share/doc/${PF}/html
local d
for d in / /howto/ /technical/ ; do
docinto ${d}
dodoc Documentation${d}*.txt
if use doc ; then
docinto ${d}/html
dodoc Documentation${d}*.html
fi
done
docinto /
# Upstream does not ship this pre-built :-(
use doc && doinfo Documentation/{git,gitman}.info
newbashcomp contrib/completion/git-completion.bash ${PN}
bashcomp_alias git gitk
# Not really a bash-completion file (bug #477920)
# but still needed uncompressed (bug #507480)
insinto /usr/share/${PN}
doins contrib/completion/git-prompt.sh
#dobin contrib/fast-import/git-p4 # Moved upstream
#dodoc contrib/fast-import/git-p4.txt # Moved upstream
newbin contrib/fast-import/import-tars.perl import-tars
exeinto /usr/libexec/git-core/
newexe contrib/git-resurrect.sh git-resurrect
# git-subtree
pushd contrib/subtree &>/dev/null || die
git_emake DESTDIR="${D}" install || die "Failed to emake install for git-subtree"
if use doc ; then
# Do not move git subtree install-man outside USE=doc!
git_emake DESTDIR="${D}" install-man install-html || die "Failed to emake install-html install-man for git-subtree"
fi
newdoc README README.git-subtree
dodoc git-subtree.txt
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake DESTDIR="${D}" install
popd &>/dev/null || die
fi
# diff-highlight
dobin contrib/diff-highlight/diff-highlight
newdoc contrib/diff-highlight/README README.diff-highlight
# git-jump
exeinto /usr/libexec/git-core/
doexe contrib/git-jump/git-jump
newdoc contrib/git-jump/README git-jump.txt
# git-contacts
exeinto /usr/libexec/git-core/
doexe contrib/contacts/git-contacts
dodoc contrib/contacts/git-contacts.txt
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
dobin git-credential-libsecret
popd &>/dev/null || die
fi
dodir /usr/share/${PN}/contrib
# The following are excluded:
# completion - installed above
# diff-highlight - done above
# emacs - removed upstream
# examples - these are stuff that is not used in Git anymore actually
# git-jump - done above
# gitview - installed above
# p4import - excluded because fast-import has a better one
# patches - stuff the Git guys made to go upstream to other places
# persistent-https - TODO
# mw-to-git - TODO
# subtree - build seperately
# svnimport - use git-svn
# thunderbird-patch-inline - fixes thunderbird
local contrib_objects=(
buildsystems
fast-import
hg-to-git
hooks
remotes2config.sh
rerere-train.sh
stats
workdir
)
local i
for i in "${contrib_objects[@]}" ; do
cp -rf \
"${S}"/contrib/${i} \
"${ED}"/usr/share/${PN}/contrib \
|| die "Failed contrib ${i}"
done
if use perl && use cgi ; then
# We used to install in /usr/share/${PN}/gitweb
# but upstream installs in /usr/share/gitweb
# so we will install a symlink and use their location for compat with other
# distros
dosym ../gitweb /usr/share/${PN}/gitweb
# INSTALL discusses configuration issues, not just installation
docinto /
newdoc "${S}"/gitweb/INSTALL INSTALL.gitweb
newdoc "${S}"/gitweb/README README.gitweb
for d in "${ED}"/usr/lib{,64}/perl5/ ; do
if [[ -d "${d}" ]] ; then
find "${d}" -name .packlist -delete || die
fi
done
else
rm -rf "${ED}"/usr/share/gitweb
fi
if ! use subversion ; then
rm -f "${ED}"/usr/libexec/git-core/git-svn \
"${ED}"/usr/share/man/man1/git-svn.1*
fi
if use xinetd ; then
insinto /etc/xinetd.d
newins "${FILESDIR}"/git-daemon.xinetd git-daemon
fi
if ! use prefix ; then
newinitd "${FILESDIR}"/git-daemon-r1.initd git-daemon
newconfd "${FILESDIR}"/git-daemon.confd git-daemon
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" \
"git-daemon@.service"
systemd_dounit "${FILESDIR}/git-daemon.socket"
fi
perl_delete_localpod
# Remove disabled linguas
# we could remove sources in src_prepare, but install does not
# handle missing locale dir well
rm_loc() {
if [[ -e "${ED}/usr/share/locale/${1}" ]] ; then
rm -r "${ED}/usr/share/locale/${1}" || die
fi
}
plocale_for_each_disabled_locale rm_loc
}
src_test() {
local disabled=()
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
[[ ${cvs} -gt 0 ]] && \
has_version dev-vcs/cvs && \
let cvs=${cvs}+1
[[ ${cvs} -gt 1 ]] && \
has_version "dev-vcs/cvs[server]" && \
let cvs=${cvs}+1
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "tests failed. Please file a bug."
}
showpkgdeps() {
local pkg=$1
shift
elog " $(printf "%-17s:" ${pkg}) ${@}"
}
pkg_postinst() {
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
elog "These additional scripts need some dependencies:"
echo
showpkgdeps git-quiltimport "dev-util/quilt"
showpkgdeps git-instaweb \
"|| ( www-servers/lighttpd www-servers/apache www-servers/nginx )"
echo
use mediawiki-experimental && ewarn "Using experimental git-mediawiki patches. The stability of cloned wiki filesystems is not guaranteed."
}

View File

@ -1,640 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
GENTOO_DEPEND_ON_PERL=no
# bug #329479: git-remote-testgit is not multiple-version aware
PYTHON_COMPAT=( python3_{8..10} )
inherit toolchain-funcs perl-module bash-completion-r1 plocale python-single-r1 systemd
PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN"
if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://git.kernel.org/pub/scm/git/git.git"
# Please ensure that all _four_ 9999 ebuilds get updated; they track the 4 upstream branches.
# See https://git-scm.com/docs/gitworkflows#_graduation
# In order of stability:
# 9999-r0: maint
# 9999-r1: master
# 9999-r2: next
# 9999-r3: seen
case "${PVR}" in
9999) EGIT_BRANCH=maint ;;
9999-r1) EGIT_BRANCH=master ;;
9999-r2) EGIT_BRANCH=next;;
9999-r3) EGIT_BRANCH=seen ;;
esac
fi
MY_PV="${PV/_rc/.rc}"
MY_P="${PN}-${MY_PV}"
DOC_VER="${MY_PV}"
DESCRIPTION="stupid content tracker: distributed VCS designed for speed and efficiency"
HOMEPAGE="https://www.git-scm.com/"
if [[ ${PV} != *9999 ]]; then
SRC_URI_SUFFIX="xz"
SRC_URI_KORG="https://www.kernel.org/pub/software/scm/git"
[[ "${PV/rc}" != "${PV}" ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}
${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
doc? (
${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
)"
[[ "${PV}" == *_rc* ]] || \
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
LICENSE="GPL-2"
SLOT="0"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +ppcsha1 subversion tk +threads +webdav xinetd cvs test"
# Common to both DEPEND and RDEPEND
DEPEND="
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
dev-libs/openssl:0=
sys-libs/zlib
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:0= )
curl? (
net-misc/curl
webdav? ( dev-libs/expat )
)
iconv? ( virtual/libiconv )
"
RDEPEND="${DEPEND}
gpg? ( app-crypt/gnupg )
perl? (
dev-perl/Error
dev-perl/MailTools
dev-perl/Authen-SASL
>=virtual/perl-libnet-3.110.0-r4[ssl]
cgi? (
dev-perl/CGI
highlight? ( app-text/highlight )
)
cvs? (
>=dev-vcs/cvsps-2.1:0
dev-perl/DBI
dev-perl/DBD-SQLite
)
mediawiki? (
dev-perl/DateTime-Format-ISO8601
dev-perl/HTML-Tree
dev-perl/MediaWiki-API
)
subversion? (
dev-vcs/subversion[-dso(-),perl]
dev-perl/libwww-perl
dev-perl/TermReadKey
)
)
perforce? ( ${PYTHON_DEPS} )
"
# This is how info docs are created with Git:
# .txt/asciidoc --(asciidoc)---------> .xml/docbook
# .xml/docbook --(docbook2texi.pl)--> .texi
# .texi --(makeinfo)---------> .info
BDEPEND="
doc? (
app-text/asciidoc
app-text/docbook2X
app-text/xmlto
sys-apps/texinfo
)
gnome-keyring? ( virtual/pkgconfig )
nls? ( sys-devel/gettext )
test? ( app-crypt/gnupg )
"
# Live ebuild builds man pages and HTML docs, additionally
if [[ ${PV} == *9999 ]]; then
BDEPEND="${BDEPEND}
app-text/asciidoc"
fi
SITEFILE="50${PN}-gentoo.el"
S="${WORKDIR}/${MY_P}"
REQUIRED_USE="
cgi? ( perl )
cvs? ( perl )
mediawiki? ( perl )
mediawiki-experimental? ( mediawiki )
perforce? ( ${PYTHON_REQUIRED_USE} )
subversion? ( perl )
webdav? ( curl )
"
RESTRICT="!test? ( test )"
PATCHES=(
# bug #350330 - automagic CVS when we don't want it is bad.
"${FILESDIR}"/git-2.33.0_rc0-optional-cvs.patch
# Make submodule output quiet
"${FILESDIR}"/git-2.21.0-quiet-submodules-testcase.patch
)
pkg_setup() {
if use subversion && has_version "dev-vcs/subversion[dso]" ; then
ewarn "Per Gentoo bugs #223747, #238586, when subversion is built"
ewarn "with USE=dso, there may be weird crashes in git-svn. You"
ewarn "have been warned."
fi
if use perforce ; then
python-single-r1_pkg_setup
fi
}
# This is needed because for some obscure reasons future calls to make don't
# pick up these exports if we export them in src_unpack()
exportmakeopts() {
local extlibs myopts
myopts=(
ASCIIDOC_NO_ROFF=YesPlease
$(usex cvs '' NO_CVS=YesPlease)
$(usex elibc_musl NO_REGEX=YesPlease '')
$(usex iconv '' NO_ICONV=YesPlease)
$(usex nls '' NO_GETTEXT=YesPlease)
$(usex perl 'INSTALLDIRS=vendor NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
$(usex perforce '' NO_PYTHON=YesPlease)
$(usex subversion '' NO_SVN_TESTS=YesPlease)
$(usex threads '' NO_PTHREADS=YesPlease)
$(usex tk '' NO_TCLTK=YesPlease)
)
if use blksha1 ; then
myopts+=( BLK_SHA1=YesPlease )
elif use ppcsha1 ; then
myopts+=( PPC_SHA1=YesPlease )
fi
if use curl ; then
use webdav || myopts+=( NO_EXPAT=YesPlease )
else
myopts+=( NO_CURL=YesPlease )
fi
# broken assumptions, because of static build system ...
myopts+=(
NO_FINK=YesPlease
NO_DARWIN_PORTS=YesPlease
INSTALL=install
TAR=tar
SHELL_PATH="${EPREFIX}/bin/sh"
SANE_TOOL_PATH=
OLD_ICONV=
NO_EXTERNAL_GREP=
)
# can't define this to null, since the entire makefile depends on it
sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die
if use pcre; then
myopts+=( USE_LIBPCRE2=YesPlease )
extlibs+=( -lpcre2-8 )
fi
if [[ ${CHOST} == *-solaris* ]]; then
myopts+=(
NEEDS_LIBICONV=YesPlease
HAVE_CLOCK_MONOTONIC=1
)
if grep -Fq getdelim "${EROOT}"/usr/include/stdio.h ; then
myopts+=( HAVE_GETDELIM=1 )
fi
fi
if has_version '>=app-text/asciidoc-8.0' ; then
myopts+=( ASCIIDOC8=YesPlease )
fi
export MY_MAKEOPTS="${myopts[@]}"
export EXTLIBS="${extlibs[@]}"
}
src_unpack() {
if [[ ${PV} != *9999 ]] ; then
unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
cd "${S}" || die
unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
if use doc ; then
pushd "${S}"/Documentation &>/dev/null || die
unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
popd &>/dev/null || die
fi
else
git-r3_src_unpack
#cp "${FILESDIR}"/GIT-VERSION-GEN .
fi
}
src_prepare() {
# add experimental patches to improve mediawiki support
# see patches for origin
if use mediawiki-experimental ; then
PATCHES+=(
"${FILESDIR}"/git-2.7.0-mediawiki-namespaces.patch
"${FILESDIR}"/git-2.7.0-mediawiki-subpages.patch
"${FILESDIR}"/git-2.7.0-mediawiki-500pages.patch
)
fi
default
if use prefix ; then
# bug #757309
eapply "${FILESDIR}"/git-2.31.0-darwin-prefix-gettext.patch
fi
sed -i \
-e 's:^\(CFLAGS[[:space:]]*=\).*$:\1 $(OPTCFLAGS) -Wall:' \
-e 's:^\(LDFLAGS[[:space:]]*=\).*$:\1 $(OPTLDFLAGS):' \
-e 's:^\(CC[[:space:]]* =\).*$:\1$(OPTCC):' \
-e 's:^\(AR[[:space:]]* =\).*$:\1$(OPTAR):' \
-e "s:\(PYTHON_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
-e "s:\(PERL_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
Makefile || die
# Fix docbook2texi command
sed -r -i 's/DOCBOOK2X_TEXI[[:space:]]*=[[:space:]]*docbook2x-texi/DOCBOOK2X_TEXI = docbook2texi.pl/' \
Documentation/Makefile || die
}
git_emake() {
# bug #320647: PYTHON_PATH
local PYTHON_PATH=""
use perforce && PYTHON_PATH="${PYTHON}"
emake ${MY_MAKEOPTS} \
prefix="${EPREFIX}"/usr \
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
perllibdir="$(use perl && perl_get_raw_vendorlib)" \
sysconfdir="${EPREFIX}"/etc \
GIT_TEST_OPTS="--no-color" \
OPTAR="$(tc-getAR)" \
OPTCC="$(tc-getCC)" \
OPTCFLAGS="${CFLAGS}" \
OPTLDFLAGS="${LDFLAGS}" \
PERL_PATH="${EPREFIX}/usr/bin/perl" \
PERL_MM_OPT="" \
PYTHON_PATH="${PYTHON_PATH}" \
V=1 \
"$@"
}
src_configure() {
exportmakeopts
}
src_compile() {
git_emake || die "emake failed"
if use perl && use cgi ; then
git_emake gitweb || die "emake gitweb (cgi) failed"
fi
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
pushd contrib/credential/osxkeychain &>/dev/null || die
git_emake CC=$(tc-getCC) CFLAGS="${CFLAGS}" \
|| die "emake credential-osxkeychain"
popd &>/dev/null || die
fi
pushd Documentation &>/dev/null || die
if [[ ${PV} == *9999 ]] ; then
git_emake man || die "emake man failed"
if use doc ; then
git_emake info html || die "emake info html failed"
fi
else
if use doc ; then
git_emake info || die "emake info html failed"
fi
fi
popd &>/dev/null || die
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
git_emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" PKG_CONFIG="$(tc-getPKG_CONFIG)"
popd &>/dev/null || die
fi
pushd contrib/subtree &>/dev/null || die
git_emake git-subtree || die
# git-subtree.1 requires the full USE=doc dependency stack
use doc && git_emake git-subtree.html git-subtree.1
popd &>/dev/null || die
pushd contrib/diff-highlight &>/dev/null || die
git_emake || die
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake || die
popd &>/dev/null || die
fi
}
src_install() {
git_emake DESTDIR="${D}" install || die "make install failed"
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
dobin contrib/credential/osxkeychain/git-credential-osxkeychain
fi
# Depending on the tarball and manual rebuild of the documentation, the
# manpages may exist in either OR both of these directories.
find man?/*.[157] >/dev/null 2>&1 && doman man?/*.[157]
find Documentation/*.[157] >/dev/null 2>&1 && doman Documentation/*.[157]
dodoc README* Documentation/{SubmittingPatches,CodingGuidelines}
use doc && dodir /usr/share/doc/${PF}/html
local d
for d in / /howto/ /technical/ ; do
docinto ${d}
dodoc Documentation${d}*.txt
if use doc ; then
docinto ${d}/html
dodoc Documentation${d}*.html
fi
done
docinto /
# Upstream does not ship this pre-built :-(
use doc && doinfo Documentation/{git,gitman}.info
newbashcomp contrib/completion/git-completion.bash ${PN}
bashcomp_alias git gitk
# Not really a bash-completion file (bug #477920)
# but still needed uncompressed (bug #507480)
insinto /usr/share/${PN}
doins contrib/completion/git-prompt.sh
#dobin contrib/fast-import/git-p4 # Moved upstream
#dodoc contrib/fast-import/git-p4.txt # Moved upstream
newbin contrib/fast-import/import-tars.perl import-tars
exeinto /usr/libexec/git-core/
newexe contrib/git-resurrect.sh git-resurrect
# git-subtree
pushd contrib/subtree &>/dev/null || die
git_emake DESTDIR="${D}" install || die "Failed to emake install for git-subtree"
if use doc ; then
# Do not move git subtree install-man outside USE=doc!
git_emake DESTDIR="${D}" install-man install-html || die "Failed to emake install-html install-man for git-subtree"
fi
newdoc README README.git-subtree
dodoc git-subtree.txt
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake DESTDIR="${D}" install
popd &>/dev/null || die
fi
# diff-highlight
dobin contrib/diff-highlight/diff-highlight
newdoc contrib/diff-highlight/README README.diff-highlight
# git-jump
exeinto /usr/libexec/git-core/
doexe contrib/git-jump/git-jump
newdoc contrib/git-jump/README git-jump.txt
# git-contacts
exeinto /usr/libexec/git-core/
doexe contrib/contacts/git-contacts
dodoc contrib/contacts/git-contacts.txt
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
dobin git-credential-libsecret
popd &>/dev/null || die
fi
dodir /usr/share/${PN}/contrib
# The following are excluded:
# completion - installed above
# diff-highlight - done above
# emacs - removed upstream
# examples - these are stuff that is not used in Git anymore actually
# git-jump - done above
# gitview - installed above
# p4import - excluded because fast-import has a better one
# patches - stuff the Git guys made to go upstream to other places
# persistent-https - TODO
# mw-to-git - TODO
# subtree - build seperately
# svnimport - use git-svn
# thunderbird-patch-inline - fixes thunderbird
local contrib_objects=(
buildsystems
fast-import
hg-to-git
hooks
remotes2config.sh
rerere-train.sh
stats
workdir
)
local i
for i in "${contrib_objects[@]}" ; do
cp -rf \
"${S}"/contrib/${i} \
"${ED}"/usr/share/${PN}/contrib \
|| die "Failed contrib ${i}"
done
if use perl && use cgi ; then
# We used to install in /usr/share/${PN}/gitweb
# but upstream installs in /usr/share/gitweb
# so we will install a symlink and use their location for compat with other
# distros
dosym ../gitweb /usr/share/${PN}/gitweb
# INSTALL discusses configuration issues, not just installation
docinto /
newdoc "${S}"/gitweb/INSTALL INSTALL.gitweb
newdoc "${S}"/gitweb/README README.gitweb
for d in "${ED}"/usr/lib{,64}/perl5/ ; do
if [[ -d "${d}" ]] ; then
find "${d}" -name .packlist -delete || die
fi
done
else
rm -rf "${ED}"/usr/share/gitweb
fi
if ! use subversion ; then
rm -f "${ED}"/usr/libexec/git-core/git-svn \
"${ED}"/usr/share/man/man1/git-svn.1*
fi
if use xinetd ; then
insinto /etc/xinetd.d
newins "${FILESDIR}"/git-daemon.xinetd git-daemon
fi
if ! use prefix ; then
newinitd "${FILESDIR}"/git-daemon-r2.initd git-daemon
newconfd "${FILESDIR}"/git-daemon.confd git-daemon
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" \
"git-daemon@.service"
systemd_dounit "${FILESDIR}/git-daemon.socket"
fi
perl_delete_localpod
# Remove disabled linguas
# we could remove sources in src_prepare, but install does not
# handle missing locale dir well
rm_loc() {
if [[ -e "${ED}/usr/share/locale/${1}" ]] ; then
rm -r "${ED}/usr/share/locale/${1}" || die
fi
}
plocale_for_each_disabled_locale rm_loc
}
src_test() {
local disabled=()
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
[[ ${cvs} -gt 0 ]] && \
has_version dev-vcs/cvs && \
let cvs=${cvs}+1
[[ ${cvs} -gt 1 ]] && \
has_version "dev-vcs/cvs[server]" && \
let cvs=${cvs}+1
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "tests failed. Please file a bug."
}
showpkgdeps() {
local pkg=$1
shift
elog " $(printf "%-17s:" ${pkg}) ${@}"
}
pkg_postinst() {
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
elog "These additional scripts need some dependencies:"
echo
showpkgdeps git-quiltimport "dev-util/quilt"
showpkgdeps git-instaweb \
"|| ( www-servers/lighttpd www-servers/apache www-servers/nginx )"
echo
use mediawiki-experimental && ewarn "Using experimental git-mediawiki patches. The stability of cloned wiki filesystems is not guaranteed."
}

View File

@ -1,640 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
GENTOO_DEPEND_ON_PERL=no
# bug #329479: git-remote-testgit is not multiple-version aware
PYTHON_COMPAT=( python3_{8..10} )
inherit toolchain-funcs perl-module bash-completion-r1 plocale python-single-r1 systemd
PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN"
if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://git.kernel.org/pub/scm/git/git.git"
# Please ensure that all _four_ 9999 ebuilds get updated; they track the 4 upstream branches.
# See https://git-scm.com/docs/gitworkflows#_graduation
# In order of stability:
# 9999-r0: maint
# 9999-r1: master
# 9999-r2: next
# 9999-r3: seen
case "${PVR}" in
9999) EGIT_BRANCH=maint ;;
9999-r1) EGIT_BRANCH=master ;;
9999-r2) EGIT_BRANCH=next;;
9999-r3) EGIT_BRANCH=seen ;;
esac
fi
MY_PV="${PV/_rc/.rc}"
MY_P="${PN}-${MY_PV}"
DOC_VER="${MY_PV}"
DESCRIPTION="stupid content tracker: distributed VCS designed for speed and efficiency"
HOMEPAGE="https://www.git-scm.com/"
if [[ ${PV} != *9999 ]]; then
SRC_URI_SUFFIX="xz"
SRC_URI_KORG="https://www.kernel.org/pub/software/scm/git"
[[ "${PV/rc}" != "${PV}" ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}
${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
doc? (
${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
)"
[[ "${PV}" == *_rc* ]] || \
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
LICENSE="GPL-2"
SLOT="0"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +ppcsha1 subversion tk +threads +webdav xinetd cvs test"
# Common to both DEPEND and RDEPEND
DEPEND="
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
dev-libs/openssl:0=
sys-libs/zlib
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:0= )
curl? (
net-misc/curl
webdav? ( dev-libs/expat )
)
iconv? ( virtual/libiconv )
"
RDEPEND="${DEPEND}
gpg? ( app-crypt/gnupg )
perl? (
dev-perl/Error
dev-perl/MailTools
dev-perl/Authen-SASL
>=virtual/perl-libnet-3.110.0-r4[ssl]
cgi? (
dev-perl/CGI
highlight? ( app-text/highlight )
)
cvs? (
>=dev-vcs/cvsps-2.1:0
dev-perl/DBI
dev-perl/DBD-SQLite
)
mediawiki? (
dev-perl/DateTime-Format-ISO8601
dev-perl/HTML-Tree
dev-perl/MediaWiki-API
)
subversion? (
dev-vcs/subversion[-dso(-),perl]
dev-perl/libwww-perl
dev-perl/TermReadKey
)
)
perforce? ( ${PYTHON_DEPS} )
"
# This is how info docs are created with Git:
# .txt/asciidoc --(asciidoc)---------> .xml/docbook
# .xml/docbook --(docbook2texi.pl)--> .texi
# .texi --(makeinfo)---------> .info
BDEPEND="
doc? (
app-text/asciidoc
app-text/docbook2X
app-text/xmlto
sys-apps/texinfo
)
gnome-keyring? ( virtual/pkgconfig )
nls? ( sys-devel/gettext )
test? ( app-crypt/gnupg )
"
# Live ebuild builds man pages and HTML docs, additionally
if [[ ${PV} == *9999 ]]; then
BDEPEND="${BDEPEND}
app-text/asciidoc"
fi
SITEFILE="50${PN}-gentoo.el"
S="${WORKDIR}/${MY_P}"
REQUIRED_USE="
cgi? ( perl )
cvs? ( perl )
mediawiki? ( perl )
mediawiki-experimental? ( mediawiki )
perforce? ( ${PYTHON_REQUIRED_USE} )
subversion? ( perl )
webdav? ( curl )
"
RESTRICT="!test? ( test )"
PATCHES=(
# bug #350330 - automagic CVS when we don't want it is bad.
"${FILESDIR}"/git-2.33.0_rc0-optional-cvs.patch
# Make submodule output quiet
"${FILESDIR}"/git-2.21.0-quiet-submodules-testcase.patch
)
pkg_setup() {
if use subversion && has_version "dev-vcs/subversion[dso]" ; then
ewarn "Per Gentoo bugs #223747, #238586, when subversion is built"
ewarn "with USE=dso, there may be weird crashes in git-svn. You"
ewarn "have been warned."
fi
if use perforce ; then
python-single-r1_pkg_setup
fi
}
# This is needed because for some obscure reasons future calls to make don't
# pick up these exports if we export them in src_unpack()
exportmakeopts() {
local extlibs myopts
myopts=(
ASCIIDOC_NO_ROFF=YesPlease
$(usex cvs '' NO_CVS=YesPlease)
$(usex elibc_musl NO_REGEX=YesPlease '')
$(usex iconv '' NO_ICONV=YesPlease)
$(usex nls '' NO_GETTEXT=YesPlease)
$(usex perl 'INSTALLDIRS=vendor NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
$(usex perforce '' NO_PYTHON=YesPlease)
$(usex subversion '' NO_SVN_TESTS=YesPlease)
$(usex threads '' NO_PTHREADS=YesPlease)
$(usex tk '' NO_TCLTK=YesPlease)
)
if use blksha1 ; then
myopts+=( BLK_SHA1=YesPlease )
elif use ppcsha1 ; then
myopts+=( PPC_SHA1=YesPlease )
fi
if use curl ; then
use webdav || myopts+=( NO_EXPAT=YesPlease )
else
myopts+=( NO_CURL=YesPlease )
fi
# broken assumptions, because of static build system ...
myopts+=(
NO_FINK=YesPlease
NO_DARWIN_PORTS=YesPlease
INSTALL=install
TAR=tar
SHELL_PATH="${EPREFIX}/bin/sh"
SANE_TOOL_PATH=
OLD_ICONV=
NO_EXTERNAL_GREP=
)
# can't define this to null, since the entire makefile depends on it
sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die
if use pcre; then
myopts+=( USE_LIBPCRE2=YesPlease )
extlibs+=( -lpcre2-8 )
fi
if [[ ${CHOST} == *-solaris* ]]; then
myopts+=(
NEEDS_LIBICONV=YesPlease
HAVE_CLOCK_MONOTONIC=1
)
if grep -Fq getdelim "${EROOT}"/usr/include/stdio.h ; then
myopts+=( HAVE_GETDELIM=1 )
fi
fi
if has_version '>=app-text/asciidoc-8.0' ; then
myopts+=( ASCIIDOC8=YesPlease )
fi
export MY_MAKEOPTS="${myopts[@]}"
export EXTLIBS="${extlibs[@]}"
}
src_unpack() {
if [[ ${PV} != *9999 ]] ; then
unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
cd "${S}" || die
unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
if use doc ; then
pushd "${S}"/Documentation &>/dev/null || die
unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
popd &>/dev/null || die
fi
else
git-r3_src_unpack
#cp "${FILESDIR}"/GIT-VERSION-GEN .
fi
}
src_prepare() {
# add experimental patches to improve mediawiki support
# see patches for origin
if use mediawiki-experimental ; then
PATCHES+=(
"${FILESDIR}"/git-2.7.0-mediawiki-namespaces.patch
"${FILESDIR}"/git-2.7.0-mediawiki-subpages.patch
"${FILESDIR}"/git-2.7.0-mediawiki-500pages.patch
)
fi
default
if use prefix ; then
# bug #757309
eapply "${FILESDIR}"/git-2.31.0-darwin-prefix-gettext.patch
fi
sed -i \
-e 's:^\(CFLAGS[[:space:]]*=\).*$:\1 $(OPTCFLAGS) -Wall:' \
-e 's:^\(LDFLAGS[[:space:]]*=\).*$:\1 $(OPTLDFLAGS):' \
-e 's:^\(CC[[:space:]]* =\).*$:\1$(OPTCC):' \
-e 's:^\(AR[[:space:]]* =\).*$:\1$(OPTAR):' \
-e "s:\(PYTHON_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
-e "s:\(PERL_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
Makefile || die
# Fix docbook2texi command
sed -r -i 's/DOCBOOK2X_TEXI[[:space:]]*=[[:space:]]*docbook2x-texi/DOCBOOK2X_TEXI = docbook2texi.pl/' \
Documentation/Makefile || die
}
git_emake() {
# bug #320647: PYTHON_PATH
local PYTHON_PATH=""
use perforce && PYTHON_PATH="${PYTHON}"
emake ${MY_MAKEOPTS} \
prefix="${EPREFIX}"/usr \
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
perllibdir="$(use perl && perl_get_raw_vendorlib)" \
sysconfdir="${EPREFIX}"/etc \
GIT_TEST_OPTS="--no-color" \
OPTAR="$(tc-getAR)" \
OPTCC="$(tc-getCC)" \
OPTCFLAGS="${CFLAGS}" \
OPTLDFLAGS="${LDFLAGS}" \
PERL_PATH="${EPREFIX}/usr/bin/perl" \
PERL_MM_OPT="" \
PYTHON_PATH="${PYTHON_PATH}" \
V=1 \
"$@"
}
src_configure() {
exportmakeopts
}
src_compile() {
git_emake || die "emake failed"
if use perl && use cgi ; then
git_emake gitweb || die "emake gitweb (cgi) failed"
fi
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
pushd contrib/credential/osxkeychain &>/dev/null || die
git_emake CC=$(tc-getCC) CFLAGS="${CFLAGS}" \
|| die "emake credential-osxkeychain"
popd &>/dev/null || die
fi
pushd Documentation &>/dev/null || die
if [[ ${PV} == *9999 ]] ; then
git_emake man || die "emake man failed"
if use doc ; then
git_emake info html || die "emake info html failed"
fi
else
if use doc ; then
git_emake info || die "emake info html failed"
fi
fi
popd &>/dev/null || die
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
git_emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" PKG_CONFIG="$(tc-getPKG_CONFIG)"
popd &>/dev/null || die
fi
pushd contrib/subtree &>/dev/null || die
git_emake git-subtree || die
# git-subtree.1 requires the full USE=doc dependency stack
use doc && git_emake git-subtree.html git-subtree.1
popd &>/dev/null || die
pushd contrib/diff-highlight &>/dev/null || die
git_emake || die
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake || die
popd &>/dev/null || die
fi
}
src_install() {
git_emake DESTDIR="${D}" install || die "make install failed"
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
dobin contrib/credential/osxkeychain/git-credential-osxkeychain
fi
# Depending on the tarball and manual rebuild of the documentation, the
# manpages may exist in either OR both of these directories.
find man?/*.[157] >/dev/null 2>&1 && doman man?/*.[157]
find Documentation/*.[157] >/dev/null 2>&1 && doman Documentation/*.[157]
dodoc README* Documentation/{SubmittingPatches,CodingGuidelines}
use doc && dodir /usr/share/doc/${PF}/html
local d
for d in / /howto/ /technical/ ; do
docinto ${d}
dodoc Documentation${d}*.txt
if use doc ; then
docinto ${d}/html
dodoc Documentation${d}*.html
fi
done
docinto /
# Upstream does not ship this pre-built :-(
use doc && doinfo Documentation/{git,gitman}.info
newbashcomp contrib/completion/git-completion.bash ${PN}
bashcomp_alias git gitk
# Not really a bash-completion file (bug #477920)
# but still needed uncompressed (bug #507480)
insinto /usr/share/${PN}
doins contrib/completion/git-prompt.sh
#dobin contrib/fast-import/git-p4 # Moved upstream
#dodoc contrib/fast-import/git-p4.txt # Moved upstream
newbin contrib/fast-import/import-tars.perl import-tars
exeinto /usr/libexec/git-core/
newexe contrib/git-resurrect.sh git-resurrect
# git-subtree
pushd contrib/subtree &>/dev/null || die
git_emake DESTDIR="${D}" install || die "Failed to emake install for git-subtree"
if use doc ; then
# Do not move git subtree install-man outside USE=doc!
git_emake DESTDIR="${D}" install-man install-html || die "Failed to emake install-html install-man for git-subtree"
fi
newdoc README README.git-subtree
dodoc git-subtree.txt
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake DESTDIR="${D}" install
popd &>/dev/null || die
fi
# diff-highlight
dobin contrib/diff-highlight/diff-highlight
newdoc contrib/diff-highlight/README README.diff-highlight
# git-jump
exeinto /usr/libexec/git-core/
doexe contrib/git-jump/git-jump
newdoc contrib/git-jump/README git-jump.txt
# git-contacts
exeinto /usr/libexec/git-core/
doexe contrib/contacts/git-contacts
dodoc contrib/contacts/git-contacts.txt
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
dobin git-credential-libsecret
popd &>/dev/null || die
fi
dodir /usr/share/${PN}/contrib
# The following are excluded:
# completion - installed above
# diff-highlight - done above
# emacs - removed upstream
# examples - these are stuff that is not used in Git anymore actually
# git-jump - done above
# gitview - installed above
# p4import - excluded because fast-import has a better one
# patches - stuff the Git guys made to go upstream to other places
# persistent-https - TODO
# mw-to-git - TODO
# subtree - build seperately
# svnimport - use git-svn
# thunderbird-patch-inline - fixes thunderbird
local contrib_objects=(
buildsystems
fast-import
hg-to-git
hooks
remotes2config.sh
rerere-train.sh
stats
workdir
)
local i
for i in "${contrib_objects[@]}" ; do
cp -rf \
"${S}"/contrib/${i} \
"${ED}"/usr/share/${PN}/contrib \
|| die "Failed contrib ${i}"
done
if use perl && use cgi ; then
# We used to install in /usr/share/${PN}/gitweb
# but upstream installs in /usr/share/gitweb
# so we will install a symlink and use their location for compat with other
# distros
dosym ../gitweb /usr/share/${PN}/gitweb
# INSTALL discusses configuration issues, not just installation
docinto /
newdoc "${S}"/gitweb/INSTALL INSTALL.gitweb
newdoc "${S}"/gitweb/README README.gitweb
for d in "${ED}"/usr/lib{,64}/perl5/ ; do
if [[ -d "${d}" ]] ; then
find "${d}" -name .packlist -delete || die
fi
done
else
rm -rf "${ED}"/usr/share/gitweb
fi
if ! use subversion ; then
rm -f "${ED}"/usr/libexec/git-core/git-svn \
"${ED}"/usr/share/man/man1/git-svn.1*
fi
if use xinetd ; then
insinto /etc/xinetd.d
newins "${FILESDIR}"/git-daemon.xinetd git-daemon
fi
if ! use prefix ; then
newinitd "${FILESDIR}"/git-daemon-r1.initd git-daemon
newconfd "${FILESDIR}"/git-daemon.confd git-daemon
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" \
"git-daemon@.service"
systemd_dounit "${FILESDIR}/git-daemon.socket"
fi
perl_delete_localpod
# Remove disabled linguas
# we could remove sources in src_prepare, but install does not
# handle missing locale dir well
rm_loc() {
if [[ -e "${ED}/usr/share/locale/${1}" ]] ; then
rm -r "${ED}/usr/share/locale/${1}" || die
fi
}
plocale_for_each_disabled_locale rm_loc
}
src_test() {
local disabled=()
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
[[ ${cvs} -gt 0 ]] && \
has_version dev-vcs/cvs && \
let cvs=${cvs}+1
[[ ${cvs} -gt 1 ]] && \
has_version "dev-vcs/cvs[server]" && \
let cvs=${cvs}+1
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "tests failed. Please file a bug."
}
showpkgdeps() {
local pkg=$1
shift
elog " $(printf "%-17s:" ${pkg}) ${@}"
}
pkg_postinst() {
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
elog "These additional scripts need some dependencies:"
echo
showpkgdeps git-quiltimport "dev-util/quilt"
showpkgdeps git-instaweb \
"|| ( www-servers/lighttpd www-servers/apache www-servers/nginx )"
echo
use mediawiki-experimental && ewarn "Using experimental git-mediawiki patches. The stability of cloned wiki filesystems is not guaranteed."
}

View File

@ -1,640 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
GENTOO_DEPEND_ON_PERL=no
# bug #329479: git-remote-testgit is not multiple-version aware
PYTHON_COMPAT=( python3_{8..10} )
inherit toolchain-funcs perl-module bash-completion-r1 plocale python-single-r1 systemd
PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN"
if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://git.kernel.org/pub/scm/git/git.git"
# Please ensure that all _four_ 9999 ebuilds get updated; they track the 4 upstream branches.
# See https://git-scm.com/docs/gitworkflows#_graduation
# In order of stability:
# 9999-r0: maint
# 9999-r1: master
# 9999-r2: next
# 9999-r3: seen
case "${PVR}" in
9999) EGIT_BRANCH=maint ;;
9999-r1) EGIT_BRANCH=master ;;
9999-r2) EGIT_BRANCH=next;;
9999-r3) EGIT_BRANCH=seen ;;
esac
fi
MY_PV="${PV/_rc/.rc}"
MY_P="${PN}-${MY_PV}"
DOC_VER="${MY_PV}"
DESCRIPTION="stupid content tracker: distributed VCS designed for speed and efficiency"
HOMEPAGE="https://www.git-scm.com/"
if [[ ${PV} != *9999 ]]; then
SRC_URI_SUFFIX="xz"
SRC_URI_KORG="https://www.kernel.org/pub/software/scm/git"
[[ "${PV/rc}" != "${PV}" ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}
${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
doc? (
${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
)"
[[ "${PV}" == *_rc* ]] || \
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
LICENSE="GPL-2"
SLOT="0"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +ppcsha1 subversion tk +threads +webdav xinetd cvs test"
# Common to both DEPEND and RDEPEND
DEPEND="
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
dev-libs/openssl:0=
sys-libs/zlib
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:0= )
curl? (
net-misc/curl
webdav? ( dev-libs/expat )
)
iconv? ( virtual/libiconv )
"
RDEPEND="${DEPEND}
gpg? ( app-crypt/gnupg )
perl? (
dev-perl/Error
dev-perl/MailTools
dev-perl/Authen-SASL
>=virtual/perl-libnet-3.110.0-r4[ssl]
cgi? (
dev-perl/CGI
highlight? ( app-text/highlight )
)
cvs? (
>=dev-vcs/cvsps-2.1:0
dev-perl/DBI
dev-perl/DBD-SQLite
)
mediawiki? (
dev-perl/DateTime-Format-ISO8601
dev-perl/HTML-Tree
dev-perl/MediaWiki-API
)
subversion? (
dev-vcs/subversion[-dso(-),perl]
dev-perl/libwww-perl
dev-perl/TermReadKey
)
)
perforce? ( ${PYTHON_DEPS} )
"
# This is how info docs are created with Git:
# .txt/asciidoc --(asciidoc)---------> .xml/docbook
# .xml/docbook --(docbook2texi.pl)--> .texi
# .texi --(makeinfo)---------> .info
BDEPEND="
doc? (
app-text/asciidoc
app-text/docbook2X
app-text/xmlto
sys-apps/texinfo
)
gnome-keyring? ( virtual/pkgconfig )
nls? ( sys-devel/gettext )
test? ( app-crypt/gnupg )
"
# Live ebuild builds man pages and HTML docs, additionally
if [[ ${PV} == *9999 ]]; then
BDEPEND="${BDEPEND}
app-text/asciidoc"
fi
SITEFILE="50${PN}-gentoo.el"
S="${WORKDIR}/${MY_P}"
REQUIRED_USE="
cgi? ( perl )
cvs? ( perl )
mediawiki? ( perl )
mediawiki-experimental? ( mediawiki )
perforce? ( ${PYTHON_REQUIRED_USE} )
subversion? ( perl )
webdav? ( curl )
"
RESTRICT="!test? ( test )"
PATCHES=(
# bug #350330 - automagic CVS when we don't want it is bad.
"${FILESDIR}"/git-2.33.0_rc0-optional-cvs.patch
# Make submodule output quiet
"${FILESDIR}"/git-2.21.0-quiet-submodules-testcase.patch
)
pkg_setup() {
if use subversion && has_version "dev-vcs/subversion[dso]" ; then
ewarn "Per Gentoo bugs #223747, #238586, when subversion is built"
ewarn "with USE=dso, there may be weird crashes in git-svn. You"
ewarn "have been warned."
fi
if use perforce ; then
python-single-r1_pkg_setup
fi
}
# This is needed because for some obscure reasons future calls to make don't
# pick up these exports if we export them in src_unpack()
exportmakeopts() {
local extlibs myopts
myopts=(
ASCIIDOC_NO_ROFF=YesPlease
$(usex cvs '' NO_CVS=YesPlease)
$(usex elibc_musl NO_REGEX=YesPlease '')
$(usex iconv '' NO_ICONV=YesPlease)
$(usex nls '' NO_GETTEXT=YesPlease)
$(usex perl 'INSTALLDIRS=vendor NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
$(usex perforce '' NO_PYTHON=YesPlease)
$(usex subversion '' NO_SVN_TESTS=YesPlease)
$(usex threads '' NO_PTHREADS=YesPlease)
$(usex tk '' NO_TCLTK=YesPlease)
)
if use blksha1 ; then
myopts+=( BLK_SHA1=YesPlease )
elif use ppcsha1 ; then
myopts+=( PPC_SHA1=YesPlease )
fi
if use curl ; then
use webdav || myopts+=( NO_EXPAT=YesPlease )
else
myopts+=( NO_CURL=YesPlease )
fi
# broken assumptions, because of static build system ...
myopts+=(
NO_FINK=YesPlease
NO_DARWIN_PORTS=YesPlease
INSTALL=install
TAR=tar
SHELL_PATH="${EPREFIX}/bin/sh"
SANE_TOOL_PATH=
OLD_ICONV=
NO_EXTERNAL_GREP=
)
# can't define this to null, since the entire makefile depends on it
sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die
if use pcre; then
myopts+=( USE_LIBPCRE2=YesPlease )
extlibs+=( -lpcre2-8 )
fi
if [[ ${CHOST} == *-solaris* ]]; then
myopts+=(
NEEDS_LIBICONV=YesPlease
HAVE_CLOCK_MONOTONIC=1
)
if grep -Fq getdelim "${EROOT}"/usr/include/stdio.h ; then
myopts+=( HAVE_GETDELIM=1 )
fi
fi
if has_version '>=app-text/asciidoc-8.0' ; then
myopts+=( ASCIIDOC8=YesPlease )
fi
export MY_MAKEOPTS="${myopts[@]}"
export EXTLIBS="${extlibs[@]}"
}
src_unpack() {
if [[ ${PV} != *9999 ]] ; then
unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
cd "${S}" || die
unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
if use doc ; then
pushd "${S}"/Documentation &>/dev/null || die
unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
popd &>/dev/null || die
fi
else
git-r3_src_unpack
#cp "${FILESDIR}"/GIT-VERSION-GEN .
fi
}
src_prepare() {
# add experimental patches to improve mediawiki support
# see patches for origin
if use mediawiki-experimental ; then
PATCHES+=(
"${FILESDIR}"/git-2.7.0-mediawiki-namespaces.patch
"${FILESDIR}"/git-2.7.0-mediawiki-subpages.patch
"${FILESDIR}"/git-2.7.0-mediawiki-500pages.patch
)
fi
default
if use prefix ; then
# bug #757309
eapply "${FILESDIR}"/git-2.31.0-darwin-prefix-gettext.patch
fi
sed -i \
-e 's:^\(CFLAGS[[:space:]]*=\).*$:\1 $(OPTCFLAGS) -Wall:' \
-e 's:^\(LDFLAGS[[:space:]]*=\).*$:\1 $(OPTLDFLAGS):' \
-e 's:^\(CC[[:space:]]* =\).*$:\1$(OPTCC):' \
-e 's:^\(AR[[:space:]]* =\).*$:\1$(OPTAR):' \
-e "s:\(PYTHON_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
-e "s:\(PERL_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
Makefile || die
# Fix docbook2texi command
sed -r -i 's/DOCBOOK2X_TEXI[[:space:]]*=[[:space:]]*docbook2x-texi/DOCBOOK2X_TEXI = docbook2texi.pl/' \
Documentation/Makefile || die
}
git_emake() {
# bug #320647: PYTHON_PATH
local PYTHON_PATH=""
use perforce && PYTHON_PATH="${PYTHON}"
emake ${MY_MAKEOPTS} \
prefix="${EPREFIX}"/usr \
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
perllibdir="$(use perl && perl_get_raw_vendorlib)" \
sysconfdir="${EPREFIX}"/etc \
GIT_TEST_OPTS="--no-color" \
OPTAR="$(tc-getAR)" \
OPTCC="$(tc-getCC)" \
OPTCFLAGS="${CFLAGS}" \
OPTLDFLAGS="${LDFLAGS}" \
PERL_PATH="${EPREFIX}/usr/bin/perl" \
PERL_MM_OPT="" \
PYTHON_PATH="${PYTHON_PATH}" \
V=1 \
"$@"
}
src_configure() {
exportmakeopts
}
src_compile() {
git_emake || die "emake failed"
if use perl && use cgi ; then
git_emake gitweb || die "emake gitweb (cgi) failed"
fi
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
pushd contrib/credential/osxkeychain &>/dev/null || die
git_emake CC=$(tc-getCC) CFLAGS="${CFLAGS}" \
|| die "emake credential-osxkeychain"
popd &>/dev/null || die
fi
pushd Documentation &>/dev/null || die
if [[ ${PV} == *9999 ]] ; then
git_emake man || die "emake man failed"
if use doc ; then
git_emake info html || die "emake info html failed"
fi
else
if use doc ; then
git_emake info || die "emake info html failed"
fi
fi
popd &>/dev/null || die
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
git_emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" PKG_CONFIG="$(tc-getPKG_CONFIG)"
popd &>/dev/null || die
fi
pushd contrib/subtree &>/dev/null || die
git_emake git-subtree || die
# git-subtree.1 requires the full USE=doc dependency stack
use doc && git_emake git-subtree.html git-subtree.1
popd &>/dev/null || die
pushd contrib/diff-highlight &>/dev/null || die
git_emake || die
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake || die
popd &>/dev/null || die
fi
}
src_install() {
git_emake DESTDIR="${D}" install || die "make install failed"
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
dobin contrib/credential/osxkeychain/git-credential-osxkeychain
fi
# Depending on the tarball and manual rebuild of the documentation, the
# manpages may exist in either OR both of these directories.
find man?/*.[157] >/dev/null 2>&1 && doman man?/*.[157]
find Documentation/*.[157] >/dev/null 2>&1 && doman Documentation/*.[157]
dodoc README* Documentation/{SubmittingPatches,CodingGuidelines}
use doc && dodir /usr/share/doc/${PF}/html
local d
for d in / /howto/ /technical/ ; do
docinto ${d}
dodoc Documentation${d}*.txt
if use doc ; then
docinto ${d}/html
dodoc Documentation${d}*.html
fi
done
docinto /
# Upstream does not ship this pre-built :-(
use doc && doinfo Documentation/{git,gitman}.info
newbashcomp contrib/completion/git-completion.bash ${PN}
bashcomp_alias git gitk
# Not really a bash-completion file (bug #477920)
# but still needed uncompressed (bug #507480)
insinto /usr/share/${PN}
doins contrib/completion/git-prompt.sh
#dobin contrib/fast-import/git-p4 # Moved upstream
#dodoc contrib/fast-import/git-p4.txt # Moved upstream
newbin contrib/fast-import/import-tars.perl import-tars
exeinto /usr/libexec/git-core/
newexe contrib/git-resurrect.sh git-resurrect
# git-subtree
pushd contrib/subtree &>/dev/null || die
git_emake DESTDIR="${D}" install || die "Failed to emake install for git-subtree"
if use doc ; then
# Do not move git subtree install-man outside USE=doc!
git_emake DESTDIR="${D}" install-man install-html || die "Failed to emake install-html install-man for git-subtree"
fi
newdoc README README.git-subtree
dodoc git-subtree.txt
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake DESTDIR="${D}" install
popd &>/dev/null || die
fi
# diff-highlight
dobin contrib/diff-highlight/diff-highlight
newdoc contrib/diff-highlight/README README.diff-highlight
# git-jump
exeinto /usr/libexec/git-core/
doexe contrib/git-jump/git-jump
newdoc contrib/git-jump/README git-jump.txt
# git-contacts
exeinto /usr/libexec/git-core/
doexe contrib/contacts/git-contacts
dodoc contrib/contacts/git-contacts.txt
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
dobin git-credential-libsecret
popd &>/dev/null || die
fi
dodir /usr/share/${PN}/contrib
# The following are excluded:
# completion - installed above
# diff-highlight - done above
# emacs - removed upstream
# examples - these are stuff that is not used in Git anymore actually
# git-jump - done above
# gitview - installed above
# p4import - excluded because fast-import has a better one
# patches - stuff the Git guys made to go upstream to other places
# persistent-https - TODO
# mw-to-git - TODO
# subtree - build seperately
# svnimport - use git-svn
# thunderbird-patch-inline - fixes thunderbird
local contrib_objects=(
buildsystems
fast-import
hg-to-git
hooks
remotes2config.sh
rerere-train.sh
stats
workdir
)
local i
for i in "${contrib_objects[@]}" ; do
cp -rf \
"${S}"/contrib/${i} \
"${ED}"/usr/share/${PN}/contrib \
|| die "Failed contrib ${i}"
done
if use perl && use cgi ; then
# We used to install in /usr/share/${PN}/gitweb
# but upstream installs in /usr/share/gitweb
# so we will install a symlink and use their location for compat with other
# distros
dosym ../gitweb /usr/share/${PN}/gitweb
# INSTALL discusses configuration issues, not just installation
docinto /
newdoc "${S}"/gitweb/INSTALL INSTALL.gitweb
newdoc "${S}"/gitweb/README README.gitweb
for d in "${ED}"/usr/lib{,64}/perl5/ ; do
if [[ -d "${d}" ]] ; then
find "${d}" -name .packlist -delete || die
fi
done
else
rm -rf "${ED}"/usr/share/gitweb
fi
if ! use subversion ; then
rm -f "${ED}"/usr/libexec/git-core/git-svn \
"${ED}"/usr/share/man/man1/git-svn.1*
fi
if use xinetd ; then
insinto /etc/xinetd.d
newins "${FILESDIR}"/git-daemon.xinetd git-daemon
fi
if ! use prefix ; then
newinitd "${FILESDIR}"/git-daemon-r2.initd git-daemon
newconfd "${FILESDIR}"/git-daemon.confd git-daemon
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" \
"git-daemon@.service"
systemd_dounit "${FILESDIR}/git-daemon.socket"
fi
perl_delete_localpod
# Remove disabled linguas
# we could remove sources in src_prepare, but install does not
# handle missing locale dir well
rm_loc() {
if [[ -e "${ED}/usr/share/locale/${1}" ]] ; then
rm -r "${ED}/usr/share/locale/${1}" || die
fi
}
plocale_for_each_disabled_locale rm_loc
}
src_test() {
local disabled=()
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
[[ ${cvs} -gt 0 ]] && \
has_version dev-vcs/cvs && \
let cvs=${cvs}+1
[[ ${cvs} -gt 1 ]] && \
has_version "dev-vcs/cvs[server]" && \
let cvs=${cvs}+1
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "tests failed. Please file a bug."
}
showpkgdeps() {
local pkg=$1
shift
elog " $(printf "%-17s:" ${pkg}) ${@}"
}
pkg_postinst() {
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
elog "These additional scripts need some dependencies:"
echo
showpkgdeps git-quiltimport "dev-util/quilt"
showpkgdeps git-instaweb \
"|| ( www-servers/lighttpd www-servers/apache www-servers/nginx )"
echo
use mediawiki-experimental && ewarn "Using experimental git-mediawiki patches. The stability of cloned wiki filesystems is not guaranteed."
}

View File

@ -1,641 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
GENTOO_DEPEND_ON_PERL=no
# bug #329479: git-remote-testgit is not multiple-version aware
PYTHON_COMPAT=( python3_{8..10} )
inherit toolchain-funcs perl-module bash-completion-r1 plocale python-single-r1 systemd
PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN"
if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://git.kernel.org/pub/scm/git/git.git"
# Please ensure that all _four_ 9999 ebuilds get updated; they track the 4 upstream branches.
# See https://git-scm.com/docs/gitworkflows#_graduation
# In order of stability:
# 9999-r0: maint
# 9999-r1: master
# 9999-r2: next
# 9999-r3: seen
case "${PVR}" in
9999) EGIT_BRANCH=maint ;;
9999-r1) EGIT_BRANCH=master ;;
9999-r2) EGIT_BRANCH=next;;
9999-r3) EGIT_BRANCH=seen ;;
esac
fi
MY_PV="${PV/_rc/.rc}"
MY_P="${PN}-${MY_PV}"
DOC_VER="${MY_PV}"
DESCRIPTION="stupid content tracker: distributed VCS designed for speed and efficiency"
HOMEPAGE="https://www.git-scm.com/"
if [[ ${PV} != *9999 ]]; then
SRC_URI_SUFFIX="xz"
SRC_URI_KORG="https://www.kernel.org/pub/software/scm/git"
[[ "${PV/rc}" != "${PV}" ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}
${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
doc? (
${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
)"
[[ "${PV}" == *_rc* ]] || \
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
LICENSE="GPL-2"
SLOT="0"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +ppcsha1 selinux subversion tk +threads +webdav xinetd cvs test"
# Common to both DEPEND and RDEPEND
DEPEND="
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
dev-libs/openssl:0=
sys-libs/zlib
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:0= )
curl? (
net-misc/curl
webdav? ( dev-libs/expat )
)
iconv? ( virtual/libiconv )
"
RDEPEND="${DEPEND}
gpg? ( app-crypt/gnupg )
perl? (
dev-perl/Error
dev-perl/MailTools
dev-perl/Authen-SASL
>=virtual/perl-libnet-3.110.0-r4[ssl]
cgi? (
dev-perl/CGI
highlight? ( app-text/highlight )
)
cvs? (
>=dev-vcs/cvsps-2.1:0
dev-perl/DBI
dev-perl/DBD-SQLite
)
mediawiki? (
dev-perl/DateTime-Format-ISO8601
dev-perl/HTML-Tree
dev-perl/MediaWiki-API
)
subversion? (
dev-vcs/subversion[-dso(-),perl]
dev-perl/libwww-perl
dev-perl/TermReadKey
)
)
perforce? ( ${PYTHON_DEPS} )
selinux? ( sec-policy/selinux-git )
"
# This is how info docs are created with Git:
# .txt/asciidoc --(asciidoc)---------> .xml/docbook
# .xml/docbook --(docbook2texi.pl)--> .texi
# .texi --(makeinfo)---------> .info
BDEPEND="
doc? (
app-text/asciidoc
app-text/docbook2X
app-text/xmlto
sys-apps/texinfo
)
gnome-keyring? ( virtual/pkgconfig )
nls? ( sys-devel/gettext )
test? ( app-crypt/gnupg )
"
# Live ebuild builds man pages and HTML docs, additionally
if [[ ${PV} == *9999 ]]; then
BDEPEND="${BDEPEND}
app-text/asciidoc"
fi
SITEFILE="50${PN}-gentoo.el"
S="${WORKDIR}/${MY_P}"
REQUIRED_USE="
cgi? ( perl )
cvs? ( perl )
mediawiki? ( perl )
mediawiki-experimental? ( mediawiki )
perforce? ( ${PYTHON_REQUIRED_USE} )
subversion? ( perl )
webdav? ( curl )
"
RESTRICT="!test? ( test )"
PATCHES=(
# bug #350330 - automagic CVS when we don't want it is bad.
"${FILESDIR}"/git-2.33.0_rc0-optional-cvs.patch
# Make submodule output quiet
"${FILESDIR}"/git-2.21.0-quiet-submodules-testcase.patch
)
pkg_setup() {
if use subversion && has_version "dev-vcs/subversion[dso]" ; then
ewarn "Per Gentoo bugs #223747, #238586, when subversion is built"
ewarn "with USE=dso, there may be weird crashes in git-svn. You"
ewarn "have been warned."
fi
if use perforce ; then
python-single-r1_pkg_setup
fi
}
# This is needed because for some obscure reasons future calls to make don't
# pick up these exports if we export them in src_unpack()
exportmakeopts() {
local extlibs myopts
myopts=(
ASCIIDOC_NO_ROFF=YesPlease
$(usex cvs '' NO_CVS=YesPlease)
$(usex elibc_musl NO_REGEX=YesPlease '')
$(usex iconv '' NO_ICONV=YesPlease)
$(usex nls '' NO_GETTEXT=YesPlease)
$(usex perl 'INSTALLDIRS=vendor NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
$(usex perforce '' NO_PYTHON=YesPlease)
$(usex subversion '' NO_SVN_TESTS=YesPlease)
$(usex threads '' NO_PTHREADS=YesPlease)
$(usex tk '' NO_TCLTK=YesPlease)
)
if use blksha1 ; then
myopts+=( BLK_SHA1=YesPlease )
elif use ppcsha1 ; then
myopts+=( PPC_SHA1=YesPlease )
fi
if use curl ; then
use webdav || myopts+=( NO_EXPAT=YesPlease )
else
myopts+=( NO_CURL=YesPlease )
fi
# broken assumptions, because of static build system ...
myopts+=(
NO_FINK=YesPlease
NO_DARWIN_PORTS=YesPlease
INSTALL=install
TAR=tar
SHELL_PATH="${EPREFIX}/bin/sh"
SANE_TOOL_PATH=
OLD_ICONV=
NO_EXTERNAL_GREP=
)
# can't define this to null, since the entire makefile depends on it
sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die
if use pcre; then
myopts+=( USE_LIBPCRE2=YesPlease )
extlibs+=( -lpcre2-8 )
fi
if [[ ${CHOST} == *-solaris* ]]; then
myopts+=(
NEEDS_LIBICONV=YesPlease
HAVE_CLOCK_MONOTONIC=1
)
if grep -Fq getdelim "${EROOT}"/usr/include/stdio.h ; then
myopts+=( HAVE_GETDELIM=1 )
fi
fi
if has_version '>=app-text/asciidoc-8.0' ; then
myopts+=( ASCIIDOC8=YesPlease )
fi
export MY_MAKEOPTS="${myopts[@]}"
export EXTLIBS="${extlibs[@]}"
}
src_unpack() {
if [[ ${PV} != *9999 ]] ; then
unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
cd "${S}" || die
unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
if use doc ; then
pushd "${S}"/Documentation &>/dev/null || die
unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
popd &>/dev/null || die
fi
else
git-r3_src_unpack
#cp "${FILESDIR}"/GIT-VERSION-GEN .
fi
}
src_prepare() {
# add experimental patches to improve mediawiki support
# see patches for origin
if use mediawiki-experimental ; then
PATCHES+=(
"${FILESDIR}"/git-2.7.0-mediawiki-namespaces.patch
"${FILESDIR}"/git-2.7.0-mediawiki-subpages.patch
"${FILESDIR}"/git-2.7.0-mediawiki-500pages.patch
)
fi
default
if use prefix ; then
# bug #757309
eapply "${FILESDIR}"/git-2.31.0-darwin-prefix-gettext.patch
fi
sed -i \
-e 's:^\(CFLAGS[[:space:]]*=\).*$:\1 $(OPTCFLAGS) -Wall:' \
-e 's:^\(LDFLAGS[[:space:]]*=\).*$:\1 $(OPTLDFLAGS):' \
-e 's:^\(CC[[:space:]]* =\).*$:\1$(OPTCC):' \
-e 's:^\(AR[[:space:]]* =\).*$:\1$(OPTAR):' \
-e "s:\(PYTHON_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
-e "s:\(PERL_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
Makefile || die
# Fix docbook2texi command
sed -r -i 's/DOCBOOK2X_TEXI[[:space:]]*=[[:space:]]*docbook2x-texi/DOCBOOK2X_TEXI = docbook2texi.pl/' \
Documentation/Makefile || die
}
git_emake() {
# bug #320647: PYTHON_PATH
local PYTHON_PATH=""
use perforce && PYTHON_PATH="${PYTHON}"
emake ${MY_MAKEOPTS} \
prefix="${EPREFIX}"/usr \
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
perllibdir="$(use perl && perl_get_raw_vendorlib)" \
sysconfdir="${EPREFIX}"/etc \
GIT_TEST_OPTS="--no-color" \
OPTAR="$(tc-getAR)" \
OPTCC="$(tc-getCC)" \
OPTCFLAGS="${CFLAGS}" \
OPTLDFLAGS="${LDFLAGS}" \
PERL_PATH="${EPREFIX}/usr/bin/perl" \
PERL_MM_OPT="" \
PYTHON_PATH="${PYTHON_PATH}" \
V=1 \
"$@"
}
src_configure() {
exportmakeopts
}
src_compile() {
git_emake || die "emake failed"
if use perl && use cgi ; then
git_emake gitweb || die "emake gitweb (cgi) failed"
fi
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
pushd contrib/credential/osxkeychain &>/dev/null || die
git_emake CC=$(tc-getCC) CFLAGS="${CFLAGS}" \
|| die "emake credential-osxkeychain"
popd &>/dev/null || die
fi
pushd Documentation &>/dev/null || die
if [[ ${PV} == *9999 ]] ; then
git_emake man || die "emake man failed"
if use doc ; then
git_emake info html || die "emake info html failed"
fi
else
if use doc ; then
git_emake info || die "emake info html failed"
fi
fi
popd &>/dev/null || die
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
git_emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" PKG_CONFIG="$(tc-getPKG_CONFIG)"
popd &>/dev/null || die
fi
pushd contrib/subtree &>/dev/null || die
git_emake git-subtree || die
# git-subtree.1 requires the full USE=doc dependency stack
use doc && git_emake git-subtree.html git-subtree.1
popd &>/dev/null || die
pushd contrib/diff-highlight &>/dev/null || die
git_emake || die
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake || die
popd &>/dev/null || die
fi
}
src_install() {
git_emake DESTDIR="${D}" install || die "make install failed"
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
dobin contrib/credential/osxkeychain/git-credential-osxkeychain
fi
# Depending on the tarball and manual rebuild of the documentation, the
# manpages may exist in either OR both of these directories.
find man?/*.[157] >/dev/null 2>&1 && doman man?/*.[157]
find Documentation/*.[157] >/dev/null 2>&1 && doman Documentation/*.[157]
dodoc README* Documentation/{SubmittingPatches,CodingGuidelines}
use doc && dodir /usr/share/doc/${PF}/html
local d
for d in / /howto/ /technical/ ; do
docinto ${d}
dodoc Documentation${d}*.txt
if use doc ; then
docinto ${d}/html
dodoc Documentation${d}*.html
fi
done
docinto /
# Upstream does not ship this pre-built :-(
use doc && doinfo Documentation/{git,gitman}.info
newbashcomp contrib/completion/git-completion.bash ${PN}
bashcomp_alias git gitk
# Not really a bash-completion file (bug #477920)
# but still needed uncompressed (bug #507480)
insinto /usr/share/${PN}
doins contrib/completion/git-prompt.sh
#dobin contrib/fast-import/git-p4 # Moved upstream
#dodoc contrib/fast-import/git-p4.txt # Moved upstream
newbin contrib/fast-import/import-tars.perl import-tars
exeinto /usr/libexec/git-core/
newexe contrib/git-resurrect.sh git-resurrect
# git-subtree
pushd contrib/subtree &>/dev/null || die
git_emake DESTDIR="${D}" install || die "Failed to emake install for git-subtree"
if use doc ; then
# Do not move git subtree install-man outside USE=doc!
git_emake DESTDIR="${D}" install-man install-html || die "Failed to emake install-html install-man for git-subtree"
fi
newdoc README README.git-subtree
dodoc git-subtree.txt
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake DESTDIR="${D}" install
popd &>/dev/null || die
fi
# diff-highlight
dobin contrib/diff-highlight/diff-highlight
newdoc contrib/diff-highlight/README README.diff-highlight
# git-jump
exeinto /usr/libexec/git-core/
doexe contrib/git-jump/git-jump
newdoc contrib/git-jump/README git-jump.txt
# git-contacts
exeinto /usr/libexec/git-core/
doexe contrib/contacts/git-contacts
dodoc contrib/contacts/git-contacts.txt
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
dobin git-credential-libsecret
popd &>/dev/null || die
fi
dodir /usr/share/${PN}/contrib
# The following are excluded:
# completion - installed above
# diff-highlight - done above
# emacs - removed upstream
# examples - these are stuff that is not used in Git anymore actually
# git-jump - done above
# gitview - installed above
# p4import - excluded because fast-import has a better one
# patches - stuff the Git guys made to go upstream to other places
# persistent-https - TODO
# mw-to-git - TODO
# subtree - build seperately
# svnimport - use git-svn
# thunderbird-patch-inline - fixes thunderbird
local contrib_objects=(
buildsystems
fast-import
hg-to-git
hooks
remotes2config.sh
rerere-train.sh
stats
workdir
)
local i
for i in "${contrib_objects[@]}" ; do
cp -rf \
"${S}"/contrib/${i} \
"${ED}"/usr/share/${PN}/contrib \
|| die "Failed contrib ${i}"
done
if use perl && use cgi ; then
# We used to install in /usr/share/${PN}/gitweb
# but upstream installs in /usr/share/gitweb
# so we will install a symlink and use their location for compat with other
# distros
dosym ../gitweb /usr/share/${PN}/gitweb
# INSTALL discusses configuration issues, not just installation
docinto /
newdoc "${S}"/gitweb/INSTALL INSTALL.gitweb
newdoc "${S}"/gitweb/README README.gitweb
for d in "${ED}"/usr/lib{,64}/perl5/ ; do
if [[ -d "${d}" ]] ; then
find "${d}" -name .packlist -delete || die
fi
done
else
rm -rf "${ED}"/usr/share/gitweb
fi
if ! use subversion ; then
rm -f "${ED}"/usr/libexec/git-core/git-svn \
"${ED}"/usr/share/man/man1/git-svn.1*
fi
if use xinetd ; then
insinto /etc/xinetd.d
newins "${FILESDIR}"/git-daemon.xinetd git-daemon
fi
if ! use prefix ; then
newinitd "${FILESDIR}"/git-daemon-r2.initd git-daemon
newconfd "${FILESDIR}"/git-daemon.confd git-daemon
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" \
"git-daemon@.service"
systemd_dounit "${FILESDIR}/git-daemon.socket"
fi
perl_delete_localpod
# Remove disabled linguas
# we could remove sources in src_prepare, but install does not
# handle missing locale dir well
rm_loc() {
if [[ -e "${ED}/usr/share/locale/${1}" ]] ; then
rm -r "${ED}/usr/share/locale/${1}" || die
fi
}
plocale_for_each_disabled_locale rm_loc
}
src_test() {
local disabled=()
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
[[ ${cvs} -gt 0 ]] && \
has_version dev-vcs/cvs && \
let cvs=${cvs}+1
[[ ${cvs} -gt 1 ]] && \
has_version "dev-vcs/cvs[server]" && \
let cvs=${cvs}+1
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "tests failed. Please file a bug."
}
showpkgdeps() {
local pkg=$1
shift
elog " $(printf "%-17s:" ${pkg}) ${@}"
}
pkg_postinst() {
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
elog "These additional scripts need some dependencies:"
echo
showpkgdeps git-quiltimport "dev-util/quilt"
showpkgdeps git-instaweb \
"|| ( www-servers/lighttpd www-servers/apache www-servers/nginx )"
echo
use mediawiki-experimental && ewarn "Using experimental git-mediawiki patches. The stability of cloned wiki filesystems is not guaranteed."
}

View File

@ -1,641 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
GENTOO_DEPEND_ON_PERL=no
# bug #329479: git-remote-testgit is not multiple-version aware
PYTHON_COMPAT=( python3_{8..10} )
inherit toolchain-funcs perl-module bash-completion-r1 plocale python-single-r1 systemd
PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN"
if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://git.kernel.org/pub/scm/git/git.git"
# Please ensure that all _four_ 9999 ebuilds get updated; they track the 4 upstream branches.
# See https://git-scm.com/docs/gitworkflows#_graduation
# In order of stability:
# 9999-r0: maint
# 9999-r1: master
# 9999-r2: next
# 9999-r3: seen
case "${PVR}" in
9999) EGIT_BRANCH=maint ;;
9999-r1) EGIT_BRANCH=master ;;
9999-r2) EGIT_BRANCH=next;;
9999-r3) EGIT_BRANCH=seen ;;
esac
fi
MY_PV="${PV/_rc/.rc}"
MY_P="${PN}-${MY_PV}"
DOC_VER="${MY_PV}"
DESCRIPTION="stupid content tracker: distributed VCS designed for speed and efficiency"
HOMEPAGE="https://www.git-scm.com/"
if [[ ${PV} != *9999 ]]; then
SRC_URI_SUFFIX="xz"
SRC_URI_KORG="https://www.kernel.org/pub/software/scm/git"
[[ "${PV/rc}" != "${PV}" ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}
${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
doc? (
${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
)"
[[ "${PV}" == *_rc* ]] || \
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
LICENSE="GPL-2"
SLOT="0"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +ppcsha1 selinux subversion tk +threads +webdav xinetd cvs test"
# Common to both DEPEND and RDEPEND
DEPEND="
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
dev-libs/openssl:0=
sys-libs/zlib
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:0= )
curl? (
net-misc/curl
webdav? ( dev-libs/expat )
)
iconv? ( virtual/libiconv )
"
RDEPEND="${DEPEND}
gpg? ( app-crypt/gnupg )
perl? (
dev-perl/Error
dev-perl/MailTools
dev-perl/Authen-SASL
>=virtual/perl-libnet-3.110.0-r4[ssl]
cgi? (
dev-perl/CGI
highlight? ( app-text/highlight )
)
cvs? (
>=dev-vcs/cvsps-2.1:0
dev-perl/DBI
dev-perl/DBD-SQLite
)
mediawiki? (
dev-perl/DateTime-Format-ISO8601
dev-perl/HTML-Tree
dev-perl/MediaWiki-API
)
subversion? (
dev-vcs/subversion[-dso(-),perl]
dev-perl/libwww-perl
dev-perl/TermReadKey
)
)
perforce? ( ${PYTHON_DEPS} )
selinux? ( sec-policy/selinux-git )
"
# This is how info docs are created with Git:
# .txt/asciidoc --(asciidoc)---------> .xml/docbook
# .xml/docbook --(docbook2texi.pl)--> .texi
# .texi --(makeinfo)---------> .info
BDEPEND="
doc? (
app-text/asciidoc
app-text/docbook2X
app-text/xmlto
sys-apps/texinfo
)
gnome-keyring? ( virtual/pkgconfig )
nls? ( sys-devel/gettext )
test? ( app-crypt/gnupg )
"
# Live ebuild builds man pages and HTML docs, additionally
if [[ ${PV} == *9999 ]]; then
BDEPEND="${BDEPEND}
app-text/asciidoc"
fi
SITEFILE="50${PN}-gentoo.el"
S="${WORKDIR}/${MY_P}"
REQUIRED_USE="
cgi? ( perl )
cvs? ( perl )
mediawiki? ( perl )
mediawiki-experimental? ( mediawiki )
perforce? ( ${PYTHON_REQUIRED_USE} )
subversion? ( perl )
webdav? ( curl )
"
RESTRICT="!test? ( test )"
PATCHES=(
# bug #350330 - automagic CVS when we don't want it is bad.
"${FILESDIR}"/git-2.33.0_rc0-optional-cvs.patch
# Make submodule output quiet
"${FILESDIR}"/git-2.21.0-quiet-submodules-testcase.patch
)
pkg_setup() {
if use subversion && has_version "dev-vcs/subversion[dso]" ; then
ewarn "Per Gentoo bugs #223747, #238586, when subversion is built"
ewarn "with USE=dso, there may be weird crashes in git-svn. You"
ewarn "have been warned."
fi
if use perforce ; then
python-single-r1_pkg_setup
fi
}
# This is needed because for some obscure reasons future calls to make don't
# pick up these exports if we export them in src_unpack()
exportmakeopts() {
local extlibs myopts
myopts=(
ASCIIDOC_NO_ROFF=YesPlease
$(usex cvs '' NO_CVS=YesPlease)
$(usex elibc_musl NO_REGEX=YesPlease '')
$(usex iconv '' NO_ICONV=YesPlease)
$(usex nls '' NO_GETTEXT=YesPlease)
$(usex perl 'INSTALLDIRS=vendor NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
$(usex perforce '' NO_PYTHON=YesPlease)
$(usex subversion '' NO_SVN_TESTS=YesPlease)
$(usex threads '' NO_PTHREADS=YesPlease)
$(usex tk '' NO_TCLTK=YesPlease)
)
if use blksha1 ; then
myopts+=( BLK_SHA1=YesPlease )
elif use ppcsha1 ; then
myopts+=( PPC_SHA1=YesPlease )
fi
if use curl ; then
use webdav || myopts+=( NO_EXPAT=YesPlease )
else
myopts+=( NO_CURL=YesPlease )
fi
# broken assumptions, because of static build system ...
myopts+=(
NO_FINK=YesPlease
NO_DARWIN_PORTS=YesPlease
INSTALL=install
TAR=tar
SHELL_PATH="${EPREFIX}/bin/sh"
SANE_TOOL_PATH=
OLD_ICONV=
NO_EXTERNAL_GREP=
)
# can't define this to null, since the entire makefile depends on it
sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die
if use pcre; then
myopts+=( USE_LIBPCRE2=YesPlease )
extlibs+=( -lpcre2-8 )
fi
if [[ ${CHOST} == *-solaris* ]]; then
myopts+=(
NEEDS_LIBICONV=YesPlease
HAVE_CLOCK_MONOTONIC=1
)
if grep -Fq getdelim "${EROOT}"/usr/include/stdio.h ; then
myopts+=( HAVE_GETDELIM=1 )
fi
fi
if has_version '>=app-text/asciidoc-8.0' ; then
myopts+=( ASCIIDOC8=YesPlease )
fi
export MY_MAKEOPTS="${myopts[@]}"
export EXTLIBS="${extlibs[@]}"
}
src_unpack() {
if [[ ${PV} != *9999 ]] ; then
unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
cd "${S}" || die
unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
if use doc ; then
pushd "${S}"/Documentation &>/dev/null || die
unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
popd &>/dev/null || die
fi
else
git-r3_src_unpack
#cp "${FILESDIR}"/GIT-VERSION-GEN .
fi
}
src_prepare() {
# add experimental patches to improve mediawiki support
# see patches for origin
if use mediawiki-experimental ; then
PATCHES+=(
"${FILESDIR}"/git-2.7.0-mediawiki-namespaces.patch
"${FILESDIR}"/git-2.7.0-mediawiki-subpages.patch
"${FILESDIR}"/git-2.7.0-mediawiki-500pages.patch
)
fi
default
if use prefix ; then
# bug #757309
eapply "${FILESDIR}"/git-2.31.0-darwin-prefix-gettext.patch
fi
sed -i \
-e 's:^\(CFLAGS[[:space:]]*=\).*$:\1 $(OPTCFLAGS) -Wall:' \
-e 's:^\(LDFLAGS[[:space:]]*=\).*$:\1 $(OPTLDFLAGS):' \
-e 's:^\(CC[[:space:]]* =\).*$:\1$(OPTCC):' \
-e 's:^\(AR[[:space:]]* =\).*$:\1$(OPTAR):' \
-e "s:\(PYTHON_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
-e "s:\(PERL_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
Makefile || die
# Fix docbook2texi command
sed -r -i 's/DOCBOOK2X_TEXI[[:space:]]*=[[:space:]]*docbook2x-texi/DOCBOOK2X_TEXI = docbook2texi.pl/' \
Documentation/Makefile || die
}
git_emake() {
# bug #320647: PYTHON_PATH
local PYTHON_PATH=""
use perforce && PYTHON_PATH="${PYTHON}"
emake ${MY_MAKEOPTS} \
prefix="${EPREFIX}"/usr \
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
perllibdir="$(use perl && perl_get_raw_vendorlib)" \
sysconfdir="${EPREFIX}"/etc \
GIT_TEST_OPTS="--no-color" \
OPTAR="$(tc-getAR)" \
OPTCC="$(tc-getCC)" \
OPTCFLAGS="${CFLAGS}" \
OPTLDFLAGS="${LDFLAGS}" \
PERL_PATH="${EPREFIX}/usr/bin/perl" \
PERL_MM_OPT="" \
PYTHON_PATH="${PYTHON_PATH}" \
V=1 \
"$@"
}
src_configure() {
exportmakeopts
}
src_compile() {
git_emake || die "emake failed"
if use perl && use cgi ; then
git_emake gitweb || die "emake gitweb (cgi) failed"
fi
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
pushd contrib/credential/osxkeychain &>/dev/null || die
git_emake CC=$(tc-getCC) CFLAGS="${CFLAGS}" \
|| die "emake credential-osxkeychain"
popd &>/dev/null || die
fi
pushd Documentation &>/dev/null || die
if [[ ${PV} == *9999 ]] ; then
git_emake man || die "emake man failed"
if use doc ; then
git_emake info html || die "emake info html failed"
fi
else
if use doc ; then
git_emake info || die "emake info html failed"
fi
fi
popd &>/dev/null || die
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
git_emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" PKG_CONFIG="$(tc-getPKG_CONFIG)"
popd &>/dev/null || die
fi
pushd contrib/subtree &>/dev/null || die
git_emake git-subtree || die
# git-subtree.1 requires the full USE=doc dependency stack
use doc && git_emake git-subtree.html git-subtree.1
popd &>/dev/null || die
pushd contrib/diff-highlight &>/dev/null || die
git_emake || die
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake || die
popd &>/dev/null || die
fi
}
src_install() {
git_emake DESTDIR="${D}" install || die "make install failed"
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
dobin contrib/credential/osxkeychain/git-credential-osxkeychain
fi
# Depending on the tarball and manual rebuild of the documentation, the
# manpages may exist in either OR both of these directories.
find man?/*.[157] >/dev/null 2>&1 && doman man?/*.[157]
find Documentation/*.[157] >/dev/null 2>&1 && doman Documentation/*.[157]
dodoc README* Documentation/{SubmittingPatches,CodingGuidelines}
use doc && dodir /usr/share/doc/${PF}/html
local d
for d in / /howto/ /technical/ ; do
docinto ${d}
dodoc Documentation${d}*.txt
if use doc ; then
docinto ${d}/html
dodoc Documentation${d}*.html
fi
done
docinto /
# Upstream does not ship this pre-built :-(
use doc && doinfo Documentation/{git,gitman}.info
newbashcomp contrib/completion/git-completion.bash ${PN}
bashcomp_alias git gitk
# Not really a bash-completion file (bug #477920)
# but still needed uncompressed (bug #507480)
insinto /usr/share/${PN}
doins contrib/completion/git-prompt.sh
#dobin contrib/fast-import/git-p4 # Moved upstream
#dodoc contrib/fast-import/git-p4.txt # Moved upstream
newbin contrib/fast-import/import-tars.perl import-tars
exeinto /usr/libexec/git-core/
newexe contrib/git-resurrect.sh git-resurrect
# git-subtree
pushd contrib/subtree &>/dev/null || die
git_emake DESTDIR="${D}" install || die "Failed to emake install for git-subtree"
if use doc ; then
# Do not move git subtree install-man outside USE=doc!
git_emake DESTDIR="${D}" install-man install-html || die "Failed to emake install-html install-man for git-subtree"
fi
newdoc README README.git-subtree
dodoc git-subtree.txt
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake DESTDIR="${D}" install
popd &>/dev/null || die
fi
# diff-highlight
dobin contrib/diff-highlight/diff-highlight
newdoc contrib/diff-highlight/README README.diff-highlight
# git-jump
exeinto /usr/libexec/git-core/
doexe contrib/git-jump/git-jump
newdoc contrib/git-jump/README git-jump.txt
# git-contacts
exeinto /usr/libexec/git-core/
doexe contrib/contacts/git-contacts
dodoc contrib/contacts/git-contacts.txt
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
dobin git-credential-libsecret
popd &>/dev/null || die
fi
dodir /usr/share/${PN}/contrib
# The following are excluded:
# completion - installed above
# diff-highlight - done above
# emacs - removed upstream
# examples - these are stuff that is not used in Git anymore actually
# git-jump - done above
# gitview - installed above
# p4import - excluded because fast-import has a better one
# patches - stuff the Git guys made to go upstream to other places
# persistent-https - TODO
# mw-to-git - TODO
# subtree - build seperately
# svnimport - use git-svn
# thunderbird-patch-inline - fixes thunderbird
local contrib_objects=(
buildsystems
fast-import
hg-to-git
hooks
remotes2config.sh
rerere-train.sh
stats
workdir
)
local i
for i in "${contrib_objects[@]}" ; do
cp -rf \
"${S}"/contrib/${i} \
"${ED}"/usr/share/${PN}/contrib \
|| die "Failed contrib ${i}"
done
if use perl && use cgi ; then
# We used to install in /usr/share/${PN}/gitweb
# but upstream installs in /usr/share/gitweb
# so we will install a symlink and use their location for compat with other
# distros
dosym ../gitweb /usr/share/${PN}/gitweb
# INSTALL discusses configuration issues, not just installation
docinto /
newdoc "${S}"/gitweb/INSTALL INSTALL.gitweb
newdoc "${S}"/gitweb/README README.gitweb
for d in "${ED}"/usr/lib{,64}/perl5/ ; do
if [[ -d "${d}" ]] ; then
find "${d}" -name .packlist -delete || die
fi
done
else
rm -rf "${ED}"/usr/share/gitweb
fi
if ! use subversion ; then
rm -f "${ED}"/usr/libexec/git-core/git-svn \
"${ED}"/usr/share/man/man1/git-svn.1*
fi
if use xinetd ; then
insinto /etc/xinetd.d
newins "${FILESDIR}"/git-daemon.xinetd git-daemon
fi
if ! use prefix ; then
newinitd "${FILESDIR}"/git-daemon-r2.initd git-daemon
newconfd "${FILESDIR}"/git-daemon.confd git-daemon
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" \
"git-daemon@.service"
systemd_dounit "${FILESDIR}/git-daemon.socket"
fi
perl_delete_localpod
# Remove disabled linguas
# we could remove sources in src_prepare, but install does not
# handle missing locale dir well
rm_loc() {
if [[ -e "${ED}/usr/share/locale/${1}" ]] ; then
rm -r "${ED}/usr/share/locale/${1}" || die
fi
}
plocale_for_each_disabled_locale rm_loc
}
src_test() {
local disabled=()
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
[[ ${cvs} -gt 0 ]] && \
has_version dev-vcs/cvs && \
let cvs=${cvs}+1
[[ ${cvs} -gt 1 ]] && \
has_version "dev-vcs/cvs[server]" && \
let cvs=${cvs}+1
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "tests failed. Please file a bug."
}
showpkgdeps() {
local pkg=$1
shift
elog " $(printf "%-17s:" ${pkg}) ${@}"
}
pkg_postinst() {
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
elog "These additional scripts need some dependencies:"
echo
showpkgdeps git-quiltimport "dev-util/quilt"
showpkgdeps git-instaweb \
"|| ( www-servers/lighttpd www-servers/apache www-servers/nginx )"
echo
use mediawiki-experimental && ewarn "Using experimental git-mediawiki patches. The stability of cloned wiki filesystems is not guaranteed."
}

View File

@ -1,641 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
GENTOO_DEPEND_ON_PERL=no
# bug #329479: git-remote-testgit is not multiple-version aware
PYTHON_COMPAT=( python3_{8..10} )
inherit toolchain-funcs perl-module bash-completion-r1 plocale python-single-r1 systemd
PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN"
if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://git.kernel.org/pub/scm/git/git.git"
# Please ensure that all _four_ 9999 ebuilds get updated; they track the 4 upstream branches.
# See https://git-scm.com/docs/gitworkflows#_graduation
# In order of stability:
# 9999-r0: maint
# 9999-r1: master
# 9999-r2: next
# 9999-r3: seen
case "${PVR}" in
9999) EGIT_BRANCH=maint ;;
9999-r1) EGIT_BRANCH=master ;;
9999-r2) EGIT_BRANCH=next;;
9999-r3) EGIT_BRANCH=seen ;;
esac
fi
MY_PV="${PV/_rc/.rc}"
MY_P="${PN}-${MY_PV}"
DOC_VER="${MY_PV}"
DESCRIPTION="stupid content tracker: distributed VCS designed for speed and efficiency"
HOMEPAGE="https://www.git-scm.com/"
if [[ ${PV} != *9999 ]]; then
SRC_URI_SUFFIX="xz"
SRC_URI_KORG="https://www.kernel.org/pub/software/scm/git"
[[ "${PV/rc}" != "${PV}" ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}
${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
doc? (
${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
)"
[[ "${PV}" == *_rc* ]] || \
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
LICENSE="GPL-2"
SLOT="0"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +ppcsha1 selinux subversion tk +threads +webdav xinetd cvs test"
# Common to both DEPEND and RDEPEND
DEPEND="
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
dev-libs/openssl:0=
sys-libs/zlib
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:0= )
curl? (
net-misc/curl
webdav? ( dev-libs/expat )
)
iconv? ( virtual/libiconv )
"
RDEPEND="${DEPEND}
gpg? ( app-crypt/gnupg )
perl? (
dev-perl/Error
dev-perl/MailTools
dev-perl/Authen-SASL
>=virtual/perl-libnet-3.110.0-r4[ssl]
cgi? (
dev-perl/CGI
highlight? ( app-text/highlight )
)
cvs? (
>=dev-vcs/cvsps-2.1:0
dev-perl/DBI
dev-perl/DBD-SQLite
)
mediawiki? (
dev-perl/DateTime-Format-ISO8601
dev-perl/HTML-Tree
dev-perl/MediaWiki-API
)
subversion? (
dev-vcs/subversion[-dso(-),perl]
dev-perl/libwww-perl
dev-perl/TermReadKey
)
)
perforce? ( ${PYTHON_DEPS} )
selinux? ( sec-policy/selinux-git )
"
# This is how info docs are created with Git:
# .txt/asciidoc --(asciidoc)---------> .xml/docbook
# .xml/docbook --(docbook2texi.pl)--> .texi
# .texi --(makeinfo)---------> .info
BDEPEND="
doc? (
app-text/asciidoc
app-text/docbook2X
app-text/xmlto
sys-apps/texinfo
)
gnome-keyring? ( virtual/pkgconfig )
nls? ( sys-devel/gettext )
test? ( app-crypt/gnupg )
"
# Live ebuild builds man pages and HTML docs, additionally
if [[ ${PV} == *9999 ]]; then
BDEPEND="${BDEPEND}
app-text/asciidoc"
fi
SITEFILE="50${PN}-gentoo.el"
S="${WORKDIR}/${MY_P}"
REQUIRED_USE="
cgi? ( perl )
cvs? ( perl )
mediawiki? ( perl )
mediawiki-experimental? ( mediawiki )
perforce? ( ${PYTHON_REQUIRED_USE} )
subversion? ( perl )
webdav? ( curl )
"
RESTRICT="!test? ( test )"
PATCHES=(
# bug #350330 - automagic CVS when we don't want it is bad.
"${FILESDIR}"/git-2.33.0_rc0-optional-cvs.patch
# Make submodule output quiet
"${FILESDIR}"/git-2.21.0-quiet-submodules-testcase.patch
)
pkg_setup() {
if use subversion && has_version "dev-vcs/subversion[dso]" ; then
ewarn "Per Gentoo bugs #223747, #238586, when subversion is built"
ewarn "with USE=dso, there may be weird crashes in git-svn. You"
ewarn "have been warned."
fi
if use perforce ; then
python-single-r1_pkg_setup
fi
}
# This is needed because for some obscure reasons future calls to make don't
# pick up these exports if we export them in src_unpack()
exportmakeopts() {
local extlibs myopts
myopts=(
ASCIIDOC_NO_ROFF=YesPlease
$(usex cvs '' NO_CVS=YesPlease)
$(usex elibc_musl NO_REGEX=YesPlease '')
$(usex iconv '' NO_ICONV=YesPlease)
$(usex nls '' NO_GETTEXT=YesPlease)
$(usex perl 'INSTALLDIRS=vendor NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
$(usex perforce '' NO_PYTHON=YesPlease)
$(usex subversion '' NO_SVN_TESTS=YesPlease)
$(usex threads '' NO_PTHREADS=YesPlease)
$(usex tk '' NO_TCLTK=YesPlease)
)
if use blksha1 ; then
myopts+=( BLK_SHA1=YesPlease )
elif use ppcsha1 ; then
myopts+=( PPC_SHA1=YesPlease )
fi
if use curl ; then
use webdav || myopts+=( NO_EXPAT=YesPlease )
else
myopts+=( NO_CURL=YesPlease )
fi
# broken assumptions, because of static build system ...
myopts+=(
NO_FINK=YesPlease
NO_DARWIN_PORTS=YesPlease
INSTALL=install
TAR=tar
SHELL_PATH="${EPREFIX}/bin/sh"
SANE_TOOL_PATH=
OLD_ICONV=
NO_EXTERNAL_GREP=
)
# can't define this to null, since the entire makefile depends on it
sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die
if use pcre; then
myopts+=( USE_LIBPCRE2=YesPlease )
extlibs+=( -lpcre2-8 )
fi
if [[ ${CHOST} == *-solaris* ]]; then
myopts+=(
NEEDS_LIBICONV=YesPlease
HAVE_CLOCK_MONOTONIC=1
)
if grep -Fq getdelim "${EROOT}"/usr/include/stdio.h ; then
myopts+=( HAVE_GETDELIM=1 )
fi
fi
if has_version '>=app-text/asciidoc-8.0' ; then
myopts+=( ASCIIDOC8=YesPlease )
fi
export MY_MAKEOPTS="${myopts[@]}"
export EXTLIBS="${extlibs[@]}"
}
src_unpack() {
if [[ ${PV} != *9999 ]] ; then
unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
cd "${S}" || die
unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
if use doc ; then
pushd "${S}"/Documentation &>/dev/null || die
unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
popd &>/dev/null || die
fi
else
git-r3_src_unpack
#cp "${FILESDIR}"/GIT-VERSION-GEN .
fi
}
src_prepare() {
# add experimental patches to improve mediawiki support
# see patches for origin
if use mediawiki-experimental ; then
PATCHES+=(
"${FILESDIR}"/git-2.7.0-mediawiki-namespaces.patch
"${FILESDIR}"/git-2.7.0-mediawiki-subpages.patch
"${FILESDIR}"/git-2.7.0-mediawiki-500pages.patch
)
fi
default
if use prefix ; then
# bug #757309
eapply "${FILESDIR}"/git-2.31.0-darwin-prefix-gettext.patch
fi
sed -i \
-e 's:^\(CFLAGS[[:space:]]*=\).*$:\1 $(OPTCFLAGS) -Wall:' \
-e 's:^\(LDFLAGS[[:space:]]*=\).*$:\1 $(OPTLDFLAGS):' \
-e 's:^\(CC[[:space:]]* =\).*$:\1$(OPTCC):' \
-e 's:^\(AR[[:space:]]* =\).*$:\1$(OPTAR):' \
-e "s:\(PYTHON_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
-e "s:\(PERL_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
Makefile || die
# Fix docbook2texi command
sed -r -i 's/DOCBOOK2X_TEXI[[:space:]]*=[[:space:]]*docbook2x-texi/DOCBOOK2X_TEXI = docbook2texi.pl/' \
Documentation/Makefile || die
}
git_emake() {
# bug #320647: PYTHON_PATH
local PYTHON_PATH=""
use perforce && PYTHON_PATH="${PYTHON}"
emake ${MY_MAKEOPTS} \
prefix="${EPREFIX}"/usr \
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
perllibdir="$(use perl && perl_get_raw_vendorlib)" \
sysconfdir="${EPREFIX}"/etc \
GIT_TEST_OPTS="--no-color" \
OPTAR="$(tc-getAR)" \
OPTCC="$(tc-getCC)" \
OPTCFLAGS="${CFLAGS}" \
OPTLDFLAGS="${LDFLAGS}" \
PERL_PATH="${EPREFIX}/usr/bin/perl" \
PERL_MM_OPT="" \
PYTHON_PATH="${PYTHON_PATH}" \
V=1 \
"$@"
}
src_configure() {
exportmakeopts
}
src_compile() {
git_emake || die "emake failed"
if use perl && use cgi ; then
git_emake gitweb || die "emake gitweb (cgi) failed"
fi
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
pushd contrib/credential/osxkeychain &>/dev/null || die
git_emake CC=$(tc-getCC) CFLAGS="${CFLAGS}" \
|| die "emake credential-osxkeychain"
popd &>/dev/null || die
fi
pushd Documentation &>/dev/null || die
if [[ ${PV} == *9999 ]] ; then
git_emake man || die "emake man failed"
if use doc ; then
git_emake info html || die "emake info html failed"
fi
else
if use doc ; then
git_emake info || die "emake info html failed"
fi
fi
popd &>/dev/null || die
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
git_emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" PKG_CONFIG="$(tc-getPKG_CONFIG)"
popd &>/dev/null || die
fi
pushd contrib/subtree &>/dev/null || die
git_emake git-subtree || die
# git-subtree.1 requires the full USE=doc dependency stack
use doc && git_emake git-subtree.html git-subtree.1
popd &>/dev/null || die
pushd contrib/diff-highlight &>/dev/null || die
git_emake || die
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake || die
popd &>/dev/null || die
fi
}
src_install() {
git_emake DESTDIR="${D}" install || die "make install failed"
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
dobin contrib/credential/osxkeychain/git-credential-osxkeychain
fi
# Depending on the tarball and manual rebuild of the documentation, the
# manpages may exist in either OR both of these directories.
find man?/*.[157] >/dev/null 2>&1 && doman man?/*.[157]
find Documentation/*.[157] >/dev/null 2>&1 && doman Documentation/*.[157]
dodoc README* Documentation/{SubmittingPatches,CodingGuidelines}
use doc && dodir /usr/share/doc/${PF}/html
local d
for d in / /howto/ /technical/ ; do
docinto ${d}
dodoc Documentation${d}*.txt
if use doc ; then
docinto ${d}/html
dodoc Documentation${d}*.html
fi
done
docinto /
# Upstream does not ship this pre-built :-(
use doc && doinfo Documentation/{git,gitman}.info
newbashcomp contrib/completion/git-completion.bash ${PN}
bashcomp_alias git gitk
# Not really a bash-completion file (bug #477920)
# but still needed uncompressed (bug #507480)
insinto /usr/share/${PN}
doins contrib/completion/git-prompt.sh
#dobin contrib/fast-import/git-p4 # Moved upstream
#dodoc contrib/fast-import/git-p4.txt # Moved upstream
newbin contrib/fast-import/import-tars.perl import-tars
exeinto /usr/libexec/git-core/
newexe contrib/git-resurrect.sh git-resurrect
# git-subtree
pushd contrib/subtree &>/dev/null || die
git_emake DESTDIR="${D}" install || die "Failed to emake install for git-subtree"
if use doc ; then
# Do not move git subtree install-man outside USE=doc!
git_emake DESTDIR="${D}" install-man install-html || die "Failed to emake install-html install-man for git-subtree"
fi
newdoc README README.git-subtree
dodoc git-subtree.txt
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake DESTDIR="${D}" install
popd &>/dev/null || die
fi
# diff-highlight
dobin contrib/diff-highlight/diff-highlight
newdoc contrib/diff-highlight/README README.diff-highlight
# git-jump
exeinto /usr/libexec/git-core/
doexe contrib/git-jump/git-jump
newdoc contrib/git-jump/README git-jump.txt
# git-contacts
exeinto /usr/libexec/git-core/
doexe contrib/contacts/git-contacts
dodoc contrib/contacts/git-contacts.txt
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
dobin git-credential-libsecret
popd &>/dev/null || die
fi
dodir /usr/share/${PN}/contrib
# The following are excluded:
# completion - installed above
# diff-highlight - done above
# emacs - removed upstream
# examples - these are stuff that is not used in Git anymore actually
# git-jump - done above
# gitview - installed above
# p4import - excluded because fast-import has a better one
# patches - stuff the Git guys made to go upstream to other places
# persistent-https - TODO
# mw-to-git - TODO
# subtree - build seperately
# svnimport - use git-svn
# thunderbird-patch-inline - fixes thunderbird
local contrib_objects=(
buildsystems
fast-import
hg-to-git
hooks
remotes2config.sh
rerere-train.sh
stats
workdir
)
local i
for i in "${contrib_objects[@]}" ; do
cp -rf \
"${S}"/contrib/${i} \
"${ED}"/usr/share/${PN}/contrib \
|| die "Failed contrib ${i}"
done
if use perl && use cgi ; then
# We used to install in /usr/share/${PN}/gitweb
# but upstream installs in /usr/share/gitweb
# so we will install a symlink and use their location for compat with other
# distros
dosym ../gitweb /usr/share/${PN}/gitweb
# INSTALL discusses configuration issues, not just installation
docinto /
newdoc "${S}"/gitweb/INSTALL INSTALL.gitweb
newdoc "${S}"/gitweb/README README.gitweb
for d in "${ED}"/usr/lib{,64}/perl5/ ; do
if [[ -d "${d}" ]] ; then
find "${d}" -name .packlist -delete || die
fi
done
else
rm -rf "${ED}"/usr/share/gitweb
fi
if ! use subversion ; then
rm -f "${ED}"/usr/libexec/git-core/git-svn \
"${ED}"/usr/share/man/man1/git-svn.1*
fi
if use xinetd ; then
insinto /etc/xinetd.d
newins "${FILESDIR}"/git-daemon.xinetd git-daemon
fi
if ! use prefix ; then
newinitd "${FILESDIR}"/git-daemon-r2.initd git-daemon
newconfd "${FILESDIR}"/git-daemon.confd git-daemon
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" \
"git-daemon@.service"
systemd_dounit "${FILESDIR}/git-daemon.socket"
fi
perl_delete_localpod
# Remove disabled linguas
# we could remove sources in src_prepare, but install does not
# handle missing locale dir well
rm_loc() {
if [[ -e "${ED}/usr/share/locale/${1}" ]] ; then
rm -r "${ED}/usr/share/locale/${1}" || die
fi
}
plocale_for_each_disabled_locale rm_loc
}
src_test() {
local disabled=()
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
[[ ${cvs} -gt 0 ]] && \
has_version dev-vcs/cvs && \
let cvs=${cvs}+1
[[ ${cvs} -gt 1 ]] && \
has_version "dev-vcs/cvs[server]" && \
let cvs=${cvs}+1
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "tests failed. Please file a bug."
}
showpkgdeps() {
local pkg=$1
shift
elog " $(printf "%-17s:" ${pkg}) ${@}"
}
pkg_postinst() {
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
elog "These additional scripts need some dependencies:"
echo
showpkgdeps git-quiltimport "dev-util/quilt"
showpkgdeps git-instaweb \
"|| ( www-servers/lighttpd www-servers/apache www-servers/nginx )"
echo
use mediawiki-experimental && ewarn "Using experimental git-mediawiki patches. The stability of cloned wiki filesystems is not guaranteed."
}

View File

@ -51,7 +51,7 @@ fi
LICENSE="GPL-2"
SLOT="0"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +ppcsha1 selinux subversion tk +threads +webdav xinetd cvs test"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +ppcsha1 +safe-directory selinux subversion tk +webdav xinetd cvs test"
# Common to both DEPEND and RDEPEND
DEPEND="
@ -173,7 +173,6 @@ exportmakeopts() {
$(usex perl 'INSTALLDIRS=vendor NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
$(usex perforce '' NO_PYTHON=YesPlease)
$(usex subversion '' NO_SVN_TESTS=YesPlease)
$(usex threads '' NO_PTHREADS=YesPlease)
$(usex tk '' NO_TCLTK=YesPlease)
)
@ -253,12 +252,19 @@ src_prepare() {
"${FILESDIR}"/git-2.7.0-mediawiki-500pages.patch
)
fi
if ! use safe-directory ; then
# This patch neuters the "safe directory" detection.
# bugs #838271, #838223
PATCHES+=(
"${FILESDIR}"/git-2.37.2-unsafe-directory.patch
)
fi
default
if use prefix ; then
# bug #757309
eapply "${FILESDIR}"/git-2.31.0-darwin-prefix-gettext.patch
eapply "${FILESDIR}"/git-2.37.2-darwin-prefix-gettext.patch
fi
sed -i \

View File

@ -8,12 +8,14 @@ GENTOO_DEPEND_ON_PERL=no
# bug #329479: git-remote-testgit is not multiple-version aware
PYTHON_COMPAT=( python3_{8..10} )
inherit toolchain-funcs perl-module bash-completion-r1 plocale python-single-r1 systemd
inherit toolchain-funcs perl-module bash-completion-r1 optfeature plocale python-single-r1 systemd
PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN"
if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://git.kernel.org/pub/scm/git/git.git"
inherit git-r3
# Please ensure that all _four_ 9999 ebuilds get updated; they track the 4 upstream branches.
# See https://git-scm.com/docs/gitworkflows#_graduation
# In order of stability:
@ -21,7 +23,7 @@ if [[ ${PV} == *9999 ]]; then
# 9999-r1: master
# 9999-r2: next
# 9999-r3: seen
case "${PVR}" in
case ${PVR} in
9999) EGIT_BRANCH=maint ;;
9999-r1) EGIT_BRANCH=master ;;
9999-r2) EGIT_BRANCH=next;;
@ -34,44 +36,49 @@ MY_P="${PN}-${MY_PV}"
DOC_VER="${MY_PV}"
DESCRIPTION="stupid content tracker: distributed VCS designed for speed and efficiency"
DESCRIPTION="Stupid content tracker: distributed VCS designed for speed and efficiency"
HOMEPAGE="https://www.git-scm.com/"
if [[ ${PV} != *9999 ]]; then
SRC_URI_SUFFIX="xz"
SRC_URI_KORG="https://www.kernel.org/pub/software/scm/git"
[[ "${PV/rc}" != "${PV}" ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}
${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
doc? (
${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
)"
[[ "${PV}" == *_rc* ]] || \
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
[[ ${PV/rc} != ${PV} ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}"
SRC_URI+=" ${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}"
SRC_URI+=" doc? ( ${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX} )"
if [[ ${PV} != *_rc* ]] ; then
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
fi
S="${WORKDIR}"/${MY_P}
LICENSE="GPL-2"
SLOT="0"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +ppcsha1 selinux subversion tk +threads +webdav xinetd cvs test"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +safe-directory selinux subversion tk +webdav xinetd cvs test"
# Common to both DEPEND and RDEPEND
DEPEND="
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
dev-libs/openssl:0=
dev-libs/openssl:=
sys-libs/zlib
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:0= )
curl? (
net-misc/curl
webdav? ( dev-libs/expat )
)
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
iconv? ( virtual/libiconv )
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:= )
"
RDEPEND="${DEPEND}
RDEPEND="
${DEPEND}
gpg? ( app-crypt/gnupg )
perl? (
dev-perl/Error
@ -120,12 +127,10 @@ BDEPEND="
# Live ebuild builds man pages and HTML docs, additionally
if [[ ${PV} == *9999 ]]; then
BDEPEND="${BDEPEND}
app-text/asciidoc"
BDEPEND+=" app-text/asciidoc"
fi
SITEFILE="50${PN}-gentoo.el"
S="${WORKDIR}/${MY_P}"
REQUIRED_USE="
cgi? ( perl )
@ -140,7 +145,7 @@ REQUIRED_USE="
RESTRICT="!test? ( test )"
PATCHES=(
# bug #350330 - automagic CVS when we don't want it is bad.
# Avoid automagic CVS, bug #350330
"${FILESDIR}"/git-2.37.0_rc1-optional-cvs.patch
# Make submodule output quiet
@ -151,7 +156,7 @@ pkg_setup() {
if use subversion && has_version "dev-vcs/subversion[dso]" ; then
ewarn "Per Gentoo bugs #223747, #238586, when subversion is built"
ewarn "with USE=dso, there may be weird crashes in git-svn. You"
ewarn "have been warned."
ewarn "have been warned!"
fi
if use perforce ; then
@ -166,21 +171,20 @@ exportmakeopts() {
myopts=(
ASCIIDOC_NO_ROFF=YesPlease
$(usex cvs '' NO_CVS=YesPlease)
$(usex elibc_musl NO_REGEX=YesPlease '')
$(usex iconv '' NO_ICONV=YesPlease)
$(usex nls '' NO_GETTEXT=YesPlease)
$(usex perl 'INSTALLDIRS=vendor NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
$(usex perforce '' NO_PYTHON=YesPlease)
$(usex subversion '' NO_SVN_TESTS=YesPlease)
$(usex threads '' NO_PTHREADS=YesPlease)
$(usex tk '' NO_TCLTK=YesPlease)
$(usev elibc_musl NO_REGEX=YesPlease)
$(usev !cvs NO_CVS=YesPlease)
$(usev !iconv NO_ICONV=YesPlease)
$(usev !nls NO_GETTEXT=YesPlease)
$(usev !perforce NO_PYTHON=YesPlease)
$(usev !subversion NO_SVN_TESTS=YesPlease)
$(usev !tk NO_TCLTK=YesPlease)
)
if use blksha1 ; then
myopts+=( BLK_SHA1=YesPlease )
elif use ppcsha1 ; then
myopts+=( PPC_SHA1=YesPlease )
fi
if use curl ; then
@ -189,7 +193,7 @@ exportmakeopts() {
myopts+=( NO_CURL=YesPlease )
fi
# broken assumptions, because of static build system ...
# Broken assumptions because of static build system
myopts+=(
NO_FINK=YesPlease
NO_DARWIN_PORTS=YesPlease
@ -201,26 +205,26 @@ exportmakeopts() {
NO_EXTERNAL_GREP=
)
# can't define this to null, since the entire makefile depends on it
# Can't define this to null, since the entire makefile depends on it
sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die
if use pcre; then
myopts+=( USE_LIBPCRE2=YesPlease )
extlibs+=( -lpcre2-8 )
fi
if [[ ${CHOST} == *-solaris* ]]; then
myopts+=(
NEEDS_LIBICONV=YesPlease
HAVE_CLOCK_MONOTONIC=1
)
if grep -Fq getdelim "${EROOT}"/usr/include/stdio.h ; then
if grep -Fq getdelim "${ESYSROOT}"/usr/include/stdio.h ; then
myopts+=( HAVE_GETDELIM=1 )
fi
fi
if has_version '>=app-text/asciidoc-8.0' ; then
myopts+=( ASCIIDOC8=YesPlease )
fi
myopts+=( ASCIIDOC8=YesPlease )
export MY_MAKEOPTS="${myopts[@]}"
export EXTLIBS="${extlibs[@]}"
@ -229,8 +233,10 @@ exportmakeopts() {
src_unpack() {
if [[ ${PV} != *9999 ]] ; then
unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
cd "${S}" || die
unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
if use doc ; then
pushd "${S}"/Documentation &>/dev/null || die
unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
@ -238,14 +244,14 @@ src_unpack() {
fi
else
git-r3_src_unpack
#cp "${FILESDIR}"/GIT-VERSION-GEN .
#cp "${FILESDIR}"/GIT-VERSION-GEN . || die
fi
}
src_prepare() {
# add experimental patches to improve mediawiki support
# see patches for origin
# Add experimental patches to improve mediawiki support,
# see patches for origin.
if use mediawiki-experimental ; then
PATCHES+=(
"${FILESDIR}"/git-2.7.0-mediawiki-namespaces.patch
@ -254,11 +260,19 @@ src_prepare() {
)
fi
if ! use safe-directory ; then
# This patch neuters the "safe directory" detection.
# bugs #838271, #838223
PATCHES+=(
"${FILESDIR}"/git-2.37.2-unsafe-directory.patch
)
fi
default
if use prefix ; then
# bug #757309
eapply "${FILESDIR}"/git-2.31.0-darwin-prefix-gettext.patch
eapply "${FILESDIR}"/git-2.37.2-darwin-prefix-gettext.patch
fi
sed -i \
@ -279,21 +293,37 @@ git_emake() {
# bug #320647: PYTHON_PATH
local PYTHON_PATH=""
use perforce && PYTHON_PATH="${PYTHON}"
emake ${MY_MAKEOPTS} \
prefix="${EPREFIX}"/usr \
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
perllibdir="$(use perl && perl_get_raw_vendorlib)" \
sysconfdir="${EPREFIX}"/etc \
GIT_TEST_OPTS="--no-color" \
OPTAR="$(tc-getAR)" \
OPTCC="$(tc-getCC)" \
OPTCFLAGS="${CFLAGS}" \
OPTLDFLAGS="${LDFLAGS}" \
PERL_PATH="${EPREFIX}/usr/bin/perl" \
PERL_MM_OPT="" \
PYTHON_PATH="${PYTHON_PATH}" \
V=1 \
local mymakeargs=(
${MY_MAKEOPTS}
prefix="${EPREFIX}"/usr
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html
perllibdir="$(use perl && perl_get_raw_vendorlib)"
sysconfdir="${EPREFIX}"/etc
CC="$(tc-getCC)"
CFLAGS="${CFLAGS}"
PKG_CONFIG="$(tc-getPKG_CONFIG)"
# TODO: --verbose?
GIT_TEST_OPTS="--no-color"
OPTAR="$(tc-getAR)"
OPTCC="$(tc-getCC)"
OPTCFLAGS="${CFLAGS}"
OPTLDFLAGS="${LDFLAGS}"
PERL_PATH="${EPREFIX}/usr/bin/perl"
PERL_MM_OPT=""
PYTHON_PATH="${PYTHON_PATH}"
V=1
"$@"
)
emake "${mymakeargs[@]}"
}
src_configure() {
@ -301,58 +331,163 @@ src_configure() {
}
src_compile() {
git_emake || die "emake failed"
git_emake
if use perl && use cgi ; then
git_emake gitweb || die "emake gitweb (cgi) failed"
git_emake gitweb
fi
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
pushd contrib/credential/osxkeychain &>/dev/null || die
git_emake CC=$(tc-getCC) CFLAGS="${CFLAGS}" \
|| die "emake credential-osxkeychain"
popd &>/dev/null || die
git_emake -C contrib/credential/osxkeychain
fi
pushd Documentation &>/dev/null || die
if [[ ${PV} == *9999 ]] ; then
git_emake man || die "emake man failed"
git_emake man
if use doc ; then
git_emake info html || die "emake info html failed"
git_emake info html
fi
else
if use doc ; then
git_emake info || die "emake info html failed"
git_emake info
fi
fi
popd &>/dev/null || die
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
git_emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" PKG_CONFIG="$(tc-getPKG_CONFIG)"
popd &>/dev/null || die
git_emake -C contrib/credential/libsecret
fi
pushd contrib/subtree &>/dev/null || die
git_emake git-subtree || die
git_emake git-subtree
# git-subtree.1 requires the full USE=doc dependency stack
use doc && git_emake git-subtree.html git-subtree.1
popd &>/dev/null || die
pushd contrib/diff-highlight &>/dev/null || die
git_emake || die
popd &>/dev/null || die
git_emake -C contrib/diff-highlight
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake || die
popd &>/dev/null || die
git_emake -C contrib/mw-to-git
fi
}
src_test() {
local disabled=(
# We make safe-directory optional
t0033-safe-directory.sh
)
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
if [[ ${cvs} -gt 0 ]] && has_version dev-vcs/cvs ; then
let cvs=${cvs}+1
fi
if [[ ${cvs} -gt 1 ]] && has_version "dev-vcs/cvs[server]" ; then
let cvs=${cvs}+1
fi
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "Tests failed. Please file a bug!"
}
src_install() {
git_emake DESTDIR="${D}" install || die "make install failed"
git_emake DESTDIR="${D}" install
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
dobin contrib/credential/osxkeychain/git-credential-osxkeychain
@ -392,19 +527,17 @@ src_install() {
# git-subtree
pushd contrib/subtree &>/dev/null || die
git_emake DESTDIR="${D}" install || die "Failed to emake install for git-subtree"
git_emake DESTDIR="${D}" install
if use doc ; then
# Do not move git subtree install-man outside USE=doc!
git_emake DESTDIR="${D}" install-man install-html || die "Failed to emake install-html install-man for git-subtree"
git_emake DESTDIR="${D}" install-man install-html
fi
newdoc README README.git-subtree
dodoc git-subtree.txt
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake DESTDIR="${D}" install
popd &>/dev/null || die
git_emake -C contrib/mw-to-git DESTDIR="${D}" install
fi
# diff-highlight
@ -454,10 +587,7 @@ src_install() {
)
local i
for i in "${contrib_objects[@]}" ; do
cp -rf \
"${S}"/contrib/${i} \
"${ED}"/usr/share/${PN}/contrib \
|| die "Failed contrib ${i}"
cp -rf "${S}"/contrib/${i} "${ED}"/usr/share/${PN}/contrib || die "Failed contrib ${i}"
done
if use perl && use cgi ; then
@ -494,8 +624,7 @@ src_install() {
if ! use prefix ; then
newinitd "${FILESDIR}"/git-daemon-r2.initd git-daemon
newconfd "${FILESDIR}"/git-daemon.confd git-daemon
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" \
"git-daemon@.service"
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" "git-daemon@.service"
systemd_dounit "${FILESDIR}/git-daemon.socket"
fi
@ -512,130 +641,17 @@ src_install() {
plocale_for_each_disabled_locale rm_loc
}
src_test() {
local disabled=()
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
[[ ${cvs} -gt 0 ]] && \
has_version dev-vcs/cvs && \
let cvs=${cvs}+1
[[ ${cvs} -gt 1 ]] && \
has_version "dev-vcs/cvs[server]" && \
let cvs=${cvs}+1
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "tests failed. Please file a bug."
}
showpkgdeps() {
local pkg=$1
shift
elog " $(printf "%-17s:" ${pkg}) ${@}"
}
pkg_postinst() {
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
elog "These additional scripts need some dependencies:"
echo
showpkgdeps git-quiltimport "dev-util/quilt"
showpkgdeps git-instaweb \
"|| ( www-servers/lighttpd www-servers/apache www-servers/nginx )"
echo
if [[ -z ${REPLACING_VERSIONS} ]] ; then
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
fi
optfeature_header "Some scripts require additional dependencies:"
optfeature git-quiltimport dev-util/quilt
optfeature git-instaweb www-servers/lighttpd www-servers/apache www-servers/nginx
use mediawiki-experimental && ewarn "Using experimental git-mediawiki patches. The stability of cloned wiki filesystems is not guaranteed."
}

View File

@ -8,12 +8,14 @@ GENTOO_DEPEND_ON_PERL=no
# bug #329479: git-remote-testgit is not multiple-version aware
PYTHON_COMPAT=( python3_{8..10} )
inherit toolchain-funcs perl-module bash-completion-r1 plocale python-single-r1 systemd
inherit toolchain-funcs perl-module bash-completion-r1 optfeature plocale python-single-r1 systemd
PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN"
if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://git.kernel.org/pub/scm/git/git.git"
inherit git-r3
# Please ensure that all _four_ 9999 ebuilds get updated; they track the 4 upstream branches.
# See https://git-scm.com/docs/gitworkflows#_graduation
# In order of stability:
@ -21,7 +23,7 @@ if [[ ${PV} == *9999 ]]; then
# 9999-r1: master
# 9999-r2: next
# 9999-r3: seen
case "${PVR}" in
case ${PVR} in
9999) EGIT_BRANCH=maint ;;
9999-r1) EGIT_BRANCH=master ;;
9999-r2) EGIT_BRANCH=next;;
@ -34,44 +36,49 @@ MY_P="${PN}-${MY_PV}"
DOC_VER="${MY_PV}"
DESCRIPTION="stupid content tracker: distributed VCS designed for speed and efficiency"
DESCRIPTION="Stupid content tracker: distributed VCS designed for speed and efficiency"
HOMEPAGE="https://www.git-scm.com/"
if [[ ${PV} != *9999 ]]; then
SRC_URI_SUFFIX="xz"
SRC_URI_KORG="https://www.kernel.org/pub/software/scm/git"
[[ "${PV/rc}" != "${PV}" ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}
${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
doc? (
${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
)"
[[ "${PV}" == *_rc* ]] || \
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
[[ ${PV/rc} != ${PV} ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}"
SRC_URI+=" ${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}"
SRC_URI+=" doc? ( ${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX} )"
if [[ ${PV} != *_rc* ]] ; then
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
fi
S="${WORKDIR}"/${MY_P}
LICENSE="GPL-2"
SLOT="0"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +ppcsha1 selinux subversion tk +threads +webdav xinetd cvs test"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +safe-directory selinux subversion tk +webdav xinetd cvs test"
# Common to both DEPEND and RDEPEND
DEPEND="
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
dev-libs/openssl:0=
dev-libs/openssl:=
sys-libs/zlib
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:0= )
curl? (
net-misc/curl
webdav? ( dev-libs/expat )
)
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
iconv? ( virtual/libiconv )
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:= )
"
RDEPEND="${DEPEND}
RDEPEND="
${DEPEND}
gpg? ( app-crypt/gnupg )
perl? (
dev-perl/Error
@ -120,12 +127,10 @@ BDEPEND="
# Live ebuild builds man pages and HTML docs, additionally
if [[ ${PV} == *9999 ]]; then
BDEPEND="${BDEPEND}
app-text/asciidoc"
BDEPEND+=" app-text/asciidoc"
fi
SITEFILE="50${PN}-gentoo.el"
S="${WORKDIR}/${MY_P}"
REQUIRED_USE="
cgi? ( perl )
@ -140,8 +145,8 @@ REQUIRED_USE="
RESTRICT="!test? ( test )"
PATCHES=(
# bug #350330 - automagic CVS when we don't want it is bad.
"${FILESDIR}"/git-2.33.0_rc0-optional-cvs.patch
# Avoid automagic CVS, bug #350330
"${FILESDIR}"/git-2.37.0_rc1-optional-cvs.patch
# Make submodule output quiet
"${FILESDIR}"/git-2.21.0-quiet-submodules-testcase.patch
@ -151,7 +156,7 @@ pkg_setup() {
if use subversion && has_version "dev-vcs/subversion[dso]" ; then
ewarn "Per Gentoo bugs #223747, #238586, when subversion is built"
ewarn "with USE=dso, there may be weird crashes in git-svn. You"
ewarn "have been warned."
ewarn "have been warned!"
fi
if use perforce ; then
@ -166,21 +171,20 @@ exportmakeopts() {
myopts=(
ASCIIDOC_NO_ROFF=YesPlease
$(usex cvs '' NO_CVS=YesPlease)
$(usex elibc_musl NO_REGEX=YesPlease '')
$(usex iconv '' NO_ICONV=YesPlease)
$(usex nls '' NO_GETTEXT=YesPlease)
$(usex perl 'INSTALLDIRS=vendor NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
$(usex perforce '' NO_PYTHON=YesPlease)
$(usex subversion '' NO_SVN_TESTS=YesPlease)
$(usex threads '' NO_PTHREADS=YesPlease)
$(usex tk '' NO_TCLTK=YesPlease)
$(usev elibc_musl NO_REGEX=YesPlease)
$(usev !cvs NO_CVS=YesPlease)
$(usev !iconv NO_ICONV=YesPlease)
$(usev !nls NO_GETTEXT=YesPlease)
$(usev !perforce NO_PYTHON=YesPlease)
$(usev !subversion NO_SVN_TESTS=YesPlease)
$(usev !tk NO_TCLTK=YesPlease)
)
if use blksha1 ; then
myopts+=( BLK_SHA1=YesPlease )
elif use ppcsha1 ; then
myopts+=( PPC_SHA1=YesPlease )
fi
if use curl ; then
@ -189,7 +193,7 @@ exportmakeopts() {
myopts+=( NO_CURL=YesPlease )
fi
# broken assumptions, because of static build system ...
# Broken assumptions because of static build system
myopts+=(
NO_FINK=YesPlease
NO_DARWIN_PORTS=YesPlease
@ -201,26 +205,26 @@ exportmakeopts() {
NO_EXTERNAL_GREP=
)
# can't define this to null, since the entire makefile depends on it
# Can't define this to null, since the entire makefile depends on it
sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die
if use pcre; then
myopts+=( USE_LIBPCRE2=YesPlease )
extlibs+=( -lpcre2-8 )
fi
if [[ ${CHOST} == *-solaris* ]]; then
myopts+=(
NEEDS_LIBICONV=YesPlease
HAVE_CLOCK_MONOTONIC=1
)
if grep -Fq getdelim "${EROOT}"/usr/include/stdio.h ; then
if grep -Fq getdelim "${ESYSROOT}"/usr/include/stdio.h ; then
myopts+=( HAVE_GETDELIM=1 )
fi
fi
if has_version '>=app-text/asciidoc-8.0' ; then
myopts+=( ASCIIDOC8=YesPlease )
fi
myopts+=( ASCIIDOC8=YesPlease )
export MY_MAKEOPTS="${myopts[@]}"
export EXTLIBS="${extlibs[@]}"
@ -229,8 +233,10 @@ exportmakeopts() {
src_unpack() {
if [[ ${PV} != *9999 ]] ; then
unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
cd "${S}" || die
unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
if use doc ; then
pushd "${S}"/Documentation &>/dev/null || die
unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
@ -238,14 +244,14 @@ src_unpack() {
fi
else
git-r3_src_unpack
#cp "${FILESDIR}"/GIT-VERSION-GEN .
#cp "${FILESDIR}"/GIT-VERSION-GEN . || die
fi
}
src_prepare() {
# add experimental patches to improve mediawiki support
# see patches for origin
# Add experimental patches to improve mediawiki support,
# see patches for origin.
if use mediawiki-experimental ; then
PATCHES+=(
"${FILESDIR}"/git-2.7.0-mediawiki-namespaces.patch
@ -254,11 +260,19 @@ src_prepare() {
)
fi
if ! use safe-directory ; then
# This patch neuters the "safe directory" detection.
# bugs #838271, #838223
PATCHES+=(
"${FILESDIR}"/git-2.37.2-unsafe-directory.patch
)
fi
default
if use prefix ; then
# bug #757309
eapply "${FILESDIR}"/git-2.31.0-darwin-prefix-gettext.patch
eapply "${FILESDIR}"/git-2.37.2-darwin-prefix-gettext.patch
fi
sed -i \
@ -279,21 +293,37 @@ git_emake() {
# bug #320647: PYTHON_PATH
local PYTHON_PATH=""
use perforce && PYTHON_PATH="${PYTHON}"
emake ${MY_MAKEOPTS} \
prefix="${EPREFIX}"/usr \
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
perllibdir="$(use perl && perl_get_raw_vendorlib)" \
sysconfdir="${EPREFIX}"/etc \
GIT_TEST_OPTS="--no-color" \
OPTAR="$(tc-getAR)" \
OPTCC="$(tc-getCC)" \
OPTCFLAGS="${CFLAGS}" \
OPTLDFLAGS="${LDFLAGS}" \
PERL_PATH="${EPREFIX}/usr/bin/perl" \
PERL_MM_OPT="" \
PYTHON_PATH="${PYTHON_PATH}" \
V=1 \
local mymakeargs=(
${MY_MAKEOPTS}
prefix="${EPREFIX}"/usr
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html
perllibdir="$(use perl && perl_get_raw_vendorlib)"
sysconfdir="${EPREFIX}"/etc
CC="$(tc-getCC)"
CFLAGS="${CFLAGS}"
PKG_CONFIG="$(tc-getPKG_CONFIG)"
# TODO: --verbose?
GIT_TEST_OPTS="--no-color"
OPTAR="$(tc-getAR)"
OPTCC="$(tc-getCC)"
OPTCFLAGS="${CFLAGS}"
OPTLDFLAGS="${LDFLAGS}"
PERL_PATH="${EPREFIX}/usr/bin/perl"
PERL_MM_OPT=""
PYTHON_PATH="${PYTHON_PATH}"
V=1
"$@"
)
emake "${mymakeargs[@]}"
}
src_configure() {
@ -301,58 +331,163 @@ src_configure() {
}
src_compile() {
git_emake || die "emake failed"
git_emake
if use perl && use cgi ; then
git_emake gitweb || die "emake gitweb (cgi) failed"
git_emake gitweb
fi
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
pushd contrib/credential/osxkeychain &>/dev/null || die
git_emake CC=$(tc-getCC) CFLAGS="${CFLAGS}" \
|| die "emake credential-osxkeychain"
popd &>/dev/null || die
git_emake -C contrib/credential/osxkeychain
fi
pushd Documentation &>/dev/null || die
if [[ ${PV} == *9999 ]] ; then
git_emake man || die "emake man failed"
git_emake man
if use doc ; then
git_emake info html || die "emake info html failed"
git_emake info html
fi
else
if use doc ; then
git_emake info || die "emake info html failed"
git_emake info
fi
fi
popd &>/dev/null || die
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
git_emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" PKG_CONFIG="$(tc-getPKG_CONFIG)"
popd &>/dev/null || die
git_emake -C contrib/credential/libsecret
fi
pushd contrib/subtree &>/dev/null || die
git_emake git-subtree || die
git_emake git-subtree
# git-subtree.1 requires the full USE=doc dependency stack
use doc && git_emake git-subtree.html git-subtree.1
popd &>/dev/null || die
pushd contrib/diff-highlight &>/dev/null || die
git_emake || die
popd &>/dev/null || die
git_emake -C contrib/diff-highlight
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake || die
popd &>/dev/null || die
git_emake -C contrib/mw-to-git
fi
}
src_test() {
local disabled=(
# We make safe-directory optional
t0033-safe-directory.sh
)
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
if [[ ${cvs} -gt 0 ]] && has_version dev-vcs/cvs ; then
let cvs=${cvs}+1
fi
if [[ ${cvs} -gt 1 ]] && has_version "dev-vcs/cvs[server]" ; then
let cvs=${cvs}+1
fi
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "Tests failed. Please file a bug!"
}
src_install() {
git_emake DESTDIR="${D}" install || die "make install failed"
git_emake DESTDIR="${D}" install
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
dobin contrib/credential/osxkeychain/git-credential-osxkeychain
@ -392,19 +527,17 @@ src_install() {
# git-subtree
pushd contrib/subtree &>/dev/null || die
git_emake DESTDIR="${D}" install || die "Failed to emake install for git-subtree"
git_emake DESTDIR="${D}" install
if use doc ; then
# Do not move git subtree install-man outside USE=doc!
git_emake DESTDIR="${D}" install-man install-html || die "Failed to emake install-html install-man for git-subtree"
git_emake DESTDIR="${D}" install-man install-html
fi
newdoc README README.git-subtree
dodoc git-subtree.txt
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake DESTDIR="${D}" install
popd &>/dev/null || die
git_emake -C contrib/mw-to-git DESTDIR="${D}" install
fi
# diff-highlight
@ -454,10 +587,7 @@ src_install() {
)
local i
for i in "${contrib_objects[@]}" ; do
cp -rf \
"${S}"/contrib/${i} \
"${ED}"/usr/share/${PN}/contrib \
|| die "Failed contrib ${i}"
cp -rf "${S}"/contrib/${i} "${ED}"/usr/share/${PN}/contrib || die "Failed contrib ${i}"
done
if use perl && use cgi ; then
@ -494,8 +624,7 @@ src_install() {
if ! use prefix ; then
newinitd "${FILESDIR}"/git-daemon-r2.initd git-daemon
newconfd "${FILESDIR}"/git-daemon.confd git-daemon
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" \
"git-daemon@.service"
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" "git-daemon@.service"
systemd_dounit "${FILESDIR}/git-daemon.socket"
fi
@ -512,130 +641,17 @@ src_install() {
plocale_for_each_disabled_locale rm_loc
}
src_test() {
local disabled=()
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
[[ ${cvs} -gt 0 ]] && \
has_version dev-vcs/cvs && \
let cvs=${cvs}+1
[[ ${cvs} -gt 1 ]] && \
has_version "dev-vcs/cvs[server]" && \
let cvs=${cvs}+1
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "tests failed. Please file a bug."
}
showpkgdeps() {
local pkg=$1
shift
elog " $(printf "%-17s:" ${pkg}) ${@}"
}
pkg_postinst() {
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
elog "These additional scripts need some dependencies:"
echo
showpkgdeps git-quiltimport "dev-util/quilt"
showpkgdeps git-instaweb \
"|| ( www-servers/lighttpd www-servers/apache www-servers/nginx )"
echo
if [[ -z ${REPLACING_VERSIONS} ]] ; then
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
fi
optfeature_header "Some scripts require additional dependencies:"
optfeature git-quiltimport dev-util/quilt
optfeature git-instaweb www-servers/lighttpd www-servers/apache www-servers/nginx
use mediawiki-experimental && ewarn "Using experimental git-mediawiki patches. The stability of cloned wiki filesystems is not guaranteed."
}

View File

@ -8,12 +8,14 @@ GENTOO_DEPEND_ON_PERL=no
# bug #329479: git-remote-testgit is not multiple-version aware
PYTHON_COMPAT=( python3_{8..10} )
inherit toolchain-funcs perl-module bash-completion-r1 plocale python-single-r1 systemd
inherit toolchain-funcs perl-module bash-completion-r1 optfeature plocale python-single-r1 systemd
PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN"
if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://git.kernel.org/pub/scm/git/git.git"
inherit git-r3
# Please ensure that all _four_ 9999 ebuilds get updated; they track the 4 upstream branches.
# See https://git-scm.com/docs/gitworkflows#_graduation
# In order of stability:
@ -21,7 +23,7 @@ if [[ ${PV} == *9999 ]]; then
# 9999-r1: master
# 9999-r2: next
# 9999-r3: seen
case "${PVR}" in
case ${PVR} in
9999) EGIT_BRANCH=maint ;;
9999-r1) EGIT_BRANCH=master ;;
9999-r2) EGIT_BRANCH=next;;
@ -34,44 +36,49 @@ MY_P="${PN}-${MY_PV}"
DOC_VER="${MY_PV}"
DESCRIPTION="stupid content tracker: distributed VCS designed for speed and efficiency"
DESCRIPTION="Stupid content tracker: distributed VCS designed for speed and efficiency"
HOMEPAGE="https://www.git-scm.com/"
if [[ ${PV} != *9999 ]]; then
SRC_URI_SUFFIX="xz"
SRC_URI_KORG="https://www.kernel.org/pub/software/scm/git"
[[ "${PV/rc}" != "${PV}" ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}
${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
doc? (
${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
)"
[[ "${PV}" == *_rc* ]] || \
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
[[ ${PV/rc} != ${PV} ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}"
SRC_URI+=" ${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}"
SRC_URI+=" doc? ( ${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX} )"
if [[ ${PV} != *_rc* ]] ; then
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
fi
S="${WORKDIR}"/${MY_P}
LICENSE="GPL-2"
SLOT="0"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +ppcsha1 selinux subversion tk +threads +webdav xinetd cvs test"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +safe-directory selinux subversion tk +webdav xinetd cvs test"
# Common to both DEPEND and RDEPEND
DEPEND="
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
dev-libs/openssl:0=
dev-libs/openssl:=
sys-libs/zlib
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:0= )
curl? (
net-misc/curl
webdav? ( dev-libs/expat )
)
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
iconv? ( virtual/libiconv )
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:= )
"
RDEPEND="${DEPEND}
RDEPEND="
${DEPEND}
gpg? ( app-crypt/gnupg )
perl? (
dev-perl/Error
@ -120,12 +127,10 @@ BDEPEND="
# Live ebuild builds man pages and HTML docs, additionally
if [[ ${PV} == *9999 ]]; then
BDEPEND="${BDEPEND}
app-text/asciidoc"
BDEPEND+=" app-text/asciidoc"
fi
SITEFILE="50${PN}-gentoo.el"
S="${WORKDIR}/${MY_P}"
REQUIRED_USE="
cgi? ( perl )
@ -140,8 +145,8 @@ REQUIRED_USE="
RESTRICT="!test? ( test )"
PATCHES=(
# bug #350330 - automagic CVS when we don't want it is bad.
"${FILESDIR}"/git-2.33.0_rc0-optional-cvs.patch
# Avoid automagic CVS, bug #350330
"${FILESDIR}"/git-2.37.0_rc1-optional-cvs.patch
# Make submodule output quiet
"${FILESDIR}"/git-2.21.0-quiet-submodules-testcase.patch
@ -151,7 +156,7 @@ pkg_setup() {
if use subversion && has_version "dev-vcs/subversion[dso]" ; then
ewarn "Per Gentoo bugs #223747, #238586, when subversion is built"
ewarn "with USE=dso, there may be weird crashes in git-svn. You"
ewarn "have been warned."
ewarn "have been warned!"
fi
if use perforce ; then
@ -166,21 +171,20 @@ exportmakeopts() {
myopts=(
ASCIIDOC_NO_ROFF=YesPlease
$(usex cvs '' NO_CVS=YesPlease)
$(usex elibc_musl NO_REGEX=YesPlease '')
$(usex iconv '' NO_ICONV=YesPlease)
$(usex nls '' NO_GETTEXT=YesPlease)
$(usex perl 'INSTALLDIRS=vendor NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
$(usex perforce '' NO_PYTHON=YesPlease)
$(usex subversion '' NO_SVN_TESTS=YesPlease)
$(usex threads '' NO_PTHREADS=YesPlease)
$(usex tk '' NO_TCLTK=YesPlease)
$(usev elibc_musl NO_REGEX=YesPlease)
$(usev !cvs NO_CVS=YesPlease)
$(usev !iconv NO_ICONV=YesPlease)
$(usev !nls NO_GETTEXT=YesPlease)
$(usev !perforce NO_PYTHON=YesPlease)
$(usev !subversion NO_SVN_TESTS=YesPlease)
$(usev !tk NO_TCLTK=YesPlease)
)
if use blksha1 ; then
myopts+=( BLK_SHA1=YesPlease )
elif use ppcsha1 ; then
myopts+=( PPC_SHA1=YesPlease )
fi
if use curl ; then
@ -189,7 +193,7 @@ exportmakeopts() {
myopts+=( NO_CURL=YesPlease )
fi
# broken assumptions, because of static build system ...
# Broken assumptions because of static build system
myopts+=(
NO_FINK=YesPlease
NO_DARWIN_PORTS=YesPlease
@ -201,26 +205,26 @@ exportmakeopts() {
NO_EXTERNAL_GREP=
)
# can't define this to null, since the entire makefile depends on it
# Can't define this to null, since the entire makefile depends on it
sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die
if use pcre; then
myopts+=( USE_LIBPCRE2=YesPlease )
extlibs+=( -lpcre2-8 )
fi
if [[ ${CHOST} == *-solaris* ]]; then
myopts+=(
NEEDS_LIBICONV=YesPlease
HAVE_CLOCK_MONOTONIC=1
)
if grep -Fq getdelim "${EROOT}"/usr/include/stdio.h ; then
if grep -Fq getdelim "${ESYSROOT}"/usr/include/stdio.h ; then
myopts+=( HAVE_GETDELIM=1 )
fi
fi
if has_version '>=app-text/asciidoc-8.0' ; then
myopts+=( ASCIIDOC8=YesPlease )
fi
myopts+=( ASCIIDOC8=YesPlease )
export MY_MAKEOPTS="${myopts[@]}"
export EXTLIBS="${extlibs[@]}"
@ -229,8 +233,10 @@ exportmakeopts() {
src_unpack() {
if [[ ${PV} != *9999 ]] ; then
unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
cd "${S}" || die
unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
if use doc ; then
pushd "${S}"/Documentation &>/dev/null || die
unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
@ -238,14 +244,14 @@ src_unpack() {
fi
else
git-r3_src_unpack
#cp "${FILESDIR}"/GIT-VERSION-GEN .
#cp "${FILESDIR}"/GIT-VERSION-GEN . || die
fi
}
src_prepare() {
# add experimental patches to improve mediawiki support
# see patches for origin
# Add experimental patches to improve mediawiki support,
# see patches for origin.
if use mediawiki-experimental ; then
PATCHES+=(
"${FILESDIR}"/git-2.7.0-mediawiki-namespaces.patch
@ -254,11 +260,19 @@ src_prepare() {
)
fi
if ! use safe-directory ; then
# This patch neuters the "safe directory" detection.
# bugs #838271, #838223
PATCHES+=(
"${FILESDIR}"/git-2.37.2-unsafe-directory.patch
)
fi
default
if use prefix ; then
# bug #757309
eapply "${FILESDIR}"/git-2.31.0-darwin-prefix-gettext.patch
eapply "${FILESDIR}"/git-2.37.2-darwin-prefix-gettext.patch
fi
sed -i \
@ -279,21 +293,37 @@ git_emake() {
# bug #320647: PYTHON_PATH
local PYTHON_PATH=""
use perforce && PYTHON_PATH="${PYTHON}"
emake ${MY_MAKEOPTS} \
prefix="${EPREFIX}"/usr \
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
perllibdir="$(use perl && perl_get_raw_vendorlib)" \
sysconfdir="${EPREFIX}"/etc \
GIT_TEST_OPTS="--no-color" \
OPTAR="$(tc-getAR)" \
OPTCC="$(tc-getCC)" \
OPTCFLAGS="${CFLAGS}" \
OPTLDFLAGS="${LDFLAGS}" \
PERL_PATH="${EPREFIX}/usr/bin/perl" \
PERL_MM_OPT="" \
PYTHON_PATH="${PYTHON_PATH}" \
V=1 \
local mymakeargs=(
${MY_MAKEOPTS}
prefix="${EPREFIX}"/usr
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html
perllibdir="$(use perl && perl_get_raw_vendorlib)"
sysconfdir="${EPREFIX}"/etc
CC="$(tc-getCC)"
CFLAGS="${CFLAGS}"
PKG_CONFIG="$(tc-getPKG_CONFIG)"
# TODO: --verbose?
GIT_TEST_OPTS="--no-color"
OPTAR="$(tc-getAR)"
OPTCC="$(tc-getCC)"
OPTCFLAGS="${CFLAGS}"
OPTLDFLAGS="${LDFLAGS}"
PERL_PATH="${EPREFIX}/usr/bin/perl"
PERL_MM_OPT=""
PYTHON_PATH="${PYTHON_PATH}"
V=1
"$@"
)
emake "${mymakeargs[@]}"
}
src_configure() {
@ -301,58 +331,163 @@ src_configure() {
}
src_compile() {
git_emake || die "emake failed"
git_emake
if use perl && use cgi ; then
git_emake gitweb || die "emake gitweb (cgi) failed"
git_emake gitweb
fi
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
pushd contrib/credential/osxkeychain &>/dev/null || die
git_emake CC=$(tc-getCC) CFLAGS="${CFLAGS}" \
|| die "emake credential-osxkeychain"
popd &>/dev/null || die
git_emake -C contrib/credential/osxkeychain
fi
pushd Documentation &>/dev/null || die
if [[ ${PV} == *9999 ]] ; then
git_emake man || die "emake man failed"
git_emake man
if use doc ; then
git_emake info html || die "emake info html failed"
git_emake info html
fi
else
if use doc ; then
git_emake info || die "emake info html failed"
git_emake info
fi
fi
popd &>/dev/null || die
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
git_emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" PKG_CONFIG="$(tc-getPKG_CONFIG)"
popd &>/dev/null || die
git_emake -C contrib/credential/libsecret
fi
pushd contrib/subtree &>/dev/null || die
git_emake git-subtree || die
git_emake git-subtree
# git-subtree.1 requires the full USE=doc dependency stack
use doc && git_emake git-subtree.html git-subtree.1
popd &>/dev/null || die
pushd contrib/diff-highlight &>/dev/null || die
git_emake || die
popd &>/dev/null || die
git_emake -C contrib/diff-highlight
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake || die
popd &>/dev/null || die
git_emake -C contrib/mw-to-git
fi
}
src_test() {
local disabled=(
# We make safe-directory optional
t0033-safe-directory.sh
)
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
if [[ ${cvs} -gt 0 ]] && has_version dev-vcs/cvs ; then
let cvs=${cvs}+1
fi
if [[ ${cvs} -gt 1 ]] && has_version "dev-vcs/cvs[server]" ; then
let cvs=${cvs}+1
fi
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "Tests failed. Please file a bug!"
}
src_install() {
git_emake DESTDIR="${D}" install || die "make install failed"
git_emake DESTDIR="${D}" install
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
dobin contrib/credential/osxkeychain/git-credential-osxkeychain
@ -392,19 +527,17 @@ src_install() {
# git-subtree
pushd contrib/subtree &>/dev/null || die
git_emake DESTDIR="${D}" install || die "Failed to emake install for git-subtree"
git_emake DESTDIR="${D}" install
if use doc ; then
# Do not move git subtree install-man outside USE=doc!
git_emake DESTDIR="${D}" install-man install-html || die "Failed to emake install-html install-man for git-subtree"
git_emake DESTDIR="${D}" install-man install-html
fi
newdoc README README.git-subtree
dodoc git-subtree.txt
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake DESTDIR="${D}" install
popd &>/dev/null || die
git_emake -C contrib/mw-to-git DESTDIR="${D}" install
fi
# diff-highlight
@ -454,10 +587,7 @@ src_install() {
)
local i
for i in "${contrib_objects[@]}" ; do
cp -rf \
"${S}"/contrib/${i} \
"${ED}"/usr/share/${PN}/contrib \
|| die "Failed contrib ${i}"
cp -rf "${S}"/contrib/${i} "${ED}"/usr/share/${PN}/contrib || die "Failed contrib ${i}"
done
if use perl && use cgi ; then
@ -494,8 +624,7 @@ src_install() {
if ! use prefix ; then
newinitd "${FILESDIR}"/git-daemon-r2.initd git-daemon
newconfd "${FILESDIR}"/git-daemon.confd git-daemon
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" \
"git-daemon@.service"
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" "git-daemon@.service"
systemd_dounit "${FILESDIR}/git-daemon.socket"
fi
@ -512,130 +641,17 @@ src_install() {
plocale_for_each_disabled_locale rm_loc
}
src_test() {
local disabled=()
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
[[ ${cvs} -gt 0 ]] && \
has_version dev-vcs/cvs && \
let cvs=${cvs}+1
[[ ${cvs} -gt 1 ]] && \
has_version "dev-vcs/cvs[server]" && \
let cvs=${cvs}+1
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "tests failed. Please file a bug."
}
showpkgdeps() {
local pkg=$1
shift
elog " $(printf "%-17s:" ${pkg}) ${@}"
}
pkg_postinst() {
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
elog "These additional scripts need some dependencies:"
echo
showpkgdeps git-quiltimport "dev-util/quilt"
showpkgdeps git-instaweb \
"|| ( www-servers/lighttpd www-servers/apache www-servers/nginx )"
echo
if [[ -z ${REPLACING_VERSIONS} ]] ; then
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
fi
optfeature_header "Some scripts require additional dependencies:"
optfeature git-quiltimport dev-util/quilt
optfeature git-instaweb www-servers/lighttpd www-servers/apache www-servers/nginx
use mediawiki-experimental && ewarn "Using experimental git-mediawiki patches. The stability of cloned wiki filesystems is not guaranteed."
}

View File

@ -8,12 +8,14 @@ GENTOO_DEPEND_ON_PERL=no
# bug #329479: git-remote-testgit is not multiple-version aware
PYTHON_COMPAT=( python3_{8..10} )
inherit toolchain-funcs perl-module bash-completion-r1 plocale python-single-r1 systemd
inherit toolchain-funcs perl-module bash-completion-r1 optfeature plocale python-single-r1 systemd
PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN"
if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://git.kernel.org/pub/scm/git/git.git"
inherit git-r3
# Please ensure that all _four_ 9999 ebuilds get updated; they track the 4 upstream branches.
# See https://git-scm.com/docs/gitworkflows#_graduation
# In order of stability:
@ -21,7 +23,7 @@ if [[ ${PV} == *9999 ]]; then
# 9999-r1: master
# 9999-r2: next
# 9999-r3: seen
case "${PVR}" in
case ${PVR} in
9999) EGIT_BRANCH=maint ;;
9999-r1) EGIT_BRANCH=master ;;
9999-r2) EGIT_BRANCH=next;;
@ -34,44 +36,49 @@ MY_P="${PN}-${MY_PV}"
DOC_VER="${MY_PV}"
DESCRIPTION="stupid content tracker: distributed VCS designed for speed and efficiency"
DESCRIPTION="Stupid content tracker: distributed VCS designed for speed and efficiency"
HOMEPAGE="https://www.git-scm.com/"
if [[ ${PV} != *9999 ]]; then
SRC_URI_SUFFIX="xz"
SRC_URI_KORG="https://www.kernel.org/pub/software/scm/git"
[[ "${PV/rc}" != "${PV}" ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}
${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
doc? (
${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
)"
[[ "${PV}" == *_rc* ]] || \
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
[[ ${PV/rc} != ${PV} ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}"
SRC_URI+=" ${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}"
SRC_URI+=" doc? ( ${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX} )"
if [[ ${PV} != *_rc* ]] ; then
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
fi
S="${WORKDIR}"/${MY_P}
LICENSE="GPL-2"
SLOT="0"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +ppcsha1 selinux subversion tk +threads +webdav xinetd cvs test"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +safe-directory selinux subversion tk +webdav xinetd cvs test"
# Common to both DEPEND and RDEPEND
DEPEND="
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
dev-libs/openssl:0=
dev-libs/openssl:=
sys-libs/zlib
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:0= )
curl? (
net-misc/curl
webdav? ( dev-libs/expat )
)
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
iconv? ( virtual/libiconv )
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:= )
"
RDEPEND="${DEPEND}
RDEPEND="
${DEPEND}
gpg? ( app-crypt/gnupg )
perl? (
dev-perl/Error
@ -120,12 +127,10 @@ BDEPEND="
# Live ebuild builds man pages and HTML docs, additionally
if [[ ${PV} == *9999 ]]; then
BDEPEND="${BDEPEND}
app-text/asciidoc"
BDEPEND+=" app-text/asciidoc"
fi
SITEFILE="50${PN}-gentoo.el"
S="${WORKDIR}/${MY_P}"
REQUIRED_USE="
cgi? ( perl )
@ -140,8 +145,8 @@ REQUIRED_USE="
RESTRICT="!test? ( test )"
PATCHES=(
# bug #350330 - automagic CVS when we don't want it is bad.
"${FILESDIR}"/git-2.33.0_rc0-optional-cvs.patch
# Avoid automagic CVS, bug #350330
"${FILESDIR}"/git-2.37.0_rc1-optional-cvs.patch
# Make submodule output quiet
"${FILESDIR}"/git-2.21.0-quiet-submodules-testcase.patch
@ -151,7 +156,7 @@ pkg_setup() {
if use subversion && has_version "dev-vcs/subversion[dso]" ; then
ewarn "Per Gentoo bugs #223747, #238586, when subversion is built"
ewarn "with USE=dso, there may be weird crashes in git-svn. You"
ewarn "have been warned."
ewarn "have been warned!"
fi
if use perforce ; then
@ -166,21 +171,20 @@ exportmakeopts() {
myopts=(
ASCIIDOC_NO_ROFF=YesPlease
$(usex cvs '' NO_CVS=YesPlease)
$(usex elibc_musl NO_REGEX=YesPlease '')
$(usex iconv '' NO_ICONV=YesPlease)
$(usex nls '' NO_GETTEXT=YesPlease)
$(usex perl 'INSTALLDIRS=vendor NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
$(usex perforce '' NO_PYTHON=YesPlease)
$(usex subversion '' NO_SVN_TESTS=YesPlease)
$(usex threads '' NO_PTHREADS=YesPlease)
$(usex tk '' NO_TCLTK=YesPlease)
$(usev elibc_musl NO_REGEX=YesPlease)
$(usev !cvs NO_CVS=YesPlease)
$(usev !iconv NO_ICONV=YesPlease)
$(usev !nls NO_GETTEXT=YesPlease)
$(usev !perforce NO_PYTHON=YesPlease)
$(usev !subversion NO_SVN_TESTS=YesPlease)
$(usev !tk NO_TCLTK=YesPlease)
)
if use blksha1 ; then
myopts+=( BLK_SHA1=YesPlease )
elif use ppcsha1 ; then
myopts+=( PPC_SHA1=YesPlease )
fi
if use curl ; then
@ -189,7 +193,7 @@ exportmakeopts() {
myopts+=( NO_CURL=YesPlease )
fi
# broken assumptions, because of static build system ...
# Broken assumptions because of static build system
myopts+=(
NO_FINK=YesPlease
NO_DARWIN_PORTS=YesPlease
@ -201,26 +205,26 @@ exportmakeopts() {
NO_EXTERNAL_GREP=
)
# can't define this to null, since the entire makefile depends on it
# Can't define this to null, since the entire makefile depends on it
sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die
if use pcre; then
myopts+=( USE_LIBPCRE2=YesPlease )
extlibs+=( -lpcre2-8 )
fi
if [[ ${CHOST} == *-solaris* ]]; then
myopts+=(
NEEDS_LIBICONV=YesPlease
HAVE_CLOCK_MONOTONIC=1
)
if grep -Fq getdelim "${EROOT}"/usr/include/stdio.h ; then
if grep -Fq getdelim "${ESYSROOT}"/usr/include/stdio.h ; then
myopts+=( HAVE_GETDELIM=1 )
fi
fi
if has_version '>=app-text/asciidoc-8.0' ; then
myopts+=( ASCIIDOC8=YesPlease )
fi
myopts+=( ASCIIDOC8=YesPlease )
export MY_MAKEOPTS="${myopts[@]}"
export EXTLIBS="${extlibs[@]}"
@ -229,8 +233,10 @@ exportmakeopts() {
src_unpack() {
if [[ ${PV} != *9999 ]] ; then
unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
cd "${S}" || die
unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
if use doc ; then
pushd "${S}"/Documentation &>/dev/null || die
unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
@ -238,14 +244,14 @@ src_unpack() {
fi
else
git-r3_src_unpack
#cp "${FILESDIR}"/GIT-VERSION-GEN .
#cp "${FILESDIR}"/GIT-VERSION-GEN . || die
fi
}
src_prepare() {
# add experimental patches to improve mediawiki support
# see patches for origin
# Add experimental patches to improve mediawiki support,
# see patches for origin.
if use mediawiki-experimental ; then
PATCHES+=(
"${FILESDIR}"/git-2.7.0-mediawiki-namespaces.patch
@ -254,11 +260,19 @@ src_prepare() {
)
fi
if ! use safe-directory ; then
# This patch neuters the "safe directory" detection.
# bugs #838271, #838223
PATCHES+=(
"${FILESDIR}"/git-2.37.2-unsafe-directory.patch
)
fi
default
if use prefix ; then
# bug #757309
eapply "${FILESDIR}"/git-2.31.0-darwin-prefix-gettext.patch
eapply "${FILESDIR}"/git-2.37.2-darwin-prefix-gettext.patch
fi
sed -i \
@ -279,21 +293,37 @@ git_emake() {
# bug #320647: PYTHON_PATH
local PYTHON_PATH=""
use perforce && PYTHON_PATH="${PYTHON}"
emake ${MY_MAKEOPTS} \
prefix="${EPREFIX}"/usr \
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
perllibdir="$(use perl && perl_get_raw_vendorlib)" \
sysconfdir="${EPREFIX}"/etc \
GIT_TEST_OPTS="--no-color" \
OPTAR="$(tc-getAR)" \
OPTCC="$(tc-getCC)" \
OPTCFLAGS="${CFLAGS}" \
OPTLDFLAGS="${LDFLAGS}" \
PERL_PATH="${EPREFIX}/usr/bin/perl" \
PERL_MM_OPT="" \
PYTHON_PATH="${PYTHON_PATH}" \
V=1 \
local mymakeargs=(
${MY_MAKEOPTS}
prefix="${EPREFIX}"/usr
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html
perllibdir="$(use perl && perl_get_raw_vendorlib)"
sysconfdir="${EPREFIX}"/etc
CC="$(tc-getCC)"
CFLAGS="${CFLAGS}"
PKG_CONFIG="$(tc-getPKG_CONFIG)"
# TODO: --verbose?
GIT_TEST_OPTS="--no-color"
OPTAR="$(tc-getAR)"
OPTCC="$(tc-getCC)"
OPTCFLAGS="${CFLAGS}"
OPTLDFLAGS="${LDFLAGS}"
PERL_PATH="${EPREFIX}/usr/bin/perl"
PERL_MM_OPT=""
PYTHON_PATH="${PYTHON_PATH}"
V=1
"$@"
)
emake "${mymakeargs[@]}"
}
src_configure() {
@ -301,58 +331,163 @@ src_configure() {
}
src_compile() {
git_emake || die "emake failed"
git_emake
if use perl && use cgi ; then
git_emake gitweb || die "emake gitweb (cgi) failed"
git_emake gitweb
fi
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
pushd contrib/credential/osxkeychain &>/dev/null || die
git_emake CC=$(tc-getCC) CFLAGS="${CFLAGS}" \
|| die "emake credential-osxkeychain"
popd &>/dev/null || die
git_emake -C contrib/credential/osxkeychain
fi
pushd Documentation &>/dev/null || die
if [[ ${PV} == *9999 ]] ; then
git_emake man || die "emake man failed"
git_emake man
if use doc ; then
git_emake info html || die "emake info html failed"
git_emake info html
fi
else
if use doc ; then
git_emake info || die "emake info html failed"
git_emake info
fi
fi
popd &>/dev/null || die
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
git_emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" PKG_CONFIG="$(tc-getPKG_CONFIG)"
popd &>/dev/null || die
git_emake -C contrib/credential/libsecret
fi
pushd contrib/subtree &>/dev/null || die
git_emake git-subtree || die
git_emake git-subtree
# git-subtree.1 requires the full USE=doc dependency stack
use doc && git_emake git-subtree.html git-subtree.1
popd &>/dev/null || die
pushd contrib/diff-highlight &>/dev/null || die
git_emake || die
popd &>/dev/null || die
git_emake -C contrib/diff-highlight
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake || die
popd &>/dev/null || die
git_emake -C contrib/mw-to-git
fi
}
src_test() {
local disabled=(
# We make safe-directory optional
t0033-safe-directory.sh
)
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
if [[ ${cvs} -gt 0 ]] && has_version dev-vcs/cvs ; then
let cvs=${cvs}+1
fi
if [[ ${cvs} -gt 1 ]] && has_version "dev-vcs/cvs[server]" ; then
let cvs=${cvs}+1
fi
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "Tests failed. Please file a bug!"
}
src_install() {
git_emake DESTDIR="${D}" install || die "make install failed"
git_emake DESTDIR="${D}" install
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
dobin contrib/credential/osxkeychain/git-credential-osxkeychain
@ -392,19 +527,17 @@ src_install() {
# git-subtree
pushd contrib/subtree &>/dev/null || die
git_emake DESTDIR="${D}" install || die "Failed to emake install for git-subtree"
git_emake DESTDIR="${D}" install
if use doc ; then
# Do not move git subtree install-man outside USE=doc!
git_emake DESTDIR="${D}" install-man install-html || die "Failed to emake install-html install-man for git-subtree"
git_emake DESTDIR="${D}" install-man install-html
fi
newdoc README README.git-subtree
dodoc git-subtree.txt
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake DESTDIR="${D}" install
popd &>/dev/null || die
git_emake -C contrib/mw-to-git DESTDIR="${D}" install
fi
# diff-highlight
@ -454,10 +587,7 @@ src_install() {
)
local i
for i in "${contrib_objects[@]}" ; do
cp -rf \
"${S}"/contrib/${i} \
"${ED}"/usr/share/${PN}/contrib \
|| die "Failed contrib ${i}"
cp -rf "${S}"/contrib/${i} "${ED}"/usr/share/${PN}/contrib || die "Failed contrib ${i}"
done
if use perl && use cgi ; then
@ -494,8 +624,7 @@ src_install() {
if ! use prefix ; then
newinitd "${FILESDIR}"/git-daemon-r2.initd git-daemon
newconfd "${FILESDIR}"/git-daemon.confd git-daemon
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" \
"git-daemon@.service"
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" "git-daemon@.service"
systemd_dounit "${FILESDIR}/git-daemon.socket"
fi
@ -512,130 +641,17 @@ src_install() {
plocale_for_each_disabled_locale rm_loc
}
src_test() {
local disabled=()
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
[[ ${cvs} -gt 0 ]] && \
has_version dev-vcs/cvs && \
let cvs=${cvs}+1
[[ ${cvs} -gt 1 ]] && \
has_version "dev-vcs/cvs[server]" && \
let cvs=${cvs}+1
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "tests failed. Please file a bug."
}
showpkgdeps() {
local pkg=$1
shift
elog " $(printf "%-17s:" ${pkg}) ${@}"
}
pkg_postinst() {
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
elog "These additional scripts need some dependencies:"
echo
showpkgdeps git-quiltimport "dev-util/quilt"
showpkgdeps git-instaweb \
"|| ( www-servers/lighttpd www-servers/apache www-servers/nginx )"
echo
if [[ -z ${REPLACING_VERSIONS} ]] ; then
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
fi
optfeature_header "Some scripts require additional dependencies:"
optfeature git-quiltimport dev-util/quilt
optfeature git-instaweb www-servers/lighttpd www-servers/apache www-servers/nginx
use mediawiki-experimental && ewarn "Using experimental git-mediawiki patches. The stability of cloned wiki filesystems is not guaranteed."
}

View File

@ -8,12 +8,14 @@ GENTOO_DEPEND_ON_PERL=no
# bug #329479: git-remote-testgit is not multiple-version aware
PYTHON_COMPAT=( python3_{8..10} )
inherit toolchain-funcs perl-module bash-completion-r1 plocale python-single-r1 systemd
inherit toolchain-funcs perl-module bash-completion-r1 optfeature plocale python-single-r1 systemd
PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN"
if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://git.kernel.org/pub/scm/git/git.git"
inherit git-r3
# Please ensure that all _four_ 9999 ebuilds get updated; they track the 4 upstream branches.
# See https://git-scm.com/docs/gitworkflows#_graduation
# In order of stability:
@ -21,7 +23,7 @@ if [[ ${PV} == *9999 ]]; then
# 9999-r1: master
# 9999-r2: next
# 9999-r3: seen
case "${PVR}" in
case ${PVR} in
9999) EGIT_BRANCH=maint ;;
9999-r1) EGIT_BRANCH=master ;;
9999-r2) EGIT_BRANCH=next;;
@ -34,44 +36,49 @@ MY_P="${PN}-${MY_PV}"
DOC_VER="${MY_PV}"
DESCRIPTION="stupid content tracker: distributed VCS designed for speed and efficiency"
DESCRIPTION="Stupid content tracker: distributed VCS designed for speed and efficiency"
HOMEPAGE="https://www.git-scm.com/"
if [[ ${PV} != *9999 ]]; then
SRC_URI_SUFFIX="xz"
SRC_URI_KORG="https://www.kernel.org/pub/software/scm/git"
[[ "${PV/rc}" != "${PV}" ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}
${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
doc? (
${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
)"
[[ "${PV}" == *_rc* ]] || \
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
[[ ${PV/rc} != ${PV} ]] && SRC_URI_KORG+='/testing'
SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}"
SRC_URI+=" ${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}"
SRC_URI+=" doc? ( ${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX} )"
if [[ ${PV} != *_rc* ]] ; then
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
fi
S="${WORKDIR}"/${MY_P}
LICENSE="GPL-2"
SLOT="0"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +ppcsha1 selinux subversion tk +threads +webdav xinetd cvs test"
IUSE="+blksha1 +curl cgi doc gnome-keyring +gpg highlight +iconv mediawiki mediawiki-experimental +nls +pcre perforce +perl +safe-directory selinux subversion tk +webdav xinetd cvs test"
# Common to both DEPEND and RDEPEND
DEPEND="
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
dev-libs/openssl:0=
dev-libs/openssl:=
sys-libs/zlib
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:0= )
curl? (
net-misc/curl
webdav? ( dev-libs/expat )
)
gnome-keyring? (
app-crypt/libsecret
dev-libs/glib:2
)
iconv? ( virtual/libiconv )
pcre? ( dev-libs/libpcre2:= )
perl? ( dev-lang/perl:=[-build(-)] )
tk? ( dev-lang/tk:= )
"
RDEPEND="${DEPEND}
RDEPEND="
${DEPEND}
gpg? ( app-crypt/gnupg )
perl? (
dev-perl/Error
@ -120,12 +127,10 @@ BDEPEND="
# Live ebuild builds man pages and HTML docs, additionally
if [[ ${PV} == *9999 ]]; then
BDEPEND="${BDEPEND}
app-text/asciidoc"
BDEPEND+=" app-text/asciidoc"
fi
SITEFILE="50${PN}-gentoo.el"
S="${WORKDIR}/${MY_P}"
REQUIRED_USE="
cgi? ( perl )
@ -140,8 +145,8 @@ REQUIRED_USE="
RESTRICT="!test? ( test )"
PATCHES=(
# bug #350330 - automagic CVS when we don't want it is bad.
"${FILESDIR}"/git-2.33.0_rc0-optional-cvs.patch
# Avoid automagic CVS, bug #350330
"${FILESDIR}"/git-2.37.0_rc1-optional-cvs.patch
# Make submodule output quiet
"${FILESDIR}"/git-2.21.0-quiet-submodules-testcase.patch
@ -151,7 +156,7 @@ pkg_setup() {
if use subversion && has_version "dev-vcs/subversion[dso]" ; then
ewarn "Per Gentoo bugs #223747, #238586, when subversion is built"
ewarn "with USE=dso, there may be weird crashes in git-svn. You"
ewarn "have been warned."
ewarn "have been warned!"
fi
if use perforce ; then
@ -166,21 +171,20 @@ exportmakeopts() {
myopts=(
ASCIIDOC_NO_ROFF=YesPlease
$(usex cvs '' NO_CVS=YesPlease)
$(usex elibc_musl NO_REGEX=YesPlease '')
$(usex iconv '' NO_ICONV=YesPlease)
$(usex nls '' NO_GETTEXT=YesPlease)
$(usex perl 'INSTALLDIRS=vendor NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease)
$(usex perforce '' NO_PYTHON=YesPlease)
$(usex subversion '' NO_SVN_TESTS=YesPlease)
$(usex threads '' NO_PTHREADS=YesPlease)
$(usex tk '' NO_TCLTK=YesPlease)
$(usev elibc_musl NO_REGEX=YesPlease)
$(usev !cvs NO_CVS=YesPlease)
$(usev !iconv NO_ICONV=YesPlease)
$(usev !nls NO_GETTEXT=YesPlease)
$(usev !perforce NO_PYTHON=YesPlease)
$(usev !subversion NO_SVN_TESTS=YesPlease)
$(usev !tk NO_TCLTK=YesPlease)
)
if use blksha1 ; then
myopts+=( BLK_SHA1=YesPlease )
elif use ppcsha1 ; then
myopts+=( PPC_SHA1=YesPlease )
fi
if use curl ; then
@ -189,7 +193,7 @@ exportmakeopts() {
myopts+=( NO_CURL=YesPlease )
fi
# broken assumptions, because of static build system ...
# Broken assumptions because of static build system
myopts+=(
NO_FINK=YesPlease
NO_DARWIN_PORTS=YesPlease
@ -201,26 +205,26 @@ exportmakeopts() {
NO_EXTERNAL_GREP=
)
# can't define this to null, since the entire makefile depends on it
# Can't define this to null, since the entire makefile depends on it
sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die
if use pcre; then
myopts+=( USE_LIBPCRE2=YesPlease )
extlibs+=( -lpcre2-8 )
fi
if [[ ${CHOST} == *-solaris* ]]; then
myopts+=(
NEEDS_LIBICONV=YesPlease
HAVE_CLOCK_MONOTONIC=1
)
if grep -Fq getdelim "${EROOT}"/usr/include/stdio.h ; then
if grep -Fq getdelim "${ESYSROOT}"/usr/include/stdio.h ; then
myopts+=( HAVE_GETDELIM=1 )
fi
fi
if has_version '>=app-text/asciidoc-8.0' ; then
myopts+=( ASCIIDOC8=YesPlease )
fi
myopts+=( ASCIIDOC8=YesPlease )
export MY_MAKEOPTS="${myopts[@]}"
export EXTLIBS="${extlibs[@]}"
@ -229,8 +233,10 @@ exportmakeopts() {
src_unpack() {
if [[ ${PV} != *9999 ]] ; then
unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
cd "${S}" || die
unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
if use doc ; then
pushd "${S}"/Documentation &>/dev/null || die
unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
@ -238,14 +244,14 @@ src_unpack() {
fi
else
git-r3_src_unpack
#cp "${FILESDIR}"/GIT-VERSION-GEN .
#cp "${FILESDIR}"/GIT-VERSION-GEN . || die
fi
}
src_prepare() {
# add experimental patches to improve mediawiki support
# see patches for origin
# Add experimental patches to improve mediawiki support,
# see patches for origin.
if use mediawiki-experimental ; then
PATCHES+=(
"${FILESDIR}"/git-2.7.0-mediawiki-namespaces.patch
@ -254,11 +260,19 @@ src_prepare() {
)
fi
if ! use safe-directory ; then
# This patch neuters the "safe directory" detection.
# bugs #838271, #838223
PATCHES+=(
"${FILESDIR}"/git-2.37.2-unsafe-directory.patch
)
fi
default
if use prefix ; then
# bug #757309
eapply "${FILESDIR}"/git-2.31.0-darwin-prefix-gettext.patch
eapply "${FILESDIR}"/git-2.37.2-darwin-prefix-gettext.patch
fi
sed -i \
@ -279,21 +293,37 @@ git_emake() {
# bug #320647: PYTHON_PATH
local PYTHON_PATH=""
use perforce && PYTHON_PATH="${PYTHON}"
emake ${MY_MAKEOPTS} \
prefix="${EPREFIX}"/usr \
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
perllibdir="$(use perl && perl_get_raw_vendorlib)" \
sysconfdir="${EPREFIX}"/etc \
GIT_TEST_OPTS="--no-color" \
OPTAR="$(tc-getAR)" \
OPTCC="$(tc-getCC)" \
OPTCFLAGS="${CFLAGS}" \
OPTLDFLAGS="${LDFLAGS}" \
PERL_PATH="${EPREFIX}/usr/bin/perl" \
PERL_MM_OPT="" \
PYTHON_PATH="${PYTHON_PATH}" \
V=1 \
local mymakeargs=(
${MY_MAKEOPTS}
prefix="${EPREFIX}"/usr
htmldir="${EPREFIX}"/usr/share/doc/${PF}/html
perllibdir="$(use perl && perl_get_raw_vendorlib)"
sysconfdir="${EPREFIX}"/etc
CC="$(tc-getCC)"
CFLAGS="${CFLAGS}"
PKG_CONFIG="$(tc-getPKG_CONFIG)"
# TODO: --verbose?
GIT_TEST_OPTS="--no-color"
OPTAR="$(tc-getAR)"
OPTCC="$(tc-getCC)"
OPTCFLAGS="${CFLAGS}"
OPTLDFLAGS="${LDFLAGS}"
PERL_PATH="${EPREFIX}/usr/bin/perl"
PERL_MM_OPT=""
PYTHON_PATH="${PYTHON_PATH}"
V=1
"$@"
)
emake "${mymakeargs[@]}"
}
src_configure() {
@ -301,58 +331,163 @@ src_configure() {
}
src_compile() {
git_emake || die "emake failed"
git_emake
if use perl && use cgi ; then
git_emake gitweb || die "emake gitweb (cgi) failed"
git_emake gitweb
fi
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
pushd contrib/credential/osxkeychain &>/dev/null || die
git_emake CC=$(tc-getCC) CFLAGS="${CFLAGS}" \
|| die "emake credential-osxkeychain"
popd &>/dev/null || die
git_emake -C contrib/credential/osxkeychain
fi
pushd Documentation &>/dev/null || die
if [[ ${PV} == *9999 ]] ; then
git_emake man || die "emake man failed"
git_emake man
if use doc ; then
git_emake info html || die "emake info html failed"
git_emake info html
fi
else
if use doc ; then
git_emake info || die "emake info html failed"
git_emake info
fi
fi
popd &>/dev/null || die
if use gnome-keyring ; then
pushd contrib/credential/libsecret &>/dev/null || die
git_emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" PKG_CONFIG="$(tc-getPKG_CONFIG)"
popd &>/dev/null || die
git_emake -C contrib/credential/libsecret
fi
pushd contrib/subtree &>/dev/null || die
git_emake git-subtree || die
git_emake git-subtree
# git-subtree.1 requires the full USE=doc dependency stack
use doc && git_emake git-subtree.html git-subtree.1
popd &>/dev/null || die
pushd contrib/diff-highlight &>/dev/null || die
git_emake || die
popd &>/dev/null || die
git_emake -C contrib/diff-highlight
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake || die
popd &>/dev/null || die
git_emake -C contrib/mw-to-git
fi
}
src_test() {
local disabled=(
# We make safe-directory optional
t0033-safe-directory.sh
)
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
if [[ ${cvs} -gt 0 ]] && has_version dev-vcs/cvs ; then
let cvs=${cvs}+1
fi
if [[ ${cvs} -gt 1 ]] && has_version "dev-vcs/cvs[server]" ; then
let cvs=${cvs}+1
fi
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "Tests failed. Please file a bug!"
}
src_install() {
git_emake DESTDIR="${D}" install || die "make install failed"
git_emake DESTDIR="${D}" install
if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then
dobin contrib/credential/osxkeychain/git-credential-osxkeychain
@ -392,19 +527,17 @@ src_install() {
# git-subtree
pushd contrib/subtree &>/dev/null || die
git_emake DESTDIR="${D}" install || die "Failed to emake install for git-subtree"
git_emake DESTDIR="${D}" install
if use doc ; then
# Do not move git subtree install-man outside USE=doc!
git_emake DESTDIR="${D}" install-man install-html || die "Failed to emake install-html install-man for git-subtree"
git_emake DESTDIR="${D}" install-man install-html
fi
newdoc README README.git-subtree
dodoc git-subtree.txt
popd &>/dev/null || die
if use mediawiki ; then
pushd contrib/mw-to-git &>/dev/null || die
git_emake DESTDIR="${D}" install
popd &>/dev/null || die
git_emake -C contrib/mw-to-git DESTDIR="${D}" install
fi
# diff-highlight
@ -454,10 +587,7 @@ src_install() {
)
local i
for i in "${contrib_objects[@]}" ; do
cp -rf \
"${S}"/contrib/${i} \
"${ED}"/usr/share/${PN}/contrib \
|| die "Failed contrib ${i}"
cp -rf "${S}"/contrib/${i} "${ED}"/usr/share/${PN}/contrib || die "Failed contrib ${i}"
done
if use perl && use cgi ; then
@ -494,8 +624,7 @@ src_install() {
if ! use prefix ; then
newinitd "${FILESDIR}"/git-daemon-r2.initd git-daemon
newconfd "${FILESDIR}"/git-daemon.confd git-daemon
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" \
"git-daemon@.service"
systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" "git-daemon@.service"
systemd_dounit "${FILESDIR}/git-daemon.socket"
fi
@ -512,130 +641,17 @@ src_install() {
plocale_for_each_disabled_locale rm_loc
}
src_test() {
local disabled=()
local tests_cvs=(
t9200-git-cvsexportcommit.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9402-git-cvsserver-refs.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9604-cvsimport-timestamps.sh
)
local tests_perl=(
t3701-add-interactive.sh
t5502-quickfetch.sh
t5512-ls-remote.sh
t5520-pull.sh
t7106-reset-unborn-branch.sh
t7501-commit.sh
)
# Bug #225601 - t0004 is not suitable for root perm
# Bug #219839 - t1004 is not suitable for root perm
# t0001-init.sh - check for init notices EPERM* fails
local tests_nonroot=(
t0001-init.sh
t0004-unwritable.sh
t0070-fundamental.sh
t1004-read-tree-m-u-wf.sh
t3700-add.sh
t7300-clean.sh
)
# t9100 still fails with symlinks in SVN 1.7
local test_svn=( t9100-git-svn-basic.sh )
# Unzip is used only for the testcase code, not by any normal parts of Git.
if ! has_version app-arch/unzip ; then
einfo "Disabling tar-tree tests"
disabled+=( t5000-tar-tree.sh )
fi
local cvs=0
use cvs && let cvs=${cvs}+1
if [[ ${EUID} -eq 0 ]] ; then
if [[ ${cvs} -eq 1 ]] ; then
ewarn "Skipping CVS tests because CVS does not work as root!"
ewarn "You should retest with FEATURES=userpriv!"
disabled+=( ${tests_cvs[@]} )
fi
einfo "Skipping other tests that require being non-root"
disabled+=( ${tests_nonroot[@]} )
else
[[ ${cvs} -gt 0 ]] && \
has_version dev-vcs/cvs && \
let cvs=${cvs}+1
[[ ${cvs} -gt 1 ]] && \
has_version "dev-vcs/cvs[server]" && \
let cvs=${cvs}+1
if [[ ${cvs} -lt 3 ]] ; then
einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
disabled+=( ${tests_cvs[@]} )
fi
fi
if ! use perl ; then
einfo "Disabling tests that need Perl"
disabled+=( ${tests_perl[@]} )
fi
einfo "Disabling tests that fail with SVN 1.7"
disabled+=( ${test_svn[@]} )
# Reset all previously disabled tests
pushd t &>/dev/null || die
local i
for i in *.sh.DISABLED ; do
[[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
done
einfo "Disabled tests:"
for i in ${disabled[@]} ; do
if [[ -f "${i}" ]] ; then
mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}"
fi
done
# Avoid the test system removing the results because we want them ourselves
sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die
# Clean old results first, must always run
nonfatal git_emake clean
popd &>/dev/null || die
# Now run the tests, keep going if we hit an error, and don't terminate on
# failure
local rc
einfo "Start test run"
#MAKEOPTS=-j1
nonfatal git_emake --keep-going test
rc=$?
# Display nice results, now print the results
pushd t &>/dev/null || die
nonfatal git_emake aggregate-results
# And bail if there was a problem
[[ ${rc} -eq 0 ]] || die "tests failed. Please file a bug."
}
showpkgdeps() {
local pkg=$1
shift
elog " $(printf "%-17s:" ${pkg}) ${@}"
}
pkg_postinst() {
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
elog "These additional scripts need some dependencies:"
echo
showpkgdeps git-quiltimport "dev-util/quilt"
showpkgdeps git-instaweb \
"|| ( www-servers/lighttpd www-servers/apache www-servers/nginx )"
echo
if [[ -z ${REPLACING_VERSIONS} ]] ; then
elog "Please read /usr/share/bash-completion/completions/git for Git bash command"
elog "completion."
elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt"
elog "Note that the prompt bash code is now in that separate script"
fi
optfeature_header "Some scripts require additional dependencies:"
optfeature git-quiltimport dev-util/quilt
optfeature git-instaweb www-servers/lighttpd www-servers/apache www-servers/nginx
use mediawiki-experimental && ewarn "Using experimental git-mediawiki patches. The stability of cloned wiki filesystems is not guaranteed."
}

View File

@ -24,11 +24,12 @@
<flag name="cgi">Install gitweb too</flag>
<flag name="curl">Support fetching and pushing (requires webdav too) over http:// and https:// protocols</flag>
<flag name="gpg">Pull in gnupg for signing -- without gnupg, attempts at signing will fail at runtime!</flag>
<flag name="highlight">GitWeb support for app-text/highlight</flag>
<flag name="highlight">GitWeb support for <pkg>app-text/highlight</pkg></flag>
<flag name="mediawiki">Support pulling and pushing from MediaWiki</flag>
<flag name="mediawiki-experimental">Add experimental patches for improved MediaWiki support</flag>
<flag name="perforce">Add support for Perforce version control system (requires manual installation of Perforce client)</flag>
<flag name="ppcsha1">Make use of a bundled routine that is optimized for the PPC arch</flag>
<flag name="safe-directory">Respect the safe.directory setting</flag>
<flag name="subversion">Include git-svn for <pkg>dev-vcs/subversion</pkg> support</flag>
<flag name="tk">Include the 'gitk' and 'git gui' tools</flag>
<flag name="webdav">Adds support for push'ing to HTTP/HTTPS repositories via DAV</flag>