Compare commits

..

10 commits

Author SHA1 Message Date
abff9518a7 Merge branch 'yarost12-YF-allow-using-extra-uarches-even-with-copied-config-v2' into develop 2025-01-06 18:36:31 +01:00
3dd576acca PKGBUILD: fix and simplify major kernel version check after Jeremy's attempted fix
Ree the double quote is meant to go after the equation sign!
2025-01-06 11:26:03 +02:00
4dea0881c4 PKGBUILD: allow passing the subarch value as the Kconfig name
It'll be easier to maintain for the users instead of using fixed
numbers. The doc was also updated.
2025-01-06 11:26:02 +02:00
d0fecf90fe PKGBUILD: V2: apply extra uarches patch even when defconfig is copied
Otherwise MK8 or MCORE2 is selected which results in a misoptimization.

Also ensure that Processor family choice menu is always brought up
by breaking the config a little bit.

Code formatting pass was applied, CRLF was replaced with LF
2025-01-06 11:20:36 +02:00
795a54ebd2 Revert "PKGBUILD: apply extra uarches patch even when defconfig is copied"
This reverts commit 6da003f220.
2025-01-06 11:19:14 +02:00
2e93191001 PKGBUILD: make the kernel build log less verbose
We don't really need to see every single compiled file,
just print the errors and warnings.

vscode also formatted the entire file to remove trailing spaces.
2025-01-06 11:18:28 +02:00
476799e2f9 Ignore pkg/ folder 2025-01-06 11:17:08 +02:00
ce9c9a0c58
Deprecate build tool 2025-01-06 01:34:54 +01:00
da9d48894a
Add yarost12 as co-maintainer 2025-01-06 01:34:48 +01:00
756a7d02ae
Revert non-optimal code
This revert operation has been coordinated with the package's new co-maintainer yarost12.

This commit reverts the following commits:
0bc05764dc
a50b50bd58
166084968d
ff0209bf6e
e8b74c03b1
5f6ce75201
10f612396a

This commit will revert the repository to it's state in commit 683ce48c96 (tag kernel6.12.6_clr6.12.4-1518_pkg1), with the following commits added:
8e623b5eb2
9b161b9007
2025-01-06 01:26:31 +01:00
4 changed files with 200 additions and 315 deletions

1
.gitignore vendored
View file

@ -1,5 +1,6 @@
cl-linux
src
pkg
*.sign
*.xz
*.gz

3
MAINTAINERS.md Normal file
View file

@ -0,0 +1,3 @@
# Maintainers
- [JeremyStarTM](https://git.staropensource.de/JeremyStarTM) <jeremystartm (at) staropensource (dot) de>
- [yarost12](https://git.staropensource.de/yarost12) <yaro330 (at) gmail (com) com>

494
PKGBUILD
View file

@ -1,129 +1,75 @@
#!/usr/bin/env bash
# shellcheck disable=SC2034 disable=SC2048 disable=SC2086 disable=SC2154
# Maintainer: JeremyStarTM <jeremystartm@staropensource.de>
# Maintainer: Josip Ponjavic <josipponjavic at gmail dot com>
# Contributor: yarost12 <yaro330@gmail.com>
# This PKGBUILD is/was authored by:
# - JeremyStarTM <jeremystartm@staropensource.de>
# - yarost12 <yaro330@gmail.com>
# - Josip Ponjavic <josipponjavic at gmail dot com>
#
# For a list of maintainers see MAINTAINERS.md
### BUILD OPTIONS
# You can modify these settings by
# executing "env _<setting>=<value> makepkg"
# instead of modifying the PKGBUILD file.
#
# Here's an example:
# You can modify these settings by executing "env _<setting>=<value> makepkg"
# instead of modifying the PKGBUILD file. Here's an example:
# env _makemenuconfig=y _copyfinalconfig=y _subarch=30 makepkg
# Tweak kernel options prior to a build
# via menuconfig.
#
# Tweak kernel options prior to a build via menuconfig.
#
# Set to anything but null to activate.
: "${_makemenuconfig:=""}"
# Tweak kernel options prior to a build
# via nconfig.
#
# Tweak kernel options prior to a build via nconfig.
#
# Set to anything but null to activate.
: "${_makenconfig:=""}"
# Tweak kernel options prior to a build
# via xconfig.
#
# Tweak kernel options prior to a build via xconfig.
#
# Set to anything but null to activate.
: "${_makexconfig:=""}"
# Use the current kernel's .config file
#
# Enabling this option will use the
# .config of the currently running kernel
# rather than the Clear Linux defaults.
#
# Useful when the package gets updated and
# you already went through the trouble of
# customizing your config options.
#
# NOT recommended when a new kernel is
# released, but again, convenient for
# package bumps.
#
# Takes effect before '_reuse_file'.
#
# Only takes effect if '_reuse_current'
# or '_reuse_file' is enabled. Keep
# disabled if you want to reuse your
# existing kernel configuration without
# any changes being applied on top.
# Enabling this option will use the .config of the currently
# running kernel rather than the Arch Linux defaults. Useful
# when the package gets updated and you already went through
# the trouble of customizing your config options. NOT recommended
# when a new kernel is released, but again, convenient
# for package bumps.
#
# Set to anything but null to activate.
: "${_reuse_current:=""}"
: "${_use_current:=""}"
# Use the 'kconfig' file placed in the
# directory where this PKGBUILD is in.
#
# Enabling this option will use the
# .config placed next to the PKGBUILD file.
#
# Useful when the package gets updated and
# you already went through the trouble of
# customizing your config options.
#
# NOT recommended when a new kernel is
# released, but again, convenient for
# package bumps.
#
# Takes effect after '_reuse_current'.
#
# Only takes effect if '_reuse_current'
# or '_reuse_file' is enabled. Keep
# disabled if you want to reuse your
# existing kernel configuration without
# any changes being applied on top.
#
# Set to anything but null to activate.
: "${_reuse_file:=""}"
# Apply selected config changes chosen by
# Apply selected optimizations chosen by
# the package maintainers to the config.
#
# Only takes effect if '_reuse_current'
# or '_reuse_file' is enabled. Keep
# disabled if you want to reuse your
# existing kernel configuration without
# any changes being applied on top.
#
# Only takes effect if '_use_current'
# is enabled. Keep disabled if you want
# to reuse your existing kernel configuration
# without any changes being applied to it.
#
# Set to anything but null to activate.
: "${_update_kconfig_on_reuse:=""}"
: "${_optimize_defconfig:=""}"
# Determines whether the final kernel
# configuration shall be copied into
# the package source tree (where this
# very PKGBUILD file lives) before
# compilation starts.
#
# Determines whether the kernel configuration should be
# copied into the source tree before compilation starts.
#
# Set to anything but null to activate.
: "${_copyfinalconfig:=""}"
# Only compile active 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 modprobed-db a try:
# https://aur.archlinux.org/packages/modprobed-db
#
# More at this wiki page:
# https://wiki.archlinux.org/index.php/Modprobed-db
#
# Only compile active 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 modprobed-db a try: https://aur.archlinux.org/packages/modprobed-db
#
# More at this wiki page ---> https://wiki.archlinux.org/index.php/Modprobed-db
# Set to anything but null to activate.
: "${_localmodcfg:=""}"
# Optionally select a sub architecture
# by number or leave blank, which will
# require user interaction during the build.
# Note that the default option is 41.
#
# Requires '_update_kconfig_on_reuse_'
# to be enabled if using an existing
# kernel configuration.
# Optionally select a sub architecture by number or its Kconfig name,
# for example MCORE2 or MZEN4.
# Leaving it blank will require user interaction during the build.
# Note that the default option is empty.
#
# 1. AMD Opteron/Athlon64/Hammer/K8 (MK8)
# 2. AMD Opteron/Athlon64/Hammer/K8 with SSE3 (MK8SSE3)
@ -170,57 +116,33 @@
# 43. AMD-Native optimizations autodetected by the compiler (MNATIVE_AMD)
: "${_subarch:=""}"
# Selects the x86-64 microarchitecture
# to compile for. This value is only
# used by the GENERIC_CPU
# Selects the x86-64 microarchitecture to compile for.
# This value is only used by the GENERIC_CPU
# subarchitecture and is required.
# Can be either '1', '2', '3' or '4'
#
# Set to '1' by default
#
# For more information see:
# https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels
#
# Requires '_update_kconfig_on_reuse_'
# to be enabled if using an existing
# kernel configuration.
#
# Set to '1' by default
: "${_subarch_microarch:="1"}"
# Enables compilation with LLVM
#
# Be warned, this is largely untested
# by me (JeremyStarTM). It *should* work,
# but if it doesn't, write a comment
# and I'll write a fix for it.
#
# Requires '_update_kconfig_on_reuse_'
# to be enabled if using an existing
# kernel configuration.
#
# Enable compilation with LLVM
# Be warned, this is largely untested by me (JeremyStarTM). It *should* work,
# but if it doesn't, write a comment and I'll fix it.
#
# Set to anything but null to activate.
: "${_use_llvm_lto:=""}"
# This allows you to enable or disable
# debug options for THE COMPILED KERNEL.
#
# Leaving the setting empty will leave
# the debug settings up to the kernel
# configuration's settings.
#
# Requires '_update_kconfig_on_reuse_'
# to be enabled if using an existing
# kernel configuration.
#
# Set to 'y' to force enable,
# 'n' to force disable or '' to
# ignore debug options.
: "${_debug_kernel:=""}"
# This allows you to enable
# debug options for THIS SCRIPT.
#
# Debug options
# This allows you to enable or disable debug options.
# Set to 'y' to force enable, 'n' to force disable or '' to ignore debug options.
# Leaving the setting empty will use the kernel configuration setting to determine
# if debug options shall be enabled/disabled.
#
# Set to anything but null to activate.
: "${_debug_script:=""}"
: "${_debug:=""}"
### BUILD OPTIONS END
@ -246,7 +168,7 @@ license=(GPL-2.0-only)
makedepends=("bc" "cpio" "gettext" "git" "libelf" "pahole" "perl" "python" "tar" "xz" "zstd")
[[ -n "${_use_llvm_to}" ]] && makedepends+=("clang" "llvm" "lld")
options=("!strip" "!debug")
[[ "${_debug_kernel}" == "y" ]] && options=("!strip")
[[ "${_debug}" == "y" ]] && options=("!strip")
source=(
"https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-${_kernel_major}.tar.xz"
"https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-${_kernel_major}.tar.sign"
@ -256,43 +178,21 @@ source=(
)
[[ -n "${_use_llvm_lto}" ]] && BUILD_FLAGS=("LLVM=1" "LLVM_IAS=1")
[[ -z "${_debug_script}" ]] && BUILD_FLAGS+=("-s")
export "KBUILD_BUILD_HOST=archlinux"
export "KBUILD_BUILD_USER=${pkgbase}"
export "KBUILD_BUILD_TIMESTAMP=$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
# Debugging
_msg() {
echo -e ":: ${*}"
}
_warn() {
echo -e ":: WARNING: ${*//\\n/\\n }"
}
_error() {
echo -e ":: ERROR: ${*//\\n/\\n }"
}
_debug_msg() {
[ -n "${_debug_script}" ] && echo ":: debug: ${*}" || :
}
_debug_call() {
local function="${1}"
shift
local args="${*}"
_debug_msg "call: ${function}(${args})"
}
# Applies all patches
_apply_patches() {
_debug_call "_apply_patches"
apply_patches() {
# Patch with kernel version patches
patch -Np1 -i ../patch-${_kernel_major}.${_kernel_minor} || :
patch -Np1 -i ../patch-${_kernel_major}.${_kernel_minor} || true
# Set version
echo "-${pkgrel}" > localversion.10-pkgrel
echo "${pkgbase#linux}" > localversion.20-pkgname
# Patch with Clear Linux patches
for i in $(grep '^Patch' "${srcdir}"/cl-linux/linux.spec|grep -Ev '^Patch0132|^Patch0109|^Patch0118|^Patch0113|^Patch0138|^Patch0139|^Patch0147' | sed -n 's/.*: //p'); do
if [ -n "${_use_llvm_lto}" ]; then
@ -300,8 +200,8 @@ _apply_patches() {
continue
fi
fi
patch -Np1 -i "${srcdir}/cl-linux/${i}" || :
patch -Np1 -i "${srcdir}/cl-linux/${i}" || true
done
# Patch with kernel_compiler_patch patches.
@ -310,29 +210,62 @@ _apply_patches() {
patch -Np1 -i "$srcdir/kernel_compiler_patch-$_kernelcompilerpatch/more-ISA-levels-and-uarches-for-kernel-6.1.79+.patch"
}
# Allows user to modify the kernel config
modify_defconfig() {
[[ -n "$_makemenuconfig" ]] && make ${BUILD_FLAGS[*]} menuconfig
[[ -n "$_makexconfig" ]] && make ${BUILD_FLAGS[*]} xconfig
[[ -n "$_makenconfig" ]] && make ${BUILD_FLAGS[*]} nconfig
# Don't crash if all three are false
true
}
# Copies the kernel config
copy_defconfig() {
local _cur_major_ver="$(uname -r | grep -o '[0-9]*[0-9]\.[0-9]*[0-9]')"
[[ "${_cur_major_ver}" != "${_kernel_major}" ]] &&
warning "Major version was updated, you should regen the defconfig"
if [[ -s /proc/config.gz ]]; then
# modprobe configs
zcat /proc/config.gz > ./.config
make ${BUILD_FLAGS[*]} olddefconfig
else
warning "Your kernel was not compiled with IKCONFIG_PROC."
warning "Unable to read kernel configuration, aborting."
exit
fi
}
# Updates the kernel config
_update_config() {
_debug_call "_update_config"
update_defconfig() {
# Copy configuration file (if found)
if [ -f "${startdir}/kconfig" ]; then
echo ":: Using configuration file \"${startdir}/kconfig\""
cp -Tf "${startdir}/kconfig" ./.config
else
echo ":: Using configuration file \"${srcdir}/${pkgbase}/config\""
cp -Tf $srcdir/cl-linux/config ./.config
fi
# Extra configuration
_debug_msg "Updating configuration"
# -> General setup
# General setup
scripts/config --set-str DEFAULT_HOSTNAME archlinux \
-e IKCONFIG \
-e IKCONFIG_PROC \
-u RT_GROUP_SCHED
# -> Power management and ACPI options
# Power management and ACPI options
scripts/config -e ACPI_REV_OVERRIDE_POSSIBLE \
-e ACPI_TABLE_UPGRADE
# -> Virtualization
# Virtualization
scripts/config -e KVM_SMM
# -> General architecture-dependent options
# General architecture-dependent options
scripts/config -e KPROBES
# -> Enable loadable module support
# Enable loadable module support
scripts/config -u MODULE_SIG_FORCE
# -> Networking support
# Networking support
scripts/config -e NETFILTER_INGRESS
# -> Device Drivers
# Device Drivers
scripts/config -e FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER \
-e DELL_SMBIOS_SMM \
-m PATA_JMICRON \
@ -342,9 +275,9 @@ _update_config() {
-M SND_MIXER_OSS SND_PCM_OSS \
-E SND_PCM_OSS SND_PCM_OSS_PLUGINS \
-m AGP -M AGP AGP_INTEL -M AGP_INTEL AGP_VIA
# -> Kernel hacking -> Compile-time checks and compiler options -> Make section mismatch errors non-fatal
# Kernel hacking -> Compile-time checks and compiler options -> Make section mismatch errors non-fatal
scripts/config -e SECTION_MISMATCH_WARN_ONLY
# -> File systems
# File systems
scripts/config -m NTFS3_FS \
-e NTFS3_LZX_XPRESS \
-e NTFS3_FS_POSIX_ACL
@ -352,7 +285,7 @@ _update_config() {
-e SMB_SERVER_SMBDIRECT \
-e SMB_SERVER_CHECK_CAP_NET_ADMIN \
-e SMB_SERVER_KERBEROS5
# -> Security options
# Security options
scripts/config -e SECURITY_SELINUX \
-e SECURITY_SELINUX_BOOTPARAM \
-e SECURITY_SMACK \
@ -362,135 +295,91 @@ _update_config() {
-e SECURITY_TOMOYO \
-e SECURITY_APPARMOR \
-e SECURITY_YAMA
# -> Security options -> Landlock options
# Security options -> Landlock options
scripts/config -e SECURITY_LANDLOCK
# -> Library routines
# Library routines
scripts/config -k -e FONT_TER16x32
# -> Enable LLVM compilation
if [ -n "${_use_llvm_lto}" ]; then
_debug_msg "Enabling LLVM compilation"
scripts/config -d LTO_NONE \
-e LTO \
-e LTO_CLANG \
-e ARCH_SUPPORTS_LTO_CLANG \
-e ARCH_SUPPORTS_LTO_CLANG_THIN \
-e HAS_LTO_CLANG \
-e LTO_CLANG_THIN \
-e HAVE_GCC_PLUGINS
fi
# -> Enable or disable debug settings
case "${_debug_kernel}" in
"y")
_debug_msg "Enabling kernel debugging"
scripts/config -e DEBUG_INFO \
-e DEBUG_INFO_BTF \
-e DEBUG_INFO_DWARF4 \
-e PAHOLE_HAS_SPLIT_BTF \
-e DEBUG_INFO_BTF_MODULES
;;
"n")
_debug_msg "Disabling kernel debugging"
scripts/config -d DEBUG_INFO \
-d DEBUG_INFO_BTF \
-d DEBUG_INFO_DWARF4 \
-d PAHOLE_HAS_SPLIT_BTF \
-d DEBUG_INFO_BTF_MODULES
;;
esac
# Enable LLVM compilation
[[ -n "${_use_llvm_lto}" ]] && scripts/config -d LTO_NONE \
-e LTO \
-e LTO_CLANG \
-e ARCH_SUPPORTS_LTO_CLANG \
-e ARCH_SUPPORTS_LTO_CLANG_THIN \
-e HAS_LTO_CLANG \
-e LTO_CLANG_THIN \
-e HAVE_GCC_PLUGINS
# Enable or disable debug settings
[[ "${_debug}" == "y" ]] && scripts/config -e DEBUG_INFO \
-e DEBUG_INFO_BTF \
-e DEBUG_INFO_DWARF4 \
-e PAHOLE_HAS_SPLIT_BTF \
-e DEBUG_INFO_BTF_MODULES
[[ "${_debug}" == "n" ]] && scripts/config -d DEBUG_INFO \
-d DEBUG_INFO_BTF \
-d DEBUG_INFO_DWARF4 \
-d PAHOLE_HAS_SPLIT_BTF \
-d DEBUG_INFO_BTF_MODULES
# Run olddefconfig
_debug_msg "Running olddefconfig"
make ${BUILD_FLAGS[*]} olddefconfig
# Show diff of default config and updated config
_msg "Showing diff between the default and updated config"
diff -u $srcdir/cl-linux/config .config || :
# Here we slightly break the config by removing one of the
# members of the 'Processor family' selection.
# This causes oldconfig to always invoke that selection.
sed -i '/CONFIG_GENERIC_CPU/d' .config || :
# For a slim chance that someone is building X86_32
sed -i '/CONFIG_M686/d' .config || :
if [ -n "${_subarch}" ]; then
# Set subarch
_debug_msg "Setting subarchitecture"
if [ "${_subarch}" == "41" ]; then
yes "${_subarch}
# check if subarch is a number
if [[ ${_subarch} =~ ^[0-9]+$ ]] && ((_subarch>=1)); then
if [ "${_subarch}" == "41" ]; then
yes "${_subarch}
${_subarch_microarch}" | make ${BUILD_FLAGS[*]} oldconfig
else
yes "${_subarch}" | make ${BUILD_FLAGS[*]} oldconfig
fi
# check that this option is present in the .config
elif [[ $(grep -c "${_subarch}" .config) -eq 1 ]]; then
scripts/config -e "${_subarch}"
make ${BUILD_FLAGS[*]} olddefconfig
else
yes "${_subarch}" | make ${BUILD_FLAGS[*]} oldconfig
warning "Unrecognized subarch value: ${_subarch}"
exit 1
fi
else
# Ask for subarch
_debug_msg "Asking for subarchitecture"
make ${BUILD_FLAGS[*]} oldconfig
fi
}
# Prepares the installation
prepare() {
_debug_call "prepare"
cd "${_src_linux}" || exit 1
# Apply patches
_apply_patches
apply_patches
if [ -n "${_reuse_current}" ]; then
# Use config from running kernel
_msg " Using configuration file from running kernel"
local "_cur_major_ver=$(zcat /proc/config.gz | grep Linux | grep -o '[0-9]*[0-9]\.[0-9]*[0-9]')"
[ "${_cur_major_ver}" != "${_kernel_major}" ] &&
_warn "Your kernel configuration is old, please update your configuration"
if [[ -s /proc/config.gz ]]; then
zcat /proc/config.gz > ./.config
make ${BUILD_FLAGS[*]} olddefconfig
else
_error "Your kernel was not compiled with 'IKCONFIG_PROC'.\nUnable to read kernel configuration, aborting."
exit 1
fi
elif [ -n "${_reuse_file}" ]; then
# Use ./kconfig
if [ -f "${startdir}/kconfig" ]; then
_msg " Using configuration file \"${startdir}/kconfig\""
cp -Tf "${startdir}/kconfig" ./.config
else
_error "Could not find a kernel configuration at '${startdir}/kconfig'.\nUnable to read kernel configuration, aborting."
exit 1
fi
else
# Use builtin
_msg ":: Using configuration file \"${srcdir}/${pkgbase}/config\""
cp -Tf $srcdir/cl-linux/config ./.config
fi
# Update kernel configuration
if [ -z "${_reuse_current}" ] || [[ -n "${_reuse_current}" && -n "${_update_kconfig_on_reuse}" ]]; then
_update_config
fi
[[ -n "${_use_current}" ]] && copy_defconfig
[[ -n "${_optimize_defconfig}" ]] || [[ -z "${_use_current}" ]] && update_defconfig
# Read and apply modprobed database
# See https://aur.archlinux.org/packages/modprobed-db
if [ -n "${_localmodcfg}" ]; then
[[ -n "${_localmodcfg}" ]] &&
if [ -e "${HOME}/.config/modprobed.db" ]; then
make ${BUILD_FLAGS[*]} LSMOD=${HOME}/.config/modprobed.db localmodconfig
else
_warn "No modprobed.db file was found at ${HOME}/.config, skipping"
echo ":: No modprobed.db file was found at ${HOME}/.config, skipping"
fi
fi
# Open configuration editors
[ -n "$_makemenuconfig" ] && make ${BUILD_FLAGS[*]} menuconfig
[ -n "$_makexconfig" ] && make ${BUILD_FLAGS[*]} xconfig
[ -n "$_makenconfig" ] && make ${BUILD_FLAGS[*]} nconfig
modify_defconfig
# Save configuration
# shellcheck disable=SC2015
[ -n "${_copyfinalconfig}" ] && cp -Tf ./.config "${startdir}/kconfig-new" || :
[[ -n "${_copyfinalconfig}" ]] && cp -Tf ./.config "${startdir}/kconfig-new" || true
# Write kernel version
make -s kernelrelease > version
@ -498,83 +387,78 @@ prepare() {
# Build kernel
build() {
_debug_call "build"
cd "${_src_linux}" || exit 1
make ${BUILD_FLAGS[*]} all
}
# Packages the kernel package
_package() {
_debug_call "_package"
pkgdesc="${pkgdesc} This package includes the kernel and compiled modules."
depends=("coreutils" "kmod" "initramfs")
optdepends=("wireless-regdb: to set the correct wireless channels of your country"
"linux-firmware: firmware images needed for some devices")
provides=(VIRTUALBOX-GUEST-MODULES WIREGUARD-MODULE KSMBD-MODULE)
install=linux.install
cd "${_src_linux}" || exit 1
local "modulesdir=${pkgdir}/usr/lib/modules/$(<version)"
# Create boot image
# systemd expects to find the kernel there 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"
# Install modules
ZSTD_CLEVEL=19 make ${BUILD_FLAGS[*]} INSTALL_MOD_PATH="${pkgdir}/usr" INSTALL_MOD_STRIP=1 \
DEPMOD=/doesnt/exist modules_install # Suppress depmod
# Remove build directory
rm "${modulesdir}"/build
}
# Packages the headers package
_package-headers() {
_debug_call "_package-headers"
pkgdesc="${pkgdesc} This package includes header files and scripts for building kernel modules."
depends=("pahole")
cd "${_src_linux}" || exit 1
local "builddir=${pkgdir}/usr/lib/modules/$(<version)/build"
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
# Required when STACK_VALIDATION is enabled
install -Dt "${builddir}/tools/objtool" tools/objtool/objtool
# Required when DEBUG_INFO_BTF_MODULES is enabled
[[ -f tools/bpf/resolve_btfids/resolve_btfids ]] && install -Dt "${builddir}/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids
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
# https://bugs.archlinux.org/task/13146
install -Dt "${builddir}/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
# 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
# https://bugs.archlinux.org/task/71392
install -Dt "${builddir}/drivers/iio/common/hid-sensors" -m644 drivers/iio/common/hid-sensors/*.h
find . -name 'Kconfig*' -exec install -Dm644 {} "${builddir}/{}" \;
# Remove redundant architectures
local arch
for arch in "${builddir}"/arch/*/; do
@ -582,16 +466,16 @@ _package-headers() {
echo "Removing $(basename "${arch}")"
rm -r "${arch}"
done
# Remove documentation
rm -r "${builddir}/Documentation"
# Remove broken symlinks
find -L "${builddir}" -type l -printf "Removing %P\n" -delete
# Remove loose objects
find "${builddir}" -type f -name '*.o' -printf "Removing %P\n" -delete
# Strip build tools
local file
while read -rd "" file; do
@ -606,10 +490,10 @@ _package-headers() {
strip -v $STRIP_SHARED "$file" ;;
esac
done < <(find "${builddir}" -type f -perm -u+x ! -name vmlinux -print0)
# Strip vmlinux
strip -v $STRIP_STATIC "${builddir}/vmlinux"
# Add symlink to build directory
mkdir -p "$pkgdir/usr/src"
ln -sr "${builddir}" "$pkgdir/usr/src/$pkgbase"

View file

@ -14,19 +14,16 @@ The PKGBUILD file supports customization via environment variables. Here's a lis
- `_makemenuconfig`: Invokes `make menuconfig` (ncurses-based default configuration menu) before compilation starts
- `_makenconfig`: Invokes `make nconfig` (ncurses-based nicer configuration menu) before compilation starts
- `_makexconfig`: Invokes `make xconfig` (X11-based GUI configuration menu) before compilation starts
- `_reuse_current`: Will use the configuration of the running kernel, if the running kernel is compiled with `IKCONFIG_PROC`
- `_reuse_file`: Will use the configuration file named `kconfig` contained in the `PKGBUILD` file's directory
- `_update_kconfig_on_reuse`: Specifies whether the kernel configuration shall be updated when using any of the '_reuse_*' flags
- `_use_current`: Will use the configuration of the running kernel, if the running kernel is compiled with `IKCONFIG_PROC`
- `_optimize_defconfig`: Applies package maintainer-picked configuration changes to your defconfig. Only takes effect with `_use_current` being enabled
- `_copyfinalconfig`: Copies the final kernel configuration into the repository root as `kconfig-new` before compilation starts
- `_localmodcfg`: Only compiles modules found in modprobed-db's database (which decreases compilation time and kernel size)
- `_use_llvm_lto`: Compiles the kernel with LLVM instead of GCC. Should work, if not open an issue
- `_subarch`: Specifies the subarchitecture to compile for (see the [`PKGBUILD` file](https://git.staropensource.de/JeremyStarTM/aur-linux-clear/src/branch/develop/PKGBUILD) for a list of all subarches). Default is `41` (Generic x86-64), which is compatible with all amd64 processors. Must be a number
- `_use_llvm_lto`: Enables compilation with LLVM. Untested but should work. If not write a comment on the AUR.
- `_subarch`: Specifies the subarchitecture to compile for (see the [PKGBUILD file](https://git.staropensource.de/JeremyStarTM/aur-linux-clear/src/branch/develop/PKGBUILD) for a list of all subarches). Default is `41` (Generic x86-64), which is compatible with all amd64 processors. Must be a number
- `_subarch_microarch`: Specifies the microarchitecture to compile for. Only applies to and is required by the `GENERIC_CPU` subarch. Must be a number between `1` and `4` ([click for more information](https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels))
- `_debug_kernel`: Force enables kernel debugging options when set to `y`, force disables debug options when set to `n` or relies on the kconfig when unset
- `_debug_script`: Enables debugging for the `PKGBUILD` file
- `_debug`: Force enables debug options when set to `y`, force disables debug options when set to `n` or uses the config defaults when unset
All of these variables just need to be set for them to apply, except for `_subarch`, `_subarch_microarch` and `_debug_kernel`. **For more information please check their documentation inside the `PKGBUILD` file**
All of these variables just need to be set for them to apply, except for `_subarch` and `_debug`. See their descriptions for more information.
## GPG errors
If makepkg complains about invalid PGP keys, try running this command:
@ -48,7 +45,7 @@ Please only submit PRs to the `develop` branch. Pull requests to the `master` br
## License
The linux-clear package is licensed under the BSD Zero-Clause License.
I ([JeremyStarTM](https://git.staropensource.de/JeremyStarTM)) negotiated it with [metak](https://aur.archlinux.org/account/metak) (the previous maintainer) and [yarost12](https://git.staropensource.de/yarost12) (contributor and soon co-maintainer).
I ([JeremyStarTM](https://git.staropensource.de/JeremyStarTM)) negotiated it with [metak](https://aur.archlinux.org/account/metak) (the previous maintainer) and [yarost12](https://git.staropensource.de/yarost12) (co-maintainer).
## Build tool
*If you want a dead simple way to compile this package, you can [try out my build tool](https://git.staropensource.de/JeremyStarTM/jstm-optimized). It includes a few no nonsense changes to the kernel configuration and allows you to configure the PKGBUILD in a simple manner to decrease build time. If you don't want that, using `makepkg` as-is works fine too.*
~~*If you want a dead simple way to compile this package, you can [try out my build tool](https://git.staropensource.de/JeremyStarTM/jstm-optimized). It includes a few no nonsense changes to the kernel configuration and allows you to configure the PKGBUILD in a simple manner to decrease build time. If you don't want that, using `makepkg` as-is works fine too.*~~ Deprecated until rewrite.