diff options
Diffstat (limited to 'main/linux-rpi/APKBUILD')
-rw-r--r-- | main/linux-rpi/APKBUILD | 182 |
1 files changed, 86 insertions, 96 deletions
diff --git a/main/linux-rpi/APKBUILD b/main/linux-rpi/APKBUILD index f58aab73c5a..d95b8fa14aa 100644 --- a/main/linux-rpi/APKBUILD +++ b/main/linux-rpi/APKBUILD @@ -1,48 +1,37 @@ # Maintainer: Natanael Copa <ncopa@alpinelinux.org> pkgname=linux-rpi -pkgver=5.15.13 +pkgver=6.6.21 case $pkgver in *.*.*) _kernver=${pkgver%.*};; -*.*) _kernver=${pkgver};; +*.*) _kernver=$pkgver;; esac pkgrel=0 pkgdesc="Linux kernel with Raspberry Pi patches" url=https://github.com/raspberrypi/linux -depends="mkinitfs linux-firmware-brcm linux-firmware-cypress" +depends="initramfs-generator linux-firmware-brcm" _depends_dev="perl gmp-dev elfutils-dev bash mpc1-dev mpfr-dev" -makedepends="$_depends_dev sed installkernel bc linux-headers linux-firmware - bison flex openssl1.1-compat-dev findutils +makedepends="$_depends_dev gcc>=13.1.1_git20230603 sed installkernel bc linux-headers linux-firmware + bison flex openssl-dev>3 findutils xz " options="!strip !check" -_rpi_repo="git://github.com/raspberrypi/linux.git" -_linux_repo="git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git" -source="https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-$_kernver.tar.xz - https://cdn.kernel.org/pub/linux/kernel/v5.x/patch-$pkgver.xz +_rpi_repo="https://github.com/raspberrypi/linux.git" +_linux_repo="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git" +source="https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/linux-$_kernver.tar.xz + https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/patch-$pkgver.xz https://dev.alpinelinux.org/archive/rpi-patches/rpi-$pkgver-alpine.patch - config-changes-rpi.armhf - config-changes-rpi.armv7 - config-changes-rpi.aarch64 - config-changes-rpi2.armhf - config-changes-rpi2.armv7 - config-changes-rpi4.armv7 - config-changes-rpi4.aarch64 + common-changes.config " -subpackages="" arch="armhf armv7 aarch64" -license="GPL-2.0" -_flavors= -for _i in $source; do - case $_i in - config-*.$CARCH) - _f=${_i%.$CARCH} - _f=${_f#config-changes-} - _flavors="$_flavors ${_f}" - [ "linux-$_f" != "$pkgname" ] && subpackages="$subpackages linux-${_f}::$CBUILD_ARCH" - subpackages="$subpackages linux-${_f}-dev:_dev:$CBUILD_ARCH" - ;; - esac +license="GPL-2.0-only" +_flavors="rpi" + +for _f in $_flavors; do + if [ "linux-$_f" != "$pkgname" ]; then + subpackages="$subpackages linux-$_f::$CBUILD_ARCH" + fi + subpackages="$subpackages linux-$_f-dev:_dev:$CBUILD_ARCH" done case "$CARCH" in @@ -82,7 +71,7 @@ prepare() { local flavor= for flavor in $_flavors; do - local _builddir="$srcdir"/build-$flavor + local _builddir="$srcdir"/build-$flavor.$CARCH mkdir -p "$_builddir" echo "-$pkgrel-$flavor" > "$_builddir"/localversion-alpine _genconfig $flavor @@ -95,18 +84,17 @@ prepare() { } # generate config from defconfig and apply local changes. -# config-changes-$flavor.$CARCH holds a list of = delimited +# common-changes.config holds a list of = delimited # config command and values used by kernel scripts/config script. _genconfig() { local flavor=$1 defconfig= - local builddir="$srcdir"/build-$flavor + local builddir="$srcdir"/build-$flavor.$CARCH local defconfig= - case $flavor in - rpi) defconfig=bcmrpi_defconfig - [ "$CARCH" = "aarch64" ] && defconfig=bcmrpi3_defconfig ;; - rpi2) defconfig=bcm2709_defconfig ;; - rpi4) defconfig=bcm2711_defconfig ;; - *) die "Unknown flavor: $flavor" ;; + case "$CARCH" in + armhf) defconfig=bcmrpi_defconfig;; + armv7) defconfig=bcm2709_defconfig;; + aarch64) defconfig=bcm2711_defconfig;; + *) die "Unknown CARCH: $CARCH" ;; esac cp "$srcdir"/linux-$_kernver/arch/$_carch/configs/$defconfig \ @@ -130,14 +118,14 @@ _genconfig() { msg "[$flavor] $cmd: $option $str" "$srcdir"/linux-$_kernver/scripts/config \ --file "$builddir"/.config \ - --${cmd} "$option" "${str//\"/}" - done < "$srcdir"/config-changes-$flavor.${CARCH} + --$cmd "$option" "${str//\"/}" + done < "$srcdir"/common-changes.config } # verify if options are set to correct value _verifyconfig() { local flavor=$1 - local builddir="$srcdir"/build-$flavor + local builddir="$srcdir"/build-$flavor.$CARCH while read line; do [ ${line:0:1} = "#" ] && continue local option=${line%%=*} str= invert= @@ -152,13 +140,16 @@ _verifyconfig() { esac grep -q $invert "^$str" "$builddir"/.config || \ die "Config: $option not properly set!" - done < "$srcdir"/config-changes-$flavor.${CARCH} + done < "$srcdir"/common-changes.config } build() { unset LDFLAGS + # for some reason these sometimes leak into the kernel build, + # -Werror=format-security breaks some stuff + unset CFLAGS CPPFLAGS CXXFLAGS for i in $_flavors; do - cd "$srcdir"/build-$i + cd "$srcdir"/build-$i.$CARCH local _kver=$(make kernelversion) if [ "$_kver" != "$pkgver" ]; then error "Version in Makefile ($_kver) does not correspond with pkgver ($pkgver)" @@ -171,10 +162,10 @@ build() { _package() { local _buildflavor="$1" _outdir="$2" - local _abi_release=${pkgver}-${pkgrel}-${_buildflavor} - - cd "$srcdir"/build-$_buildflavor + local _builddir="$srcdir"/build-$_buildflavor.$CARCH + cd "$_builddir" + local _abi_release="$(make -s kernelrelease)" mkdir -p "$_outdir"/boot "$_outdir"/lib/modules local _install @@ -190,26 +181,28 @@ _package() { ;; esac - cd "$srcdir"/build-$_buildflavor # modules_install seems to regenerate a defect Modules.symvers. Work # around it by backing it up and restore it after modules_install cp Module.symvers Module.symvers.backup local INSTALL_DTBS_PATH="$_outdir"/boot - make -j1 modules_install $_install \ + make modules_install $_install \ ARCH="$_carch" \ INSTALL_MOD_PATH="$_outdir" \ INSTALL_PATH="$_outdir"/boot \ INSTALL_DTBS_PATH="$INSTALL_DTBS_PATH" cp Module.symvers.backup Module.symvers - rm -f "$_outdir"/lib/modules/${_abi_release}/build \ - "$_outdir"/lib/modules/${_abi_release}/source + 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 + # allow the initramfs generators to know the package name the kernel came from + echo "${subpkgname:-$pkgname}" > "$_outdir"/lib/modules/$_abi_release/pkgname + if [ "$CARCH" = "aarch64" ]; then mv -f "$INSTALL_DTBS_PATH"/broadcom/*.dtb \ "$INSTALL_DTBS_PATH" @@ -217,43 +210,28 @@ _package() { fi } -genpatch() { - local RPI_REPO_PATH="$HOME/repositories/linux-rpi" - msg "Checking out/pulling the Linux kernel git repository.." - mkdir -p "$RPI_REPO_PATH" && cd "$RPI_REPO_PATH" - git clone "$_linux_repo" "$RPI_REPO_PATH" 2>/dev/null || git pull - msg "Fetching raspberry git repository.." - git remote add rpi "$_rpi_repo" 2>/dev/null || true - git fetch rpi - msg "Generating rpi patch: rpi-$pkgver.patch" - mkdir -p "$srcdir" - git diff v$pkgver remotes/rpi/rpi-${pkgver%.*}.y > \ - "$srcdir"/rpi-$pkgver.patch - msg "Sending patch to dev.alpinelinux.org.." - scp "$srcdir"/rpi-$pkgver.patch \ - dev.alpinelinux.org:/archive/rpi-patches/rpi-$pkgver.patch - cd "$startdir" && abuild checksum -} - # main flavor installs in $pkgdir package() { + case "$CARCH" in + armv7) + provides="linux-rpi2=$pkgver-r$pkgrel" # for backward compatibility + replaces="linux-rpi2" # for backward compatibility + ;; + aarch64) + provides="linux-rpi4=$pkgver-r$pkgrel" # for backward compatibility + replaces="linux-rpi4" # for backward compatibility + ;; + esac _package rpi "$pkgdir" } -# subflavors install in $subpkgdir -rpi2() { - depends="mkinitfs linux-firmware-brcm linux-firmware-cypress" - _package rpi2 "$subpkgdir" -} - -rpi4() { - depends="mkinitfs linux-firmware-brcm linux-firmware-cypress" - _package rpi4 "$subpkgdir" -} _dev() { local _flavor=$(echo $subpkgname | sed -E 's/(^linux-|-dev$)//g') - local _abi_release=${pkgver}-${pkgrel}-$_flavor + local _builddir="$srcdir"/build-$_flavor.$CARCH + + cd "$_builddir" + local _abi_release="$(make -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 @@ -263,15 +241,33 @@ _dev() { # pkgdesc="Headers and script for third party modules for $_flavor kernel" depends="$_depends_dev" - local dir="$subpkgdir"/usr/src/linux-headers-${_abi_release} + + # handle backward compatibility with legacy flavors + case "$_flavor" in + rpi) + case "$CARCH" in + armv7) + provides="linux-rpi2-dev=$pkgver-r$pkgrel" + replaces="linux-rpi2-dev" + ;; + aarch64) + provides="linux-rpi4-dev=$pkgver-r$pkgrel" + replaces="linux-rpi4-dev" + ;; + esac + ;; + *) die "Unknown flavor: $flavor" ;; + esac + + 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"/build-$_flavor/.config "$dir"/.config + cp "$_builddir"/.config "$dir"/.config echo "-$pkgrel-$_flavor" > "$dir"/localversion-alpine - make -j1 -C "$srcdir"/linux-$_kernver O="$dir" \ + make -j1 -C "$srcdir"/linux-$_kernver ARCH="$_carch" O="$dir" \ syncconfig prepare modules_prepare scripts # remove the stuff that points to real sources. we want 3rd party @@ -293,23 +289,17 @@ _dev() { find $(find arch -name include -type d -print) -type f \ | cpio -pdm "$dir" - install -Dm644 "$srcdir"/build-$_flavor/Module.symvers \ + install -Dm644 "$_builddir"/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 + 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 -36f2c500b7391d1d33eaf844c1f9f63ee54ae1a5284739dc438a0758837df088226921c0b3a51a9fc29b193fafef1aa44afbb3379f8fa0f550e040507b5004b4 patch-5.15.13.xz -5ece49d2d4cfb81898007b539cec71b292563cb7d5c901195ff235a1816bfbb1b735f4c3604154d2211ce4f54d80ab56e332d8d98681c547d7384baed70f19e4 rpi-5.15.13-alpine.patch -13612ed26f486a4053dc61a1d376cccf21b57f96e9359d3f3b1897458fb96dde24dfcd32f15eeec2a60e5246044d67df2d84b215b2dbb082495b08e872c735c9 config-changes-rpi.armhf -13612ed26f486a4053dc61a1d376cccf21b57f96e9359d3f3b1897458fb96dde24dfcd32f15eeec2a60e5246044d67df2d84b215b2dbb082495b08e872c735c9 config-changes-rpi.armv7 -13612ed26f486a4053dc61a1d376cccf21b57f96e9359d3f3b1897458fb96dde24dfcd32f15eeec2a60e5246044d67df2d84b215b2dbb082495b08e872c735c9 config-changes-rpi.aarch64 -13612ed26f486a4053dc61a1d376cccf21b57f96e9359d3f3b1897458fb96dde24dfcd32f15eeec2a60e5246044d67df2d84b215b2dbb082495b08e872c735c9 config-changes-rpi2.armhf -13612ed26f486a4053dc61a1d376cccf21b57f96e9359d3f3b1897458fb96dde24dfcd32f15eeec2a60e5246044d67df2d84b215b2dbb082495b08e872c735c9 config-changes-rpi2.armv7 -13612ed26f486a4053dc61a1d376cccf21b57f96e9359d3f3b1897458fb96dde24dfcd32f15eeec2a60e5246044d67df2d84b215b2dbb082495b08e872c735c9 config-changes-rpi4.armv7 -13612ed26f486a4053dc61a1d376cccf21b57f96e9359d3f3b1897458fb96dde24dfcd32f15eeec2a60e5246044d67df2d84b215b2dbb082495b08e872c735c9 config-changes-rpi4.aarch64 +458b2c34d46206f9b4ccbac54cc57aeca1eaecaf831bc441e59701bac6eadffc17f6ce24af6eadd0454964e843186539ac0d63295ad2cc32d112b60360c39a35 linux-6.6.tar.xz +e7c8e640fc519d6c92cd13985a7e37d2c8fe0277b7386a9f861c39a6f164d815133b5fb02a691d43c7b79563b09d6ea78674af0ccecfef1b418f4d03bf52a9bc patch-6.6.21.xz +cd73e92fbd2fe47bd756eeaae06b3927813bca528c2aecc7e5833797f0bb1d24cd15dec762088b1faaa8ca9785d8d30027aa6b4a419d030a7f1c7d078c8d6486 rpi-6.6.21-alpine.patch +f014a9b3574df17a3f6e0d8a2c48aef4239f33a062d64704fd56ecd596d090bb0413c8cb2abd6ec3ceeee09fa66243b6a3f7b405657edbd9c7a6407d6ec79fef common-changes.config " |