diff options
author | Karel Kočí <cynerd@email.cz> | 2019-05-01 11:43:18 +0200 |
---|---|---|
committer | Karel Kočí <cynerd@email.cz> | 2019-05-01 11:43:18 +0200 |
commit | 7c8baed95e4be38ce9f690759f21114f9ff0ce57 (patch) | |
tree | 2da4f0b3b7a052a450a56326845665cb9313d8fc /linux-mox/APKBUILD | |
parent | 2d6635cdc35b8c5639d31bc7c720463c560acbaf (diff) | |
download | alpine-personal-pkgs-7c8baed95e4be38ce9f690759f21114f9ff0ce57.tar.gz alpine-personal-pkgs-7c8baed95e4be38ce9f690759f21114f9ff0ce57.tar.bz2 alpine-personal-pkgs-7c8baed95e4be38ce9f690759f21114f9ff0ce57.zip |
linux-mox: add kernel for Turris Mox
Diffstat (limited to 'linux-mox/APKBUILD')
-rw-r--r-- | linux-mox/APKBUILD | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/linux-mox/APKBUILD b/linux-mox/APKBUILD new file mode 100644 index 0000000..3c469ab --- /dev/null +++ b/linux-mox/APKBUILD @@ -0,0 +1,215 @@ +# Maintainer: Karel Koci <cynerd@email.cz> + +_flavor=mox +pkgname=linux-${_flavor} +pkgver=4.19.37 +case $pkgver in + *.*.*) _kernver=${pkgver%.*};; + *.*) _kernver=$pkgver;; +esac +pkgrel=1 +pkgdesc="Linux kernel for Turris MOX" +url="http://kernel.org" +depends="mkinitfs" +_depends_dev="perl gmp-dev elfutils-dev bash flex bison" +makedepends="$_depends_dev sed installkernel bc linux-headers linux-firmware openssl-dev" +options="!strip" +_config="config-mox" +install= +source="https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/linux-$_kernver.tar.xz + config-mox + " +subpackages="$pkgname-dev:_dev:$CBUILD_ARCH" +_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 + +if [ "${pkgver%.0}" = "$pkgver" ]; then + source="$source + https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/patch-$pkgver.xz" +fi +arch="aarch64" +license="GPL-2.0" + +_carch=${CARCH} +case "$_carch" in +aarch64*) _carch="arm64" ;; +arm*) _carch="arm" ;; +mips*) _carch="mips" ;; +ppc*) _carch="powerpc" ;; +s390*) _carch="s390" ;; +esac + +HOSTCC="${CC:-gcc}" +HOSTCC="${HOSTCC#${CROSS_COMPILE}}" + +prepare() { + local _patch_failed= + cd "$srcdir"/linux-$_kernver + if [ "$_kernver" != "$pkgver" ]; then + msg "Applying patch-$pkgver.xz" + unxz -c < "$srcdir"/patch-$pkgver.xz | patch -p1 -N + fi + + # 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" HOSTCC="$HOSTCC" \ + listnewconfig oldconfig + done +} + +build() { + unset LDFLAGS + 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} + + cd "$srcdir"/build-$_buildflavor.$CARCH + + mkdir -p "$_outdir"/boot "$_outdir"/lib/modules + + local _install + case "$CARCH" in + arm*) + local _dtbdir="$_outdir"/usr/lib/linux-${_abi_release} + mkdir -p "$_dtbdir" + for i in arch/arm/boot/dts/*.dtb ; do + install -m644 "$i" "$_dtbdir" + done + + _install=zinstall + ;; + *) + _install=install + ;; + esac + + make -j1 modules_install $_install \ + ARCH="$_carch" \ + INSTALL_MOD_PATH="$_outdir" \ + INSTALL_PATH="$_outdir"/boot \ + || return 1 + + rm -f "$_outdir"/lib/modules/${_abi_release}/build \ + "$_outdir"/lib/modules/${_abi_release}/source + rm -rf "$_outdir"/lib/firmware + + install -D include/config/kernel.release \ + "$_outdir"/usr/share/kernel/$_buildflavor/kernel.release +} + +# main flavor installs in $pkgdir +package() { + depends="$depends linux-firmware-any" + + _package vanilla "$pkgdir" +} + +# subflavors install in $subpkgdir +virt() { + _package 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} + + # 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 \ + || return 1 + make -j1 -C "$srcdir"/linux-$_kernver O="$dir" ARCH="$_carch" HOSTCC="$HOSTCC" \ + silentoldconfig 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' \) \ + -print | cpio -pdm "$dir" || return 1 + + cp -a scripts include "$dir" || return 1 + 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="ab67cc746b375a8b135e8b23e35e1d6787930d19b3c26b2679787d62951cbdbc3bb66f8ededeb9b890e5008b2459397f9018f1a6772fdef67780b06a4cb9f6f4 linux-4.19.tar.xz +4f9d98d1ea895e0bd4517f6a5a702e9f1509a6f5802156f5db99bc148cb291c0323a629a8a4c126f94da4098eabdabe9a1a92fd737667906b4f0f4430e9f22a5 config-mox +c5640131a7f2ee0938629a629bbd5415ebacb921596cb47b4a8eec2f130719fa9b5aad72e92590aac68a71be1be44a8cb101ffb0702ab508942d7f83877ecf48 patch-4.19.37.xz" |