mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-08 22:45:43 +00:00
998058352a
Revert changes to backup array. Pacman installs the package files as the live files on the filesystem rather than as .pacnew files.
272 lines
8.5 KiB
Bash
272 lines
8.5 KiB
Bash
# Maintainer: graysky <graysky@archlinux.us>
|
|
# Maintainer: Kevin Mihelich <kevin@archlinuxarm.org>
|
|
# Maintainer: Oleg Rakhmanov <oleg@archlinuxarm.org>
|
|
# Maintainer: Dave Higham <pepedog@archlinuxarm.org>
|
|
# Contributer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
|
|
|
|
pkgbase=linux-rpi
|
|
_commit=4b60cbf0149f5b5fa5eb9149bd35c750cbc02b25
|
|
_srcname=linux-${_commit}
|
|
_kernelname=${pkgbase#linux}
|
|
_regen=
|
|
pkgver=6.1.35
|
|
pkgrel=3
|
|
pkgdesc='Linux'
|
|
url="http://www.kernel.org/"
|
|
arch=(armv7h aarch64)
|
|
license=(GPL2)
|
|
makedepends=(
|
|
bc
|
|
kmod
|
|
inetutils
|
|
)
|
|
options=('!strip')
|
|
source_armv7h=('config' 'config.txt')
|
|
source_aarch64=('config8' 'config8.txt')
|
|
source=("linux-$pkgver-${_commit:0:10}.tar.gz::https://github.com/raspberrypi/linux/archive/${_commit}.tar.gz"
|
|
cmdline.txt
|
|
0001-Make-proc-cpuinfo-consistent-on-arm64-and-arm.patch
|
|
linux.preset
|
|
60-linux.hook
|
|
90-linux.hook
|
|
archarm.diffconfig
|
|
)
|
|
md5sums=('30e9d8166a4ef06c93416f96c6656aa0'
|
|
'3bab7426d8c8818dda8353da3892a41f'
|
|
'f66a7ea3feb708d398ef57e4da4815e9'
|
|
'86d4a35722b5410e3b29fc92dae15d4b'
|
|
'0a5f16bfec6ad982a2f6782724cca8ba'
|
|
'441ec084c47cddc53e592fb0cbce4edf'
|
|
'1ba398db86c6889e23099572fea17088')
|
|
md5sums_armv7h=('1cdad3bb431b7d85223f93543dfdf1a6'
|
|
'a99311daa39248cfc9b6541a0a0a5f09')
|
|
md5sums_aarch64=('4e71e7cff01b5e805c5962a33ed52d06'
|
|
'7e4403dea857e40005bf76beda9927ff')
|
|
|
|
# setup vars
|
|
if [[ $CARCH == "armv7h" ]]; then
|
|
_kernel=kernel7.img KARCH=arm _image=zImage _config=config _bconfig=config.txt
|
|
elif [[ $CARCH == "aarch64" ]]; then
|
|
_kernel=kernel8.img KARCH=arm64 _image=Image _config=config8 _bconfig=config8.txt
|
|
fi
|
|
|
|
_make() {
|
|
test -s version
|
|
make KERNELRELEASE="$(<version)" "$@"
|
|
}
|
|
|
|
prepare() {
|
|
cd "${srcdir}/${_srcname}"
|
|
|
|
# consistent behavior of lscpu on arm/arm64
|
|
patch -p1 -i ../0001-Make-proc-cpuinfo-consistent-on-arm64-and-arm.patch
|
|
|
|
echo "Setting version..."
|
|
echo "-$pkgrel" > localversion.10-pkgrel
|
|
echo "${pkgbase#linux}" > localversion.20-pkgname
|
|
|
|
if [[ $_regen -eq 1 ]]; then
|
|
# useful on two point releases to keep shit straight
|
|
echo "Applying custom shit to bcm2711_defconfig"
|
|
make bcm2711_defconfig
|
|
cat ../archarm.diffconfig >> .config
|
|
make oldconfig
|
|
if [[ $CARCH == "armv7h" ]]; then
|
|
# https://archlinuxarm.org/forum/viewtopic.php?f=23&t=16373
|
|
scripts/config --enable CONFIG_BCM2835_THERMAL
|
|
# workaround OOM killer issue
|
|
# https://github.com/raspberrypi/linux/issues/5395
|
|
# https://archlinuxarm.org/forum/viewtopic.php?f=23&t=16377
|
|
scripts/config --disable CONFIG_LRU_GEN_ENABLED
|
|
fi
|
|
sed '/^CONFIG_LOCALVERSION=/s,.*$,CONFIG_LOCALVERSION="-ARCH",' .config >$startdir/newconfig.$_config
|
|
echo "verify that newconfig.$_config is fit for purpose then redefine $_config"
|
|
exit
|
|
else
|
|
make bcm2711_defconfig
|
|
make -s kernelrelease | sed 's/rpi-.*$/rpi-ARCH/' > version
|
|
make mrproper
|
|
echo "Setting config..."
|
|
cp ../"$_config" .config
|
|
_make olddefconfig
|
|
diff -u ../"$_config" .config || :
|
|
echo "Prepared $pkgbase version $(<version)"
|
|
fi
|
|
}
|
|
|
|
build() {
|
|
cd "${srcdir}/${_srcname}"
|
|
|
|
_make "$_image" modules dtbs
|
|
}
|
|
|
|
_package() {
|
|
pkgdesc="RPi Foundation patched Linux kernel and modules"
|
|
depends=(
|
|
coreutils
|
|
firmware-raspberrypi
|
|
kmod
|
|
linux-firmware
|
|
'mkinitcpio>=0.7'
|
|
)
|
|
optdepends=(
|
|
'wireless-regdb: to set the correct wireless channels of your country'
|
|
)
|
|
provides=(
|
|
linux="${pkgver}"
|
|
WIREGUARD-MODULE
|
|
)
|
|
conflicts=(
|
|
linux
|
|
uboot-raspberrypi
|
|
)
|
|
replaces=(
|
|
linux-raspberrypi-latest
|
|
linux-raspberrypi4
|
|
)
|
|
install=${pkgname}.install
|
|
backup=(
|
|
boot/config.txt
|
|
boot/cmdline.txt
|
|
)
|
|
|
|
cd "${srcdir}/${_srcname}"
|
|
local modulesdir="$pkgdir/usr/lib/modules/$(<version)"
|
|
|
|
# Used by mkinitcpio to name the kernel
|
|
echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
|
|
|
|
echo "Installing modules..."
|
|
_make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 \
|
|
DEPMOD=/doesnt/exist modules_install # Suppress depmod
|
|
|
|
# remove build and source links
|
|
rm "$modulesdir"/{source,build}
|
|
|
|
echo "Installing Arch ARM specific stuff..."
|
|
mkdir -p "${pkgdir}"/boot
|
|
make INSTALL_DTBS_PATH="${pkgdir}/boot" dtbs_install
|
|
|
|
if [[ $CARCH == "aarch64" ]]; then
|
|
# drop hard-coded devicetree=foo.dtb in /boot/config.txt for
|
|
# autodetected load of supported of models at boot
|
|
find "${pkgdir}/boot/broadcom" -type f -print0 | xargs -0 mv -t "${pkgdir}/boot"
|
|
rmdir "${pkgdir}/boot/broadcom"
|
|
fi
|
|
|
|
cp arch/$KARCH/boot/$_image "${pkgdir}/boot/$_kernel"
|
|
cp arch/$KARCH/boot/dts/overlays/README "${pkgdir}/boot/overlays"
|
|
install -m644 ../$_bconfig "${pkgdir}/boot/config.txt"
|
|
install -m644 ../cmdline.txt "${pkgdir}/boot"
|
|
|
|
# sed expression for following substitutions
|
|
local _subst="
|
|
s|%PKGBASE%|${pkgbase}|g
|
|
s|%KERNVER%|$(<version)|g
|
|
"
|
|
|
|
# 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="RPi Foundation header and scripts for building modules for Linux kernel"
|
|
provides=("linux-headers=${pkgver}")
|
|
conflicts=('linux-headers')
|
|
replaces=('linux-raspberrypi-latest-headers' 'linux-raspberrypi4-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
|
|
install -Dt "$builddir/kernel" -m644 kernel/Makefile
|
|
install -Dt "$builddir/arch/$KARCH" -m644 "arch/$KARCH/Makefile"
|
|
cp -t "$builddir" -a scripts
|
|
|
|
# add xfs and shmem for aufs building
|
|
mkdir -p "$builddir"/{fs/xfs,mm}
|
|
|
|
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
|
|
if [[ $CARCH == "aarch64" ]]; then
|
|
[[ $_arch = */"$KARCH"/ || $_arch == */arm/ ]] && continue
|
|
else
|
|
[[ $_arch = */"$KARCH"/ ]] && continue
|
|
fi
|
|
echo "Removing $(basename "$_arch")"
|
|
rm -r "$_arch"
|
|
done
|
|
|
|
echo "Symlinking common aliases..."
|
|
# https://archlinuxarm.org/forum/viewtopic.php?f=60&t=16354
|
|
ln -sr arm "$builddir/arch/armv7h"
|
|
ln -sr arm "$builddir/arch/armv7l"
|
|
ln -sr arm64 "$builddir/arch/aarch64"
|
|
|
|
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)
|
|
|
|
echo "Adding symlink..."
|
|
mkdir -p "$pkgdir/usr/src"
|
|
ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase"
|
|
}
|
|
|
|
pkgname=("${pkgbase}" "${pkgbase}-headers")
|
|
for _p in ${pkgname[@]}; do
|
|
eval "package_${_p}() {
|
|
_package${_p#${pkgbase}}
|
|
}"
|
|
done
|