284 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			284 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | pkgname=linux6.16-zen | ||
|  | version=6.16.2 | ||
|  | revision=1 | ||
|  | lqx=1 | ||
|  | zen=1 | ||
|  | wrksrc="linux-${version}-zen${zen}" | ||
|  | python_version=3 | ||
|  | short_desc="Linux kernel and modules with Zen patches (${version%.*} series)" | ||
|  | maintainer="Wizzard <retard@deadzone.lol>" | ||
|  | license="GPL-2.0-only" | ||
|  | homepage="https://github.com/zen-kernel/zen-kernel" | ||
|  | distfiles="https://github.com/zen-kernel/zen-kernel/archive/refs/tags/v${version}-lqx${lqx}.tar.gz" | ||
|  | checksum=cb599d0982d55e19a7fb777816fa37ba68f8a3863d42ac52c19e4b275d264f87 | ||
|  | archs="x86_64* i686* ppc* aarch64*" | ||
|  | patch_args="-Np1" | ||
|  | 
 | ||
|  | nodebug=yes | ||
|  | nostrip=yes | ||
|  | noverifyrdeps=yes | ||
|  | noshlibprovides=yes | ||
|  | preserve=yes | ||
|  | 
 | ||
|  | hostmakedepends="tar xz lz4 bc-gh elfutils-devel flex gmp-devel kmod libmpc-devel openssl-devel perl uboot-mkimage cpio pahole python3" | ||
|  | 
 | ||
|  | _kernver="${version}-lqx${lqx}_${revision}" | ||
|  | triggers="kernel-hooks" | ||
|  | kernel_hooks_version="${_kernver}" | ||
|  | 
 | ||
|  | mutable_files=" | ||
|  |  /usr/lib/modules/${_kernver}/modules.builtin.bin | ||
|  |  /usr/lib/modules/${_kernver}/modules.builtin.alias.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" | ||
|  | 
 | ||
|  | export KBUILD_BUILD_TIMESTAMP=${SOURCE_DATE_EPOCH:-0} | ||
|  | export KBUILD_BUILD_USER=voidlinux | ||
|  | export KBUILD_BUILD_HOST=zen | ||
|  | 
 | ||
|  | if [ "$CROSS_BUILD" ]; then | ||
|  | 	_cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-" | ||
|  | fi | ||
|  | if [ "${_patchver}" ]; then | ||
|  | 	_version="EXTRAVERSION=${_patchver}" | ||
|  | fi | ||
|  | 
 | ||
|  | do_configure() { | ||
|  | 	# If there's a file called <arch>-dotconfig, use it to | ||
|  | 	# configure the kernel; otherwise use arch defaults and all stuff | ||
|  | 	# as modules (allmodconfig). | ||
|  | 
 | ||
|  | 	local arch subarch | ||
|  | 
 | ||
|  | 	case "$XBPS_TARGET_MACHINE" in | ||
|  | 		i686*) arch=i386;; | ||
|  | 		x86_64*) arch=x86_64;; | ||
|  | 		arm*) arch=arm;; | ||
|  | 		aarch64*) arch=arm64;; | ||
|  | 		ppc64le*) arch=powerpc; subarch=ppc64le;; | ||
|  | 		ppc64*) arch=powerpc; subarch=ppc64;; | ||
|  | 		ppc*) arch=powerpc;; | ||
|  | 		mips*) arch=mips;; | ||
|  | 	esac | ||
|  | 
 | ||
|  | 	if [ -f ${FILESDIR}/${subarch:-$arch}-dotconfig-custom ]; then | ||
|  | 		msg_normal "Detected a custom .config file for your arch, using it.\n" | ||
|  | 		cp -f ${FILESDIR}/${subarch:-$arch}-dotconfig-custom .config | ||
|  | 		make  ${makejobs} ARCH=$arch ${_args} oldconfig | ||
|  | 	elif [ -f ${FILESDIR}/${subarch:-$arch}-dotconfig ]; then | ||
|  | 		msg_normal "Detected a .config file for your arch, using it.\n" | ||
|  | 		cp -f ${FILESDIR}/${subarch:-$arch}-dotconfig .config | ||
|  | 		make  ${makejobs} ARCH=$arch ${_args} oldconfig | ||
|  | 	elif [ -f ${FILESDIR}/${XBPS_TARGET_MACHINE%%-musl}-dotconfig ]; then | ||
|  | 		msg_normal "Detected a .config file for your cpu family, using it.\n" | ||
|  | 		cp -f ${FILESDIR}/${XBPS_TARGET_MACHINE%%-musl}-dotconfig .config | ||
|  | 		make  ${makejobs} ARCH=$arch ${_args} oldconfig | ||
|  | 	else | ||
|  | 		msg_normal "Defaulting to 'allmodconfig'.\n" | ||
|  | 		make  ${makejobs} ARCH=$arch ${_args} allmodconfig | ||
|  | 	fi | ||
|  | 	# Always use our revision to CONFIG_LOCALVERSION to match our pkg version. | ||
|  | 	sed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config | ||
|  | } | ||
|  | 
 | ||
|  | do_build() { | ||
|  | 	local arch _cross _args | ||
|  | 
 | ||
|  | 	case "$XBPS_TARGET_MACHINE" in | ||
|  | 		i686*) _args="bzImage modules"; arch=i386;; | ||
|  | 		x86_64*) _args="bzImage modules"; arch=x86_64;; | ||
|  | 		arm*) _args="zImage modules dtbs"; arch=arm;; | ||
|  | 		aarch64*) _args="Image modules dtbs"; arch=arm64;; | ||
|  | 		ppc*) _args="zImage modules"; arch=powerpc;; | ||
|  | 		mips*) _args="uImage modules dtbs"; arch=mips;; | ||
|  | 	esac | ||
|  | 	export LDFLAGS= | ||
|  | 	make  ARCH=$arch ${_version} ${_cross} ${makejobs} prepare | ||
|  | 	make  ARCH=$arch ${_version} ${_cross} ${makejobs} ${_args} | ||
|  | } | ||
|  | 
 | ||
|  | do_install() { | ||
|  | 	local arch subarch _args hdrdest | ||
|  | 
 | ||
|  | 	case "$XBPS_TARGET_MACHINE" in | ||
|  | 		i686*) arch=x86; subarch=i386;; | ||
|  | 		x86_64*) arch=x86; subarch=x86_64;; | ||
|  | 		arm*) arch=arm;; | ||
|  | 		aarch64*) arch=arm64;; | ||
|  | 		ppc*) arch=powerpc;; | ||
|  | 		mips*) arch=mips;; | ||
|  | 	esac | ||
|  | 
 | ||
|  | 	sed -i '2iexit 0' scripts/depmod.sh | ||
|  | 
 | ||
|  | 	make  ${makejobs} ARCH=${subarch:-$arch} INSTALL_MOD_PATH=${DESTDIR} modules_install | ||
|  | 
 | ||
|  | 	hdrdest=${DESTDIR}/usr/src/kernel-headers-${_kernver} | ||
|  | 
 | ||
|  | 	vinstall .config 644 boot config-${_kernver} | ||
|  | 	vinstall System.map 644 boot System.map-${_kernver} | ||
|  | 
 | ||
|  | 	case "$arch" in | ||
|  | 		x86) | ||
|  | 			vinstall arch/x86/boot/bzImage 644 boot vmlinuz-${_kernver} | ||
|  | 			;; | ||
|  | 		arm) | ||
|  | 			vinstall arch/arm/boot/zImage 644 boot | ||
|  | 			make  ${makejobs} ARCH=${subarch:-$arch} INSTALL_DTBS_PATH=${DESTDIR}/boot/dtbs/dtbs-${_kernver} dtbs_install | ||
|  | 			;; | ||
|  | 		arm64) | ||
|  | 			vinstall arch/arm64/boot/Image 644 boot vmlinux-${_kernver} | ||
|  | 			make  ${makejobs} ARCH=${subarch:-$arch} INSTALL_DTBS_PATH=${DESTDIR}/boot/dtbs/dtbs-${_kernver} dtbs_install | ||
|  | 			;; | ||
|  | 		powerpc) | ||
|  | 			# zImage on powerpc is useless as it won't load initramfs | ||
|  | 			# raw vmlinux is huge, and this is nostrip, so do it manually | ||
|  | 			vinstall vmlinux 644 boot vmlinux-${_kernver} | ||
|  | 			/usr/bin/$STRIP ${DESTDIR}/boot/vmlinux-${_kernver} | ||
|  | 			;; | ||
|  | 		mips) | ||
|  | 			vinstall arch/mips/boot/uImage.bin 644 boot uImage-${_kernver} | ||
|  | 			make  ${makejobs} ARCH=${subarch:-$arch} INSTALL_DTBS_PATH=${DESTDIR}/boot/dtbs/dtbs-${_kernver} dtbs_install | ||
|  | 			;; | ||
|  | 	esac | ||
|  | 
 | ||
|  | 	# Switch to /usr. | ||
|  | 	vmkdir usr | ||
|  | 	mv ${DESTDIR}/lib ${DESTDIR}/usr | ||
|  | 
 | ||
|  | 	cd ${DESTDIR}/usr/lib/modules/${_kernver} | ||
|  | 	rm -f source build | ||
|  | 	ln -sf ../../../src/kernel-headers-${_kernver} build | ||
|  | 
 | ||
|  | 	cd ${wrksrc} | ||
|  | 
 | ||
|  | 	install -Dm644 Makefile ${hdrdest}/Makefile | ||
|  | 	install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile | ||
|  | 	install -Dm644 .config ${hdrdest}/.config | ||
|  | 	for file in $(find . -name Kconfig\*); do | ||
|  | 		mkdir -p ${hdrdest}/$(dirname $file) | ||
|  | 		install -Dm644 $file ${hdrdest}/${file} | ||
|  | 	done | ||
|  | 	for file in $(find arch/${subarch:-$arch} -name module.lds -o -name Kbuild.platforms -o -name Platform); do | ||
|  | 		mkdir -p ${hdrdest}/$(dirname $file) | ||
|  | 		install -Dm644 $file ${hdrdest}/${file} | ||
|  | 	done | ||
|  | 	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 clocksource config crypto drm generated hyperv linux vdso \ | ||
|  | 		math-emu media net pcmcia scsi sound trace uapi video xen dt-bindings; do | ||
|  | 		if [ -d include/$i ]; then | ||
|  | 			cp -a include/$i ${hdrdest}/include | ||
|  | 		fi | ||
|  | 	done | ||
|  | 
 | ||
|  | 	cd ${wrksrc} | ||
|  | 	mkdir -p ${hdrdest}/arch/${arch} | ||
|  | 	cp -a arch/${arch}/include ${hdrdest}/arch/${arch} | ||
|  | 
 | ||
|  | 	# Remove helper binaries built for host, | ||
|  | 	# if generated files from the scripts/ directory need to be included, | ||
|  | 	# they need to be copied to ${hdrdest} before this step | ||
|  | 	if [ "$CROSS_BUILD" ]; then | ||
|  | 		make  ${makejobs} ARCH=${subarch:-$arch} _mrproper_scripts | ||
|  | 		# remove host specific objects as well | ||
|  | 		find scripts -name '*.o' -delete | ||
|  | 	fi | ||
|  | 
 | ||
|  | 	cp Module.symvers ${hdrdest} | ||
|  | 	cp -a scripts ${hdrdest} | ||
|  | 	mkdir -p ${hdrdest}/security/selinux | ||
|  | 	cp -a security/selinux/include ${hdrdest}/security/selinux | ||
|  | 	mkdir -p ${hdrdest}/tools/include | ||
|  | 	cp -a tools/include/tools ${hdrdest}/tools/include | ||
|  | 
 | ||
|  | 	mkdir -p ${hdrdest}/arch/${arch}/kernel | ||
|  | 	cp arch/${arch}/Makefile ${hdrdest}/arch/${arch} | ||
|  | 	if [ "$subarch" = "i386" ]; then | ||
|  | 		mkdir -p ${hdrdest}/arch/x86 | ||
|  | 		cp arch/x86/Makefile_32.cpu ${hdrdest}/arch/x86 | ||
|  | 	fi | ||
|  | 	if [ "$arch" = "x86" ]; then | ||
|  | 		mkdir -p ${hdrdest}/arch/x86/kernel | ||
|  | 		cp arch/x86/kernel/asm-offsets.s ${hdrdest}/arch/x86/kernel | ||
|  | 	elif [ "$arch" = "arm64" ]; then | ||
|  | 		mkdir -p ${hdrdest}/arch/arm64/kernel | ||
|  | 		cp -a arch/arm64/kernel/vdso ${hdrdest}/arch/arm64/kernel/ | ||
|  | 	fi | ||
|  | 
 | ||
|  | 	# Copy essential driver headers needed for external modules | ||
|  | 	mkdir -p ${hdrdest}/drivers | ||
|  | 	cp -a drivers/md ${hdrdest}/drivers/ 2>/dev/null || true | ||
|  | 	cp -a drivers/media ${hdrdest}/drivers/ 2>/dev/null || true | ||
|  | 	 | ||
|  | 	# Copy networking headers | ||
|  | 	mkdir -p ${hdrdest}/net | ||
|  | 	cp -a net/mac80211 ${hdrdest}/net/ 2>/dev/null || true | ||
|  | 	 | ||
|  | 	# Copy filesystem headers for external filesystems (e.g., aufs) | ||
|  | 	mkdir -p ${hdrdest}/fs | ||
|  | 	cp -a fs/xfs ${hdrdest}/fs/ 2>/dev/null || true | ||
|  | 
 | ||
|  | 	# Add objtool binary, needed to build external modules with dkms | ||
|  | 	case "$XBPS_TARGET_MACHINE" in | ||
|  | 		x86_64*) | ||
|  | 			mkdir -p ${hdrdest}/tools/objtool | ||
|  | 			cp tools/objtool/objtool ${hdrdest}/tools/objtool | ||
|  | 			;; | ||
|  | 	esac | ||
|  | 
 | ||
|  | 	# Remove unneeded architectures | ||
|  | 	case "$arch" in | ||
|  | 		i386|x86_64) _args="arm* m* p*";; | ||
|  | 		arm|arm64) _args="x86* m* p*";; | ||
|  | 		powerpc) _args="arm* m* x86* parisc";; | ||
|  | 		mips) _args="arm* x86* p*";; | ||
|  | 	esac | ||
|  | 	for arch in alpha avr32 blackfin cris frv h8300 \ | ||
|  | 		ia64 s* um v850 xtensa ${_args}; do | ||
|  | 		rm -rf ${hdrdest}/arch/${arch} | ||
|  | 	done | ||
|  | 	mkdir -p ${hdrdest}/arch/x86/ras | ||
|  | 	cp -a arch/x86/ras/Kconfig ${hdrdest}/arch/x86/ras/Kconfig | ||
|  | 
 | ||
|  | 	msg_normal "$pkgver: extracting debug info and compressing modules, please wait...\n" | ||
|  | 	install -Dm644 vmlinux ${DESTDIR}/usr/lib/debug/boot/vmlinux-${_kernver} | ||
|  | 	( | ||
|  | 	cd ${DESTDIR} | ||
|  | 	export DESTDIR | ||
|  | 	find ./ -name '*.ko' -print0 | \ | ||
|  | 		xargs -0r -n1 -P ${XBPS_MAKEJOBS} ${FILESDIR}/mv-debug | ||
|  | 	) | ||
|  | 	depmod -b ${DESTDIR}/usr -F System.map ${_kernver} | ||
|  | } | ||
|  | 
 | ||
|  | linux6.16-zen-headers_package() { | ||
|  | 	preserve=yes | ||
|  | 	nostrip=yes | ||
|  | 	noshlibprovides=yes | ||
|  | 	short_desc+=" - source headers for 3rd party modules" | ||
|  | 	pkg_install() { | ||
|  | 		vmove usr/src | ||
|  | 		vmove usr/lib/modules/${_kernver}/build | ||
|  | 	} | ||
|  | } | ||
|  | linux6.16-zen-dbg_package() { | ||
|  | 	preserve=yes | ||
|  | 	nostrip=yes | ||
|  | 	noverifyrdeps=yes | ||
|  | 	noshlibprovides=yes | ||
|  | 	repository=debug | ||
|  | 	short_desc+=" - debugging symbols" | ||
|  | 	pkg_install() { | ||
|  | 		vmove usr/lib/debug | ||
|  | 	} | ||
|  | } |