Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/extra/linux-pae/PKGBUILD
diff options
context:
space:
mode:
authorTasos Sahanidis <tasos@tasossah.com>2024-03-02 15:40:04 +0200
committerTasos Sahanidis <tasos@tasossah.com>2024-03-02 15:40:04 +0200
commited713ec92210ebf74b3fd4555812f72c2c853b69 (patch)
tree10ec1404c35200dcbcf8b03382a492eda02f5d0f /extra/linux-pae/PKGBUILD
parent01e71ca192bfcaeb6991e7c42890f4760b3d975a (diff)
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.
Diffstat (limited to 'extra/linux-pae/PKGBUILD')
-rw-r--r--extra/linux-pae/PKGBUILD341
1 files changed, 121 insertions, 220 deletions
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 <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='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 <<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
-
- make olddefconfig
-
- # get kernel version
- make prepare
-
- # 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
-
- # rewrite configuration
- yes "" | make 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/})