123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307 |
- # Template file for 'linux5.4'
- pkgname=linux5.4
- version=5.4.173
- revision=1
- wrksrc="linux-${version}"
- short_desc="Linux kernel and modules (${version%.*} series)"
- maintainer="Helmut Pozimski <helmut@pozimski.eu>"
- license="GPL-2.0-only"
- homepage="https://www.kernel.org"
- distfiles="https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${version}.tar.xz"
- checksum=99e8e275b239c708bdb6a41990c4d12098a61752245dbef921a514d9f996c239
- python_version=3
- patch_args="-Np1"
- nodebug=yes # -dbg package is generated below manually
- nostrip=yes
- noverifyrdeps=yes
- noshlibprovides=yes
- preserve=yes
- archs="i686* x86_64* armv5tel* armv6l* armv7l* aarch64* ppc* mips*"
- hostmakedepends="tar xz bc elfutils-devel flex gmp-devel kmod libmpc-devel
- openssl-devel perl uboot-mkimage cpio"
- _kernver="${version}_${revision}"
- triggers="kernel-hooks"
- kernel_hooks_version="${_kernver}"
- # 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.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"
- # reproducible build
- export KBUILD_BUILD_TIMESTAMP=${SOURCE_DATE_EPOCH:-0}
- export KBUILD_BUILD_USER=voidlinux
- export KBUILD_BUILD_HOST=voidlinux
- do_configure() {
- # 5.4 misses Documentation/DocBook. We ship the directory from 4.12 here.
- cp -a $FILESDIR/DocBook -t Documentation
- # 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 _args
- 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 [ "$CROSS_BUILD" ]; then
- _args="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
- fi
- 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
- if [ "$CROSS_BUILD" ]; then
- _cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
- fi
- if [ "${_patchver}" ]; then
- _version="EXTRAVERSION=${_patchver}"
- fi
- 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
- # Run depmod after compressing modules.
- sed -i '2iexit 0' scripts/depmod.sh
- # Install kernel, firmware and modules
- 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 required headers to build external modules
- 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 linux \
- 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
- # Copy files necessary for later builds, like nvidia and vmware
- 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
- # add headers for lirc package
- # pci
- for i in bt8xx cx88 saa7134; do
- mkdir -p ${hdrdest}/drivers/media/pci/${i}
- cp -a drivers/media/pci/${i}/*.h ${hdrdest}/drivers/media/pci/${i}
- done
- # usb
- for i in cpia2 em28xx pwc; do
- mkdir -p ${hdrdest}/drivers/media/usb/${i}
- cp -a drivers/media/usb/${i}/*.h ${hdrdest}/drivers/media/usb/${i}
- done
- # i2c
- mkdir -p ${hdrdest}/drivers/media/i2c
- cp drivers/media/i2c/*.h ${hdrdest}/drivers/media/i2c
- for i in cx25840; do
- mkdir -p ${hdrdest}/drivers/media/i2c/${i}
- cp -a drivers/media/i2c/${i}/*.h ${hdrdest}/drivers/media/i2c/${i}
- done
- # 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
- # add dvb headers for external modules
- mkdir -p ${hdrdest}/include/config/dvb/
- cp include/config/dvb/*.h ${hdrdest}/include/config/dvb/
- # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
- mkdir -p ${hdrdest}/drivers/media/dvb-frontends
- cp drivers/media/dvb-frontends/lgdt330x.h \
- ${hdrdest}/drivers/media/dvb-frontends/
- cp drivers/media/i2c/msp3400-driver.h ${hdrdest}/drivers/media/i2c/
- # add dvb headers
- mkdir -p ${hdrdest}/drivers/media/usb/dvb-usb
- cp drivers/media/usb/dvb-usb/*.h ${hdrdest}/drivers/media/usb/dvb-usb/
- mkdir -p ${hdrdest}/drivers/media/dvb-frontends
- cp drivers/media/dvb-frontends/*.h ${hdrdest}/drivers/media/dvb-frontends/
- mkdir -p ${hdrdest}/drivers/media/tuners
- cp drivers/media/tuners/*.h ${hdrdest}/drivers/media/tuners/
- # Add xfs and shmem for aufs building
- mkdir -p ${hdrdest}/fs/xfs/libxfs
- mkdir -p ${hdrdest}/mm
- cp fs/xfs/libxfs/xfs_sb.h ${hdrdest}/fs/xfs/libxfs/xfs_sb.h
- # 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* p*";;
- arm|arm64) _args="x86* p*";;
- powerpc) _args="arm* x86* parisc";;
- esac
- for arch in alpha avr32 blackfin cris frv h8300 \
- ia64 m* s* um v850 xtensa ${_args}; do
- rm -rf ${hdrdest}/arch/${arch}
- done
- # Keep arch/x86/ras/Kconfig as it is needed by drivers/ras/Kconfig
- mkdir -p ${hdrdest}/arch/x86/ras
- cp -a arch/x86/ras/Kconfig ${hdrdest}/arch/x86/ras/Kconfig
- }
|