From 89ddc5761e8c66fe38230f69fb964c9833f241e8 Mon Sep 17 00:00:00 2001 From: bill-auger Date: Thu, 21 Jul 2022 22:14:03 -0400 Subject: wip - linux-libre-64 PKGBUILD from local src pkg --- libre/linux-libre-64/PKGBUILD | 213 +++++++++++------------------------------- 1 file changed, 53 insertions(+), 160 deletions(-) diff --git a/libre/linux-libre-64/PKGBUILD b/libre/linux-libre-64/PKGBUILD index 3960ba5e5..37a59db10 100644 --- a/libre/linux-libre-64/PKGBUILD +++ b/libre/linux-libre-64/PKGBUILD @@ -1,74 +1,39 @@ -# Contributor: David P. -# Contributor: André Silva -# Contributor: Márcio Silva -# Contributor: fauno -# Contributor: Sorin-Mihai Vârgolici -# Contributor: Michał Masłowski -# Contributor: Luke R. -# Contributor: Andreas Grapentin -# Maintainer: Parabola Hackers - -# Based on linux package -# Based on linux-libre package, actually - megver83 will become maintainer eventually - -# WIP: This PKGBUILD is derived from the 'linux-libre' PKGBUILD, -# and includes a lot of unused cruft, to minimize the diff. -# Eventually, these differences can be merged into linux-libre, -# once parabola has an 'aarch64' build target and repos. -# -# For now, 'aarch64' is not yet a valid parabola target. -# This PKGBUILD exists only for making an 'aarch64' kernel for use with -# parabola armv7h systems. This PKGBUILD is intended to be cross-compiled -# only from an armv7h librechroot. The per-arch mechanism for armv7h -# is over-ridden for the special purpose of the cross-compilation. -# -# The makedepends_armv7h, source_armv7h, and sha512sums_armv7h arrays -# (also source_aarch64 and sha512sums_aarch64 obviously), and the comments: -# '# cross-compile over-ride' and -# '# TODO: merge into 'linux-libre' PKGBUILD', -# indicate code that would eventually be deleted, merged into, -# or associated with $CARCH: 'aarch64', if/when aarch64 becomes a valid target. -# All other LOCs of consequence in this file, -# should be identical to the linux-libre PKGBUILD. -# In this way, the diff is minimal against the linux-libre PKGBUILD; -# and it is obvious which parts are intended to become aarch64-specific, -# or exist only for cross-compiling the aarch64 kernel for armv7h systems. +# Maintainers: Parabola hackers + +# WIP - Based on the linux-libre package. +# this PKGBUILD includes a lot of cruft, to minimize the diff. +# eventually, these chanegs can be merged into linux-libre +# once parabola has an 'aarch64' build target and repos. _replacesarchkernel=('linux%') # '%' gets replaced with kernel suffix _replacesoldkernels=() # '%' gets replaced with kernel suffix _replacesoldmodules=() # '%' gets replaced with kernel suffix -pkgbase=linux-libre-64 # cross-compile over-ride +pkgbase=linux-libre-64 pkgver=5.18.5 -pkgrel=1 -pkgdesc="The Linux-libre kernel and modules" # TODO: merge into 'linux-libre' PKGBUILD -pkgdesc+=' 64-bit (aarch64) for Parabola armv7h' # cross-compile over-ride +pkgrel=2.test +pkgdesc="64bit Linux-libre for Parabola $CARCH" rcnver=5.18.2 rcnrel=armv7-x6 url='https://linux-libre.fsfla.org/' -arch=(i686 x86_64 armv7h) -arch=(armv7h) # cross-compile over-ride +arch=(armv7h i686) license=(GPL2) makedepends=( bc libelf pahole cpio perl tar xz xmlto python-sphinx python-sphinx_rtd_theme graphviz imagemagick texlive-latexextra ) -makedepends_armv7h=(uboot-tools vboot-utils dtc) # required by linux-libre-chromebook -makedepends_armv7h+=(aarch64-linux-gnu-gcc-initial) # cross-compile over-ride +makedepends_armv7h=(uboot-tools dtc) # required by linux-libre-chromebook options=('!strip') _srcname=linux-5.18 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} - # TODO: Move config.i686 config.armv7h, linux-armv7h.preset, - # and "kernel"{.its,.keyblock,_data_key.vbprivk} - # into their respective source_ arrays. - # Rename linux-armv7h.preset to linux-arm.preset, or add a new one for aarch64 config.i686 config.x86_64 config.armv7h # the main kernel config files linux-armv7h.preset # armv7h preset file for mkinitcpio ramdisk "kernel"{.its,.keyblock,_data_key.vbprivk} # files for signing Chromebooks kernels + # 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 @@ -82,13 +47,12 @@ source=( ) source_i686=( # avoid using zstd compression in ultra mode (exhausts virtual memory) - # Arch Linux 32 patches no-ultra-zstd.patch ) source_armv7h=( # RCN patch (CM3 firmware deblobbed and bloatware removed) "https://repo.parabola.nu/other/rcn-libre/patches/$rcnver/rcn-libre-$rcnver-$rcnrel.patch"{,.sig} - # Arch Linux ARM patches + # Arch Linux ARM patches (for armv7h) 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 @@ -96,16 +60,13 @@ source_armv7h=( 0005-set-default-cubietruck-led-triggers.patch 0006-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch 0007-USB-Armory-MkII-support.patch + # Arch Linux ARM patches (for aarch64) + # ./0001-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch + 0002-arm64-dts-rockchip-disable-pwm0-on-rk3399-firefly.patch # ChromiumOS patches 0001-CHROMIUM-block-partitions-efi-Add-support-for-IGNORE.patch ) -source_aarch64=( - config.aarch64 - # Arch Linux ARM patches (aarch64) - 0001-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch - 0002-arm64-dts-rockchip-disable-pwm0-on-rk3399-firefly.patch -) -source_armv7h=( ${source_aarch64[*]} ) # cross-compile over-ride +source_armv7h+=(config.aarch64) validpgpkeys=( '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva '6DB9C4B4F0D8C0DC432CF6E4227CA7C556B2BA78' # David P. @@ -141,26 +102,21 @@ sha512sums_armv7h=('5a75b12dd386940a0bf1be630d45a514ef3c32289ec5976988764baa8483 'a1072dd808c63592178cc01ea3c36de946f277fb451b13c34f51a5ac134cde4a8a4d57487132af1c6d7b5820842cdda9dc4edb3da85d33bd02bf87a032c3263a' '85b2e16a930b8066990c42f973d386dc3c6d62fdf3d1289bbb51df3df296c26f30051162fba49a42d38f71f05de926aa8c065097f14bd8e9f8e28a52949ead00' '2e99582d8b670b6c6b27add14b60e957cbcf9cd6aae40491bd9dea6ac455c0ade0bbee21e3bdfb5e06ce83ad27c5a788404b05bf7ac93831ca18d2e60a67017c' - '5b77c587cf2ffb60acf1d9eb43330983548c7e81a53e0ffd2b04962a99441a0000d631ff77c245c7062afc2c8368d996a2456496d42dcb658f330e5083e5e029') -sha512sums_aarch64=('bc7b70863929737346fe6757373897391b43af36bb6884d5351a95aca0f9120f2d2cf9b9c2c6426a440c6b394e9fb334c280711d64081563322a834ecdfb2ba6' - '69e81aff3ac5aada75f7330e8c82d0a6aa229585b3f442b2e1a9b86681b0eadc925408d5e2377026599fb0dee72d29043eca4d072b0e2606adc34c872e95c7d6' - '4224779106cc520dc2c431322d9693cc968476706854ae9630611cf2896c48a34ca11bf31a4c3995573a128cf5838a6763bac86eb4cbaf509ade9b6a83a24369') -sha512sums_armv7h=( ${sha512sums_aarch64[*]} ) # cross-compile over-ride + '4224779106cc520dc2c431322d9693cc968476706854ae9630611cf2896c48a34ca11bf31a4c3995573a128cf5838a6763bac86eb4cbaf509ade9b6a83a24369' + '5b77c587cf2ffb60acf1d9eb43330983548c7e81a53e0ffd2b04962a99441a0000d631ff77c245c7062afc2c8368d996a2456496d42dcb658f330e5083e5e029' + 'bc7b70863929737346fe6757373897391b43af36bb6884d5351a95aca0f9120f2d2cf9b9c2c6426a440c6b394e9fb334c280711d64081563322a834ecdfb2ba6') _replacesarchkernel=("${_replacesarchkernel[@]/\%/${pkgbase#linux-libre}}") _replacesoldkernels=("${_replacesoldkernels[@]/\%/${pkgbase#linux-libre}}") _replacesoldmodules=("${_replacesoldmodules[@]/\%/${pkgbase#linux-libre}}") -_replacesarchkernel=("${_replacesarchkernel[@]/-64/}") # cross-compile over-ride case "$CARCH" in - armv7h) KARCH=arm64 ; CROSS_COMPILE=aarch64-linux-gnu- ;; # cross-compile over-ride - aarch64) KARCH=arm64;; # TODO: merge into 'linux-libre' PKGBUILD - i686|x86_64) KARCH=x86;; - armv7h) KARCH=arm;; + i686) KARCH=x86;CROSS_COMPILE=x86_64-pc-linux-gnu-;; + armv7h) KARCH=arm64;CROSS_COMPILE=aarch64-linux-gnu-;; esac +export STRIP=${CROSS_COMPILE}strip export KBUILD_BUILD_HOST=parabola export KBUILD_BUILD_USER=$pkgbase -export KBUILD_BUILD_USER=${pkgbase/-64/} # cross-compile over-ride export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})" prepare() { @@ -202,18 +158,6 @@ prepare() { done fi - if [ "$CARCH" = "aarch64" ]; then # TODO: merge into 'linux-libre' PKGBUILD - # TODO: better yet, all of these per-arch patching routines should be DRY-ed out - local src_aarch64 - for src_aarch64 in "${source_aarch64[@]}"; do - src_aarch64="${src_aarch64%%::*}" - src_aarch64="${src_aarch64##*/}" - [[ $src_aarch64 = *.patch ]] || continue - echo "Applying patch $src_aarch64..." - patch -Np1 < "../$src_aarch64" - done - fi - local src for src in "${source[@]}"; do src="${src%%::*}" @@ -224,24 +168,23 @@ prepare() { done echo "Setting config..." - cp ../config.$CARCH .config + case "$CARCH" in + i686) cp ../config.x86_64 .config;; # config.aarch64 comes straight from Arch Linux ARM and doesn't have the # compatibility for 32bit rootfs enabled. This makes maintenance faster than # having to modify the configuration file by hand at each new kernel release. - if [[ "${KARCH}" == aarch64 ]] # cross-compile over-ride - then cp ../config.aarch64 .config ; echo 'CONFIG_COMPAT=y' >> .config ; # cross-compile over-ride - fi # cross-compile over-ride - make ARCH=$KARCH CROSS_COMPILE=$CROSS_COMPILE olddefconfig # cross-compile over-ride - diff -u ../config.$CARCH .config || : + armv7h) cp ../config.aarch64 .config;echo 'CONFIG_COMPAT=y' >> .config;; + esac + make ARCH=$KARCH CROSS_COMPILE=$CROSS_COMPILE olddefconfig - make ARCH=$KARCH CROSS_COMPILE=$CROSS_COMPILE -s kernelrelease > version # cross-compile over-ride + make ARCH=$KARCH CROSS_COMPILE=$CROSS_COMPILE -s kernelrelease > version echo "Prepared $pkgbase version $( cmdline - # TODO: merge into 'linux-libre' PKGBUILD (--arch ${KARCH}) echo "Creating kernel sign..." vbutil_kernel \ --pack vmlinux.kpart \ --version 1 \ --vmlinuz kernel.signed \ - --arch ${KARCH} \ + --arch aarch64 \ --keyblock ../kernel.keyblock \ --signprivate ../kernel_data_key.vbprivk \ --config cmdline \ @@ -491,7 +384,7 @@ pkgname=("$pkgbase" "$pkgbase-headers" "$pkgbase-docs") # | ==> Starting package_linux-libre-64-chromebook()... # | FATAL ERROR: Couldn't open "arch/arm/boot/zImage": No such file or directory # | mkimage: Can't read kernel.signed.tmp: Invalid argument -# [[ $CARCH = armv7h ]] && pkgname+=("$pkgbase-chromebook") # cross-compile over-ride +# [[ $CARCH = armv7h ]] && pkgname+=("$pkgbase-chromebook") for _p in "${pkgname[@]}"; do eval "package_$_p() { $(declare -f "_package${_p#$pkgbase}") -- cgit v1.2.3