Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Maintainer: Leonidas Spyropoulos <artafinde AT gmail DOT com>
- # Credit to graysky for shamelessly copying PKGBUILD from linux-ck
- ### BUILD OPTIONS
- # Set these variables to ANYTHING that is not null to enable them
- # Tweak kernel options prior to a build via nconfig
- _makenconfig=
- # Compile ONLY used modules to VASTLYreduce the number of modules built
- # and the build time.
- #
- # To keep track of which modules are needed for your specific system/hardware,
- # give module_db script a try: https://aur.archlinux.org/packages/modprobed-db
- # This PKGBUILD read the database kept if it exists
- #
- # More at this wiki page ---> https://wiki.archlinux.org/index.php/Modprobed-db
- _localmodcfg=
- ### IMPORTANT: Do no edit below this line unless you know what you're doing
- pkgbase=linux-gc
- pkgver=5.7
- pkgrel=1
- pkgdesc='Linux'
- url="https://cchalpha.blogspot.co.uk/"
- arch=(x86_64)
- license=(GPL2)
- makedepends=(
- bc kmod libelf
- xmlto python-sphinx python-sphinx_rtd_theme graphviz imagemagick
- git
- )
- options=('!strip')
- _srcname=linux-${pkgver}
- _bmqversion=5.7-r0
- _bmq_patch="bmq_v${_bmqversion}.patch"
- _gcc_more_v='20200527'
- source=(
- "https://www.kernel.org/pub/linux/kernel/v5.x/linux-$pkgver.tar".{xz,sign}
- config # the main kernel config file
- "0000-sphinx-workaround.patch"
- "0001-futex-wait-multiple-5.2.1.patch"
- "${_bmq_patch}::https://gitlab.com/alfredchen/bmq/raw/master/${_bmqversion%-*}/${_bmq_patch}"
- "enable_additional_cpu_optimizations-${_gcc_more_v}.tar.gz::https://github.com/graysky2/kernel_gcc_patch/archive/${_gcc_more_v}.tar.gz"
- "0002-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch::https://github.com/archlinux/linux/commit/16945cf3f9e403f531985ba425118584d27414f1.patch"
- "fix_compile_error_in_psi_c.patch::https://gitlab.com/alfredchen/linux-bmq/-/commit/53c690361e12a1097383c7940471216a2f1b0d03.patch"
- "resync_thermal_cpu_cooling_sched_core.patch::https://gitlab.com/alfredchen/linux-bmq/-/commit/ad9eb862e06f395e846a2f2e084e5b0e7eb9ca4b.patch"
- )
- validpgpkeys=(
- 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds
- '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman
- 'A2FF3A36AAA56654109064AB19802F8B0D70FC30' # Jan Alexander Steffens (heftig)
- )
- sha256sums=('de8163bb62f822d84f7a3983574ec460060bf013a78ff79cd7c979ff1ec1d7e0'
- 'SKIP'
- '9c846fa9498b9e443ddf4e9286f671e3be9fa3a2fc63c8ffd60fd6a69dc4d8a6'
- '345e2e567a1eb681b9ca620cfa905ce4b0edf5b8868b5ebe1015cc6b7a9497a5'
- 'cbb164c3bc0550018924f75713a76abdc51aa2c3d1b37c12414b80ccb4b96662'
- 'd31a3e698eb8da8ea76ac05bf93a2c70f4ace014662e87c62d9fc3c75b7f55fc'
- '8255e6b6e0bdcd66a73d917b56cf2cccdd1c3f4b3621891cfffc203404a5b6dc'
- '10bfc7bbe7f98582e171cb4c0abd800ba6428b3e2cdca4ff4dfbd2070cff69bb'
- 'c954598b9f527b7546abc2b609808042b51ff802f495e30139e4840b61a628fc'
- '0407cd1211d590c90f791fb3544ef391bb102a6a41d91a2608254cb34fd22367')
- _kernelname=${pkgbase#linux}
- : ${_kernelname:=-gc}
- export KBUILD_BUILD_HOST=archlinux
- export KBUILD_BUILD_USER=$pkgbase
- export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
- prepare() {
- cd $_srcname
- echo "Setting version..."
- scripts/setlocalversion --save-scmversion
- echo "-$pkgrel" > localversion.10-pkgrel
- echo "$_kernelname" > localversion.20-pkgname
- local src
- for src in "${source[@]}"; do
- src="${src%%::*}"
- src="${src##*/}"
- [[ $src = 0*.patch ]] || continue
- echo "Applying patch $src..."
- patch -Np1 < "../$src"
- done
- echo "Setting config..."
- cp ../config .config
- echo "Applying patch ${_bmq_patch}..."
- patch -Np1 -i "$srcdir/${_bmq_patch}"
- # Fix compile error in psi.c
- patch -Np1 -i "$srcdir/fix_compile_error_in_psi_c.patch"
- patch -Np1 -i "$srcdir/resync_thermal_cpu_cooling_sched_core.patch"
- # non-interactively apply ck1 default options
- # this isn't redundant if we want a clean selection of subarch below
- make olddefconfig
- # https://github.com/graysky2/kernel_gcc_patch
- echo "Applying enable_additional_cpu_optimizations-${_gcc_more_v}..."
- patch -Np1 -i "$srcdir/kernel_gcc_patch-$_gcc_more_v/enable_additional_cpu_optimizations_for_gcc_v9.1+_kernel_v5.7+.patch"
- make oldconfig
- ### Optionally load needed modules for the make localmodconfig
- # See https://aur.archlinux.org/packages/modprobed-db
- if [ -n "$_localmodcfg" ]; then
- if [ -f $HOME/.config/modprobed.db ]; then
- echo "Running Steven Rostedt's make localmodconfig now"
- make LSMOD=$HOME/.config/modprobed.db localmodconfig
- else
- echo "No modprobed.db data found"
- exit
- fi
- fi
- make -s kernelrelease > version
- echo "Prepared ${pkgbase} version $(<version)"
- [[ -z "$_makenconfig" ]] || make nconfig
- # save configuration for later reuse
- cat .config > "${startdir}/config.last"
- }
- build() {
- cd $_srcname
- make all
- }
- _package() {
- pkgdesc="The $pkgdesc kernel and modules with the BMQ CPU scheduler"
- depends=(coreutils kmod initramfs)
- optdepends=('crda: to set the correct wireless channels of your country'
- 'linux-firmware: firmware images needed for some devices')
- provides=("linux-gc=${pkgver}")
- cd $_srcname
- local kernver="$(<version)"
- local modulesdir="$pkgdir/usr/lib/modules/$kernver"
- echo "Installing boot image..."
- # systemd expects to find the kernel here to allow hibernation
- # https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344
- install -Dm644 "$(make -s image_name)" "$modulesdir/vmlinuz"
- # Used by mkinitcpio to name the kernel
- echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
- echo "Installing modules..."
- make INSTALL_MOD_PATH="$pkgdir/usr" modules_install
- # remove build and source links
- rm "$modulesdir"/{source,build}
- echo "Fixing permissions..."
- chmod -Rc u=rwX,go=rX "$pkgdir"
- }
- _package-headers() {
- pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel"
- depends=('linux-gc')
- provides=("linux-gc-headers=${pkgver}" "linux-headers=${pkgver}")
- cd $_srcname
- local builddir="$pkgdir/usr/lib/modules/$(<version)/build"
- echo "Installing build files..."
- install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map \
- localversion.* version vmlinux
- install -Dt "$builddir/kernel" -m644 kernel/Makefile
- install -Dt "$builddir/arch/x86" -m644 arch/x86/Makefile
- cp -t "$builddir" -a scripts
- # add objtool for external module building and enabled VALIDATION_STACK option
- install -Dt "$builddir/tools/objtool" tools/objtool/objtool
- # add xfs and shmem for aufs building
- mkdir -p "$builddir"/{fs/xfs,mm}
- echo "Installing headers..."
- cp -t "$builddir" -a include
- cp -t "$builddir/arch/x86" -a arch/x86/include
- install -Dt "$builddir/arch/x86/kernel" -m644 arch/x86/kernel/asm-offsets.s
- 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
- echo "Installing KConfig files..."
- find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \;
- echo "Removing unneeded architectures..."
- local arch
- for arch in "$builddir"/arch/*/; do
- [[ $arch = */x86/ ]] && continue
- echo "Removing $(basename "$arch")"
- 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
- echo "Stripping build tools..."
- local file
- while read -rd '' file; do
- case "$(file -bi "$file")" in
- application/x-sharedlib\;*) # Libraries (.so)
- strip -v $STRIP_SHARED "$file" ;;
- application/x-archive\;*) # Libraries (.a)
- strip -v $STRIP_STATIC "$file" ;;
- application/x-executable\;*) # Binaries
- strip -v $STRIP_BINARIES "$file" ;;
- application/x-pie-executable\;*) # Relocatable binaries
- strip -v $STRIP_SHARED "$file" ;;
- esac
- done < <(find "$builddir" -type f -perm -u+x ! -name vmlinux -print0)
- echo "Adding symlink..."
- mkdir -p "$pkgdir/usr/src"
- ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase"
- echo "Fixing permissions..."
- chmod -Rc u=rwX,go=rX "$pkgdir"
- }
- pkgname=("$pkgbase" "$pkgbase-headers")
- for _p in "${pkgname[@]}"; do
- eval "package_$_p() {
- $(declare -f "_package${_p#$pkgbase}")
- _package${_p#$pkgbase}
- }"
- done
- # vim:set ts=8 sts=2 sw=2 et:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement