From ed713ec92210ebf74b3fd4555812f72c2c853b69 Mon Sep 17 00:00:00 2001 From: Tasos Sahanidis Date: Sat, 2 Mar 2024 15:40:04 +0200 Subject: extra/linux-pae: Convert to use patching mechanism The idea is that since we already have to maintain the patches for the linux package, we might as well use the same for other kernels. Despite the initial added complexity, it should make updating all kernel packages much easier. --- extra/linux-pae/60-linux.hook | 12 - extra/linux-pae/90-linux.hook | 11 - extra/linux-pae/PKGBUILD | 341 +- extra/linux-pae/PKGBUILD_upstream_linux | 242 + extra/linux-pae/config | 11870 +------------------ extra/linux-pae/config.i486 | 11782 ++++++++++++++++++ extra/linux-pae/config.i686 | 11845 ++++++++++++++++++ extra/linux-pae/config.pentium4 | 11845 ++++++++++++++++++ extra/linux-pae/config.x86_64 | 11708 ++++++++++++++++++ .../647F28654894E3BD457199BE38DBBDC86092693E.asc | 78 + .../83BC8889351B5DEBBB68416EB8AC08600F108CDF.asc | 22 + .../ABAF11C65A2970B130ABE3C479BE3E4300411886.asc | 37 + extra/linux-pae/linux.install | 10 - extra/linux-pae/linux.preset | 14 - 14 files changed, 47681 insertions(+), 12136 deletions(-) delete mode 100644 extra/linux-pae/60-linux.hook delete mode 100644 extra/linux-pae/90-linux.hook create mode 100644 extra/linux-pae/PKGBUILD_upstream_linux mode change 100644 => 120000 extra/linux-pae/config create mode 100644 extra/linux-pae/config.i486 create mode 100644 extra/linux-pae/config.i686 create mode 100644 extra/linux-pae/config.pentium4 create mode 100644 extra/linux-pae/config.x86_64 create mode 100644 extra/linux-pae/keys/pgp/647F28654894E3BD457199BE38DBBDC86092693E.asc create mode 100644 extra/linux-pae/keys/pgp/83BC8889351B5DEBBB68416EB8AC08600F108CDF.asc create mode 100644 extra/linux-pae/keys/pgp/ABAF11C65A2970B130ABE3C479BE3E4300411886.asc delete mode 100644 extra/linux-pae/linux.install delete mode 100644 extra/linux-pae/linux.preset diff --git a/extra/linux-pae/60-linux.hook b/extra/linux-pae/60-linux.hook deleted file mode 100644 index b33873c8..00000000 --- a/extra/linux-pae/60-linux.hook +++ /dev/null @@ -1,12 +0,0 @@ -[Trigger] -Type = File -Operation = Install -Operation = Upgrade -Operation = Remove -Target = usr/lib/modules/%KERNVER%/* -Target = usr/lib/modules/%EXTRAMODULES%/* - -[Action] -Description = Updating %PKGBASE% module dependencies... -When = PostTransaction -Exec = /usr/bin/depmod %KERNVER% diff --git a/extra/linux-pae/90-linux.hook b/extra/linux-pae/90-linux.hook deleted file mode 100644 index be0d8865..00000000 --- a/extra/linux-pae/90-linux.hook +++ /dev/null @@ -1,11 +0,0 @@ -[Trigger] -Type = File -Operation = Install -Operation = Upgrade -Target = boot/vmlinuz-%PKGBASE% -Target = usr/lib/initcpio/* - -[Action] -Description = Updating %PKGBASE% initcpios... -When = PostTransaction -Exec = /usr/bin/mkinitcpio -p %PKGBASE% diff --git a/extra/linux-pae/PKGBUILD b/extra/linux-pae/PKGBUILD index 7cc9f305..6cf93b74 100644 --- a/extra/linux-pae/PKGBUILD +++ b/extra/linux-pae/PKGBUILD @@ -1,206 +1,43 @@ -# $Id$ -# Maintainer: Erich Eckner -# Maintainer: Tobias Powalowski -# Maintainer: Thomas Baechler - -pkgbase=linux-pae # Build stock -ARCH kernel -pkgver='6.7.6' -_srcname=linux-${pkgver} -pkgrel='1' -arch=('i686' 'pentium4' 'x86_64') -url="https://www.kernel.org/" -license=('GPL2') -makedepends=('xmlto' 'kmod' 'inetutils' 'bc' 'cpio' 'libelf') -options=('!strip') -source=( - https://www.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/${_srcname}.tar.{xz,sign} - config # the main kernel config file - 60-linux.hook # pacman hook for depmod - 90-linux.hook # pacman hook for initramfs regeneration - linux.preset # standard config files for mkinitcpio ramdisk - no-ultra-zstd.patch # avoid using zstd compression in ultra mode (exhausts virtual memory) -) -validpgpkeys=( - 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds - '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman -) -sha256sums=('e489ec0e1370d089b446d565aded7a698093d2b7c4122a18f21edb6ef93d37d3' - 'SKIP' - '325ac6b61ddea38bcd2fe63362d53a0df03bf05c3c059eb937f43999058d2534' - 'ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21' - '75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919' - 'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65' - 'd32270be5fd9c3e3ba50f3aef33f6cfcb85be0c8216f03b777287cc621fdff28') - -_kernelname=${pkgbase#linux} -: ${_kernelname:=-ARCH} - -prepare() { - cd ${_srcname} - patch -Np1 -i $srcdir/no-ultra-zstd.patch - - # add latest fixes from stable queue, if needed - # http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git - - cat ../config - >.config </dev/null -} - -build() { - cd ${_srcname} - - make bzImage modules -} - -_package() { - pkgdesc="The Linux kernel and modules with PAE (physical address extension) support" - [ "${pkgbase}" = "linux" ] && groups=('base') - depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7') - optdepends=('crda: to set the correct wireless channels of your country') - backup=("etc/mkinitcpio.d/${pkgbase}.preset") - install=linux.install - - cd ${_srcname} - - # get kernel version - _kernver="$(make kernelrelease)" - _basekernel=${_kernver%%-*} - _basekernel=${_basekernel%.*} - - mkdir -p "${pkgdir}"/{boot,usr/lib/modules} - make INSTALL_MOD_PATH="${pkgdir}/usr" modules_install - cp arch/x86/boot/bzImage "${pkgdir}/boot/vmlinuz-${pkgbase}" - - # make room for external modules - local _extramodules="extramodules-${_basekernel}${_kernelname}" - ln -s "../${_extramodules}" "${pkgdir}/usr/lib/modules/${_kernver}/extramodules" - - # add real version for building modules and running depmod from hook - echo "${_kernver}" | - install -Dm644 /dev/stdin "${pkgdir}/usr/lib/modules/${_extramodules}/version" - - # remove build and source links - rm "${pkgdir}"/usr/lib/modules/*/{source,build} - - # now we call depmod... - depmod -b "${pkgdir}/usr" -F System.map "${_kernver}" - - # add vmlinux - install -Dt "${pkgdir}/usr/lib/modules/${_kernver}/build" -m644 vmlinux - - # sed expression for following substitutions - local _subst=" - s|%PKGBASE%|${pkgbase}|g - s|%KERNVER%|${_kernver}|g - s|%EXTRAMODULES%|${_extramodules}|g - " - - # hack to allow specifying an initially nonexisting install file - sed "${_subst}" "${startdir}/${install}" > "${startdir}/${install}.pkg" - true && install=${install}.pkg - - # install mkinitcpio preset file - sed "${_subst}" ../linux.preset | - install -Dm644 /dev/stdin "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset" - - # install pacman hooks - sed "${_subst}" ../60-linux.hook | - install -Dm644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/60-${pkgbase}.hook" - sed "${_subst}" ../90-linux.hook | - install -Dm644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/90-${pkgbase}.hook" -} - -_package-headers() { - pkgdesc="Header files and scripts for building modules for ${pkgbase/linux/Linux} kernel" - - cd ${_srcname} - local _builddir="${pkgdir}/usr/lib/modules/${_kernver}/build" - - install -Dt "${_builddir}" -m644 Makefile .config Module.symvers - install -Dt "${_builddir}/kernel" -m644 kernel/Makefile - - mkdir "${_builddir}/.tmp_versions" - - cp -t "${_builddir}" -a include scripts - - install -Dt "${_builddir}/arch/x86" -m644 arch/x86/Makefile_32.cpu - install -Dt "${_builddir}/arch/x86" -m644 arch/x86/Makefile - install -Dt "${_builddir}/arch/x86/kernel" -m644 arch/x86/kernel/asm-offsets.s - - cp -t "${_builddir}/arch/x86" -a arch/x86/include - - install -Dt "${_builddir}/drivers/md" -m644 drivers/md/*.h - install -Dt "${_builddir}/net/mac80211" -m644 net/mac80211/*.h - - # http://bugs.archlinux.org/task/13146 - install -Dt "${_builddir}/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h - - # http://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 - - # add xfs and shmem for aufs building - mkdir -p "${_builddir}"/{fs/xfs,mm} - - # copy in Kconfig files - find . -name Kconfig\* -exec install -Dm644 {} "${_builddir}/{}" \; - - # remove unneeded architectures - local _arch - for _arch in "${_builddir}"/arch/*/; do - [[ ${_arch} == */x86/ ]] && continue - rm -r "${_arch}" - done - - # remove files already in linux-docs package - rm -r "${_builddir}/Documentation" - - # remove now broken symlinks - find -L "${_builddir}" -type l -printf 'Removing %P\n' -delete +source "${BASH_SOURCE%/*}/PKGBUILD_upstream_linux" +pkgbase=linux-pae + +# upstream git revision: 3cfc65aa439e42f6dd539f29d3ebb972c5508f7e + +source+=('config.x86_64') +sha256sums+=('04143712e593d45a597661fe00f89cf92d52c62df3468c68a46c952c2ef4db64') +b2sums+=('21083151bdcd0fc2bcc0475b9cd73bab5666a71f043eedd67b19a3a4c09c8253a5a06794ce9270215782f5885e05e70b5e424123f1bded7aa7a6d3f30d02a4b3') +source_pentium4=('config.pentium4') +source_i686=('config.i686') +source_i486=('config.i486') +# fail if upstream's .config changes +for ((i=0; i<${#b2sums[@]}; i++)); do + if [ "${b2sums[${i}]}" = '21083151bdcd0fc2bcc0475b9cd73bab5666a71f043eedd67b19a3a4c09c8253a5a06794ce9270215782f5885e05e70b5e424123f1bded7aa7a6d3f30d02a4b3' ]; then + b2sums_pentium4=('759861f49726995d56e2fea96b60622d67fd43c8f8643b183ea0ee1efbe86e98c1435561e2d9ef3c58d581e8a6d147c8a11f4de97c2aaa25231b26db9e1c4859') + b2sums_i686=('3c716e2c37196cb9be479e3dfddaa1ad36da4053dfdd8c84a9141289d958e2c995795a13f683507bf2a6fa09f4ccaf52a576b6589c93bd36bd934c2a1ee34312') + b2sums_i486=('21e9e76c23d6ef348f5e54480ee3f16fb6c86d67c9103fea30fec91102e3695ebf53fa970bc8a7b842fd4763defd02b92bbd099bf77dccd4abd627f879425c06') + fi +done - # Fix permissions - chmod -R u=rwX,go=rX "${_builddir}" +# copy architecture specific config file, not default 'config' +eval "$( + declare -f prepare | \ + sed ' + s,\.\./config,../config.$CARCH, + ' +)" - # strip scripts directory - local _binary _strip - while read -rd '' _binary; do - case "$(file -bi "${_binary}")" in - *application/x-sharedlib*) _strip="${STRIP_SHARED}" ;; # Libraries (.so) - *application/x-archive*) _strip="${STRIP_STATIC}" ;; # Libraries (.a) - *application/x-executable*) _strip="${STRIP_BINARIES}" ;; # Binaries - *) continue ;; - esac - /usr/bin/strip ${_strip} "${_binary}" - done < <(find "${_builddir}/scripts" -type f -perm -u+w -print0 2>/dev/null) - depends+=(gcc-libs=$(_get_gcc_version_from_config)) -} +# patch architecture when copying the kernel Makefile +eval "$( + declare -f package_linux-headers | \ + sed ' + \,/tools/objtool" ,d + \,arch/x86/Makefile, { + a \ + install -t "${builddir}/arch/x86" -m644 arch/x86/Makefile_32.cpu + } + $ i depends+=(gcc-libs=$(_get_gcc_version_from_config)) + ' +)" _get_gcc_version_from_config() { if [ -z "$srcdir" ]; then @@ -221,25 +58,89 @@ _get_gcc_version_from_config() { fi } -_package-docs() { - pkgdesc="Kernel hackers manual - HTML documentation that comes with the ${pkgbase/linux/Linux} kernel" - - cd ${_srcname} - local _builddir="${pkgdir}/usr/lib/modules/${_kernver}/build" - - mkdir -p "${_builddir}" - cp -t "${_builddir}" -a Documentation +# use our tarballer instead of cloning from git +for ((i=0; i<${#source[@]}; i++)); do + infos=$( + printf '%s\n' "${source[${i}]}" | \ + sed ' + s@^\(\([^:]\+\)::\)\?\(git\|hg\)+\([^#?]\+\)\(?signed\)\?#\(\(tag\|commit\)=[^?]\+\)$@\3 \2 \4 \5 \6@ + t + s@^\(\([^:]\+\)::\)\?\(git\|hg\)+\([^#?]\+\)#\(\(tag\|commit\)=[^?]\+\)\(?signed\)\?$@\3 \2 \4 \7 \5@ + t + d + ' + ) + if [ -n "${infos}" ]; then + source[${i}]=$( + type="${infos%% *}" + infos="${infos#* }" + if [ -n "${infos%% *}" ]; then + prefix="${infos%% *}" + else + prefix='' + fi + infos="${infos#* }" + repo="${infos%% *}" + repo64=$( + printf '%s' "${repo}" | \ + base64 -w0 | \ + sed 's/=/%3D/g' + ) + infos="${infos#* }" + if [ "${infos%% *}" = '?signed' ]; then + key_check=$( + printf '&valid_keys=' + printf '%s,' "${validpgpkeys[@]}" | \ + sed 's/,$//' + ) + else + key_check='' + fi + infos="${infos#* }" + if [ -z "${prefix}" ]; then + prefix="${repo%.git}" + prefix="${prefix##*/}" + fi + prefix_64=$( + printf '%s/' "${prefix}" | \ + base64 -w0 | \ + sed 's/=/%3D/g' + ) + + printf '%s-%s.tar.gz::https://archive-server.archlinux32.org/?t=%s&p=%s&r=%s%s&%s\n' \ + "${prefix}" \ + "${pkgver}" \ + "${type}" \ + "${prefix_64}" \ + "${repo64}" \ + "${key_check}" \ + "${infos}" + ) + fi +done - # Fix permissions - chmod -R u=rwX,go=rX "${_builddir}" -} +# upstream prepare() does already do the *.patch patching -pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs") -for _p in ${pkgname[@]}; do - eval "package_${_p}() { - $(declare -f "_package${_p#${pkgbase}}") - _package${_p#${pkgbase}} - }" -done +# avoid using zstd compression in ultra mode (exhausts virtual memory) +source+=('no-ultra-zstd.patch') +sha256sums+=('d32270be5fd9c3e3ba50f3aef33f6cfcb85be0c8216f03b777287cc621fdff28') +b2sums+=('165ab9dd8cedeaae5327accc1581c19cf0be55f923b03feb889cad3351b74c7c4cd3d3c206938e5152bfe1d947513dea8f630f8f5544099ec13d16d254725c40') -# vim:set ts=8 sts=2 sw=2 et: +# temporarily disabled documentation due to sphinx_rtd_theme (FS32#163) +pkgname=( + $( + printf '%s\n' "${pkgname[@]}" | \ + grep -v '^\$pkgbase-docs' + ) +) +eval "$( + declare -f build | \ + sed ' + s/\bhtmldocs\b// + ' +)" +makedepends=(${makedepends[@]//python-sphinx_rtd_theme/}) +makedepends=(${makedepends[@]//python-sphinx<6.0.0/}) +makedepends=(${makedepends[@]//graphviz/}) +makedepends=(${makedepends[@]//imagemagick/}) +makedepends=(${makedepends[@]//texlive-latexextra/}) diff --git a/extra/linux-pae/PKGBUILD_upstream_linux b/extra/linux-pae/PKGBUILD_upstream_linux new file mode 100644 index 00000000..64753de7 --- /dev/null +++ b/extra/linux-pae/PKGBUILD_upstream_linux @@ -0,0 +1,242 @@ +# Maintainer: Jan Alexander Steffens (heftig) + +pkgbase=linux +pkgver=6.7.7.arch1 +pkgrel=1 +pkgdesc='Linux' +url='https://github.com/archlinux/linux' +arch=(x86_64) +license=(GPL2) +makedepends=( + bc + cpio + gettext + libelf + pahole + perl + python + tar + xz + + # htmldocs + graphviz + imagemagick + python-sphinx + texlive-latexextra +) +options=('!strip') +_srcname=linux-${pkgver%.*} +_srctag=v${pkgver%.*}-${pkgver##*.} +source=( + https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/${_srcname}.tar.{xz,sign} + $url/releases/download/$_srctag/linux-$_srctag.patch.zst{,.sig} + config # the main kernel config file +) +validpgpkeys=( + ABAF11C65A2970B130ABE3C479BE3E4300411886 # Linus Torvalds + 647F28654894E3BD457199BE38DBBDC86092693E # Greg Kroah-Hartman + 83BC8889351B5DEBBB68416EB8AC08600F108CDF # Jan Alexander Steffens (heftig) +) +# https://www.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256sums=('256b8b44570ddbe266eb3ad0c2cba2616f1609b4a3de5014a3da5512907b14d9' + 'SKIP' + '47208683675e5ad065c9a3821aa975fdb3c37d7d7d77222da4d6f8c3f09827d1' + 'SKIP' + '04143712e593d45a597661fe00f89cf92d52c62df3468c68a46c952c2ef4db64') +b2sums=('ef97a036ab6cd421200b2e8f0a49c6b570d2269a5e182ea948d48d456e6414bfa61f5f6efa2bad65efbe811d2078a54a4edff9c27de609401160f3905fe27a22' + 'SKIP' + '45e0ef14e26323bbd2457f77e4c1e9fc0c2d6fb028bb24814d38c2ebfbeaa2aee29cad2f5154df372d098856cf7f3fcd585575e5b95b93cba47ee5de9f92b8e0' + 'SKIP' + '21083151bdcd0fc2bcc0475b9cd73bab5666a71f043eedd67b19a3a4c09c8253a5a06794ce9270215782f5885e05e70b5e424123f1bded7aa7a6d3f30d02a4b3') + +export KBUILD_BUILD_HOST=archlinux +export KBUILD_BUILD_USER=$pkgbase +export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})" + +prepare() { + cd $_srcname + + echo "Setting version..." + echo "-$pkgrel" > localversion.10-pkgrel + echo "${pkgbase#linux}" > localversion.20-pkgname + + 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 .config + make olddefconfig + diff -u ../config .config || : + + make -s kernelrelease > version + echo "Prepared $pkgbase version $(/dev/null && ! mountpoint -q /boot; then - echo "WARNING: /boot appears to be a separate partition but is not mounted." - fi -} - -post_remove() { - rm -f boot/initramfs-%PKGBASE%.img - rm -f boot/initramfs-%PKGBASE%-fallback.img -} diff --git a/extra/linux-pae/linux.preset b/extra/linux-pae/linux.preset deleted file mode 100644 index 66709a8c..00000000 --- a/extra/linux-pae/linux.preset +++ /dev/null @@ -1,14 +0,0 @@ -# mkinitcpio preset file for the '%PKGBASE%' package - -ALL_config="/etc/mkinitcpio.conf" -ALL_kver="/boot/vmlinuz-%PKGBASE%" - -PRESETS=('default' 'fallback') - -#default_config="/etc/mkinitcpio.conf" -default_image="/boot/initramfs-%PKGBASE%.img" -#default_options="" - -#fallback_config="/etc/mkinitcpio.conf" -fallback_image="/boot/initramfs-%PKGBASE%-fallback.img" -fallback_options="-S autodetect" -- cgit v1.2.3-70-g09d2