diff options
Diffstat (limited to 'PKGBUILD')
-rw-r--r-- | PKGBUILD | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..c7826886330e --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,218 @@ +# This PKGBUILD is based on linux-aarch64 from archlinuxarm: https://github.com/archlinuxarm/PKGBUILDs/blob/master/core/linux-aarch64/PKGBUILD +# Patches are from the Libreelec project + +buildarch=8 + +pkgbase=linux-aarch64-rockpro64 +_srcname=linux-5.19 +_kernelname=${pkgbase#linux} +_desc="AArch64 with patches for PINE64's ROCKPro64" +pkgver=5.19.12 +pkgrel=1 +arch=('aarch64') +url="http://www.kernel.org/" +license=('GPL2') +makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc' 'git' 'dtc') +options=('!strip') +source=("http://www.kernel.org/pub/linux/kernel/v5.x/${_srcname}.tar.xz" + "http://www.kernel.org/pub/linux/kernel/v5.x/patch-${pkgver}.xz" + '0001-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch' + '0002-arm64-dts-rockchip-disable-pwm0-on-rk3399-firefly.patch' + 'config' + 'linux.preset' + '60-linux.hook' + '90-linux.hook' + "https://github.com/LibreELEC/LibreELEC.tv/raw/master/projects/Rockchip/patches/linux/default/linux-0002-rockchip-from-list.patch" + "https://github.com/LibreELEC/LibreELEC.tv/raw/master/projects/Rockchip/patches/linux/default/linux-0011-v4l2-from-list.patch" + "https://github.com/LibreELEC/LibreELEC.tv/raw/master/projects/Rockchip/patches/linux/default/linux-0020-drm-from-list.patch" + "https://github.com/LibreELEC/LibreELEC.tv/raw/master/projects/Rockchip/patches/linux/default/linux-1000-drm-rockchip.patch" + "https://github.com/LibreELEC/LibreELEC.tv/raw/master/projects/Rockchip/patches/linux/default/linux-1001-v4l2-rockchip.patch" + "https://github.com/LibreELEC/LibreELEC.tv/raw/master/projects/Rockchip/patches/linux/default/linux-1002-for-libreelec.patch" + "https://github.com/LibreELEC/LibreELEC.tv/raw/master/projects/Rockchip/patches/linux/default/linux-2000-v4l2-wip-rkvdec-hevc.patch" + "https://github.com/LibreELEC/LibreELEC.tv/raw/master/projects/Rockchip/patches/linux/default/linux-2001-v4l2-wip-iep-driver.patch" +) +md5sums=('f91bfe133d2cb1692f705947282e123a' + '2f9945a50613017d430f7091be9939f8' + 'e0514a3e8f7383c1304faeff0121dfb5' + '965c9f68072084cdbf1e083779d2ef0e' + '417932cd6167ff0b47c6dc297e3eb3fb' + '41cb5fef62715ead2dd109dbea8413d6' + '0a5f16bfec6ad982a2f6782724cca8ba' + '3dc88030a8f2f5a5f97266d99b149f77' + '7f45e67fe9eafa578b6ddad598b1ef7d' + 'bd40c808030c856d52bd3f82df2e19a7' + '8328bcc4d8c8f00e9ebb6186f2dd22df' + 'e27dbd3847f68f24cf9ebb5e0b8f8f9f' + '35235baaf83cdd1091212f5c78935ddd' + 'f0f8ca23b89c026b6ed8f877d075e586' + '79b113b50829169c168bcf54435914bb' + '7bf9d397ebd8b10b0e254bb1cda80d88') + +prepare() { + cd $_srcname + + echo "Setting version..." + scripts/setlocalversion --save-scmversion + echo "-$pkgrel" > localversion.10-pkgrel + echo "${pkgbase#linux}" > localversion.20-pkgname + + # add upstream patch + git apply -v --whitespace=nowarn ../patch-${pkgver} + + # ALARM patches + git apply -v ../0001-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch + git apply -v ../0002-arm64-dts-rockchip-disable-pwm0-on-rk3399-firefly.patch + + #Libreelec Patches + cat ../linux-1000-drm-rockchip.patch | tail -n 3691 > ../linux-1000-drm-rockchip.patch.mod + git apply -v ../linux-0002-rockchip-from-list.patch + git apply -v ../linux-0011-v4l2-from-list.patch + git apply -v ../linux-0020-drm-from-list.patch + git apply -v ../linux-1000-drm-rockchip.patch.mod + git apply -v ../linux-1001-v4l2-rockchip.patch + git apply -v ../linux-1002-for-libreelec.patch + git apply -v ../linux-2000-v4l2-wip-rkvdec-hevc.patch + git apply -v ../linux-2001-v4l2-wip-iep-driver.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") + conflicts=('linux' 'linux-aarch64') + backup=("etc/mkinitcpio.d/${pkgbase}.preset") + 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 modules_install + + # remove build and source links + rm "$modulesdir"/{source,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" + + # 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 linux kernel - ${_desc}" + provides=("linux-headers=${pkgver}") + conflicts=('linux-headers' 'linux-aarch64-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" +} + +pkgname=("${pkgbase}" "${pkgbase}-headers") +for _p in ${pkgname[@]}; do + eval "package_${_p}() { + _package${_p#${pkgbase}} + }" +done |