#!/bin/sh set -e set -x CWD=$(pwd) THIS_HOST=${THIS_HOST:-$(hostname -s)} PRGNAM=$(basename $CWD)-$THIS_HOST BUILD=${BUILD:-1} BRANCH=${BRANCH:-mainline} # stable ; mainline ARCH=$(uname -m) TAG=gwh TMP=/tmp/$TAG PKG=$TMP/pkg-$PRGNAM OUTPUT=/tmp NUMJOBS=${NUMJOBS:-" -j$(nproc)"} ANEW=${ANEW:-true} rm -fr $PKG VERSION=${VERSION:-$(curl https://www.kernel.org/feeds/kdist.xml | grep -o "[0-9.rc-]*: $BRANCH" | head -n1 | cut -d: -f1)} mkdir -p $PKG/usr/src/ if [ -e /usr/src/linux-$VERSION ] && [[ "$ANEW" != "true" ]]; then cp -a /usr/src/linux-$VERSION $PKG/usr/src/ else if [ $BRANCH == "stable" ]; then SRC_URL="https://cdn.kernel.org/pub/linux/kernel/v$(echo $VERSION | cut -d. -f1).x" else SRC_URL="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/snapshot" fi [ ! -e $CWD/linux-$VERSION.tar.?z* ] && wget -c "$SRC_URL/linux-$VERSION.tar.gz" -O $CWD/linux-$VERSION.tar.gz tar xf $CWD/linux-$VERSION.tar.gz -C $PKG/usr/src/ fi cd $PKG/usr/src/ ln -s linux-$VERSION linux cd linux-$VERSION if [ -e $CWD/config-$THIS_HOST-$VERSION ] ; then cp $CWD/config-$THIS_HOST-$VERSION .config else if [ -e $CWD/config-$THIS_HOST ] ; then cp $CWD/config-$THIS_HOST .config else zcat /proc/config.gz > .config fi fi make oldconfig $* make $NUMJOBS make modules $NUMJOBS make modules_install INSTALL_MOD_PATH=$PKG if [[ "$ARCH" == "aarch64" ]]; then make dtbs make dtbs_install INSTALL_DTBS_PATH=$PKG/boot/dtb fi if [ -z "${HEADERS_ARCH}" ]; then case "$(uname -m)" in i?86) HEADERS_ARCH=x86 ;; x86_64) HEADERS_ARCH=x86 ;; aarch64) HEADERS_ARCH=arm64 ;; # Use uname -m for all other archs: *) HEADERS_ARCH=$(uname -m) ;; esac fi # Generate the kernel headers and clean them up: ( echo "Generating headers from the Linux kernel source tree in ${KERNEL_SOURCE}:" make headers_install ARCH=${HEADERS_ARCH} INSTALL_HDR_PATH=$PKG/usr cd $PKG/usr/include # You won't want these files. The ones in libdrm work better. rm -rf drm # This next part seems pretty much cosmetic, but since we've been doing this # for a long time (and others also do), we'll stick with it: mv asm asm-${HEADERS_ARCH} ln -sf asm-${HEADERS_ARCH} asm # Remove unneeded dotfiles: find . -name ".??*" -exec rm -f {} \+ ) VERSION=$(basename $(ls $PKG/lib/modules/ | head -n1)) mkdir -p $PKG/install mkdir -p $PKG/boot/ cp System.map $PKG/boot/System.map-gwh-$VERSION cp .config $PKG/boot/config-gwh-$VERSION if [[ "$ARCH" == "aarch64" ]]; then cp arch/arm64/boot/Image $PKG/boot/vmlinux-gwh-$VERSION ( cd $PKG/boot/ ln -s vmlinux-gwh-$VERSION vmlinux-gwh ) cat < $PKG/install/doinst.sh [ -e /boot/Image ] && mv /boot/Image /boot/Image.old cp /boot/vmlinux-gwh-$VERSION /boot/Image eval \$(/usr/share/mkinitrd/mkinitrd_command_generator.sh -k $VERSION -r ) cp /boot/initrd.gz /boot/initrd-gwh.gz EOF else cp arch/${ARCH}/boot/bzImage $PKG/boot/vmlinuz-gwh-$VERSION ( cd $PKG/boot/ ln -s vmlinuz-gwh-$VERSION vmlinuz-gwh ) cat < $PKG/install/doinst.sh cp /boot/elilo-x86_64.efi /boot/efi/EFI/Slackware/elilo.efi cp /boot/vmlinuz-gwh-$VERSION /boot/efi/EFI/Slackware/vmlinuz-gwh if [ -e /boot/intel-ucode.cpio ]; then cp /boot/intel-ucode.cpio /boot/efi/EFI/Slackware/ eval \$(/usr/share/mkinitrd/mkinitrd_command_generator.sh -a '-P /boot/intel-ucode.cpio' -k $VERSION -r -m crc32-pclmul:crc32c-intel:crc32_generic\$(lspci | grep -iq radeon && echo ':amdgpu:radeon')) else eval \$(/usr/share/mkinitrd/mkinitrd_command_generator.sh -k $VERSION -r -m crc32-pclmul:crc32c-intel:crc32_generic\$(lspci | grep -iq radeon && echo ':amdgpu:radeon')) fi cp /boot/initrd.gz /boot/efi/EFI/Slackware/initrd-gwh.gz EOF fi make clean cat < $PKG/install/slack-desc $PRGNAM: $PRGNAM (kernel) $PRGNAM: $PRGNAM: Linux is a clone of the operating system Unix, written from scratch by $PRGNAM: Linus Torvalds with assistance from a loosely-knit team of hackers $PRGNAM: across the Net. It aims towards POSIX and Single UNIX Specification $PRGNAM: compliance. $PRGNAM: $PRGNAM: It has all the features you would expect in a modern fully-fledged Unix $PRGNAM: $PRGNAM: http://www.kernel.org $PRGNAM: EOF cd $PKG rm -f $PKG/{,usr/}lib$(uname -m | grep -o 64)/*.la /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$(echo $VERSION | tr - _)-$ARCH-$BUILD$TAG.txz