diff options
Diffstat (limited to 'PKGBUILD')
-rw-r--r-- | PKGBUILD | 160 |
1 files changed, 104 insertions, 56 deletions
@@ -1,9 +1,6 @@ # Maintainer: Joan Figueras <ffigue at gmail dot com> # Contributor: Torge Matthies <openglfreak at googlemail dot com> -# Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> -# Contributor: Yoshi2889 <rick.2889 at gmail dot com> -# Contributor: Tobias Powalowski <tpowa@archlinux.org> -# Contributor: Thomas Baechler <thomas@archlinux.org> +# Contributor: Jan Alexander Steffens (heftig) <heftig@archlinux.org> ## ## The following variables can be customized at build time. Use env or export to change at your wish @@ -26,17 +23,28 @@ if [ -z ${use_numa+x} ]; then use_numa=y fi -## For performance you can disable FUNCTION_TRACER/GRAPH_TRACER. Limits debugging and analyzing of the kernel. -## Stock Archlinux and Xanmod have this enabled. -## Set variable "use_tracers" to: n to disable (possibly increase performance) -## y to enable (stock default) +## Since upstream disabled CONFIG_STACK_TRACER (limits debugging and analyzing of the kernel) +## you can enable them setting this option. Caution, because they have an impact in performance. +## Stock Archlinux has this enabled. +## Set variable "use_tracers" to: n to disable (possibly increase performance, XanMod default) +## y to enable (Archlinux default) if [ -z ${use_tracers+x} ]; then - use_tracers=y + use_tracers=n fi +# Unique compiler supported upstream is GCC ## Choose between GCC and CLANG config (default is GCC) -if [ -z ${_compiler+x} ]; then - _compiler=gcc +## Use the environment variable "_compiler=clang" +if [ "${_compiler}" = "clang" ]; then + _compiler_flags="CC=clang HOSTCC=clang LLVM=1 LLVM_IAS=1" +fi + +# Choose between the 4 main configs for stable branch. Default x86-64-v1 which use CONFIG_GENERIC_CPU2: +# Possible values: config_x86-64-v1 / config_x86-64-v2 (default) / config_x86-64-v3 / config_x86-64-v4 +# This will be overwritten by selecting any option in microarchitecture script +# Source files: https://github.com/xanmod/linux/tree/5.17/CONFIGS/xanmod/gcc +if [ -z ${_config+x} ]; then + _config=config_x86-64-v2 fi # Compress modules with ZSTD (to save disk space) @@ -57,34 +65,44 @@ if [ -z ${_localmodcfg} ]; then fi # Tweak kernel options prior to a build via nconfig -_makenconfig= +if [ -z ${_makenconfig} ]; then + _makenconfig=n +fi ### IMPORTANT: Do no edit below this line unless you know what you're doing pkgbase=linux-xanmod-anbox -_major=5.14 -pkgver=${_major}.20 -_branch=5.x -xanmod=1 +_major=6.8 +pkgver=${_major}.7 +_branch=6.x +xanmod=2 +_revision= +_sf_branch=main pkgrel=${xanmod} -pkgdesc='Linux Xanmod with ashmem and binder enabled for Anbox - Current Stable (STABLE)' +pkgdesc='Linux Xanmod with ashmem and binder enabled for Anbox - Stable Mainline [MAIN]' url="http://www.xanmod.org/" arch=(x86_64) - license=(GPL2) makedepends=( - bc cpio kmod libelf perl tar xz + bc + cpio + gettext + libelf + pahole + perl + python + tar + xz ) if [ "${_compiler}" = "clang" ]; then - makedepends+=(clang llvm lld python) + makedepends+=(clang llvm lld) fi options=('!strip') _srcname="linux-${pkgver}-xanmod${xanmod}" source=("https://cdn.kernel.org/pub/linux/kernel/v${_branch}/linux-${_major}.tar."{xz,sign} - "https://github.com/xanmod/linux/releases/download/${pkgver}-xanmod${xanmod}/patch-${pkgver}-xanmod${xanmod}.xz" + "patch-${pkgver}-xanmod${xanmod}${_revision}.xz::https://sourceforge.net/projects/xanmod/files/releases/${_sf_branch}/${pkgver}-xanmod${xanmod}/patch-${pkgver}-xanmod${xanmod}.xz/download" choose-gcc-optimization.sh) - #"patch-${pkgver}-xanmod${xanmod}.xz::https://sourceforge.net/projects/xanmod/files/releases/stable/${pkgver}-xanmod${xanmod}/patch-${pkgver}-xanmod${xanmod}.xz/download" validpgpkeys=( 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linux Torvalds '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman @@ -94,14 +112,13 @@ validpgpkeys=( _commit="ec9e9a4219fe221dec93fa16fddbe44a34933d8d" _patches=() for _patch in ${_patches[@]}; do - #source+=("${_patch}::https://git.archlinux.org/svntogit/packages.git/plain/trunk/${_patch}?h=packages/linux&id=${_commit}") source+=("${_patch}::https://raw.githubusercontent.com/archlinux/svntogit-packages/${_commit}/trunk/${_patch}") done -sha256sums=('7e068b5e0d26a62b10e5320b25dce57588cbbc6f781c090442138c9c9c3271b2' +sha256sums=('c969dea4e8bb6be991bbf7c010ba0e0a5643a3a8d8fb0a2aaa053406f1e965f3' 'SKIP' - 'd55cc1215f637d853721adff37f919a4a4f601a61c2fba9c0f5d0c70d3a003bd' - '1ac18cad2578df4a70f9346f7c6fccbb62f042a0ee0594817fdef9f2704904ee') + '098ee234096fcf45451063adb54285da4684d0cba68bdb10e29ad75c6766be16' + 'a8b38eb482eb685944757182c4886404abc12703e5e56ec39c7d61298d17d71f') export KBUILD_BUILD_HOST=${KBUILD_BUILD_HOST:-archlinux} export KBUILD_BUILD_USER=${KBUILD_BUILD_USER:-makepkg} @@ -111,10 +128,9 @@ prepare() { cd linux-${_major} # Apply Xanmod patch - patch -Np1 -i ../patch-${pkgver}-xanmod${xanmod} + patch -Np1 -i ../patch-${pkgver}-xanmod${xanmod}${_revision} msg2 "Setting version..." - scripts/setlocalversion --save-scmversion echo "-$pkgrel" > localversion.10-pkgrel echo "${pkgbase#linux-xanmod-anbox}" > localversion.20-pkgname @@ -129,7 +145,7 @@ prepare() { done # Applying configuration - cp -vf CONFIGS/xanmod/${_compiler}/config .config + cp -vf CONFIGS/xanmod/gcc/${_config} .config # enable LTO_CLANG_THIN if [ "${_compiler}" = "clang" ]; then scripts/config --disable LTO_CLANG_FULL @@ -142,7 +158,6 @@ prepare() { scripts/config --enable CONFIG_ANDROID_BINDERFS scripts/config --set-str CONFIG_ANDROID_BINDER_DEVICES "binder,hwbinder,vndbinder" scripts/config --enable LTO_CLANG_THIN - _LLVM=1 fi # CONFIG_STACK_VALIDATION gives better stack traces. Also is enabled in all official kernel packages by Archlinux team @@ -152,12 +167,17 @@ prepare() { scripts/config --enable CONFIG_IKCONFIG \ --enable CONFIG_IKCONFIG_PROC + # Requested by Alexandre Frade to fix issues in python-gbinder + scripts/config --enable CONFIG_ANDROID_BINDERFS + scripts/config --enable CONFIG_ANDROID_BINDER_IPC + # User set. See at the top of this file - if [ "$use_tracers" = "n" ]; then - msg2 "Disabling FUNCTION_TRACER/GRAPH_TRACER only if we are not compiling with clang..." - if [ "${_compiler}" = "gcc" ]; then - scripts/config --disable CONFIG_FUNCTION_TRACER \ - --disable CONFIG_STACK_TRACER + if [ "$use_tracers" = "y" ]; then + msg2 "Enabling CONFIG_FTRACE only if we are not compiling with clang..." + if [ "${_compiler}" = "gcc" ] || [ "${_compiler}q" = "q" ]; then + scripts/config --enable CONFIG_FTRACE \ + --enable CONFIG_FUNCTION_TRACER \ + --enable CONFIG_STACK_TRACER fi fi @@ -172,7 +192,10 @@ prepare() { fi # Let's user choose microarchitecture optimization in GCC - sh ${srcdir}/choose-gcc-optimization.sh $_microarchitecture + # Use default microarchitecture only if we have not choosen another microarchitecture + if [ "$_microarchitecture" -ne "0" ]; then + ../choose-gcc-optimization.sh $_microarchitecture + fi # This is intended for the people that want to build this package with their own config # Put the file "myconfig" at the package folder (this will take preference) or "${XDG_CONFIG_HOME}/linux-xanmod-anbox/myconfig" @@ -199,19 +222,23 @@ prepare() { if [ "$_localmodcfg" = "y" ]; then if [ -f $HOME/.config/modprobed.db ]; then msg2 "Running Steven Rostedt's make localmodconfig now" - make LLVM=$_LLVM LLVM_IAS=$_LLVM LSMOD=$HOME/.config/modprobed.db localmodconfig + make ${_compiler_flags} LSMOD=$HOME/.config/modprobed.db localmodconfig else msg2 "No modprobed.db data found" exit 1 fi fi - make LLVM=$_LLVM LLVM_IAS=$_LLVM olddefconfig + msg2 "make ${_compiler_flags} olddefconfig" + make ${_compiler_flags} olddefconfig + #diff -u CONFIGS/xanmod/gcc/${_config} .config || : make -s kernelrelease > version msg2 "Prepared %s version %s" "$pkgbase" "$(<version)" - [[ -z "$_makenconfig" ]] || make LLVM=$_LLVM LLVM_IAS=$_LLVM nconfig + if [ "$_makenconfig" = "y" ]; then + make ${_compiler_flags} nconfig + fi # save configuration for later reuse cat .config > "${SRCDEST}/config.last" @@ -219,18 +246,34 @@ prepare() { build() { cd linux-${_major} - make LLVM=$_LLVM LLVM_IAS=$_LLVM all + make ${_compiler_flags} all + make -C tools/bpf/bpftool vmlinux.h feature-clang-bpf-co-re=1 } _package() { pkgdesc="The Linux kernel and modules with Xanmod patches and ashmem and binder enabled" - depends=(coreutils kmod initramfs) - optdepends=('crda: to set the correct wireless channels of your country' - 'linux-firmware: firmware images needed for some devices') + depends=( + coreutils + initramfs + kmod + ) + optdepends=( + 'wireless-regdb: to set the correct wireless channels of your country' + 'linux-firmware: firmware images needed for some devices' + ) + provides=( + KSMBD-MODULE + VIRTUALBOX-GUEST-MODULES + WIREGUARD-MODULE + NTFS3-MODULE + ) + replaces=( + virtualbox-guest-modules-arch + wireguard-arch + ) cd linux-${_major} - local kernver="$(<version)" - local modulesdir="$pkgdir/usr/lib/modules/$kernver" + local modulesdir="$pkgdir/usr/lib/modules/$(<version)" msg2 "Installing boot image..." # systemd expects to find the kernel here to allow hibernation @@ -241,10 +284,11 @@ _package() { echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase" msg2 "Installing modules..." - make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 modules_install + ZSTD_CLEVEL=19 make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 \ + DEPMOD=/doesnt/exist modules_install # Suppress depmod - # remove build and source links - rm "$modulesdir"/{source,build} + # remove build link + rm "$modulesdir"/build } _package-headers() { @@ -256,16 +300,16 @@ _package-headers() { msg2 "Installing build files..." install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map \ - localversion.* version vmlinux + localversion.* version vmlinux tools/bpf/bpftool/vmlinux.h 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 + # required when STACK_VALIDATION is enabled install -Dt "$builddir/tools/objtool" tools/objtool/objtool - # add xfs and shmem for aufs building - mkdir -p "$builddir"/{fs/xfs,mm} + # required when DEBUG_INFO_BTF_MODULES is enabled + install -Dt "$builddir/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids msg2 "Installing headers..." cp -t "$builddir" -a include @@ -275,15 +319,18 @@ _package-headers() { install -Dt "$builddir/drivers/md" -m644 drivers/md/*.h install -Dt "$builddir/net/mac80211" -m644 net/mac80211/*.h - # http://bugs.archlinux.org/task/13146 + # https://bugs.archlinux.org/task/13146 install -Dt "$builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h - # http://bugs.archlinux.org/task/20402 + # https://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 - msg2 "Installing KConfig files..." + # https://bugs.archlinux.org/task/71392 + install -Dt "$builddir/drivers/iio/common/hid-sensors" -m644 drivers/iio/common/hid-sensors/*.h + + echo "Installing KConfig files..." find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \; msg2 "Removing unneeded architectures..." @@ -306,7 +353,7 @@ _package-headers() { msg2 "Stripping build tools..." local file while read -rd '' file; do - case "$(file -bi "$file")" in + case "$(file -Sib "$file")" in application/x-sharedlib\;*) # Libraries (.so) strip -v $STRIP_SHARED "$file" ;; application/x-archive\;*) # Libraries (.a) @@ -320,6 +367,7 @@ _package-headers() { msg2 "Stripping vmlinux..." strip -v $STRIP_STATIC "$builddir/vmlinux" + msg2 "Adding symlink..." mkdir -p "$pkgdir/usr/src" ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase" |