aports/testing/klibc/APKBUILD

222 lines
5.0 KiB
Plaintext

# Contributor: Olliver Schinagl <oliver@schinagl.nl>
# Maintainer: Olliver Schinagl <oliver@schinagl.nl>
pkgname="klibc"
pkgver="2.0.9"
pkgrel=0
pkgdesc="A minimalistic libc subset for use with initramfs"
url="https://git.kernel.org/pub/scm/libs/klibc/klibc.git/"
arch="all"
license="GPL-2.0-or-later"
makedepends="linux-headers perl"
subpackages="
${pkgname}-dash
${pkgname}-dev
${pkgname}-doc
${pkgname}-static:static
${pkgname}-fstype:bins
${pkgname}-ipconfig:bins
${pkgname}-kinit::noarch
${pkgname}-klcc::noarch
${pkgname}-nfsmount:bins
${pkgname}-resume:bins
${pkgname}-run-init:bins
${pkgname}-utils
lib${pkgname}:libs
"
source="
https://git.kernel.org/pub/scm/libs/klibc/klibc.git/snapshot/${pkgname}-${pkgver}.tar.gz
lib${pkgname}.post-deinstall
lib${pkgname}.post-install
"
_installdir="/usr/lib/${pkgname}-${CARCH}/"
# secfixes:
# 2.0.9-r0:
# - CVE-2021-31870
# - CVE-2021-31871
# - CVE-2021-31872
# - CVE-2021-31873
build() {
# klibc's header misses the struct declaration, Linux's misses
# the function declaration. Combine them here.
if [ ! -e "${builddir}/usr/include/sys/sysinfo.h.orig" ]; then
mv "${builddir}/usr/include/sys/sysinfo.h" \
"${builddir}/usr/include/sys/sysinfo.h.orig"
fi
cat \
"/usr/include/linux/sysinfo.h" \
"${builddir}/usr/include/sys/sysinfo.h.orig" > \
"${builddir}/usr/include/sys/sysinfo.h"
make \
KBUILD_REPRODUCIBLE=1 \
KLIBCKERNELSRC="/usr/"
}
check() {
make \
KBUILD_REPRODUCIBLE=1 \
KLIBCKERNELSRC="/usr/" \
test
}
package() {
depends="
lib${pkgname}
${pkgname}-dash
${pkgname}-kinit
${pkgname}-utils
"
case "${CARCH}" in
aarch64)
_klibcarch="arm64"
;;
armhf)
_klibcarch="arm"
CPU_ARCH="armv6zk"
CPU_TUNE="arm1176jzf-s"
;;
armv7)
_klibcarch="arm"
CPU_ARCH="armv7"
CPU_TUNE="generic-armv7-a"
;;
mips|mipsel)
_klibcarch="mips"
;;
mips64|mips64el)
_klibcarch="mips64"
;;
ppc)
_klibcarch="ppc"
;;
ppc64|ppc64le)
_klibcarch="ppc64"
;;
riscv64)
_klibcarch="riscv64"
;;
s390x)
_klibcarch="s390"
;;
x86)
_klibcarch="i386"
;;
x86_64)
_klibcarch="x86_64"
;;
*)
echo 'Unsupported architecture'
;;
esac
export CPU_ARCH
export CPU_TUNE
make \
INSTALLDIR="${_installdir}" \
INSTALLROOT="${pkgdir}" \
KBUILD_REPRODUCIBLE=1 \
KLIBCKERNELSRC="/usr/" \
mandir="/usr/share/man" \
install
# Duplicated in INSTALLDIR/lib and replaced with post.install
rm -r "${pkgdir:?}/lib"
for _arch in "${pkgdir}/${_installdir}/include/arch/"*; do
if [ "${_arch##*/}" != "${_klibcarch}" ]; then
rm -r "${_arch:?}"
fi
done
# Replace hardlinks with symlinks
unlink "${pkgdir}/${_installdir}/bin/gunzip"
unlink "${pkgdir}/${_installdir}/bin/poweroff"
unlink "${pkgdir}/${_installdir}/bin/reboot"
unlink "${pkgdir}/${_installdir}/bin/zcat"
ln -s "gzip" "${pkgdir}/${_installdir}/bin/gunzip"
ln -s "gzip" "${pkgdir}/${_installdir}/bin/zcat"
ln -s "halt" "${pkgdir}/${_installdir}/bin/poweroff"
ln -s "halt" "${pkgdir}/${_installdir}/bin/reboot"
}
klcc() {
depends="perl"
mkdir -p "${subpkgdir}/usr/bin"
mv "${pkgdir}/usr/bin/klcc" "${subpkgdir}/usr/bin/"
}
libs() {
install="lib${pkgname}.post-deinstall lib${pkgname}.post-install"
mkdir -p "${subpkgdir}/${_installdir}"
mv "${pkgdir}/${_installdir}/lib" "${subpkgdir}/${_installdir}/"
}
bins() {
depends="lib${pkgname}"
mkdir -p "${subpkgdir}/${_installdir}/bin"
mv "${pkgdir}/${_installdir}/bin/${subpkgname#${pkgname}-}" "${subpkgdir}/${_installdir}/bin/"
}
dash() {
depends="lib${pkgname}"
mkdir -p "${subpkgdir}/${_installdir}/bin"
mv "${pkgdir}/${_installdir}/bin/sh" "${subpkgdir}/${_installdir}/bin/"
}
kinit() {
depends="
${pkgname}-fstype
${pkgname}-ipconfig
${pkgname}-nfsmount
${pkgname}-resume
${pkgname}-run-init
"
mkdir -p "${subpkgdir}"
}
utils() {
depends="lib${pkgname}"
mkdir -p "${subpkgdir}/${_installdir}/"
mv "${pkgdir}/${_installdir}/bin" "${subpkgdir}/${_installdir}/"
}
static() {
mkdir -p "${subpkgdir}/${_installdir}/bin"
find "${builddir}" -type d -name 'static' | while read -r _staticbins; do
for _bin in "${_staticbins}/"*; do
if [ -z "${_bin%%*.g}" ]; then
continue
fi
install -D -m 755 "${_bin}" \
"${subpkgdir}/${_installdir}/bin/${_bin##*/}.static"
done
done
mv "${pkgdir}/${_installdir}/bin/gunzip" \
"${subpkgdir}/${_installdir}/bin/gunzip.static"
mv "${pkgdir}/${_installdir}/bin/gzip" \
"${subpkgdir}/${_installdir}/bin/gzip.static"
mv "${pkgdir}/${_installdir}/bin/zcat" \
"${subpkgdir}/${_installdir}/bin/zcat.static"
}
sha512sums="a03afd73d1576f45d6abbca396373feb08ff4edbae576fef7789a3b729a38f6272539425cfaa9c7705d5551519b81367fb2c6d1fef57892a0430566b8321a34c klibc-2.0.9.tar.gz
672f87b240b3349b2ffee2768ef6b1d37f6395d8f00bdf33375c03f967041de14b6365bcecff2d3918130b16c250ec5e3d50f1ac04c9530f0b169bc01e7d39cb libklibc.post-deinstall
7340bfd2c048b8b7a6edd752d552e1007c202a5b44bf9d0ae741a80dcea1cbfdde38ade50f7d008c723a2b99570156877476273073039da286b604693323e484 libklibc.post-install"