diff --git a/pkg.info b/pkg.info index ecffd50..cd6f555 100644 --- a/pkg.info +++ b/pkg.info @@ -1,7 +1,7 @@ name: linux-lts description: The longterm support version of the linux kernel version: 6.18.26 -revision: 1 +revision: 2 url: https://www.kernel.org/ license: GPL2-only maintainers: @@ -16,10 +16,15 @@ make_depends: - libelf - lld - llvm + - openssl + - pahole - perl - rustc - rust-bindgen - rust-src + - xz-utils + - zlib + - zstd downloads: - url: https://cdn.kernel.org/pub/linux/kernel/v${BPM_PKG_VERSION%%.*}.x/linux-${BPM_PKG_VERSION}.tar.xz extract_to: ${BPM_SOURCE} @@ -28,7 +33,20 @@ downloads: split_packages: - name: linux-lts optional_depends: - - linux-lts-docs + - linux-lts-docs:For documentation + - linux-lts-headers:For building modules + - name: linux-lts-headers + description: The longterm support version of the linux kernel (Headers) + depends: + - linux-lts + - binutils + - lld + - llvm + - openssl + - pahole + - xxhash + - zlib + - zstd - name: linux-lts-docs description: The longterm support version of the linux kernel (Documentation) depends: diff --git a/source-files/config b/source-files/config index 6369c7b..1b20820 100644 --- a/source-files/config +++ b/source-files/config @@ -2,18 +2,18 @@ # Automatically generated file; DO NOT EDIT. # Linux/x86 6.18.21 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="clang version 21.1.8" +CONFIG_CC_VERSION_TEXT="clang version 22.1.4" CONFIG_GCC_VERSION=0 CONFIG_CC_IS_CLANG=y -CONFIG_CLANG_VERSION=210108 +CONFIG_CLANG_VERSION=220104 CONFIG_AS_IS_LLVM=y -CONFIG_AS_VERSION=210108 +CONFIG_AS_VERSION=220104 CONFIG_LD_VERSION=0 CONFIG_LD_IS_LLD=y -CONFIG_LLD_VERSION=210108 -CONFIG_RUSTC_VERSION=109401 +CONFIG_LLD_VERSION=220104 +CONFIG_RUSTC_VERSION=109500 CONFIG_RUST_IS_AVAILABLE=y -CONFIG_RUSTC_LLVM_VERSION=210108 +CONFIG_RUSTC_LLVM_VERSION=220104 CONFIG_CC_CAN_LINK=y CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y @@ -29,7 +29,7 @@ CONFIG_RUSTC_HAS_SPAN_FILE=y CONFIG_RUSTC_HAS_UNNECESSARY_TRANSMUTES=y CONFIG_RUSTC_HAS_FILE_WITH_NUL=y CONFIG_RUSTC_HAS_FILE_AS_C_STR=y -CONFIG_PAHOLE_VERSION=0 +CONFIG_PAHOLE_VERSION=131 CONFIG_IRQ_WORK=y CONFIG_BUILDTIME_TABLE_SORT=y CONFIG_THREAD_INFO_IN_TASK=y @@ -297,7 +297,7 @@ CONFIG_PERF_EVENTS=y CONFIG_SYSTEM_DATA_VERIFICATION=y CONFIG_PROFILING=y CONFIG_RUST=y -CONFIG_RUSTC_VERSION_TEXT="rustc 1.94.1 (e408947bf 2026-03-25) (for Tide Linux)" +CONFIG_RUSTC_VERSION_TEXT="rustc 1.95.0 (59807616e 2026-04-14) (for Tide Linux)" CONFIG_BINDGEN_VERSION_TEXT="bindgen 0.72.1" CONFIG_TRACEPOINTS=y @@ -7701,13 +7701,26 @@ CONFIG_DEBUG_MISC=y # # Compile-time checks and compiler options # +CONFIG_DEBUG_INFO=y CONFIG_AS_HAS_NON_CONST_ULEB128=y -CONFIG_DEBUG_INFO_NONE=y -# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set +# CONFIG_DEBUG_INFO_NONE is not set +CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y # CONFIG_DEBUG_INFO_DWARF4 is not set # CONFIG_DEBUG_INFO_DWARF5 is not set -CONFIG_FRAME_WARN=2048 -# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_DEBUG_INFO_REDUCED is not set +CONFIG_DEBUG_INFO_COMPRESSED_NONE=y +# CONFIG_DEBUG_INFO_COMPRESSED_ZLIB is not set +# CONFIG_DEBUG_INFO_COMPRESSED_ZSTD is not set +# CONFIG_DEBUG_INFO_SPLIT is not set +CONFIG_DEBUG_INFO_BTF=y +CONFIG_PAHOLE_HAS_SPLIT_BTF=y +CONFIG_PAHOLE_HAS_BTF_TAG=y +CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y +CONFIG_DEBUG_INFO_BTF_MODULES=y +# CONFIG_MODULE_ALLOW_BTF_MISMATCH is not set +# CONFIG_GDB_SCRIPTS is not set +CONFIG_FRAME_WARN=1024 +CONFIG_STRIP_ASM_SYMS=y # CONFIG_HEADERS_INSTALL is not set CONFIG_SECTION_MISMATCH_WARN_ONLY=y CONFIG_OBJTOOL=y @@ -7898,6 +7911,7 @@ CONFIG_FTRACE=y CONFIG_TRACEFS_AUTOMOUNT_DEPRECATED=y # CONFIG_BOOTTIME_TRACING is not set # CONFIG_FUNCTION_TRACER is not set +CONFIG_FUNCTION_TRACE_ARGS=y # CONFIG_STACK_TRACER is not set # CONFIG_IRQSOFF_TRACER is not set # CONFIG_PREEMPT_TRACER is not set @@ -7912,6 +7926,7 @@ CONFIG_BRANCH_PROFILE_NONE=y # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set # CONFIG_PROFILE_ALL_BRANCHES is not set CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_PROBE_EVENTS_BTF_ARGS=y CONFIG_KPROBE_EVENTS=y CONFIG_UPROBE_EVENTS=y CONFIG_EPROBE_EVENTS=y diff --git a/source.sh b/source.sh index e3a05ee..790e386 100644 --- a/source.sh +++ b/source.sh @@ -16,6 +16,7 @@ prepare() { build() { make LLVM=1 olddefconfig make LLVM=1 + make -C tools/bpf/bpftool vmlinux.h feature-clang-bpf-co-re=1 } # The package function is executed in the source directory @@ -28,11 +29,108 @@ package_linux-lts() { install -Dm644 arch/x86/boot/bzImage "$BPM_OUTPUT"/boot/vmlinuz-linux-lts install -Dm644 .config "$BPM_OUTPUT"/boot/config-linux-lts + # Remove build link + rm "$BPM_OUTPUT"/usr/lib/modules/$(make -s kernelrelease)/build + # Install package licenses install -d "$BPM_OUTPUT"/usr/share/licenses cp -r LICENSES "$BPM_OUTPUT"/usr/share/licenses/linux-lts } +package_linux-lts-headers() { + local builddir="$BPM_OUTPUT"/usr/lib/modules/$(make -s kernelrelease)/build + + local karch + case $CARCH in + x86_64) karch=x86 ;; + *) echo "Unknown CARCH $CARCH"; exit 1 ;; + esac + + + echo "Installing build files..." + install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map vmlinux tools/bpf/bpftool/vmlinux.h + install -Dt "$builddir/kernel" -m644 kernel/Makefile + install -Dt "$builddir/arch/$karch" -m644 arch/$karch/Makefile + cp -t "$builddir" -a scripts + ln -srt "$builddir" "$builddir/scripts/gdb/vmlinux-gdb.py" + + if [[ $(scripts/config -s CONFIG_HAVE_STACK_VALIDATION) = y ]]; then + install -Dt "$builddir/tools/objtool" tools/objtool/objtool + fi + + if [[ $(scripts/config -s CONFIG_DEBUG_INFO_BTF_MODULES) = y ]]; then + install -Dt "$builddir/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids + fi + + echo "Installing headers..." + cp -t "$builddir" -a include + cp -t "$builddir/arch/$karch" -a arch/$karch/include + install -Dt "$builddir/arch/$karch/kernel" -m644 arch/$karch/kernel/asm-offsets.s + + install -Dt "$builddir/drivers/md" -m644 drivers/md/*.h + install -Dt "$builddir/net/mac80211" -m644 net/mac80211/*.h + + install -Dt "$builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h + + 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 + + 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/{}" \; + + echo "Installing Rust files..." + if [[ $(scripts/config -s CONFIG_RUST) = y ]]; then + install -Dt "$builddir/rust" -m644 rust/*.rmeta + install -Dt "$builddir/rust" rust/*.so + fi + + echo "Installing unstripped VDSO..." + make INSTALL_MOD_PATH="$BPM_OUTPUT"/usr vdso_install \ + link= # Suppress build-id symlinks + + echo "Removing unneeded architectures..." + local arch + for arch in "$builddir"/arch/*/; do + [[ $arch = */$karch/ ]] && continue + echo "Removing $(basename "$arch")" + rm -r "$arch" + done + + echo "Removing documentation..." + rm -r "$builddir/Documentation" + + echo "Removing broken symlinks..." + find -L "$builddir" -type l -printf 'Removing %P\n' -delete + + echo "Removing loose objects..." + find "$builddir" -type f -name '*.o' -printf 'Removing %P\n' -delete + + echo "Stripping build tools..." + local file + while read -rd '' file; do + case "$(file -Sib "$file")" in + application/x-sharedlib\;*) # Libraries (.so) + strip -v $STRIP_SHARED "$file" ;; + application/x-archive\;*) # Libraries (.a) + strip -v $STRIP_STATIC "$file" ;; + application/x-executable\;*) # Binaries + strip -v $STRIP_BINARIES "$file" ;; + application/x-pie-executable\;*) # Relocatable binaries + strip -v $STRIP_SHARED "$file" ;; + esac + done < <(find "$builddir" -type f -perm -u+x ! -name vmlinux -print0) + + echo "Stripping vmlinux..." + strip -v $STRIP_STATIC "$builddir/vmlinux" + + echo "Adding symlink..." + mkdir -p "$BPM_OUTPUT"/usr/src + ln -sr "$builddir" "$BPM_OUTPUT"/usr/src/linux-lts +} + package_linux-lts-docs() { # Install documentation install -d "$BPM_OUTPUT"/usr/share/doc/