ayaports/backports/git/APKBUILD

373 lines
8.3 KiB
Text

# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
#
# secfixes:
# 2.40.1-r0:
# - CVE-2023-25652
# - CVE-2023-25815
# - CVE-2023-29007
# 2.39.2-r0:
# - CVE-2023-22490
# - CVE-2023-23946
# 2.39.1-r0:
# - CVE-2022-41903
# - CVE-2022-23521
# 2.38.1-r0:
# - CVE-2022-39253
# - CVE-2022-39260
# 2.37.1-r0:
# - CVE-2022-29187
# 2.35.2-r0:
# - CVE-2022-24765
# 2.30.2-r0:
# - CVE-2021-21300
# 2.26.2-r0:
# - CVE-2020-11008
# 2.26.1-r0:
# - CVE-2020-5260
# 2.24.1-r0:
# - CVE-2019-1348
# - CVE-2019-1349
# - CVE-2019-1350
# - CVE-2019-1351
# - CVE-2019-1352
# - CVE-2019-1353
# - CVE-2019-1354
# - CVE-2019-1387
# - CVE-2019-19604
# 2.19.1-r0:
# - CVE-2018-17456
# 2.17.1-r0:
# - CVE-2018-11233
# - CVE-2018-11235
# 2.14.1-r0:
# - CVE-2017-1000117
# 0:
# - CVE-2021-29468
# - CVE-2021-46101
pkgname=git
pkgver=2.41.0
pkgrel=2
pkgdesc="Distributed version control system"
url="https://www.git-scm.com/"
arch="all"
license="GPL-2.0-only"
makedepends="
curl-dev
expat-dev
file
openssl-dev>3
pcre2-dev
perl-dev
perl-error
xmlto
zlib-dev
"
# note that order matters
subpackages="
$pkgname-dbg
$pkgname-bash-completion
$pkgname-prompt::noarch
perl-$pkgname-svn:_perl_git_svn:noarch
perl-$pkgname:_perl_git:noarch
$pkgname-svn::noarch
$pkgname-email
$pkgname-fast-import:_fast_import:noarch
$pkgname-cvs::noarch
$pkgname-daemon
$pkgname-daemon-openrc:daemon_openrc
$pkgname-scalar
$pkgname-gitweb::noarch
$pkgname-subtree::noarch
$pkgname-diff-highlight:diff_highlight:noarch
$pkgname-perl:_git_perl:noarch
"
source="https://www.kernel.org/pub/software/scm/git/git-$pkgver.tar.xz
git-daemon.initd
git-daemon.confd
fix-t4219-with-sticky-bit.patch
"
options="$options !check" # a few need updated for perl 5.38
_gitcoredir=/usr/libexec/git-core
if [ -z "$BOOTSTRAP" ]; then
# we need tcl and tk to be built before git due to git-gui and gitk
makedepends="$makedepends asciidoc python3-dev tcl tk libsecret-dev glib-dev"
subpackages="$subpackages
$pkgname-doc
$pkgname-p4::noarch
$pkgname-gui::noarch
$pkgname-gitk::noarch
$pkgname-subtree-doc:subtree_doc:noarch
$pkgname-credential-libsecret:credential_libsecret
"
fi
case "$CARCH" in
s390x)
# todo: they fail with strange between-test email mismatches
options="$options !check"
;;
esac
prepare() {
default_prepare
cat >> config.mak <<-EOF
NO_GETTEXT=YesPlease
NO_SVN_TESTS=YesPlease
NO_REGEX=YesPlease
NO_SYS_POLL_H=1
ICONV_OMITS_BOM=Yes
INSTALL_SYMLINKS=1
CC=${CC:-cc}
CXX=${CC:-c++}
CFLAGS=$CFLAGS -flto=auto
LDFLAGS=$LDFLAGS -flto=auto
USE_LIBPCRE2=YesPlease
PYTHON_PATH=/usr/bin/python3
EOF
if [ -n "$BOOTSTRAP" ]; then
cat >> config.mak <<-EOF
NO_PYTHON=YesPlease
NO_TCLTK=YesPlease
EOF
fi
}
build() {
make prefix=/usr \
DESTDIR="$pkgdir" \
perllibdir="$(_perl_config vendorlib)" \
all
make -C contrib/subtree prefix=/usr DESTDIR="$pkgdir"
make -C contrib/diff-highlight prefix=/usr DESTDIR="$pkgdir"
if [ -z "$BOOTSTRAP" ]; then
# generate manpages outside of package()
make prefix=/usr man
make prefix=/usr -C contrib/credential/libsecret
fi
}
check() {
make -C t prefix=/usr DESTDIR="$pkgdir" \
perlibdir="$(_perl_config vendorlib)" \
all
}
package() {
if [ -z "$BOOTSTRAP" ]; then
local install_man=install-man
fi
make prefix=/usr \
DESTDIR="$pkgdir" \
INSTALLDIRS=vendor \
perllibdir="$(_perl_config vendorlib)" \
install \
$install_man
make -C contrib/subtree install prefix=/usr DESTDIR="$pkgdir"
mkdir -p "$pkgdir"/var/git
install -Dm755 "$srcdir"/git-daemon.initd "$pkgdir"/etc/init.d/git-daemon
install -Dm644 "$srcdir"/git-daemon.confd "$pkgdir"/etc/conf.d/git-daemon
install -Dm755 contrib/diff-highlight/diff-highlight -t "$pkgdir"/usr/bin/
install -Dm644 contrib/completion/git-completion.bash \
"$pkgdir"/usr/share/bash-completion/completions/git
install -Dm644 contrib/completion/git-prompt.sh \
"$pkgdir"/usr/share/git-core/git-prompt.sh
if [ -z "$BOOTSTRAP" ]; then
install -Dm755 contrib/credential/libsecret/git-credential-libsecret "$pkgdir"/usr/libexec/git-core
fi
}
prompt() {
pkgdesc="bash and zsh prompt integration for Git"
depends="git=$pkgver-r$pkgrel"
amove usr/share/git-core/git-prompt.sh
}
_perl_git_svn() {
pkgdesc="Perl interface to Git::SVN"
depends="git=$pkgver-r$pkgrel perl-git=$pkgver-r$pkgrel"
local vendorlib=$(_perl_config vendorlib)
amove $vendorlib/Git/SVN*
}
_perl_git() {
pkgdesc="Perl interface to Git"
depends="git=$pkgver-r$pkgrel perl-error"
local i
for i in "$(_perl_config vendorlib)" "$(_perl_config vendorarch)"; do
[ -d "$pkgdir/$i" ] || continue
amove $i
done
}
email() {
pkgdesc="Git tools for sending email"
depends="perl perl-git=$pkgver-r$pkgrel perl-net-smtp-ssl perl-authen-sasl"
amove $_gitcoredir/*email*
amove $_gitcoredir/*imap*
}
svn() {
pkgdesc="Subversion support for git"
depends="
perl
perl-git-svn=$pkgver-r$pkgrel
perl-subversion
perl-term-readkey
"
amove $_gitcoredir/git-svn
}
cvs() {
pkgdesc="Git tools for importing CVS repositories"
depends="perl perl-git=$pkgver-r$pkgrel cvs perl-dbd-sqlite"
amove usr/bin/git-cvs*
amove $_gitcoredir/*cvs*
}
_fast_import() {
pkgdesc="Git backend for fast Git data importers"
depends="git=$pkgver-r$pkgrel"
amove $_gitcoredir/git-fast-import
}
p4() {
pkgdesc="Git tools for working with Perforce depots"
depends="git=$pkgver-r$pkgrel git-fast-import=$pkgver-r$pkgrel"
amove $_gitcoredir/*p4*
amove $_gitcoredir/mergetools/*p4*
}
daemon() {
pkgdesc="Git protocol daemon"
depends="git=$pkgver-r$pkgrel"
amove $_gitcoredir/git-daemon
amove $_gitcoredir/git-http-backend
amove $_gitcoredir/git-shell
}
daemon_openrc() {
pkgdesc="Git protocol daemon"
default_openrc
depends="git-daemon=$pkgver-r$pkgrel $depends_openrc"
install_if="openrc $pkgname-daemon=$pkgver-r$pkgrel"
}
gitweb() {
pkgdesc="Simple web interface to git repositories"
depends="git=$pkgver-r$pkgrel perl"
amove $_gitcoredir/git-instaweb
amove usr/share/gitweb
}
subtree() {
depends="git=$pkgver-r$pkgrel"
pkgdesc="Split git repository into subtrees"
amove $_gitcoredir/git-subtree
}
subtree_doc() {
pkgdesc="Split git repository into subtrees (documentation)"
depends=""
install_if="docs git-subtree=$pkgver-r$pkgrel"
cd "$builddir"/contrib/subtree
make install-man prefix=/usr DESTDIR="$subpkgdir"
gzip -9 "$subpkgdir"/usr/share/man/man1/git-subtree.1
}
gui() {
pkgdesc="GUI interface for git"
depends="git=$pkgver-r$pkgrel tcl tk"
amove usr/share/git-gui
amove $_gitcoredir/git-citool
amove $_gitcoredir/git-gui
amove $_gitcoredir/git-gui--askpass
}
gitk() {
pkgdesc="Gitk interface for git"
depends="git=$pkgver-r$pkgrel tcl tk"
amove usr/share/gitk
amove usr/bin/gitk
}
diff_highlight() {
pkgdesc="diff highlight for git"
depends="git=$pkgver-r$pkgrel perl"
amove usr/bin/diff-highlight
}
credential_libsecret() {
pkgdesc="libsecret-based credential helper"
depends="git=$pkgver-r$pkgrel"
amove usr/libexec/git-core/git-credential-libsecret
}
scalar() {
pkgdesc="Git scalar monorepo tool"
depends="git=$pkgver-r$pkgrel"
amove usr/bin/scalar
amove usr/libexec/git-core/scalar
}
# catch-the-rest of stuff that needs perl
_git_perl() {
pkgdesc="Additional Git commands that requires perl"
depends="git=$pkgver-r$pkgrel perl-git=$pkgver-r$pkgrel perl"
install_if="git=$pkgver-r$pkgrel perl"
mkdir -p "$subpkgdir"/usr/lib
cd "$pkgdir"
find . -type f -print0 | xargs -0 file --mime-type | grep perl | cut -d: -f1 | while read -r f; do
amove "$f"
done
find "$subpkgdir" -name perllocal.pod -delete
}
# Prints values of the Config.pm variable $1.
_perl_config() {
perl -e "use Config; print \$Config{$1};"
}
sha512sums="
a215bc6d89afbddd56adac901c24ea2b7f98a37bf6a6a2756893947012ffaa850e76247a3445a5ab13ab5a462f39986fec33eed086148aba5eb554dc1799fee0 git-2.41.0.tar.xz
89528cdd14c51fd568aa61cf6c5eae08ea0844e59f9af9292da5fc6c268261f4166017d002d494400945e248df6b844e2f9f9cd2d9345d516983f5a110e4c42a git-daemon.initd
fbf1f425206a76e2a8f82342537ed939ff7e623d644c086ca2ced5f69b36734695f9f80ebda1728f75a94d6cd2fcb71bf845b64239368caab418e4d368c141ec git-daemon.confd
be5d568fc5b8b84c9afb97b31e471e41f32ccfe188eba0588ea0ef98b2d96c2ce4b2c1a3d70e88205aa4f6667f850b3f32c13bbb149ecddbf670344c162a4e25 fix-t4219-with-sticky-bit.patch
"