meow?
parent
d46f774282
commit
a7b7ccfa7d
|
@ -1,7 +1,10 @@
|
|||
FROM alpine:3.13
|
||||
FROM alpine:latest
|
||||
|
||||
COPY ./build.sh /usr/local/bin/
|
||||
|
||||
RUN echo 'http://alpine.sakamoto.pl/alpine/edge/main/' > /etc/apk/repositories
|
||||
RUN echo 'http://alpine.sakamoto.pl/alpine/edge/community/' >> /etc/apk/repositories
|
||||
RUN echo 'http://alpine.sakamoto.pl/alpine/edge/testing/' >> /etc/apk/repositories
|
||||
RUN apk add bash abuild build-base nano
|
||||
RUN adduser -D ci
|
||||
RUN addgroup ci abuild
|
||||
|
|
4
build.sh
4
build.sh
|
@ -2,8 +2,8 @@
|
|||
|
||||
set -euxo pipefail
|
||||
|
||||
echo 'permission test' > /mnt/alpine/test
|
||||
rm /mnt/alpine/test
|
||||
echo 'permission test' > out/test
|
||||
rm out/test
|
||||
|
||||
for repo in sakamoto; do
|
||||
for pkg in $repo/*; do
|
||||
|
|
|
@ -0,0 +1,213 @@
|
|||
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
|
||||
|
||||
_flavor=gpd
|
||||
pkgname=linux-${_flavor}
|
||||
pkgver=5.15.11
|
||||
case $pkgver in
|
||||
*.*.*) _kernver=${pkgver%.*};;
|
||||
*.*) _kernver=$pkgver;;
|
||||
esac
|
||||
pkgrel=1
|
||||
pkgdesc="Linux lts kernel"
|
||||
url="https://www.kernel.org"
|
||||
depends="mkinitfs"
|
||||
_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 openssl1.1-compat-dev
|
||||
diffutils findutils zstd"
|
||||
options="!strip"
|
||||
_config=${config:-config-lts.${CARCH}}
|
||||
install=
|
||||
source="https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/linux-$_kernver.tar.xz
|
||||
config-lts.x86_64
|
||||
"
|
||||
#subpackages="$pkgname-dev:_dev:$CBUILD_ARCH"
|
||||
subpackages=""
|
||||
_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="all !armhf !riscv64"
|
||||
license="GPL-2.0"
|
||||
|
||||
_carch=${CARCH}
|
||||
|
||||
# secfixes:
|
||||
# 5.10.4-r0:
|
||||
# - CVE-2020-29568
|
||||
# - CVE-2020-29569
|
||||
|
||||
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" \
|
||||
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 lts "$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}
|
||||
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="
|
||||
d25ad40b5bcd6a4c6042fd0fd84e196e7a58024734c3e9a484fd0d5d54a0c1d87db8a3c784eff55e43b6f021709dc685eb0efa18d2aec327e4f88a79f405705a linux-5.15.tar.xz
|
||||
2a9bde56f289c9e43e9dc75226ade5920149c530105caf58a4be392e5c215500f5b7140bba07ed5d7211f36793de7712cfb5432f069bce118178db99f8b40fd6 config-lts.x86_64
|
||||
946e38578d67331440635a423ae2b4d258b6a9eb81519c49cb8f6efe7912f765c78789702780fa120bb6f21b58c6eda4d5058f33870dd1e208a43ba513144be2 patch-5.15.11.xz
|
||||
"
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue