# Contributor: Danct12 # Maintainer: Danct12 buildarch=8 pkgbase=linux-pine64 _desc="Pine64 PinePhone" pkgver=5.12.19 pkgrel=1 arch=('aarch64') url="https://github.com/megous/linux" license=('GPL2') makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc' 'git' 'uboot-tools' 'dtc') options=('!strip') # Source _commit="c405805c3561a0b09809a5f236378c32be007163" source=("linux-$_commit.tar.gz::https://github.com/megous/linux/archive/${_commit}.tar.gz" 'config' 'enable-hdmi-output-pinetab.patch' 'enable-jack-detection-pinetab.patch' 'pinetab-bluetooth.patch' 'pinetab-accelerometer.patch' 'camera-added-bggr-bayer-mode.patch' 'media-ov5640-Implement-autofocus.patch' '0002-dts-add-pinetab-dev-old-display-panel.patch' '0013-fix-pogopin-i2c.patch' 'dts-pinephone-drop-modem-power-node.patch' '5.12.17-19.diff' 'linux.preset' '60-linux.hook' '90-linux.hook' '0001-revert-fbcon-remove-now-unusued-softback_lines-cursor-argument.patch' '0002-revert-fbcon-remove-no-op-fbcon_set_origin.patch' '0003-revert-fbcon-remove-soft-scrollback-code.patch' '0001-bootsplash.patch' '0002-bootsplash.patch' '0003-bootsplash.patch' '0004-bootsplash.patch' '0005-bootsplash.patch' '0006-bootsplash.patch' '0007-bootsplash.patch' '0008-bootsplash.patch' '0009-bootsplash.patch' '0010-bootsplash.patch' '0011-bootsplash.patch' '0012-bootsplash.patch' 'cacule-5.12.patch' 'rdb-5.12.patch') prepare() { cd linux-$_commit # 5.12.17 -> 5.12.19 patch -p1 -N -i "../5.12.17-19.diff" || true # PinePhone patches patch -p1 -N < ../0013-fix-pogopin-i2c.patch patch -p1 -N < ../dts-pinephone-drop-modem-power-node.patch # camera patch -p1 -N < ../media-ov5640-Implement-autofocus.patch # PineTab patches patch -p1 -N < ../pinetab-bluetooth.patch patch -p1 -N < ../pinetab-accelerometer.patch patch -p1 -N < ../0002-dts-add-pinetab-dev-old-display-panel.patch patch -p1 -N < ../enable-jack-detection-pinetab.patch patch -p1 -N < ../enable-hdmi-output-pinetab.patch # bootsplash stuffs patch -Np1 -i "${srcdir}/0001-revert-fbcon-remove-now-unusued-softback_lines-cursor-argument.patch" patch -Np1 -i "${srcdir}/0002-revert-fbcon-remove-no-op-fbcon_set_origin.patch" patch -Np1 -i "${srcdir}/0003-revert-fbcon-remove-soft-scrollback-code.patch" patch -Np1 -i "${srcdir}/0001-bootsplash.patch" patch -Np1 -i "${srcdir}/0002-bootsplash.patch" patch -Np1 -i "${srcdir}/0003-bootsplash.patch" patch -Np1 -i "${srcdir}/0004-bootsplash.patch" patch -Np1 -i "${srcdir}/0005-bootsplash.patch" patch -Np1 -i "${srcdir}/0006-bootsplash.patch" patch -Np1 -i "${srcdir}/0007-bootsplash.patch" patch -Np1 -i "${srcdir}/0008-bootsplash.patch" patch -Np1 -i "${srcdir}/0009-bootsplash.patch" patch -Np1 -i "${srcdir}/0010-bootsplash.patch" patch -Np1 -i "${srcdir}/0011-bootsplash.patch" patch -Np1 -i "${srcdir}/0012-bootsplash.patch" # CacULE patch -Np1 -i "${srcdir}/cacule-5.12.patch" patch -Np1 -i "${srcdir}/rdb-5.12.patch" cat "${srcdir}/config" > ./.config # add pkgrel to extraversion sed -ri "s|^(EXTRAVERSION =)(.*)|\1 \2-${pkgrel}|" Makefile # don't run depmod on 'make install'. We'll do this ourselves in packaging sed -i '2iexit 0' scripts/depmod.sh # Fix DistCC compatibility sed -i '/HAVE_GCC_PLUGINS/d' arch/x86/Kconfig } build() { cd linux-$_commit # 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 # Copy back our configuration (use with new kernel version) #cp ./.config ../${pkgbase}.config #################### # stop here # this is useful to configure the kernel #msg "Stopping build" #return 1 #################### #yes "" | make config # 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' 'kmod' 'mkinitcpio>=0.7') optdepends=('crda: to set the correct wireless channels of your country') provides=('kernel26' "linux=${pkgver}") conflicts=('linux') backup=("etc/mkinitcpio.d/${pkgbase}.preset") install=${pkgname}.install cd linux-$_commit KARCH=arm64 # 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 make INSTALL_DTBS_PATH="${pkgdir}/boot/dtbs" dtbs_install cp arch/$KARCH/boot/Image{,.gz} "${pkgdir}/boot" # 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}" # sed expression for following substitutions local _subst=" s|%PKGBASE%|${pkgbase}|g s|%KERNVER%|${_kernver}|g s|%EXTRAMODULES%|${_extramodules}|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') cd linux-$_commit local _builddir="${pkgdir}/usr/lib/modules/${_kernver}/build" echo "Installing build files..." install -Dt "${_builddir}" -m644 Makefile .config Module.symvers System.map \ vmlinux install -Dt "${_builddir}/kernel" -m644 kernel/Makefile mkdir "${_builddir}/.tmp_versions" echo "Installing headers..." cp -t "${_builddir}" -a include scripts install -Dt "${_builddir}/arch/${KARCH}" -m644 arch/${KARCH}/Makefile install -Dt "${_builddir}/arch/${KARCH}/kernel" -m644 arch/${KARCH}/kernel/asm-offsets.s cp -t "${_builddir}/arch/${KARCH}" -a arch/${KARCH}/include 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 # 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} echo "Installing KConfig files..." find . -name Kconfig\* -exec install -Dm644 {} "${_builddir}/{}" \; echo "Removing unneeded architectures..." local _arch for _arch in "${_builddir}"/arch/*/; do [[ ${_arch} == */${KARCH}/ || ${_arch} == */arm/ || ${_arch} == */x86/ ]] && continue 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 # Fix permissions chmod -R u=rwX,go=rX "${_builddir}" echo "Stripping build tools..." 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 strip ${_strip} "${_binary}" done < <(find "${_builddir}/scripts" -type f -perm -u+w -print0 2>/dev/null) echo "Stripping vmlinux..." ${CROSS_COMPILE}strip -v ${STRIP_STATIC} "${_builddir}/vmlinux" } pkgname=("$pkgbase" "$pkgbase-headers") for _p in "${pkgname[@]}"; do eval "package_$_p() { $(declare -f "_package${_p#$pkgbase}") _package${_p#$pkgbase} }" done md5sums=('8959691f8cba631e5a2eca74898b8f3c' 'SKIP' '979a787cf84bef9c60da78e72ec96550' 'f79300740a7350d2d24ab5e120831b52' '85d8339bc3d5daf45aa579d578ef0255' 'd0fd6bd627223d4c9fc001ffff9df401' 'a020d566b1b55988476b32840b204834' 'a25d069b2b008ae22aa7fe55716239da' '3182f25beb0b76e8abd2e9de8213351d' 'c2b0ee1805e10cba7072cbcae67830b2' '10d200e0a964f24cdb744678a758e22b' 'c846408cdabe7978a687fa3648f3c96f' '86d4a35722b5410e3b29fc92dae15d4b' 'ce6c81ad1ad1f8b333fd6077d47abdaf' '3dc88030a8f2f5a5f97266d99b149f77' 'a31a435ab6cd8e7a47601159d665ce50' 'fed6ae4ac4c3f56178fa4aca6c934d6f' '594d4f69b956eaab3336b4e01f42eda8' 'be5a873f638ff5c31947f8d28a824d3a' 'b4acd66a564af83b5409738c40b4a566' 'a6407dceae1838f5aa27450401a91be6' 'cb78b1c11b917a4d31c4b1567183b76f' '3efea575da7f02ba94789d3b6b81e11f' '2529ad13791b259d80c9d5d702187a65' 'cb296d7788098cf478c46c0d21376719' '50255aac36e002afa477e4527a0550af' '6b6def41b404422dc04b39e2f1adffc8' '1922e3a7727d2bf51641b98d6d354738' 'd6b7e4e43e42128cf950251e0d0aee23' 'ecfd8a30c480149005fcf349e4d06f4b' 'SKIP' 'SKIP')