index : packages | |
Archlinux32 package modifications | gitolite user |
summaryrefslogtreecommitdiff |
-rw-r--r-- | extra/linux-pae/PKGBUILD | 529 |
diff --git a/extra/linux-pae/PKGBUILD b/extra/linux-pae/PKGBUILD index 74ffd693..f03dc211 100644 --- a/extra/linux-pae/PKGBUILD +++ b/extra/linux-pae/PKGBUILD @@ -1,225 +1,394 @@ -# $Id$ -# Maintainer: Erich Eckner <arch at eckner dot net> -# Maintainer: Tobias Powalowski <tpowa@archlinux.org> -# Maintainer: Thomas Baechler <thomas@archlinux.org> - -pkgbase=linux-pae # Build stock -ARCH kernel -pkgver='5.7.7' -_srcname=linux-${pkgver} -pkgrel='1' -arch=('i686' 'pentium4') -url="https://www.kernel.org/" -license=('GPL2') -makedepends=('xmlto' 'kmod' 'inetutils' 'bc' 'cpio' 'libelf') +# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org> + +pkgbase=linux-pae +pkgver=6.8.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 + python-yaml + texlive-latexextra +) options=('!strip') +_srcname=linux-${pkgver%.*} +_srctag=v${pkgver%.*}-${pkgver##*.} 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 - 0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch + 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 + ABAF11C65A2970B130ABE3C479BE3E4300411886 # Linus Torvalds + 647F28654894E3BD457199BE38DBBDC86092693E # Greg Kroah-Hartman + 83BC8889351B5DEBBB68416EB8AC08600F108CDF # Jan Alexander Steffens (heftig) ) -sha256sums=('f840b9679283343c165516585c3070ebb277528721c890e9410a58e9d071ee7f' +# https://www.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256sums=('c969dea4e8bb6be991bbf7c010ba0e0a5643a3a8d8fb0a2aaa053406f1e965f3' + 'SKIP' + '1edc3ce4e5cb716d6a89ebd1bc24b4509e65d9f18899f59e4c40e5d3ad4233ba' 'SKIP' - '8bc2481abaa863c8e256c26e6a4c77db32bf836dac3540644f7db2d5cd6c0ab7' - 'ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21' - '75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919' - 'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65' - 'e3c08f9b91611186e5ec579187ecea2a0143e5c2dc7ffc30ac6ea6e2b6d130fd') + '03e735507e01dd3fb845d3a9dfa9a7a7286fcb57d213b4b116dcba7e088407f0') +b2sums=('c6f17f816cea16e629f63e9379b98888713f57b2c5173306926471f139a9d612a0c74e119341f8075390e55e203d787d9edeb4ad5a064b18870f6f0f7ffaafb2' + 'SKIP' + '1b5e7cb354f6a3e9423ce98b5829d70be36f3ad44b6067dc21070db4543d0813a751fd79e1dcca5fdf1defe6adfe5c4005c48bd326d84dcbea4ccf32906e22b4' + 'SKIP' + '167299818c921749eafeb83327eeddbfe4db9f5659e297d86cfd8ceb6006c504d8dd772f32b0fe13935cb2ed8937324fca122510bf07f107db0b270e2f26906a') -_kernelname=${pkgbase#linux} -: ${_kernelname:=-ARCH} +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} - - # add latest fixes from stable queue, if needed - # http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git - - # disable USER_NS for non-root users by default - patch -Np1 -i ../0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch - - cat ../config - >.config <<END -CONFIG_LOCALVERSION="${_kernelname}" -CONFIG_LOCALVERSION_AUTO=n -END - - # set extraversion to pkgrel and empty localversion - sed -e "/^EXTRAVERSION =/s/=.*/= -${pkgrel}/" \ - -e "/^EXTRAVERSION =/aLOCALVERSION =" \ - -i Makefile - - # don't run depmod on 'make install'. We'll do this ourselves in packaging - sed -i '2iexit 0' scripts/depmod.sh - - # get kernel version - make 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 - # load configuration - # Configure the kernel. Replace the line below with one of your choice. - #make menuconfig # CLI menu for configuration - #make nconfig # new CLI menu for configuration - #make xconfig # X-based configuration - #make oldconfig # using old config from previous kernel version - # ... or manually edit .config + echo "Setting config..." + cp ../config .config + make olddefconfig + diff -u ../config .config || : - # rewrite configuration - yes "" | make config >/dev/null + make -s kernelrelease > version + echo "Prepared $pkgbase version $(<version)" } build() { - cd ${_srcname} - - make bzImage modules + cd $_srcname + make all + make -C tools/bpf/bpftool vmlinux.h feature-clang-bpf-co-re=1 + make htmldocs } _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/${_kernver}/{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" + pkgdesc="The $pkgdesc kernel and modules" + depends=( + coreutils + initramfs + kmod + ) + optdepends=( + 'wireless-regdb: to set the correct wireless channels of your country' + 'linux-firmware: firmware images needed for some devices' + ) + provides=( + KSMBD-MODULE + VIRTUALBOX-GUEST-MODULES + WIREGUARD-MODULE + ) + replaces=( + virtualbox-guest-modules-arch + wireguard-arch + ) + + 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 } _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" + pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel" + depends=(pahole) - install -Dt "${_builddir}" -m644 Makefile .config Module.symvers - install -Dt "${_builddir}/kernel" -m644 kernel/Makefile + cd $_srcname + local builddir="$pkgdir/usr/lib/modules/$(<version)/build" - mkdir "${_builddir}/.tmp_versions" + echo "Installing build files..." + install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map \ + localversion.* version vmlinux tools/bpf/bpftool/vmlinux.h + install -Dt "$builddir/kernel" -m644 kernel/Makefile + install -Dt "$builddir/arch/x86" -m644 arch/x86/Makefile + cp -t "$builddir" -a scripts - cp -t "${_builddir}" -a include scripts + # required when STACK_VALIDATION is enabled + install -Dt "$builddir/tools/objtool" tools/objtool/objtool - 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 + # required when DEBUG_INFO_BTF_MODULES is enabled + install -Dt "$builddir/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids - cp -t "${_builddir}/arch/x86" -a arch/x86/include + echo "Installing headers..." + cp -t "$builddir" -a include + cp -t "$builddir/arch/x86" -a arch/x86/include + install -Dt "$builddir/arch/x86/kernel" -m644 arch/x86/kernel/asm-offsets.s - install -Dt "${_builddir}/drivers/md" -m644 drivers/md/*.h - install -Dt "${_builddir}/net/mac80211" -m644 net/mac80211/*.h + 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 + # https://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 + # 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 - # add xfs and shmem for aufs building - mkdir -p "${_builddir}"/{fs/xfs,mm} + # https://bugs.archlinux.org/task/71392 + install -Dt "$builddir/drivers/iio/common/hid-sensors" -m644 drivers/iio/common/hid-sensors/*.h - # copy in Kconfig files - find . -name Kconfig\* -exec install -Dm644 {} "${_builddir}/{}" \; + echo "Installing 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}" + echo "Removing unneeded architectures..." + local arch + for arch in "$builddir"/arch/*/; do + [[ $arch = */x86/ ]] && continue + echo "Removing $(basename "$arch")" + 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 + 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) - # Fix permissions - chmod -R u=rwX,go=rX "${_builddir}" + echo "Stripping vmlinux..." + strip -v $STRIP_STATIC "$builddir/vmlinux" - # 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) + echo "Adding symlink..." + mkdir -p "$pkgdir/usr/src" + ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase" } _package-docs() { - pkgdesc="Kernel hackers manual - HTML documentation that comes with the ${pkgbase/linux/Linux} kernel" + pkgdesc="Documentation for the $pkgdesc kernel" + + 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" +} - cd ${_srcname} - local _builddir="${pkgdir}/usr/lib/modules/${_kernver}/build" +pkgname=( + "$pkgbase" + "$pkgbase-headers" + "$pkgbase-docs" +) +for _p in "${pkgname[@]}"; do + eval "package_$_p() { + $(declare -f "_package${_p#$pkgbase}") + _package${_p#$pkgbase} + }" +done - mkdir -p "${_builddir}" - cp -t "${_builddir}" -a Documentation +# vim:set ts=8 sts=2 sw=2 et: - # Fix permissions - chmod -R u=rwX,go=rX "${_builddir}" +# Don't bother with sha256sums, use blake2 only +unset sha256sums + +source_pentium4=('config.pentium4') +source_i686=('config.i686') +source_i486=('config.i486') +b2sums_pentium4=('0079393aaafd07d0400b6a361398c0827ee7accb42058a869e1c7b634c1904ce77e26c5318922e860321e1ca78696fb73a4ea23b7c99f1cd112f7c169b1d67a3') +b2sums_i686=('4dbbacdd43b8a5f2945cbe2f838780edf3ed125849d9aced572a09a39052bc90028f89bb45e878a937c266c1dbd09140dace07dc75c7e352f3ca93da123710be') +b2sums_i486=('SKIP') + + +# copy architecture specific config file, not default 'config' +eval "$( + declare -f prepare | \ + sed ' + s,\.\./config,../config.$CARCH, + ' +)" + +# patch architecture when copying the kernel Makefile +eval "$( + declare -f package_${pkgbase}-headers | \ + sed ' + \,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 + gcc --version \ + | sed ' + s@^.* @@ + 1!d + ' + else + for _config_file in "$srcdir/$_srcname/.config" "$srcdir/config" "${srcdir%/*}/config"; do + [ -f "$_config_file" ] && break + done + sed ' + s/^CONFIG_CC_VERSION_TEXT="gcc (GCC) \([0-9.]\+\)"$/\1/ + t + d + ' "$_config_file" + fi } -pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs") -for _p in ${pkgname[@]}; do - eval "package_${_p}() { - $(declare -f "_package${_p#${pkgbase}}") - _package${_p#${pkgbase}} - }" +# 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 -# vim:set ts=8 sts=2 sw=2 et: +# upstream prepare() does already do the *.patch patching + +# avoid using zstd compression in ultra mode (exhausts virtual memory) +source+=('no-ultra-zstd.patch') +b2sums+=('165ab9dd8cedeaae5327accc1581c19cf0be55f923b03feb889cad3351b74c7c4cd3d3c206938e5152bfe1d947513dea8f630f8f5544099ec13d16d254725c40') + +# objtool doesn't exist because we don't have STACK_VALIDATION +# and resolve_btfids doesn't exist because we disable BTF due to pahole running out of memory +eval "$( + declare -f package_${pkgbase}-headers | \ + sed '/objtool/d' | \ + sed '/resolve_btfids/d' | \ + sed 's@tools/bpf/bpftool/vmlinux.h@@' +)" + +# temporarily disabled documentation due to sphinx_rtd_theme (FS32#163) +pkgname=( + $( + printf '%s\n' "${pkgname[@]}" | \ + grep -v '^\$pkgbase-docs' + ) +) + +# Also avoid building/running bpftool +eval "$( + declare -f build | \ + sed '/htmldocs/d' | \ + sed '/bpftool/d' +)" +makedepends=(${makedepends[@]//python-sphinx_rtd_theme/}) +makedepends=(${makedepends[@]//python-sphinx<6.0.0/}) +makedepends=(${makedepends[@]//graphviz/}) +makedepends=(${makedepends[@]//imagemagick/}) +makedepends=(${makedepends[@]//texlive-latexextra/}) + + +# Extra linux-pae patching +unset source_i486 +unset b2sums_i486 |