summaryrefslogtreecommitdiff
path: root/libre/linux-libre-zen/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'libre/linux-libre-zen/PKGBUILD')
-rw-r--r--libre/linux-libre-zen/PKGBUILD373
1 files changed, 373 insertions, 0 deletions
diff --git a/libre/linux-libre-zen/PKGBUILD b/libre/linux-libre-zen/PKGBUILD
new file mode 100644
index 000000000..86d957dc1
--- /dev/null
+++ b/libre/linux-libre-zen/PKGBUILD
@@ -0,0 +1,373 @@
+# Maintainer: David P. <megver83@parabola.nu>
+# Contributor: André Silva <emulatorman@hyperbola.info>
+# Contributor: Márcio Silva <coadde@hyperbola.info>
+# Contributor: Nicolás Reynolds <fauno@kiwwwi.com.ar>
+# Contributor: Sorin-Mihai Vârgolici <smv@yobicore.org>
+# Contributor: Michał Masłowski <mtjm@mtjm.eu>
+# Contributor: Luke R. <g4jc@openmailbox.org>
+
+# Based on linux-zen package
+
+_replacesarchkernel=()
+_replacesoldkernels=(linux-libre-pck)
+_replacesoldmodules=()
+
+pkgbase=linux-libre-zen
+pkgver=6.6.8.zen1
+pkgrel=1
+pkgdesc='Linux-libre'
+url='https://linux-libre.fsfla.org/'
+arch=(i686 x86_64 armv7h)
+license=(GPL2)
+makedepends=(
+ bc
+ cpio
+ gettext
+ libelf
+ pahole
+ perl
+ python
+ tar
+ xz
+
+ # htmldocs
+ graphviz
+ imagemagick
+ python-sphinx
+ texlive-latexextra
+)
+options=('!strip')
+_srcname=linux-6.6
+_srctag=v${pkgver%.*}-${pkgver##*.}
+source=(
+ "https://linux-libre.fsfla.org/pub/linux-libre/releases/${_srcname##*-}-gnu/linux-libre-${_srcname##*-}-gnu.tar.xz"{,.sign}
+ "https://linux-libre.fsfla.org/pub/linux-libre/releases/${pkgver%.*}-gnu/patch-${_srcname##*-}-gnu-${pkgver%.*}-gnu.xz"{,.sign}
+ "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_"{clut224.ppm,vga16.ppm,mono.pbm}{,.sig}
+ "https://github.com/zen-kernel/zen-kernel/releases/download/$_srctag/linux-$_srctag.patch.zst"{,.sig}
+ config.i686 config.x86_64 config.armv7h # the main kernel config files
+ linux-armv7h.preset # armv7h preset file for mkinitcpio ramdisk
+
+ # maintain the TTY over USB disconnects
+ # http://www.coreboot.org/EHCI_Gadget_Debug
+ 0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch
+ # fix Atmel maXTouch touchscreen support
+ # https://labs.parabola.nu/issues/877
+ # http://www.fsfla.org/pipermail/linux-libre/2015-November/003202.html
+ 0002-fix-Atmel-maXTouch-touchscreen-support.patch
+)
+source_i686=(
+ # avoid using zstd compression in ultra mode (exhausts virtual memory)
+ no-ultra-zstd.patch
+)
+source_armv7h=(
+ # Arch Linux ARM patches
+ 0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch
+ 0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch
+ 0003-fix-mvsdio-eMMC-timing.patch
+ 0004-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch
+ #0005-set-default-cubietruck-led-triggers.patch
+ #0006-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch
+ #0007-USB-Armory-MkII-support.patch
+)
+validpgpkeys=(
+ 474402C8C582DAFBE389C427BCB7CF877E7D47A7 # Alexandre Oliva
+ 6DB9C4B4F0D8C0DC432CF6E4227CA7C556B2BA78 # David P.
+ A2FF3A36AAA56654109064AB19802F8B0D70FC30 # Jan Alexander Steffens (heftig)
+)
+sha256sums=('d71785bdb694fefaa4f183e5dd2ffc453c179db6f9427cc37e1ed046f0073ccf'
+ 'SKIP'
+ '4193aba41ae2eed56059b7fe917fa0b933573578b7a71f4e0fdb7a4487075170'
+ 'SKIP'
+ 'bfd4a7f61febe63c880534dcb7c31c5b932dde6acf991810b41a939a93535494'
+ 'SKIP'
+ '6de8a8319271809ffdb072b68d53d155eef12438e6d04ff06a5a4db82c34fa8a'
+ 'SKIP'
+ '13bd7a8d9ed6b6bc971e4cd162262c5a20448a83796af39ce394d827b0e5de74'
+ 'SKIP'
+ '754939cecb0938e147c7973ebce505b6aacd3e21572345f9aced312177df3ebf'
+ 'SKIP'
+ '63a18d5ca9202e2aecbd5fe6fbe09e9f3c17f490f10992272e583d4aaf348261'
+ 'daac5c2cc80ff908d01dae730907a8be4cb9a271b677c0626faaa1fb3a322df3'
+ '5d2601056dcde3544204ef4cbf396362fe604f542ed31cb3831a00e28c4040f6'
+ 'ca1708abbd2f8960c278722dc81a7c635973d92872386ad9e2fff10b86836e98'
+ '0376bd5efa31d4e2a9d52558777cebd9f0941df8e1adab916c868bf0c05f2fc3'
+ '351fd96be8cd5ebd0435c0a8a978673fc023e3b1026085e67f86d815b2285e25')
+sha256sums_i686=('d32270be5fd9c3e3ba50f3aef33f6cfcb85be0c8216f03b777287cc621fdff28')
+sha256sums_armv7h=('ef4661a32234fe12bda28e698400c78c11491387df83ee554c53afb4dba244da'
+ 'd3a4b7c7a3d3b4d69369b85630eef33b21cfbcffc23adbdc3cfa837610912287'
+ '2bce52fa4ae4d34ca171d3aa100302a920c231275fc3ba9141af8b2f68cf67d1'
+ '12d5706b00d2939b92130a4dc41d060f5e1fea75424b902ebceca72e427dc3b9')
+b2sums=('e3e753fed07258f34e2e44e1acd4be0c22a3c58a3ae4856b518a4f99358f5bf6e8f38e41f422d9a434b33b0d7ee972e93ac7d37c9734949d6db263afe4c4f47c'
+ 'SKIP'
+ '53cb120b0bc8bce90e19fce0a69d05ab3f69d07ce75976d2106e0edaf5699fb71f777b1913c1fc36075d9dc46d3f4bfa1f9e4f2e7901bae869c28d3642a0a93e'
+ 'SKIP'
+ '73fee2ae5cb1ffd3e6584e56da86a8b1ff6c713aae54d77c0dab113890fc673dc5f300eb9ed93fb367b045ece8fa80304ff277fe61665eccf7b7ce24f0c045eb'
+ 'SKIP'
+ 'd02a1153a4285b32c774dca4560fe37907ccf30b8e487a681b717ed95ae9bed5988875c0a118938e5885ae9d2857e53a6f216b732b6fa3368e3c5fe08c86382c'
+ 'SKIP'
+ '580911af9431c066bbc072fd22d5e2ef65f12d8358cec5ff5a4f1b7deebb86cef6b5c1ad631f42350af72c51d44d2093c71f761234fb224a8b9dbb3b64b8201d'
+ 'SKIP'
+ 'b43bea249615fd8ebce9303fa9c889d4e4fd3310b0949c66aaa4ba026bd4b3bed871ef452536aaf891e33a5cf0b427d96da04146e8aa8e2e61f36afc203efcab'
+ 'SKIP'
+ '0842075aaddbd7e13878ab99f2136497a38efa2ca34a7aa8332c8dbe40220435b46a9c0294d87e2904c8d947d5bc803fe569ff9ca717f885857ec7ac5925bc68'
+ '6f5db13379546514d21091d24845c421bab9c1721a4b102ab970976e508f2505e5555d57ca85fc4f0da026d5200398e9a39e542bc718c9935aea86751b38296f'
+ '0455c8bd5b4db664bec18ffa3e6c11b616d4920e10a14dbbae120516a4c0204d7fb411fb5af8ece5054d37901ffdc3df41d781ecb7259693f0d61cbacafca012'
+ 'af69176b1117b94e56b043e97b0bd5873a2974a6a2fd52b102d0ffdca440ff68cfb241d6c4d4ef453cc8c220c236b739bad232e53fd500ce7672fa6e5ba87383'
+ 'c2214154c36900e311531bfe68184f31639f5c50fed23bc3803a7f18439b7ff258552a39f02fed0ea92f10744e17a6c55cef0ef1a98187f978fe480fb3dddc14'
+ '0c7ceba7cd90087db3296610a07886f337910bad265a32c052d3a703e6eb8e53f355ab9948d72d366408d968d8ee7435084dd89bef5ed0b69355fd884c2cd468')
+b2sums_i686=('165ab9dd8cedeaae5327accc1581c19cf0be55f923b03feb889cad3351b74c7c4cd3d3c206938e5152bfe1d947513dea8f630f8f5544099ec13d16d254725c40')
+b2sums_armv7h=('73ecc5862c6b4aef7b163c1992004273fbf791b82c75a8602e3def311f682f2b866124c0bfde90d03c7c76bb8b5853bdb9daad6ee2ab0908f4145cda476b8286'
+ '15f7b70b5d153e9336006aba873a78f94d91b8df5e1939041f12e678bb9cfbdda2e362001068a07c044ce606cf0d4d2e625002df9c569c914f7ac248d4d3e8ad'
+ '6219cec826bc543000ab87cf35dcc713f0635519cf79e75888b213a5e2d1f728e59e70df7fd842dda6e40494bf9cafa9f87368cb75b338c5a157a0adcf583512'
+ '66d6cff292962c4c8bbea62b2240c4c53c0c514f9e99864be9244cb846c505e1bedd800ca1347b80883543035d20573b06796e5bacbace6e829880695ffca781')
+
+_replacesarchkernel=("${_replacesarchkernel[@]/\%/${pkgbase#linux-libre}}")
+_replacesoldkernels=("${_replacesoldkernels[@]/\%/${pkgbase#linux-libre}}")
+_replacesoldmodules=("${_replacesoldmodules[@]/\%/${pkgbase#linux-libre}}")
+
+case "$CARCH" in
+ i686|x86_64) KARCH=x86;;
+ armv7h) KARCH=arm;;
+esac
+
+export KBUILD_BUILD_HOST=parabola
+export KBUILD_BUILD_USER=$pkgbase
+export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
+
+prepare() {
+ cd $_srcname
+
+ if [ "${_srcname##*-}" != "${pkgver%.*}" ]; then
+ echo "Applying upstream patch..."
+ patch -Np1 < "../patch-${_srcname##*-}-gnu-${pkgver%.*}-gnu"
+ fi
+
+ echo "Adding freedo as boot logo..."
+ install -m644 -t drivers/video/logo \
+ ../logo_linux_{clut224.ppm,vga16.ppm,mono.pbm}
+
+ echo "Setting version..."
+ echo "-$pkgrel" > localversion.10-pkgrel
+ echo "${pkgbase#linux-libre}" > localversion.20-pkgname
+
+ sed -e "/^[-+]EXTRAVERSION =/s/= */= -gnu/" \
+ -i "../linux-$_srctag.patch"
+
+ local source=("${source[@]}")
+ case "$CARCH" in
+ "armv7h")
+ source+=("${source_armv7h[@]}") ;;
+ "i686")
+ source+=("${source_i686[@]}") ;;
+ esac
+
+ local src
+ for src in "${source[@]}"; do
+ src="${src%%::*}"
+ src="${src##*/}"
+ src="${src%.zst}"
+ [[ $src = *.patch ]] || continue
+ echo "Applying patch $src..."
+ patch -Np1 < "../$src"
+ done
+
+ echo "Setting config..."
+ cp ../config.$CARCH .config
+ make olddefconfig
+ diff -u ../config.$CARCH .config || :
+
+ make -s kernelrelease > version
+ echo "Prepared $pkgbase version $(<version)"
+}
+
+build() {
+ cd $_srcname
+ make all
+
+ # temporarily disabled documentation due to sphinx_rtd_theme (FS32#163)
+ if [ "$CARCH" != "i686" ]; then
+ make htmldocs
+ fi
+}
+
+_package() {
+ pkgdesc="The $pkgdesc kernel and modules"
+ depends=(
+ coreutils
+ initramfs
+ kmod
+ )
+ optdepends=(
+ 'wireless-regdb: to set the correct wireless channels of your country'
+ 'linux-libre-firmware: firmware images needed for some devices'
+ )
+ provides=(
+ KSMBD-MODULE
+ UKSMD-BUILTIN
+ VHBA-MODULE
+ VIRTUALBOX-GUEST-MODULES
+ WIREGUARD-MODULE
+ )
+ replaces=(
+ )
+ provides+=("${_replacesarchkernel[@]/%/=$pkgver}" "LINUX-ABI_VERSION=$pkgver")
+ conflicts+=("${_replacesarchkernel[@]}" "${_replacesoldkernels[@]}" "${_replacesoldmodules[@]}")
+ replaces+=("${_replacesarchkernel[@]}" "${_replacesoldkernels[@]}" "${_replacesoldmodules[@]}")
+
+ cd $_srcname
+ local modulesdir="$pkgdir/usr/lib/modules/$(<version)"
+
+ echo "Installing boot image..."
+ # systemd expects to find the kernel here to allow hibernation
+ # https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344
+ install -Dm644 "$(make -s image_name)" "$modulesdir/vmlinuz"
+
+ # Used by mkinitcpio to name the kernel
+ echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
+
+ echo "Installing modules..."
+ ZSTD_CLEVEL=19 make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 \
+ DEPMOD=/doesnt/exist modules_install # Suppress depmod
+
+ # remove build link
+ rm "$modulesdir"/build
+
+ if [ "$CARCH" = "armv7h" ]; then
+ echo "Installing device tree binaries..."
+ make INSTALL_DTBS_PATH="$pkgdir/boot/dtbs/$pkgbase" dtbs_install
+
+ # armv7h presets only work with ALL_kver=$(<version)
+ backup+=("etc/mkinitcpio.d/$pkgbase.preset")
+ echo "Installing mkinitcpio preset..."
+ sed "s|%PKGBASE%|$pkgbase|g;s|%KERNVER%|$(<version)|g" ../linux-armv7h.preset \
+ | install -Dm644 /dev/stdin "$pkgdir/etc/mkinitcpio.d/$pkgbase.preset"
+ fi
+}
+
+_package-headers() {
+ pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel"
+ depends=(pahole)
+ provides=("${_replacesarchkernel[@]/%/-headers=$pkgver}")
+ conflicts=("${_replacesarchkernel[@]/%/-headers}" "${_replacesoldkernels[@]/%/-headers}")
+ replaces=("${_replacesarchkernel[@]/%/-headers}" "${_replacesoldkernels[@]/%/-headers}")
+
+ cd $_srcname
+ local builddir="$pkgdir/usr/lib/modules/$(<version)/build"
+
+ echo "Installing build files..."
+ install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map \
+ localversion.* version vmlinux
+ install -Dt "$builddir/kernel" -m644 kernel/Makefile
+ install -Dt "$builddir/arch/$KARCH" -m644 arch/$KARCH/Makefile
+ if [ "$CARCH" = "i686" ]; then
+ install -Dt "$builddir/arch/x86" -m644 arch/x86/Makefile_32.cpu
+ fi
+ cp -t "$builddir" -a scripts
+
+ # required when STACK_VALIDATION is enabled
+ if [[ -e tools/objtool/objtool ]]; then
+ install -Dt "$builddir/tools/objtool" tools/objtool/objtool
+ fi
+
+ # required when DEBUG_INFO_BTF_MODULES is enabled
+ if [[ -e tools/bpf/resolve_btfids/resolve_btfids ]]; then
+ install -Dt "$builddir/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids
+ fi
+
+ echo "Installing headers..."
+ cp -t "$builddir" -a include
+ cp -t "$builddir/arch/$KARCH" -a arch/$KARCH/include
+ install -Dt "$builddir/arch/$KARCH/kernel" -m644 arch/$KARCH/kernel/asm-offsets.s
+
+ install -Dt "$builddir/drivers/md" -m644 drivers/md/*.h
+ install -Dt "$builddir/net/mac80211" -m644 net/mac80211/*.h
+
+ # https://bugs.archlinux.org/task/13146
+ install -Dt "$builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
+
+ # https://bugs.archlinux.org/task/20402
+ install -Dt "$builddir/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
+ install -Dt "$builddir/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
+ install -Dt "$builddir/drivers/media/tuners" -m644 drivers/media/tuners/*.h
+
+ # https://bugs.archlinux.org/task/71392
+ install -Dt "$builddir/drivers/iio/common/hid-sensors" -m644 drivers/iio/common/hid-sensors/*.h
+
+ echo "Installing KConfig files..."
+ find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \;
+
+ echo "Removing unneeded architectures..."
+ local arch
+ for arch in "$builddir"/arch/*/; do
+ [[ $arch = */$KARCH/ ]] && continue
+ echo "Removing $(basename "$arch")"
+ rm -r "$arch"
+ done
+
+ echo "Removing documentation..."
+ rm -r "$builddir/Documentation"
+
+ echo "Removing broken symlinks..."
+ find -L "$builddir" -type l -printf 'Removing %P\n' -delete
+
+ echo "Removing loose objects..."
+ find "$builddir" -type f -name '*.o' -printf 'Removing %P\n' -delete
+
+ echo "Stripping build tools..."
+ local file
+ while read -rd '' file; do
+ case "$(file -Sib "$file")" in
+ application/x-sharedlib\;*) # Libraries (.so)
+ strip -v $STRIP_SHARED "$file" ;;
+ application/x-archive\;*) # Libraries (.a)
+ strip -v $STRIP_STATIC "$file" ;;
+ application/x-executable\;*) # Binaries
+ strip -v $STRIP_BINARIES "$file" ;;
+ application/x-pie-executable\;*) # Relocatable binaries
+ strip -v $STRIP_SHARED "$file" ;;
+ esac
+ done < <(find "$builddir" -type f -perm -u+x ! -name vmlinux -print0)
+
+ echo "Stripping vmlinux..."
+ strip -v $STRIP_STATIC "$builddir/vmlinux"
+
+ echo "Adding symlink..."
+ mkdir -p "$pkgdir/usr/src"
+ ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase"
+}
+
+_package-docs() {
+ pkgdesc="Documentation for the $pkgdesc kernel"
+ provides=("${_replacesarchkernel[@]/%/-docs=$pkgver}")
+ conflicts=("${_replacesarchkernel[@]/%/-docs}" "${_replacesoldkernels[@]/%/-docs}")
+ replaces=("${_replacesarchkernel[@]/%/-docs}" "${_replacesoldkernels[@]/%/-docs}")
+
+ cd $_srcname
+ local builddir="$pkgdir/usr/lib/modules/$(<version)/build"
+
+ echo "Installing documentation..."
+ local src dst
+ while read -rd '' src; do
+ dst="${src#Documentation/}"
+ dst="$builddir/Documentation/${dst#output/}"
+ install -Dm644 "$src" "$dst"
+ done < <(find Documentation -name '.*' -prune -o ! -type d -print0)
+
+ echo "Adding symlink..."
+ mkdir -p "$pkgdir/usr/share/doc"
+ ln -sr "$builddir/Documentation" "$pkgdir/usr/share/doc/$pkgbase"
+}
+
+pkgname=(
+ "$pkgbase"
+ "$pkgbase-headers"
+ "$pkgbase-docs"
+)
+for _p in "${pkgname[@]}"; do
+ eval "package_$_p() {
+ $(declare -f "_package${_p#$pkgbase}")
+ _package${_p#$pkgbase}
+ }"
+done
+
+# vim:set ts=8 sts=2 sw=2 et: