Package Details: linux-xanmod 6.9.3-1

Git Clone URL: https://aur.archlinux.org/linux-xanmod.git (read-only, click to copy)
Package Base: linux-xanmod
Description: The Linux kernel and modules with Xanmod patches
Upstream URL: http://www.xanmod.org/
Licenses: GPL2
Provides: KSMBD-MODULE, NTFS3-MODULE, VIRTUALBOX-GUEST-MODULES, WIREGUARD-MODULE
Replaces: virtualbox-guest-modules-arch, wireguard-arch
Submitter: Yoshi2889
Maintainer: figue (figuepluto, jfigueras)
Last Packager: figue
Votes: 127
Popularity: 0.71
First Submitted: 2017-02-14 09:40 (UTC)
Last Updated: 2024-05-31 18:27 (UTC)

Dependencies (14)

Required by (5)

Sources (4)

Pinned Comments

figue commented on 2018-12-14 00:50 (UTC) (edited on 2023-02-27 20:00 (UTC) by figue)

This package have several variables to enable/disable features.

##
## The following variables can be customized at build time. Use env or export to change at your wish
##
##   Example: env _microarchitecture=98 use_numa=n use_tracers=n makepkg -sc
##
## Look inside 'choose-gcc-optimization.sh' to choose your microarchitecture
## Valid numbers between: 0 to 99
## Default is: 0 => generic
## Good option if your package is for one machine: 98 (Intel native) or 99 (AMD native)
if [ -z ${_microarchitecture+x} ]; then
  _microarchitecture=0
fi

## Disable NUMA since most users do not have multiple processors. Breaks CUDA/NvEnc.
## Archlinux and Xanmod enable it by default.
## Set variable "use_numa" to: n to disable (possibly increase performance)
##                             y to enable  (stock default)
if [ -z ${use_numa+x} ]; then
  use_numa=y
fi

## 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=n
fi

# Unique compiler supported upstream is GCC
## Choose between GCC and CLANG config (default is 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 (default) / config_x86-64-v2 / 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-v1
fi

# Compress modules with ZSTD (to save disk space)
if [ -z ${_compress_modules+x} ]; then
  _compress_modules=n
fi

# Compile ONLY used modules to VASTLY reduce 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
if [ -z ${_localmodcfg} ]; then
  _localmodcfg=n
fi

# Tweak kernel options prior to a build via nconfig
if [ -z ${_makenconfig} ]; then
  _makenconfig=n
fi

Personally I'm running now xanmod kernel compiled with this:

env _microarchitecture=98 use_tracers=n use_numa=n _localmodcfg=y _compress_modules=y makepkg -sic

Also, you can now create the file myconfig in your local repo to build this package with a custom config or use ${XDG_CONFIG_HOME}/linux-xanmod/myconfig. This file can be a full kernel config or be a script with several entries to add/remove options (you have several examples in PKGBUILD by using scripts/config):

Code involved:

  for _myconfig in "${SRCDEST}/myconfig" "${HOME}/.config/linux-xanmod/myconfig" "${XDG_CONFIG_HOME}/linux-xanmod/myconfig" ; do
    if [ -f "${_myconfig}" ] && [ "$(wc -l <"${_myconfig}")" -gt "0" ]; then
      if grep -q 'scripts/config' "${_myconfig}"; then
        # myconfig is a partial file. Executing as a script
        msg2 "Applying myconfig..."
        bash -x "${_myconfig}"
      else
        # myconfig is a full config file. Replacing default .config
        msg2 "Using user CUSTOM config..."
        cp -f "${_myconfig}" .config
      fi
      echo
      break
    fi
  done

Latest Comments

« First ‹ Previous 1 .. 36 37 38 39 40 41 42 43 44 45 46 .. 51 Next › Last »

kotasha commented on 2020-03-06 13:19 (UTC)

Looks nice in my opinion. Could you implement this please?

figue commented on 2020-03-06 11:43 (UTC) (edited on 2020-03-06 11:45 (UTC) by figue)

@kotasha yes I can... But I'm thinking... if these variables are not usually set in global environment, maybe it's a bit hacky, but I can set only inside PKGBUILD if they are not declared before, so we can use the bash default value for variables in this way:

export KBUILD_BUILD_HOST=${KBUILD_BUILD_HOST:-archlinux}
export KBUILD_BUILD_USER=${KBUILD_BUILD_USER:-makepkg}
export KBUILD_BUILD_TIMESTAMP=${KBUILD_BUILD_TIMESTAMP:-$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})}

With this method, if you invoke makepkg with your env variables they will be set to your values automatically, for instance:

~ $ cat /tmp/test-default-values
export KBUILD_BUILD_HOST=${KBUILD_BUILD_HOST:-archlinux}
export KBUILD_BUILD_USER=${KBUILD_BUILD_USER:-makepkg}
export KBUILD_BUILD_TIMESTAMP=${KBUILD_BUILD_TIMESTAMP:-$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})}

echo "$KBUILD_BUILD_HOST $KBUILD_BUILD_USER $KBUILD_BUILD_TIMESTAMP"
~ $ env KBUILD_BUILD_HOST=myhost KBUILD_BUILD_USER=$USER /tmp/test-default-values
myhost figue Fri, 06 Mar 2020 11:42:39 +0000
~ $ /tmp/test-default-values
archlinux makepkg Fri, 06 Mar 2020 11:42:49 +0000

Has this any sense?

figue commented on 2020-03-06 11:40 (UTC)

@theimmortal ZEN2 added (and some others too). Thanks!

kotasha commented on 2020-03-06 08:24 (UTC)

Is it possible to provide custom environmental variables for KBUILD_BUILD_HOST, KBUILD_BUILD_USER and KBUILD_BUILD_TIMESTAMP like use_pds and etc to speedup compilation via ccache?

theimmortal commented on 2020-03-05 19:21 (UTC)

Any chance the AMD Family 17h (Zen2) can be added as an option to your choose-gcc-optimization.sh script? I have been adding a nconfig step in the PKGBUILD to set the Processor Family manually, but it would be great to make this more automated.

figue commented on 2020-02-01 19:58 (UTC)

@eatsfoobars no... just inheritances from the past. Fixed. Thanks!

eatsfoobars commented on 2020-02-01 19:24 (UTC)

Is there a reason this package requires mkinitcpio specifically, rather than initramfs (like e.g. https://aur.archlinux.org/packages/linux-ck does)?

figue commented on 2020-01-25 17:45 (UTC)

@ax34

figue@pluto ~/packages-figue/linux-xanmod% git pull
Already up to date.

figue@pluto ~/packages-figue/linux-xanmod% git show --summary                                                            
commit 1c7c5f2be8935d93b11935477cf52cb9bfacc2d1 (HEAD -> master, origin/master, origin/HEAD)
Author: Joan Figueras <ffigue@gmail.com>
Date:   Fri Jan 24 21:46:59 2020 +0100

    Fix sum

figue@pluto ~/packages-figue/linux-xanmod% rm 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-CLONE_NEWUSER.patch

figue@pluto ~/packages-figue/linux-xanmod% makepkg --verifysource -f                                                     
==> Making package: linux-xanmod 5.4.14-1 (Sat Jan 25 18:44:29 2020)
==> Retrieving sources...
  -> Found 5.4.14-xanmod8.tar.gz
  -> Found choose-gcc-optimization.sh
  -> Downloading 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-CLONE_NEWUSER.patch...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  3789  100  3789    0     0  23981      0 --:--:-- --:--:-- --:--:-- 24133
==> Validating source files with sha256sums...
    5.4.14-xanmod8.tar.gz ... Passed
    choose-gcc-optimization.sh ... Passed
    0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-CLONE_NEWUSER.patch ... Passed