mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-08 22:45:43 +00:00
58c099de36
This brings in necessary config options from the upstream defconfig to enable devices such as Lenovo Thinkpad X13s to work out of the box. Specifically CAMCC, DISPCC, GPUCC, and LPASSCC are brought in to provide clocks to camera, display, gpu, and audio functions. The pmic_glink and GPIO SBU mux provides the necessary dependencies for display to show up. Together with the Qualcomm battery manager, pmic_glink, provides battery status. The LPASS pinctrl and WSA883x drivers provides the missing pieces for audio. The QSEECOM and UEFI secapp, provides EFI variable access. Lastly the SPMI SDAM driver provides persistent storage of RTC offset from the read-only RTC found in the PMIC. EDIT BY GRAYSKY: fixup config Signed-off-by: Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>
232 lines
7.5 KiB
Bash
232 lines
7.5 KiB
Bash
# AArch64 multi-platform
|
|
# Maintainer: Kevin Mihelich <kevin@archlinuxarm.org>
|
|
|
|
buildarch=8
|
|
|
|
_rcver=6.12
|
|
_rcrel=4
|
|
|
|
pkgbase=linux-aarch64-rc
|
|
_srcname=linux-${_rcver}-rc${_rcrel}
|
|
_kernelname=${pkgbase#linux}
|
|
_desc="AArch64 multi-platform (release candidate)"
|
|
pkgver=${_rcver}.rc${_rcrel}
|
|
pkgrel=1
|
|
arch=('aarch64')
|
|
url="http://www.kernel.org/"
|
|
license=('GPL2')
|
|
makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc' 'git' 'uboot-tools' 'vboot-utils' 'dtc')
|
|
options=('!strip')
|
|
source=("https://git.kernel.org/torvalds/t/${_srcname}.tar.gz"
|
|
'0001-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch'
|
|
'0002-arm64-dts-rockchip-disable-pwm0-on-rk3399-firefly.patch'
|
|
'0003-pps-Compatibility-hack-should-be-X86-specific.patch'
|
|
'config'
|
|
'generate_chromebook_its.sh'
|
|
'kernel.keyblock'
|
|
'kernel_data_key.vbprivk'
|
|
'linux.preset')
|
|
md5sums=('783698907190ffe3fe1f3ce28fbc4228'
|
|
'7b08a199a97e3e2288e5c03d8e8ded2d'
|
|
'c9d4e392555b77034e24e9f87c5ff0b3'
|
|
'a6abfb191ecb3d7d5f6ccdaca335a11d'
|
|
'4d2054bef36380563231c532d4723684'
|
|
'7c97cf141750ad810235b1ad06eb9f75'
|
|
'61c5ff73c136ed07a7aadbf58db3d96a'
|
|
'584777ae88bce2c5659960151b64c7d8'
|
|
'33ba82001fca579d43172a6db25d6aca')
|
|
|
|
prepare() {
|
|
cd $_srcname
|
|
|
|
echo "Setting version..."
|
|
echo "-$pkgrel" > localversion.10-pkgrel
|
|
echo "${pkgbase#linux}" > localversion.20-pkgname
|
|
|
|
# ALARM patches
|
|
git apply ../0001-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch
|
|
git apply ../0002-arm64-dts-rockchip-disable-pwm0-on-rk3399-firefly.patch
|
|
git apply ../0003-pps-Compatibility-hack-should-be-X86-specific.patch
|
|
|
|
cat "${srcdir}/config" > ./.config
|
|
}
|
|
|
|
build() {
|
|
cd ${_srcname}
|
|
|
|
# get kernel version
|
|
make prepare
|
|
make -s kernelrelease > version
|
|
|
|
# build!
|
|
unset LDFLAGS
|
|
make ${MAKEFLAGS} Image Image.gz modules
|
|
# Generate device tree blobs with symbols to support applying device tree overlays in U-Boot
|
|
make ${MAKEFLAGS} DTC_FLAGS="-@" dtbs
|
|
}
|
|
|
|
_package() {
|
|
pkgdesc="The Linux Kernel and modules - ${_desc}"
|
|
depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7')
|
|
optdepends=('wireless-regdb: to set the correct wireless channels of your country')
|
|
provides=("linux=${pkgver}" "WIREGUARD-MODULE")
|
|
replaces=('linux-armv8-rc')
|
|
conflicts=('linux')
|
|
install=${pkgname}.install
|
|
|
|
cd $_srcname
|
|
local kernver="$(<version)"
|
|
local modulesdir="$pkgdir/usr/lib/modules/$kernver"
|
|
|
|
echo "Installing boot image and dtbs..."
|
|
install -Dm644 arch/arm64/boot/Image{,.gz} -t "${pkgdir}/boot"
|
|
make INSTALL_DTBS_PATH="${pkgdir}/boot/dtbs" dtbs_install
|
|
|
|
echo "Installing modules..."
|
|
make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 DEPMOD=/doesnt/exist modules_install
|
|
|
|
# remove build link
|
|
rm "$modulesdir"/build
|
|
|
|
# sed expression for following substitutions
|
|
local _subst="
|
|
s|%PKGBASE%|${pkgbase}|g
|
|
s|%KERNVER%|${kernver}|g
|
|
"
|
|
|
|
# install mkinitcpio preset file
|
|
sed "${_subst}" ../linux.preset |
|
|
install -Dm644 /dev/stdin "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
|
|
|
|
# rather than use another hook (90-linux.hook) rely on mkinitcpio's 90-mkinitcpio-install.hook
|
|
# which avoids a double run of mkinitcpio that can occur
|
|
install -d "${pkgdir}/usr/lib/initcpio/"
|
|
echo "dummy file to trigger mkinitcpio to run" > "${pkgdir}/usr/lib/initcpio/$(<version)"
|
|
}
|
|
|
|
_package-headers() {
|
|
pkgdesc="Header files and scripts for building modules for linux kernel - ${_desc}"
|
|
provides=("linux-headers=${pkgver}")
|
|
replaces=('linux-armv8-rc-headers')
|
|
conflicts=('linux-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 vmlinux
|
|
install -Dt "$builddir/kernel" -m644 kernel/Makefile
|
|
install -Dt "$builddir/arch/arm64" -m644 arch/arm64/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/arm64" -a arch/arm64/include
|
|
install -Dt "$builddir/arch/arm64/kernel" -m644 arch/arm64/kernel/asm-offsets.s
|
|
mkdir -p "$builddir/arch/arm"
|
|
cp -t "$builddir/arch/arm" -a arch/arm/include
|
|
|
|
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
|
|
[[ $arch = */arm64/ || $arch == */arm/ ]] && continue
|
|
echo "Removing $(basename "$arch")"
|
|
rm -r "$arch"
|
|
done
|
|
|
|
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 -bi "$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)
|
|
|
|
echo "Adding symlink..."
|
|
mkdir -p "$pkgdir/usr/src"
|
|
ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase"
|
|
}
|
|
|
|
_package-chromebook() {
|
|
pkgdesc="The Linux Kernel - ${_desc} - Chromebooks"
|
|
depends=('linux-aarch64-rc')
|
|
conflicts=('linux-aarch64-chromebook')
|
|
install=${pkgname}.install
|
|
|
|
cd ${_srcname}
|
|
|
|
mkdir -p "${pkgdir}/boot"
|
|
|
|
image=arch/arm64/boot/Image
|
|
|
|
chromeos_boards=(
|
|
'elm'
|
|
'gru'
|
|
'kukui'
|
|
'trogdor'
|
|
'asurada'
|
|
)
|
|
chromebook_dtbs=($(for b in ${chromeos_boards[@]}; do find arch/arm64/boot -name "*${b}*.dtb" | LC_COLLATE=C sort; done))
|
|
|
|
lz4 -20 -z -f -m ${image}
|
|
echo ${chromebook_dtbs[@]} | ../generate_chromebook_its.sh ${image}.lz4 arm64 lz4 > kernel.its
|
|
|
|
mkimage -D "-I dts -O dtb -p 2048" -f kernel.its vmlinux.uimg
|
|
dd if=/dev/zero of=bootloader.bin bs=512 count=1
|
|
echo "console=tty0 console=ttyS2,115200n8 earlyprintk=ttyS2,115200n8 console=ttyMSM0,115200n8 init=/sbin/init root=PARTUUID=%U/PARTNROFF=1 rootwait rw noinitrd" > cmdline
|
|
vbutil_kernel \
|
|
--pack vmlinux.kpart \
|
|
--version 1 \
|
|
--vmlinuz vmlinux.uimg \
|
|
--arch aarch64 \
|
|
--keyblock ../kernel.keyblock \
|
|
--signprivate ../kernel_data_key.vbprivk \
|
|
--config cmdline \
|
|
--bootloader bootloader.bin
|
|
|
|
cp vmlinux.kpart "${pkgdir}/boot"
|
|
}
|
|
|
|
pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-chromebook")
|
|
for _p in ${pkgname[@]}; do
|
|
eval "package_${_p}() {
|
|
_package${_p#${pkgbase}}
|
|
}"
|
|
done
|