diff --git a/srcpkgs/usbarmory-kernel-headers b/srcpkgs/usbarmory-kernel-headers new file mode 120000 index 00000000000..5ef7c3f0126 --- /dev/null +++ b/srcpkgs/usbarmory-kernel-headers @@ -0,0 +1 @@ +usbarmory-kernel \ No newline at end of file diff --git a/srcpkgs/usbarmory-kernel/template b/srcpkgs/usbarmory-kernel/template new file mode 100644 index 00000000000..1236bc466fb --- /dev/null +++ b/srcpkgs/usbarmory-kernel/template @@ -0,0 +1,154 @@ +# Template file for 'usbarmory-kernel' +pkgname=usbarmory-kernel +version=4.0.0 +revision=1 +_configrev=396c9d07c859f9c763df042756ccc288b66e1a99 +wrksrc="linux-${version%.*}" +maintainer="Enno Boland " +homepage="http://inversepath.com/usbarmory" +license="GPL-2" +short_desc="The Linux kernel and modules for the Inversepath USB armory" +distfiles="${KERNEL_SITE}/kernel/v4.x/linux-${version%.*}.tar.xz + https://github.com/inversepath/usbarmory/archive/$_configrev.tar.gz" +checksum="0f2f7d44979bc8f71c4fc5d3308c03499c26a824dd311fdf6eef4dee0d7d5991 + 0c5e5a0f8ae5225afb85c43c4f3738311e3d3da7f6c41cb6e4d6564d28574fe3" + +nodebug=yes +nostrip=yes +noverifyrdeps=yes +noshlibprovides=yes + +only_for_archs="armv7l" +hostmakedepends="perl kmod uboot-mkimage libressl-openssl bc" +makedepends="ncurses-devel" +triggers="kernel-hooks" + +_kernver="${version}_${revision}" +# These files could be modified when an external module is built. +mutable_files=" + /usr/lib/modules/${_kernver}/modules.builtin.bin + /usr/lib/modules/${_kernver}/modules.softdep + /usr/lib/modules/${_kernver}/modules.dep + /usr/lib/modules/${_kernver}/modules.dep.bin + /usr/lib/modules/${_kernver}/modules.symbols + /usr/lib/modules/${_kernver}/modules.symbols.bin + /usr/lib/modules/${_kernver}/modules.alias + /usr/lib/modules/${_kernver}/modules.alias.bin + /usr/lib/modules/${_kernver}/modules.devname" + +do_configure() { + cp $XBPS_BUILDDIR/usbarmory-$_configrev/software/kernel_conf/usbarmory_linux-${version%.*}.config .config + cp $XBPS_BUILDDIR/usbarmory-$_configrev/software/kernel_conf/imx53-usbarmory* arch/arm/boot/dts + + # Always use our revision to CONFIG_LOCALVERSION to match our pkg version. + sed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config +} +do_build() { + if [ "$CROSS_BUILD" ]; then + _args="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-" + fi + make ${makejobs} ${_args} ARCH=arm prepare + make ${makejobs} ${_args} ARCH=arm uImage LOADADDR=0x70008000 modules imx53-usbarmory.dtb +} +do_install() { + local hdrdest + + # Run depmod after compressing modules. + sed -i '2iexit 0' scripts/depmod.sh + + # Install kernel, firmware and modules + make ${makejobs} ARCH=arm INSTALL_MOD_PATH=${DESTDIR} modules_install + + vmkdir boot + mv arch/arm/boot/uImage ${DESTDIR}/boot + mv arch/arm/boot/dts/imx53-usbarmory.dtb ${DESTDIR}/boot + + hdrdest=${DESTDIR}/usr/src/${sourcepkg}-headers-${_kernver} + + # Switch to /usr. + vmkdir usr + mv ${DESTDIR}/lib ${DESTDIR}/usr + + cd ${DESTDIR}/usr/lib/modules/${_kernver} + rm -f source build + ln -sf ../../../src/${sourcepkg}-headers-${_kernver} build + + cd ${wrksrc} + # Install required headers to build external modules + install -Dm644 Makefile ${hdrdest}/Makefile + install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile + install -Dm644 .config ${hdrdest}/.config + mkdir -p ${hdrdest}/include + + # Remove firmware stuff provided by the "linux-firmware" pkg. + rm -rf ${DESTDIR}/usr/lib/firmware + + for i in acpi asm-generic config crypto drm generated linux math-emu \ + media net pcmcia scsi sound trace uapi video xen; do + [ -d include/$i ] && cp -a include/$i ${hdrdest}/include + done + + cd ${wrksrc} + # Copy files necessary for later builds. + cp Module.symvers ${hdrdest} + cp -a scripts ${hdrdest} + + # fix permissions on scripts dir + chmod og-w -R ${hdrdest}/scripts + + # copy arch includes for external modules + mkdir -p ${hdrdest}/arch/arm/mach-imx + cp -a arch/arm/include ${hdrdest}/arch/arm + + mkdir -p ${hdrdest}/arch/arm/kernel + + cp arch/arm/Makefile ${hdrdest}/arch/arm + cp arch/arm/kernel/asm-offsets.s ${hdrdest}/arch/arm/kernel + + # Add docbook makefile + install -Dm644 Documentation/DocBook/Makefile \ + ${hdrdest}/Documentation/DocBook/Makefile + + # Add md headers + mkdir -p ${hdrdest}/drivers/md + cp drivers/md/*.h ${hdrdest}/drivers/md + + # Add inotify.h + mkdir -p ${hdrdest}/include/linux + cp include/linux/inotify.h ${hdrdest}/include/linux + + # Add wireless headers + mkdir -p ${hdrdest}/net/mac80211/ + cp net/mac80211/*.h ${hdrdest}/net/mac80211 + + # Copy in Kconfig files + for i in $(find . -name "Kconfig*"); do + mkdir -p ${hdrdest}/$(echo $i | sed 's|/Kconfig.*||') + cp $i ${hdrdest}/$i + done + + # Remove unneeded architectures + for arch in alpha arm26 avr32 blackfin cris frv h8300 \ + ia64 m* p* s* um v850 x86 xtensa; do + rm -rf ${hdrdest}/arch/${arch} + done + + # Compress all modules with xz to save a few MBs. + msg_normal "$pkgver: compressing kernel modules with gzip, please wait...\n" + find ${DESTDIR} -name '*.ko' | xargs -n1 -P0 gzip -9 + + # ... and run depmod again. + depmod -b ${DESTDIR}/usr -F System.map ${_kernver} +} + +usbarmory-kernel-headers_package() { + nostrip=yes + noverifyrdeps=yes + noshlibprovides=yes + replaces="kernel-rpi-headers>=0" + short_desc="The Linux kernel headers for the Inversepath USB armory" + pkg_install() { + vmove usr/src + vmove usr/lib/modules/${_kernver}/build + } +}