aports/testing/linux-sophgo/APKBUILD
2025-02-13 20:07:55 +01:00

175 lines
5.8 KiB
Text

# Contributor: Carlo Landmeter <clandmeter@alpinelinux.org>
_flavor=sophgo
pkgname=linux-$_flavor
pkgver=6.12.7
_kernver=${pkgver%.*}
pkgrel=0
arch="riscv64"
pkgdesc="Linux Sophgo kernel"
url="https://github.com/sophgo/linux-riscv"
depends="initramfs-generator"
subpackages="$pkgname-dev $pkgname-doc"
_depends_dev="perl gmp-dev mpc1-dev mpfr-dev elfutils-dev bash flex bison zstd"
makedepends="$_depends_dev sed installkernel bc linux-headers linux-firmware-any openssl-dev>3 mawk
diffutils findutils zstd pahole python3 gcc>=13.1.1_git20230624"
options="!strip !check"
license="GPL-2.0-only"
source="https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/linux-$_kernver.tar.xz
patch-$pkgver.patch.xz::https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/patch-$pkgver.xz
https://dev.alpinelinux.org/archive/sophgo-patches/sophgo-$pkgver-alpine.patch
sophgo.riscv64.config
"
builddir="$srcdir"/linux-$_kernver
prepare() {
default_prepare
# remove localversion from patch if any
rm -f localversion*
}
prepareconfig() {
local _builddir="$srcdir"/build-$_flavor-$CARCH
mkdir -p "$_builddir"
cp "$srcdir"/"$_flavor.$arch.config" "$_builddir"/.config
echo "-$pkgrel-$flavor" > "$_builddir"/localversion-alpine
make -C "$srcdir"/linux-$_kernver \
O="$_builddir" \
ARCH="riscv" \
olddefconfig
}
build() {
unset LDFLAGS CFLAGS CPPFLAGS CXXFLAGS
export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
local _builddir="$srcdir/build-$_flavor-$CARCH"
mkdir -p "$_builddir"
echo "-$pkgrel-$_flavor" > "$_builddir"/localversion-alpine
cp "$srcdir"/"$_flavor.$arch.config" "$_builddir"/.config
msg "Configuring kernel"
make -C "$builddir" \
ARCH="riscv" \
O="$_builddir" \
olddefconfig
msg "Build kernel"
cd "$_builddir"
make CC="${CC:-gcc}" \
ARCH="riscv" \
AWK="${AWK:-mawk}" \
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-Alpine"
}
package() {
depends="$depends linux-firmware-any"
local _builddir="$srcdir/build-$_flavor-$arch"
export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
cd "$_builddir"
local _abi_release="$(make -s kernelrelease)"
mkdir -p "$pkgdir"/boot "$pkgdir"/lib/modules
make modules_install zinstall dtbs_install \
ARCH="riscv" \
INSTALL_MOD_PATH="$pkgdir" \
INSTALL_MOD_STRIP=1 \
INSTALL_PATH="$pkgdir"/boot \
INSTALL_DTBS_PATH="$pkgdir/boot/dtbs-$_flavor"
rm -f "$pkgdir"/lib/modules/"$_abi_release"/build \
"$pkgdir"/lib/modules/"$_abi_release"/source
rm -rf "$pkgdir"/lib/firmware
install -D -m644 include/config/kernel.release \
"$pkgdir"/usr/share/kernel/$_flavor/kernel.release
mkdir -p "$pkgdir"/usr/share/doc
cp -r "$builddir"/Documentation \
"$pkgdir"/usr/share/doc/linux-doc-"$pkgver"/
# remove files that aren't part of the documentation itself
for nondoc in \
.gitignore conf.py docutils.conf \
dontdiff Kconfig Makefile
do
rm "$pkgdir"/usr/share/doc/linux-doc-"$pkgver"/"$nondoc"
done
# create /usr/share/doc/linux-doc symlink
cd "$pkgdir"/usr/share/doc; ln -s linux-doc-"$pkgver" linux-doc
}
dev() {
local _builddir="$srcdir/build-$_flavor-$arch"
local _abi_release="$(make -C "$_builddir" -s kernelrelease)"
# 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 -a "$_builddir"/.config "$_builddir"/localversion-alpine \
"$dir"/
make -C "$builddir" \
ARCH="riscv" \
O="$dir" \
AWK="${AWK:-mawk}" \
prepare modules_prepare scripts
# remove the stuff that points to real sources. we want 3rd party
# modules to believe this is the sources
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 "$builddir"
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 "arch/riscv" -name include -type d -print | while IFS='' read -r folder; do
find "$folder" -type f
done | sort -u | cpio -pdm "$dir"
install -Dm644 "$_builddir"/Module.symvers \
"$dir"/Module.symvers
# remove unneeded things
msg "Removing documentation..."
rm -r "$dir"/Documentation
find "$dir" -type f -name '*.o' -printf 'Removing %P\n' -delete
msg "Removing unneeded arch headers..."
for i in "$dir"/arch/*; do
if [ "${i##*/}" != riscv ]; then
echo " ${i##*/}"
rm -r "$i"
fi
done
mkdir -p "$subpkgdir"/lib/modules/"$_abi_release"
ln -sf /usr/src/linux-headers-"$_abi_release" \
"$subpkgdir"/lib/modules/"$_abi_release"/build
}
sha512sums="
a37b1823df7b4f72542f689b65882634740ba0401a42fdcf6601d9efd2e132e5a7650e70450ba76f6cd1f13ca31180f2ccee9d54fe4df89bc0000ade4380a548 linux-6.12.tar.xz
f45143354f8b41f928fa76c7e26d4a12cacafb972172c3835e5178d3eb5c385091af26c7bf303467a7cec7efdea23a90257cba6c4f858458ddb2aacce4131344 patch-6.12.7.patch.xz
966df374bea930ad39d60c9d0a9582156321f8b4aaad5d629331f69c55241d51dbf9488fc5e8368051f282629d1358e8c7a0e97e5e48effc7b99ad8fbf0b4938 sophgo-6.12.7-alpine.patch
1725dcc4c7cd72c3964d97504d19452ef542ba694a6c81471d4d787752e70560e7504302371206c3c8e229468e0391ebedd5bf34430cf18cc05176787d3e5ffa sophgo.riscv64.config
"