Package Base Details: linux-xanmod

Git Clone URL: https://aur.archlinux.org/linux-xanmod.git (read-only, click to copy)
Submitter: Yoshi2889
Maintainer: figue (figuepluto, jfigueras)
Last Packager: figue
Votes: 127
Popularity: 1.27
First Submitted: 2017-02-14 09:40 (UTC)
Last Updated: 2024-05-04 08:02 (UTC)

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 .. 40 41 42 43 44 45 46 47 48 49 50 51 Next › Last »

frpenguin commented on 2019-08-11 15:42 (UTC) (edited on 2019-08-11 16:02 (UTC) by frpenguin)

Has anybody seen this:

CC [M]  drivers/staging/rtl8723bs/os_dep/osdep_service.o
CC [M]  drivers/staging/rtl8723bs/os_dep/os_intfs.o
CC [M]  drivers/staging/rtl8723bs/os_dep/recv_linux.o
CC [M]  drivers/staging/rtl8723bs/os_dep/rtw_proc.o
CC [M]  drivers/staging/rtl8723bs/os_dep/sdio_intf.o
CC [M]  drivers/staging/rtl8723bs/os_dep/sdio_ops_linux.o
CC [M]  drivers/staging/rtl8723bs/os_dep/wifi_regd.o
CC [M]  drivers/staging/rtl8723bs/os_dep/xmit_linux.o
LD [M]  drivers/staging/rtl8723bs/r8723bs.o
AR      drivers/staging/built-in.a
AR      drivers/built-in.a
==> ERROR: A failure occurred in build().
    Aborting...

figue commented on 2018-12-15 00:12 (UTC) (edited on 2018-12-15 00:15 (UTC) by figue)

@Markospox thanks for the tips. Adopted almost all (I think myconfig it's enough). Check fixed comment again.

Apologies for making so many changes in such a short time.

Markospox commented on 2018-12-14 22:15 (UTC)

I'd myself change _numa to use_numa, _tracers to use_tracers, _pds to use_pds and myconfig to custom_config or mycustomconfig. It's also good to change in PKGBUILD teorically to theoretically or to possibly as well as "people that wants" to "people that want". Can you tell, are these CONFIG_FUNCTION_TRACER & CONFIG_FUNCTION_GRAPH_TRACER useful just for doing kernel debugging or are they necessary if I wish to develop software and debug my code too? I think it'd awesome if there was use_production_config parameter which would allow you to choose if you want a kernel that's aimed at most of users in which case kernel debugging would be turned off (1) or for kernel debugging/development (0). I would be also using more modern ifs (if [[ ... ]]). Do you know anything more about this PDS-mq, I don't know much about it and I'm a bit stopped by "currently incompatible" comment?

Besides, I don't know why it's not building for me, gotta check one more time

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

figue commented on 2018-12-13 21:06 (UTC)

@Markospox you can change oldefconfig to remove default settings and use menuconfig if it's what you want.

I'm testing a new build process, removing Arch config but adding an option for users that want a custom config. It's simple, but should work... The idea is to replace .config with a file called myconfig on the package folder. People that build this package without this file would compile with xanmod default (as usual). If anyone wants a different config this should be enough. Thoughts?

  # This is intended for the people that wants to build this package with their own config
  # Put the file "myconfig" at the package folder to use this feature
  if [ -f "../myconfig" ]; then
    msg2 "Using user CUSTOM config..."
    cp ../myconfig .config
  fi

Also, thanks to some ideas shared by private by openglfreak, I would add an option to disable NUMA and also disable FUNCTION_TRACER/GRAPH_TRACER.

Markospox commented on 2018-12-13 15:35 (UTC)

What should be done if I wish to adjust configuration before building the package? Would replacing make olddefconfig with make menuconfig in PKGBUILD be fine, there's no #info anymore? What's next, makepkg? Or maybe makepkg -> fail, makepkg -e?

Markospox commented on 2018-12-13 13:26 (UTC)

I have: rm: cannot remove '/home/mkl/Downloads/linux-xanmod-419/pkg/linux-xanmod-4.19.6/usr/lib/modules//source': No such file or directory after DEPMOD 4.19.6-xanmod4-1-xanmod-4.19.6MANJARO can you tell why is this?

kyle_dolichev commented on 2018-12-13 01:00 (UTC) (edited on 2018-12-13 01:01 (UTC) by kyle_dolichev)

ld: arch/x86/kernel/cpu/bugs.o:(__jump_table+0x28): undefined reference to `sched_smt_present'
ld: arch/x86/kernel/cpu/bugs.o:(__jump_table+0x40): undefined reference to `sched_smt_present'
ld: arch/x86/kernel/cpu/bugs.o:(__jump_table+0x58): undefined reference to `sched_smt_present'
ld: arch/x86/kernel/cpu/bugs.o:(__jump_table+0x70): undefined reference to `sched_smt_present'

those are the errors in case you're curious. And, can you please leave in an option so that we can have a config file we can adjust? thanks

figue commented on 2018-12-12 23:22 (UTC)

@kyle_dolichev I'll probably drop arch configuration. I think it doesn't have any sense.