Compare commits

...

27 commits

Author SHA1 Message Date
8e623b5eb2
Add branches section 2024-12-23 01:00:08 +01:00
0bc05764dc
Fix compilation issue
See https://aur.archlinux.org/pkgbase/linux-clear#comment-1003116
2024-12-23 00:50:18 +01:00
a50b50bd58
Add another variable 2024-12-22 19:20:39 +01:00
166084968d
Fix mention 2024-12-22 19:19:55 +01:00
ff0209bf6e
Update PKGBUILD configuration section 2024-12-22 19:18:23 +01:00
e8b74c03b1
Add check for '_reuse_file' 2024-12-22 19:11:54 +01:00
5f6ce75201
Make logging work with newlines, add _error func 2024-12-22 19:11:36 +01:00
10f612396a
Make a bunch of changes
This commit:
- inlines some functions
- adds PKGBUILD debugging support
- renames of functions to avoid makepkg function collisions
- renames of configuration variables
- a smol logging facility
- changes some if statements
- fixes of some bugs
- makes the code a bit smaller
2024-12-22 18:59:35 +01:00
683ce48c96
6.12.6-1 (clr 6.12.4-1518) 2024-12-22 08:39:32 +01:00
6da003f220 PKGBUILD: apply extra uarches patch even when defconfig is copied
Otherwise some default value is set which will result in a misoptimization.
2024-12-12 00:34:11 +02:00
bfacea4fa1
6.12.4-1 (clr 6.12.4-1518) 2024-12-11 19:54:22 +01:00
d9caba7166
Update upgrade script 2024-12-05 15:12:22 +01:00
d156a5c849
Format 'GENERIC_CPU' mention as code 2024-12-05 15:05:16 +01:00
4c73a14ca9
6.12.1-3 (clr 6.12.1-1493) add _subarch_microarch option 2024-12-05 15:01:24 +01:00
c90341bfae
6.12.1-2 (clr 6.12.1-1493) 2024-12-04 19:32:08 +01:00
406586d172
Add '_optimize_defconfig' envvar to README 2024-12-04 19:27:55 +01:00
8054550b9f
Correct and add information to setting comment 2024-12-04 19:21:53 +01:00
5139ded653 Introduce a new flag to force reapply linux-clear defconfig mods 2024-12-03 21:42:50 +02:00
19b52c1f63 Allow modifying current defconfig
Allow copying the current config and modifying it by running:
_use_current=y _makenconfig=y (or other config modifier).
2024-12-02 15:49:22 +02:00
3e8a8ad38a
6.12.1-1 (clr 6.12.1-1493) 2024-12-01 14:14:19 +01:00
f2aac1064c
6.11.10-1 (clr 6.11.6-1477) 2024-11-23 14:57:47 +01:00
0ce919c973
6.11.9-1 (clr 6.11.6-1477) 2024-11-19 02:09:51 +01:00
28802bcd0b
Fix various things shellcheck complained about 2024-11-19 02:05:58 +01:00
6fd2cc8bf5
Add yarost12 as contributor 2024-11-19 02:05:37 +01:00
200949718f
Add comments + rename create_defconfig method 2024-11-19 01:52:26 +01:00
0d4fdeb204 Warn the user if the major version was upgraded when _use_current is set
It might be a good idea to regen the defconfig
if the major version was updated
2024-11-19 02:18:24 +02:00
7e8818327b Separate defconfig creation from re-use logic
At the moment when _use_current=y is passed to the package
compilation - the script still re-creates the defconfig which can
cause errors and cause the menuconfig to show up outta nowhere.

Fix this by bypassing the logic completely, I think that
anyone using the _use_current=y knows what they're doing
so we should be fine.
2024-11-19 02:00:33 +02:00
4 changed files with 406 additions and 196 deletions

View file

@ -1,6 +1,6 @@
pkgbase = linux-clear pkgbase = linux-clear
pkgdesc = Linux kernel with patches from Clear Linux which allow for higher performance. pkgdesc = Linux kernel with patches from Clear Linux which allow for higher performance.
pkgver = 6.11.7 pkgver = 6.12.6
pkgrel = 1 pkgrel = 1
url = https://git.staropensource.de/JeremyStarTM/aur-linux-clear url = https://git.staropensource.de/JeremyStarTM/aur-linux-clear
arch = x86_64 arch = x86_64
@ -18,18 +18,18 @@ pkgbase = linux-clear
makedepends = zstd makedepends = zstd
options = !strip options = !strip
options = !debug options = !debug
source = https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.11.tar.xz source = https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.12.tar.xz
source = https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.11.tar.sign source = https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.12.tar.sign
source = https://cdn.kernel.org/pub/linux/kernel/v6.x/patch-6.11.7.xz source = https://cdn.kernel.org/pub/linux/kernel/v6.x/patch-6.12.6.xz
source = cl-linux::git+https://github.com/clearlinux-pkgs/linux.git#tag=6.11.6-1477 source = cl-linux::git+https://github.com/clearlinux-pkgs/linux.git#tag=6.12.4-1518
source = more-uarches-20241018.tar.gz::https://github.com/graysky2/kernel_compiler_patch/archive/20241018.tar.gz source = more-uarches-20241018.tar.gz::https://github.com/graysky2/kernel_compiler_patch/archive/20241018.tar.gz
validpgpkeys = ABAF11C65A2970B130ABE3C479BE3E4300411886 validpgpkeys = ABAF11C65A2970B130ABE3C479BE3E4300411886
validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E
validpgpkeys = E27E5D8A3403A2EF66873BBCDEA66FF797772CDC validpgpkeys = E27E5D8A3403A2EF66873BBCDEA66FF797772CDC
validpgpkeys = AC2B29BD34A6AFDDB3F68F35E7BFC8EC95861109 validpgpkeys = AC2B29BD34A6AFDDB3F68F35E7BFC8EC95861109
sha256sums = 55d2c6c025ebc27810c748d66325dd5bc601e8d32f8581d9e77673529bdacb2e sha256sums = b1a2562be56e42afb3f8489d4c2a7ac472ac23098f1ef1c1e40da601f54625eb
sha256sums = SKIP sha256sums = SKIP
sha256sums = 4ccabe59805d7efd8165405624695255a87811cbea5c0e1d7a3981c21789b2ec sha256sums = dd7c856f12d3e10f09743c1d3db35f91879d92890c9fb176405783c9c7cb0c54
sha256sums = SKIP sha256sums = SKIP
sha256sums = b3fd8b1c5bbd39a577afcccf6f1119fdf83f6d72119f4c0811801bdd51d1bc61 sha256sums = b3fd8b1c5bbd39a577afcccf6f1119fdf83f6d72119f4c0811801bdd51d1bc61

402
PKGBUILD
View file

@ -1,57 +1,130 @@
#!/usr/bin/env bash
# shellcheck disable=SC2034 disable=SC2048 disable=SC2086 disable=SC2154
# Maintainer: JeremyStarTM <jeremystartm@staropensource.de> # Maintainer: JeremyStarTM <jeremystartm@staropensource.de>
# Maintainer: Josip Ponjavic <josipponjavic at gmail dot com> # Maintainer: Josip Ponjavic <josipponjavic at gmail dot com>
# Contributor: yarost12 <yaro330@gmail.com>
### BUILD OPTIONS ### BUILD OPTIONS
# You can modify these settings by executing "env _<setting>=<value> makepkg" # You can modify these settings by
# instead of modifying the PKGBUILD file. Here's an example: # executing "env _<setting>=<value> makepkg"
# instead of modifying the PKGBUILD file.
#
# Here's an example:
# env _makemenuconfig=y _copyfinalconfig=y _subarch=30 makepkg # 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. # Set to anything but null to activate.
: "${_makemenuconfig:=""}" : "${_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. # Set to anything but null to activate.
: "${_makenconfig:=""}" : "${_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. # Set to anything but null to activate.
: "${_makexconfig:=""}" : "${_makexconfig:=""}"
# Use the current kernel's .config file # Use the current kernel's .config file
# Enabling this option will use the .config of the currently #
# running kernel rather than the Arch Linux defaults. Useful # Enabling this option will use the
# when the package gets updated and you already went through # .config of the currently running kernel
# the trouble of customizing your config options. NOT recommended # rather than the Clear Linux defaults.
# when a new kernel is released, but again, convenient #
# for package bumps. # 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.
# #
# Set to anything but null to activate. # Set to anything but null to activate.
: "${_use_current:=""}" : "${_reuse_current:=""}"
# Determines whether the kernel configuration should be # Use the 'kconfig' file placed in the
# copied into the source tree before compilation starts. # 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
# 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.
#
# Set to anything but null to activate.
: "${_update_kconfig_on_reuse:=""}"
# Determines whether the final kernel
# configuration shall be copied into
# the package source tree (where this
# very PKGBUILD file lives) before
# compilation starts.
# #
# Set to anything but null to activate. # Set to anything but null to activate.
: "${_copyfinalconfig:=""}" : "${_copyfinalconfig:=""}"
# Only compile active modules to VASTLY reduce the number # Only compile active modules to VASTLY
# of modules built and the build time. # reduce the number of modules built
# and the build time.
# #
# To keep track of which modules are needed for your specific system/hardware, # To keep track of which modules are
# give modprobed-db a try: https://aur.archlinux.org/packages/modprobed-db # 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
# #
# More at this wiki page ---> https://wiki.archlinux.org/index.php/Modprobed-db
# Set to anything but null to activate. # Set to anything but null to activate.
: "${_localmodcfg:=""}" : "${_localmodcfg:=""}"
# Optionally select a sub architecture by number or # Optionally select a sub architecture
# leave blank, which will require user interaction during the build. # by number or leave blank, which will
# require user interaction during the build.
# Note that the default option is 41. # Note that the default option is 41.
# #
# Requires '_update_kconfig_on_reuse_'
# to be enabled if using an existing
# kernel configuration.
#
# 1. AMD Opteron/Athlon64/Hammer/K8 (MK8) # 1. AMD Opteron/Athlon64/Hammer/K8 (MK8)
# 2. AMD Opteron/Athlon64/Hammer/K8 with SSE3 (MK8SSE3) # 2. AMD Opteron/Athlon64/Hammer/K8 with SSE3 (MK8SSE3)
# 3. AMD 61xx/7x50/PhenomX3/X4/II/K10 (MK10) # 3. AMD 61xx/7x50/PhenomX3/X4/II/K10 (MK10)
@ -97,29 +170,65 @@
# 43. AMD-Native optimizations autodetected by the compiler (MNATIVE_AMD) # 43. AMD-Native optimizations autodetected by the compiler (MNATIVE_AMD)
: "${_subarch:=""}" : "${_subarch:=""}"
# Enable compilation with LLVM # Selects the x86-64 microarchitecture
# Be warned, this is largely untested by me (JeremyStarTM). It *should* work, # to compile for. This value is only
# but if it doesn't, write a comment and I'll fix it. # used by the GENERIC_CPU
# subarchitecture and is required.
# Can be either '1', '2', '3' or '4'
#
# 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.
# #
# Set to anything but null to activate. # Set to anything but null to activate.
: "${_use_llvm_lto:=""}" : "${_use_llvm_lto:=""}"
# Debug options # This allows you to enable or disable
# This allows you to enable or disable debug options. # debug options for THE COMPILED KERNEL.
# 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 # Leaving the setting empty will leave
# if debug options shall be enabled/disabled. # 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.
# #
# Set to anything but null to activate. # Set to anything but null to activate.
: "${_debug:=""}" : "${_debug_script:=""}"
### BUILD OPTIONS END ### BUILD OPTIONS END
# Kernel version # Kernel version
_kernel_major=6.11 _kernel_major=6.12
_kernel_minor=7 _kernel_minor=6
# Clear Linux patches version # Clear Linux patches version
_clr=6-1477 _clr=4-1518
# kernel_compiler_patch version # kernel_compiler_patch version
_kernelcompilerpatch="20241018" _kernelcompilerpatch="20241018"
# Source directory names # Source directory names
@ -137,7 +246,7 @@ license=(GPL-2.0-only)
makedepends=("bc" "cpio" "gettext" "git" "libelf" "pahole" "perl" "python" "tar" "xz" "zstd") makedepends=("bc" "cpio" "gettext" "git" "libelf" "pahole" "perl" "python" "tar" "xz" "zstd")
[[ -n "${_use_llvm_to}" ]] && makedepends+=("clang" "llvm" "lld") [[ -n "${_use_llvm_to}" ]] && makedepends+=("clang" "llvm" "lld")
options=("!strip" "!debug") options=("!strip" "!debug")
[[ "${_debug}" == "y" ]] && options=("!strip") [[ "${_debug_kernel}" == "y" ]] && options=("!strip")
source=( 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.xz"
"https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-${_kernel_major}.tar.sign" "https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-${_kernel_major}.tar.sign"
@ -148,15 +257,37 @@ source=(
[[ -n "${_use_llvm_lto}" ]] && BUILD_FLAGS=("LLVM=1" "LLVM_IAS=1") [[ -n "${_use_llvm_lto}" ]] && BUILD_FLAGS=("LLVM=1" "LLVM_IAS=1")
export KBUILD_BUILD_HOST=archlinux export "KBUILD_BUILD_HOST=archlinux"
export KBUILD_BUILD_USER=${pkgbase} export "KBUILD_BUILD_USER=${pkgbase}"
export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})" export "KBUILD_BUILD_TIMESTAMP=$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
prepare() { # Debugging
cd "${_src_linux}" || exit 1 _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"
# Patch with kernel version patches # Patch with kernel version patches
patch -Np1 -i ../patch-${_kernel_major}.${_kernel_minor} || true patch -Np1 -i ../patch-${_kernel_major}.${_kernel_minor} || :
# Set version # Set version
echo "-${pkgrel}" > localversion.10-pkgrel echo "-${pkgrel}" > localversion.10-pkgrel
@ -170,36 +301,38 @@ prepare() {
fi fi
fi fi
patch -Np1 -i "${srcdir}/cl-linux/${i}" || true patch -Np1 -i "${srcdir}/cl-linux/${i}" || :
done done
# Copy configuration file (if found) # Patch with kernel_compiler_patch patches.
if [ -f "${startdir}/kconfig" ]; then # Do this before any defconfig invocations so we
echo ":: Using configuration file \"${startdir}/kconfig\"" # have all of the extra selectable uarches ready and selectable
cp -Tf "${startdir}/kconfig" ./.config patch -Np1 -i "$srcdir/kernel_compiler_patch-$_kernelcompilerpatch/more-ISA-levels-and-uarches-for-kernel-6.1.79+.patch"
else }
echo ":: Using configuration file \"${srcdir}/${pkgbase}/config\""
cp -Tf $srcdir/cl-linux/config ./.config # Updates the kernel config
fi _update_config() {
_debug_call "_update_config"
# Extra configuration # Extra configuration
# General setup _debug_msg "Updating configuration"
# -> General setup
scripts/config --set-str DEFAULT_HOSTNAME archlinux \ scripts/config --set-str DEFAULT_HOSTNAME archlinux \
-e IKCONFIG \ -e IKCONFIG \
-e IKCONFIG_PROC \ -e IKCONFIG_PROC \
-u RT_GROUP_SCHED -u RT_GROUP_SCHED
# Power management and ACPI options # -> Power management and ACPI options
scripts/config -e ACPI_REV_OVERRIDE_POSSIBLE \ scripts/config -e ACPI_REV_OVERRIDE_POSSIBLE \
-e ACPI_TABLE_UPGRADE -e ACPI_TABLE_UPGRADE
# Virtualization # -> Virtualization
scripts/config -e KVM_SMM scripts/config -e KVM_SMM
# General architecture-dependent options # -> General architecture-dependent options
scripts/config -e KPROBES scripts/config -e KPROBES
# Enable loadable module support # -> Enable loadable module support
scripts/config -u MODULE_SIG_FORCE scripts/config -u MODULE_SIG_FORCE
# Networking support # -> Networking support
scripts/config -e NETFILTER_INGRESS scripts/config -e NETFILTER_INGRESS
# Device Drivers # -> Device Drivers
scripts/config -e FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER \ scripts/config -e FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER \
-e DELL_SMBIOS_SMM \ -e DELL_SMBIOS_SMM \
-m PATA_JMICRON \ -m PATA_JMICRON \
@ -209,9 +342,9 @@ prepare() {
-M SND_MIXER_OSS SND_PCM_OSS \ -M SND_MIXER_OSS SND_PCM_OSS \
-E SND_PCM_OSS SND_PCM_OSS_PLUGINS \ -E SND_PCM_OSS SND_PCM_OSS_PLUGINS \
-m AGP -M AGP AGP_INTEL -M AGP_INTEL AGP_VIA -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 scripts/config -e SECTION_MISMATCH_WARN_ONLY
# File systems # -> File systems
scripts/config -m NTFS3_FS \ scripts/config -m NTFS3_FS \
-e NTFS3_LZX_XPRESS \ -e NTFS3_LZX_XPRESS \
-e NTFS3_FS_POSIX_ACL -e NTFS3_FS_POSIX_ACL
@ -219,7 +352,7 @@ prepare() {
-e SMB_SERVER_SMBDIRECT \ -e SMB_SERVER_SMBDIRECT \
-e SMB_SERVER_CHECK_CAP_NET_ADMIN \ -e SMB_SERVER_CHECK_CAP_NET_ADMIN \
-e SMB_SERVER_KERBEROS5 -e SMB_SERVER_KERBEROS5
# Security options # -> Security options
scripts/config -e SECURITY_SELINUX \ scripts/config -e SECURITY_SELINUX \
-e SECURITY_SELINUX_BOOTPARAM \ -e SECURITY_SELINUX_BOOTPARAM \
-e SECURITY_SMACK \ -e SECURITY_SMACK \
@ -229,13 +362,16 @@ prepare() {
-e SECURITY_TOMOYO \ -e SECURITY_TOMOYO \
-e SECURITY_APPARMOR \ -e SECURITY_APPARMOR \
-e SECURITY_YAMA -e SECURITY_YAMA
# Security options -> Landlock options # -> Security options -> Landlock options
scripts/config -e SECURITY_LANDLOCK scripts/config -e SECURITY_LANDLOCK
# Library routines # -> Library routines
scripts/config -k -e FONT_TER16x32 scripts/config -k -e FONT_TER16x32
# Enable LLVM compilation # -> Enable LLVM compilation
[[ -n "${_use_llvm_lto}" ]] && scripts/config -d LTO_NONE \ if [ -n "${_use_llvm_lto}" ]; then
_debug_msg "Enabling LLVM compilation"
scripts/config -d LTO_NONE \
-e LTO \ -e LTO \
-e LTO_CLANG \ -e LTO_CLANG \
-e ARCH_SUPPORTS_LTO_CLANG \ -e ARCH_SUPPORTS_LTO_CLANG \
@ -243,73 +379,134 @@ prepare() {
-e HAS_LTO_CLANG \ -e HAS_LTO_CLANG \
-e LTO_CLANG_THIN \ -e LTO_CLANG_THIN \
-e HAVE_GCC_PLUGINS -e HAVE_GCC_PLUGINS
fi
# Enable or disable debug settings # -> Enable or disable debug settings
[[ "${_debug}" == "y" ]] && scripts/config -e DEBUG_INFO \ case "${_debug_kernel}" in
"y")
_debug_msg "Enabling kernel debugging"
scripts/config -e DEBUG_INFO \
-e DEBUG_INFO_BTF \ -e DEBUG_INFO_BTF \
-e DEBUG_INFO_DWARF4 \ -e DEBUG_INFO_DWARF4 \
-e PAHOLE_HAS_SPLIT_BTF \ -e PAHOLE_HAS_SPLIT_BTF \
-e DEBUG_INFO_BTF_MODULES -e DEBUG_INFO_BTF_MODULES
[[ "${_debug}" == "n" ]] && scripts/config -d DEBUG_INFO \ ;;
"n")
_debug_msg "Disabling kernel debugging"
scripts/config -d DEBUG_INFO \
-d DEBUG_INFO_BTF \ -d DEBUG_INFO_BTF \
-d DEBUG_INFO_DWARF4 \ -d DEBUG_INFO_DWARF4 \
-d PAHOLE_HAS_SPLIT_BTF \ -d PAHOLE_HAS_SPLIT_BTF \
-d DEBUG_INFO_BTF_MODULES -d DEBUG_INFO_BTF_MODULES
;;
esac
# Run olddefconfig # Run olddefconfig
_debug_msg "Running olddefconfig"
make ${BUILD_FLAGS[*]} 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 || : diff -u $srcdir/cl-linux/config .config || :
# Patch with kernel_compiler_patch patches if [ -n "${_subarch}" ]; then
# This must be executed after olddefconfig # Set subarch
# to allow for the next section to run. _debug_msg "Setting subarchitecture"
patch -Np1 -i "$srcdir/kernel_compiler_patch-$_kernelcompilerpatch/more-ISA-levels-and-uarches-for-kernel-6.1.79+.patch"
# Set subarch automatically if [ "${_subarch}" == "41" ]; then
[[ -n "${_subarch}" ]] && yes "${_subarch}" | make ${BUILD_FLAGS[*]} oldconfig yes "${_subarch}
# Ask for subarch ${_subarch_microarch}" | make ${BUILD_FLAGS[*]} oldconfig
[[ -z "${_subarch}" ]] && make ${BUILD_FLAGS[*]} oldconfig
# Optionally use the configuration of the running kernel
# Written originally by nous, see
# https://web.archive.org/web/20110711231356/https://aur.archlinux.org/packages.php?ID=40191 (package doesn't exist anymore)
[[ -n "${_use_current}" ]] &&
if [[ -s /proc/config.gz ]]; then
# modprobe configs
zcat /proc/config.gz > ./.config
else else
warning "Your kernel was not compiled with IKCONFIG_PROC." yes "${_subarch}" | make ${BUILD_FLAGS[*]} oldconfig
warning "Unable to read kernel configuration, aborting." fi
exit 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
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 fi
# Read and apply modprobed database # Read and apply modprobed database
# See https://aur.archlinux.org/packages/modprobed-db # See https://aur.archlinux.org/packages/modprobed-db
[[ -n "${_localmodcfg}" ]] && if [ -n "${_localmodcfg}" ]; then
if [ -e "${HOME}/.config/modprobed.db" ]; then if [ -e "${HOME}/.config/modprobed.db" ]; then
make ${BUILD_FLAGS[*]} LSMOD=${HOME}/.config/modprobed.db localmodconfig make ${BUILD_FLAGS[*]} LSMOD=${HOME}/.config/modprobed.db localmodconfig
else else
echo ":: No modprobed.db file was found at ${HOME}/.config, skipping" _warn "No modprobed.db file was found at ${HOME}/.config, skipping"
fi fi
fi
# Open configuration editors
[ -n "$_makemenuconfig" ] && make ${BUILD_FLAGS[*]} menuconfig
[ -n "$_makexconfig" ] && make ${BUILD_FLAGS[*]} xconfig
[ -n "$_makenconfig" ] && make ${BUILD_FLAGS[*]} nconfig
# Save configuration
# shellcheck disable=SC2015
[ -n "${_copyfinalconfig}" ] && cp -Tf ./.config "${startdir}/kconfig-new" || :
# Write kernel version # Write kernel version
make -s kernelrelease > version make -s kernelrelease > version
# Open configuration editors
[[ -n "$_makemenuconfig" ]] && make ${BUILD_FLAGS[*]} menuconfig
[[ -n "$_makexconfig" ]] && make ${BUILD_FLAGS[*]} xconfig
[[ -n "$_makenconfig" ]] && make ${BUILD_FLAGS[*]} nconfig
# Save configuration
[[ -n "${_copyfinalconfig}" ]] && cp -Tf ./.config "${startdir}/kconfig-new" || true
} }
# Build kernel
build() { build() {
_debug_call "build"
cd "${_src_linux}" || exit 1 cd "${_src_linux}" || exit 1
make ${BUILD_FLAGS[*]} all make ${BUILD_FLAGS[*]} all
} }
# Packages the kernel package
_package() { _package() {
_debug_call "_package"
pkgdesc="${pkgdesc} This package includes the kernel and compiled modules." pkgdesc="${pkgdesc} This package includes the kernel and compiled modules."
depends=("coreutils" "kmod" "initramfs") depends=("coreutils" "kmod" "initramfs")
optdepends=("wireless-regdb: to set the correct wireless channels of your country" optdepends=("wireless-regdb: to set the correct wireless channels of your country"
@ -318,7 +515,7 @@ _package() {
install=linux.install install=linux.install
cd "${_src_linux}" || exit 1 cd "${_src_linux}" || exit 1
local modulesdir="${pkgdir}/usr/lib/modules/$(<version)" local "modulesdir=${pkgdir}/usr/lib/modules/$(<version)"
# Create boot image # Create boot image
# systemd expects to find the kernel there to allow hibernation # systemd expects to find the kernel there to allow hibernation
@ -336,12 +533,15 @@ _package() {
rm "${modulesdir}"/build rm "${modulesdir}"/build
} }
# Packages the headers package
_package-headers() { _package-headers() {
_debug_call "_package-headers"
pkgdesc="${pkgdesc} This package includes header files and scripts for building kernel modules." pkgdesc="${pkgdesc} This package includes header files and scripts for building kernel modules."
depends=("pahole") depends=("pahole")
cd "${_src_linux}" || exit 1 cd "${_src_linux}" || exit 1
local builddir="${pkgdir}/usr/lib/modules/$(<version)/build" local "builddir=${pkgdir}/usr/lib/modules/$(<version)/build"
install -Dt "${builddir}" -m644 .config Makefile Module.symvers System.map \ install -Dt "${builddir}" -m644 .config Makefile Module.symvers System.map \
localversion.* version vmlinux localversion.* version vmlinux
@ -418,8 +618,8 @@ _package-headers() {
pkgname=("$pkgbase" "$pkgbase-headers") pkgname=("$pkgbase" "$pkgbase-headers")
for _p in "${pkgname[@]}"; do for _p in "${pkgname[@]}"; do
eval "package_$_p() { eval "package_$_p() {
$(declare -f "_package${_p#$pkgbase}") $(declare -f "_package${_p#"$pkgbase"}")
_package${_p#$pkgbase} _package${_p#"$pkgbase"}
}" }"
done done
@ -430,8 +630,8 @@ validpgpkeys=(
"E27E5D8A3403A2EF66873BBCDEA66FF797772CDC" # Sasha Levin "E27E5D8A3403A2EF66873BBCDEA66FF797772CDC" # Sasha Levin
"AC2B29BD34A6AFDDB3F68F35E7BFC8EC95861109" # Ben Hutchings "AC2B29BD34A6AFDDB3F68F35E7BFC8EC95861109" # Ben Hutchings
) )
sha256sums=("55d2c6c025ebc27810c748d66325dd5bc601e8d32f8581d9e77673529bdacb2e" sha256sums=("b1a2562be56e42afb3f8489d4c2a7ac472ac23098f1ef1c1e40da601f54625eb"
"SKIP" "SKIP"
"4ccabe59805d7efd8165405624695255a87811cbea5c0e1d7a3981c21789b2ec" "dd7c856f12d3e10f09743c1d3db35f91879d92890c9fb176405783c9c7cb0c54"
"SKIP" "SKIP"
"b3fd8b1c5bbd39a577afcccf6f1119fdf83f6d72119f4c0811801bdd51d1bc61") "b3fd8b1c5bbd39a577afcccf6f1119fdf83f6d72119f4c0811801bdd51d1bc61")

View file

@ -14,14 +14,19 @@ The PKGBUILD file supports customization via environment variables. Here's a lis
- `_makemenuconfig`: Invokes `make menuconfig` (ncurses-based default configuration menu) before compilation starts - `_makemenuconfig`: Invokes `make menuconfig` (ncurses-based default configuration menu) before compilation starts
- `_makenconfig`: Invokes `make nconfig` (ncurses-based nicer 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 - `_makexconfig`: Invokes `make xconfig` (X11-based GUI configuration menu) before compilation starts
- `_use_current`: Will use the configuration of the running kernel, if the running kernel is compiled with `IKCONFIG_PROC` - `_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
- `_copyfinalconfig`: Copies the final kernel configuration into the repository root as `kconfig-new` before compilation starts - `_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) - `_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 - `_use_llvm_lto`: Compiles the kernel with LLVM instead of GCC. Should work, if not open an issue
- `_subarch`: Specifies the sub architecture 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`: 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
- `_debug`: Force enables debug options when set to `y`, force disables debug options when set to `n` or uses the config defaults when unset - `_use_llvm_lto`: Enables compilation with LLVM. Untested but should work. If not write a comment on the AUR.
- `_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
All of these variables just need to be set for them to apply, except for `_subarch` and `_debug`. See their descriptions for more information. 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**
## GPG errors ## GPG errors
If makepkg complains about invalid PGP keys, try running this command: If makepkg complains about invalid PGP keys, try running this command:
@ -34,6 +39,13 @@ This command only needs to be executed once.
Please only submit issues if they aren't bug reports about the package or help requests. Please only submit issues if they aren't bug reports about the package or help requests.
Please keep them on the AUR only. This prevents unnecessary signups. Please keep them on the AUR only. This prevents unnecessary signups.
## Branches
This repository (at least if you view it on [sos!git](https://git.staropensource.de/JeremyStarTM/aur-linux-clear))
has two branches: `master` and `develop`. The `master` branch is the stable branch, where stable changes
are introduced. The `develop` branch is (as you might have already guessed) the development branch.
Please only submit PRs to the `develop` branch. Pull requests to the `master` branch will be rejected.
## License ## License
This package does not yet have a license as the original repository (before [me](https://git.staropensource.de/JeremyStarTM) becoming it's maintainer) did not have one yet. This package does not yet have a license as the original repository (before [me](https://git.staropensource.de/JeremyStarTM) becoming it's maintainer) did not have one yet.
I have contacted [metak](https://aur.archlinux.org/account/metak) (the previous maintainer) to negotiate a license. I have contacted [metak](https://aur.archlinux.org/account/metak) (the previous maintainer) to negotiate a license.

View file

@ -1,14 +1,14 @@
#!/bin/bash #!/usr/bin/env bash
_5_2_2_2_changes() { function _5_2_2_2_changes() {
echo ":: A new command line option was added: add page_alloc.shuffle=1" echo ":: Update 5.2.2-2: A new command line option was added: add page_alloc.shuffle=1"
} }
_5_2_9_6_changes() { function _5_2_9_6_changes() {
echo ":: Microcode is no longer builtin. See https://wiki.archlinux.org/index.php/Microcode" echo ":: Update 5.2.9-6: Microcode is no longer builtin. See https://wiki.archlinux.org/index.php/Microcode"
} }
post_install() { function post_install() {
echo ":: Clear Linux bundles a custom command line which must be applied manually on other distributions." echo ":: Clear Linux bundles a custom command line which must be applied manually on other distributions."
echo " This is their default command line:" echo " This is their default command line:"
echo " quiet console=tty0 console=ttyS0,115200n8 cryptomgr.notests initcall_debug" echo " quiet console=tty0 console=ttyS0,115200n8 cryptomgr.notests initcall_debug"
@ -17,15 +17,13 @@ post_install() {
echo " rootfstype=ext4,btrfs,xfs,f2fs tsc=reliable rw" echo " rootfstype=ext4,btrfs,xfs,f2fs tsc=reliable rw"
} }
post_upgrade() { function post_upgrade() {
local v upgrades=( local version upgrades=(
5.2.2-2 5.2.2-2
5.2.9-6 5.2.9-6
) )
for v in "${upgrades[@]}"; do for version in "${upgrades[@]}"; do
if [[ $(vercmp "${v}" "$2") -eq 1 ]]; then [[ $(vercmp "${version}" "$2") -eq 1 ]] && "_${version//[.-]/_}_changes"
"_${v//[.-]/_}_changes"
fi
done done
} }