mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-05-06 04:46:42 +02:00
/usr/share/kernel/<flavor>/kernel.release is a textual file containing kernel version, so it shouldn't have executable flag as it has now. I'm intentionally not bumping pkgrel to avoid rebuilding all kernels for such insignificant change.
231 lines
7.0 KiB
Plaintext
231 lines
7.0 KiB
Plaintext
# Maintainer: Milan P. Stanić <mps@arvanta.net>
|
|
|
|
_flavor=edge
|
|
pkgname=linux-${_flavor}
|
|
# NOTE: this kernel is intended for testing
|
|
# please resist urge to upgrade it blindly
|
|
pkgver=5.12.10
|
|
case $pkgver in
|
|
*.*.*) _kernver=${pkgver%.*};;
|
|
*.*) _kernver=$pkgver;;
|
|
esac
|
|
pkgrel=0
|
|
pkgdesc="Linux latest stable kernel"
|
|
url="https://www.kernel.org"
|
|
depends="mkinitfs"
|
|
_depends_dev="perl gmp-dev elfutils-dev bash flex bison"
|
|
makedepends="$_depends_dev sed installkernel bc linux-headers linux-firmware-any openssl-dev
|
|
diffutils findutils xz"
|
|
options="!strip"
|
|
_config=${config:-config-edge.${CARCH}}
|
|
install=
|
|
|
|
subpackages="$pkgname-dev:_dev:$CBUILD_ARCH"
|
|
source="https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/linux-$_kernver.tar.xz"
|
|
case $pkgver in
|
|
*.*.0) source="$source";;
|
|
*.*.*) source="$source
|
|
https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/patch-$pkgver.xz" ;;
|
|
esac
|
|
|
|
source="$source
|
|
config-edge.aarch64
|
|
config-edge.armv7
|
|
config-edge.x86_64
|
|
config-edge-virt.aarch64
|
|
config-edge-virt.armv7
|
|
config-edge-virt.x86_64
|
|
"
|
|
|
|
arch="armv7 aarch64 x86_64"
|
|
license="GPL-2.0"
|
|
|
|
_flavors=
|
|
for _i in $source; do
|
|
case $_i in
|
|
config-*.$CARCH)
|
|
_f=${_i%.$CARCH}
|
|
_f=${_f#config-}
|
|
_flavors="$_flavors ${_f}"
|
|
if [ "linux-$_f" != "$pkgname" ]; then
|
|
subpackages="$subpackages linux-${_f}::$CBUILD_ARCH linux-${_f}-dev:_dev:$CBUILD_ARCH"
|
|
fi
|
|
;;
|
|
esac
|
|
done
|
|
|
|
_carch=${CARCH}
|
|
case "$_carch" in
|
|
aarch64*) _carch="arm64" ;;
|
|
arm*) _carch="arm" ;;
|
|
esac
|
|
|
|
prepare() {
|
|
local _patch_failed=
|
|
cd "$srcdir"/linux-$_kernver
|
|
case $pkgver in
|
|
*.*.0);;
|
|
*)
|
|
msg "Applying patch-$pkgver.xz"
|
|
unxz -c < "$srcdir"/patch-$pkgver.xz | patch -p1 -N ;;
|
|
esac
|
|
|
|
# first apply patches in specified order
|
|
for i in $source; do
|
|
case $i in
|
|
*.patch)
|
|
msg "Applying $i..."
|
|
if ! patch -s -p1 -N -i "$srcdir"/$i; then
|
|
echo $i >>failed
|
|
_patch_failed=1
|
|
fi
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if ! [ -z "$_patch_failed" ]; then
|
|
error "The following patches failed:"
|
|
cat failed
|
|
return 1
|
|
fi
|
|
|
|
# remove localversion from patch if any
|
|
rm -f localversion*
|
|
oldconfig
|
|
}
|
|
|
|
oldconfig() {
|
|
for i in $_flavors; do
|
|
local _config=config-$i.${CARCH}
|
|
local _builddir="$srcdir"/build-$i.$CARCH
|
|
mkdir -p "$_builddir"
|
|
echo "-$pkgrel-$i" > "$_builddir"/localversion-alpine \
|
|
|| return 1
|
|
|
|
cp "$srcdir"/$_config "$_builddir"/.config
|
|
make -C "$srcdir"/linux-$_kernver \
|
|
O="$_builddir" \
|
|
ARCH="$_carch" \
|
|
listnewconfig oldconfig
|
|
done
|
|
}
|
|
|
|
build() {
|
|
unset LDFLAGS
|
|
export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
|
|
for i in $_flavors; do
|
|
cd "$srcdir"/build-$i.$CARCH
|
|
make ARCH="$_carch" CC="${CC:-gcc}" \
|
|
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-Alpine"
|
|
done
|
|
}
|
|
|
|
_package() {
|
|
local _buildflavor="$1" _outdir="$2"
|
|
local _abi_release=${pkgver}-${pkgrel}-${_buildflavor}
|
|
export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
|
|
|
|
cd "$srcdir"/build-$_buildflavor.$CARCH
|
|
# modules_install seems to regenerate a defect Modules.symvers on s390x. Work
|
|
# around it by backing it up and restore it after modules_install
|
|
cp Module.symvers Module.symvers.backup
|
|
|
|
mkdir -p "$_outdir"/boot "$_outdir"/lib/modules
|
|
|
|
local _install
|
|
case "$CARCH" in
|
|
arm*|aarch64) _install="zinstall dtbs_install";;
|
|
*) _install=install;;
|
|
esac
|
|
|
|
make -j1 modules_install $_install \
|
|
ARCH="$_carch" \
|
|
INSTALL_MOD_PATH="$_outdir" \
|
|
INSTALL_PATH="$_outdir"/boot \
|
|
INSTALL_DTBS_PATH="$_outdir/boot/dtbs-$_buildflavor"
|
|
|
|
cp Module.symvers.backup Module.symvers
|
|
|
|
rm -f "$_outdir"/lib/modules/${_abi_release}/build \
|
|
"$_outdir"/lib/modules/${_abi_release}/source
|
|
rm -rf "$_outdir"/lib/firmware
|
|
|
|
install -D -m644 include/config/kernel.release \
|
|
"$_outdir"/usr/share/kernel/$_buildflavor/kernel.release
|
|
}
|
|
|
|
# main flavor installs in $pkgdir
|
|
package() {
|
|
depends="$depends linux-firmware-any"
|
|
|
|
_package edge "$pkgdir"
|
|
}
|
|
|
|
# subflavors install in $subpkgdir
|
|
virt() {
|
|
_package edge-virt "$subpkgdir"
|
|
}
|
|
|
|
_dev() {
|
|
local _flavor=$(echo $subpkgname | sed -E 's/(^linux-|-dev$)//g')
|
|
local _abi_release=${pkgver}-${pkgrel}-$_flavor
|
|
# copy the only the parts that we really need for build 3rd party
|
|
# kernel modules and install those as /usr/src/linux-headers,
|
|
# simlar to what ubuntu does
|
|
#
|
|
# this way you dont need to install the 300-400 kernel sources to
|
|
# build a tiny kernel module
|
|
#
|
|
pkgdesc="Headers and script for third party modules for $_flavor kernel"
|
|
depends="$_depends_dev"
|
|
local dir="$subpkgdir"/usr/src/linux-headers-${_abi_release}
|
|
export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
|
|
|
|
# first we import config, run prepare to set up for building
|
|
# external modules, and create the scripts
|
|
mkdir -p "$dir"
|
|
cp "$srcdir"/config-$_flavor.${CARCH} "$dir"/.config
|
|
echo "-$pkgrel-$_flavor" > "$dir"/localversion-alpine
|
|
|
|
make -j1 -C "$srcdir"/linux-$_kernver O="$dir" ARCH="$_carch" \
|
|
syncconfig prepare modules_prepare scripts
|
|
|
|
# remove the stuff that points to real sources. we want 3rd party
|
|
# modules to believe this is the soruces
|
|
rm "$dir"/Makefile "$dir"/source
|
|
|
|
# copy the needed stuff from real sources
|
|
#
|
|
# this is taken from ubuntu kernel build script
|
|
# http://kernel.ubuntu.com/git/ubuntu/ubuntu-zesty.git/tree/debian/rules.d/3-binary-indep.mk
|
|
cd "$srcdir"/linux-$_kernver
|
|
find . -path './include/*' -prune \
|
|
-o -path './scripts/*' -prune -o -type f \
|
|
\( -name 'Makefile*' -o -name 'Kconfig*' -o -name 'Kbuild*' -o \
|
|
-name '*.sh' -o -name '*.pl' -o -name '*.lds' -o -name 'Platform' \) \
|
|
-print | cpio -pdm "$dir"
|
|
|
|
cp -a scripts include "$dir"
|
|
|
|
find $(find arch -name include -type d -print) -type f \
|
|
| cpio -pdm "$dir"
|
|
|
|
install -Dm644 "$srcdir"/build-$_flavor.$CARCH/Module.symvers \
|
|
"$dir"/Module.symvers
|
|
|
|
mkdir -p "$subpkgdir"/lib/modules/${_abi_release}
|
|
ln -sf /usr/src/linux-headers-${_abi_release} \
|
|
"$subpkgdir"/lib/modules/${_abi_release}/build
|
|
}
|
|
|
|
sha512sums="
|
|
be03b6fee1d1ea8087b09874d27c0a602c0b04fd90ad38b975bd2c8455a07e83c29b56814aaf1389e82305fae0e4c2d1701075a7f0a7295dd28149f967ec5b3d linux-5.12.tar.xz
|
|
df9e2b7ff789a5f92354ff046f06b92ff9e3c2eabe59e7cc806ca6372fba10555c84bf1074176beda22058fc1dcf95abec8f86e201cdb243d8df200fd2991b1f patch-5.12.10.xz
|
|
3daf0a9cb3c0dcc340f4f8b4ea7b7d77b0d4fe80ce105a3bb92eeb1662a2c567e97bebb698c4f1823daf0db9068de0392c37a29216e40e4c655355cbc74cb81a config-edge.aarch64
|
|
b40586b97374b4cfd309e3544dffca5d098f689f8e10d95a3a28d7458f7404d836f573407aa80c52a4454e3d892983280b5619120c4cf0d136f6342065451428 config-edge.armv7
|
|
0dfe37ffcdd7c8a859e687f70263c16dd69c870b2bc1d8a75d9219a1f77988d9e7e2592faad9ca7e91e9c8839e10f95affa869d23333772bca4b1c53aa4eb041 config-edge.x86_64
|
|
4c8a2c2ce693edf514c5dac6d40fe89fe846238a3386c924944301346d01e9030086edaf73de9bff511c420ed8c951acd10e12caa3d72b15855833c8fdca6608 config-edge-virt.aarch64
|
|
ea35f51e56a8a84c154a5cdc10262c1c041c5382705835ddd68b6f832eaef90524011b212e17328cb21d43b9d7fc7ef85f3b1080ebd2760a426bfe6bd905b2ea config-edge-virt.armv7
|
|
36af3a69f4b25c85c5807c8bdd81f6c0203aee9c6f9c33fe297532bb5129d280f11c696d9c70bc94b4a1f4bca94910c9711c135add9e61acdaa777ac14cafa4c config-edge-virt.x86_64
|
|
"
|