DistroKit Mailinglist
 help / color / mirror / Atom feed
From: Michael Olbrich <m.olbrich@pengutronix.de>
To: distrokit@pengutronix.de
Cc: Michael Olbrich <m.olbrich@pengutronix.de>
Subject: [DistroKit] [PATCH 1/2] kernel: import rule from ptxdist-2025.11.0
Date: Thu, 11 Dec 2025 10:35:44 +0100	[thread overview]
Message-ID: <20251211093545.1050096-1-m.olbrich@pengutronix.de> (raw)

Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
---
 rules/kernel.make | 379 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 379 insertions(+)
 create mode 100644 rules/kernel.make

diff --git a/rules/kernel.make b/rules/kernel.make
new file mode 100644
index 000000000000..9cdc95a91b8b
--- /dev/null
+++ b/rules/kernel.make
@@ -0,0 +1,379 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2002-2009 by Pengutronix e.K., Hildesheim, Germany
+#               2010 by Marc Kleine-Budde <mkl@pengutronix.de>
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+#
+# We provide this package
+#
+PACKAGES-$(PTXCONF_KERNEL) += kernel
+
+#
+# Paths and names
+#
+KERNEL			:= linux-$(KERNEL_VERSION)
+KERNEL_MD5		:= $(call ptx/config-md5, PTXCONF_KERNEL)
+ifneq ($(KERNEL_NEEDS_GIT_URL),y)
+KERNEL_SUFFIX		:= tar.xz
+KERNEL_URL		:= $(call kernel-url, KERNEL)
+else
+KERNEL_SUFFIX		:= tar.gz
+KERNEL_URL		:= https://git.kernel.org/torvalds/t/$(KERNEL).$(KERNEL_SUFFIX)
+endif
+KERNEL_DIR		:= $(BUILDDIR)/$(KERNEL)
+KERNEL_BUILD_DIR	:= $(KERNEL_DIR)-build
+KERNEL_CONFIG		:= $(call ptx/in-platformconfigdir, $(call remove_quotes, $(PTXCONF_KERNEL_CONFIG)))
+KERNEL_DTS_PATH		:= $(call remove_quotes,$(PTXCONF_KERNEL_DTS_PATH))
+KERNEL_DTS		:= $(call remove_quotes,$(PTXCONF_KERNEL_DTS))
+KERNEL_DTSO_PATH	:= $(call remove_quotes,$(PTXCONF_KERNEL_DTSO_PATH))
+KERNEL_DTSO		:= $(call remove_quotes,$(PTXCONF_KERNEL_DTSO))
+KERNEL_DTB_FILES	:= $(addsuffix .dtb,$(basename $(notdir $(KERNEL_DTS))))
+KERNEL_DTBO_FILES	:= $(addsuffix .dtbo,$(basename $(notdir $(KERNEL_DTSO))))
+KERNEL_DTBO_DIR		:= /boot/overlays
+KERNEL_LICENSE		:= GPL-2.0-only
+KERNEL_SOURCE		:= $(SRCDIR)/$(KERNEL).$(KERNEL_SUFFIX)
+KERNEL_DEVPKG		:= NO
+KERNEL_BUILD_OOT	:= KEEP
+KERNEL_CVE_PRODUCT	:= linux:linux_kernel
+
+# track changes to devices-trees in the BSP
+$(call world/dts-cfghash-file, KERNEL)
+
+# in case we migrate some old syntax
+ifneq ($(filter /%,$(KERNEL_DTS)),)
+$(call ptx/error, the device trees in PTXCONF_KERNEL_DTS must be specified without an)
+$(call ptx/error, absolute path. Use PTXCONF_KERNEL_DTS_PATH to provide a list of direcories)
+$(call ptx/error, that will be searched.)
+endif
+
+# ----------------------------------------------------------------------------
+# Prepare
+# ----------------------------------------------------------------------------
+
+# use CONFIG_CC_STACKPROTECTOR if available. The rest makes no sense for the kernel
+KERNEL_WRAPPER_BLACKLIST := \
+	$(PTXDIST_LOWLEVEL_WRAPPER_BLACKLIST)
+
+# Note: for some reason, the error is not visible without the dummy '$(shell :)'
+# when running 'ptxdist -j -q go'.
+define kernel/deprecated
+$(if $(strip \
+$(filter $(STATEDIR)/%, \
+$(filter-out $(STATEDIR)/kernel.%,$@)) \
+),$(shell :)$(error $(notdir $@): \
+	use KERNEL_MODULE_OPT instead of $(1) for kernel module packages))
+endef
+
+# check for old kernel modules rules
+KERNEL_MAKEVARS = $(call kernel/deprecated, KERNEL_MAKEVARS)
+
+# like kernel-opts but with different CROSS_COMPILE=
+KERNEL_BASE_OPT		= \
+	$(call kernel-opts, KERNEL,$(KERNEL_CROSS_COMPILE)) \
+	$(call remove_quotes,$(PTXCONF_KERNEL_EXTRA_MAKEVARS))
+
+# Intermediate option. This will be used by kernel module packages.
+KERNEL_MODULE_OPT	= \
+	-C $(KERNEL_DIR) \
+	O=$(KERNEL_BUILD_DIR) \
+	$(KERNEL_BASE_OPT)
+
+KERNEL_SHARED_OPT	= \
+	$(KERNEL_MODULE_OPT) \
+	PAHOLE=false
+
+ifndef PTXCONF_KERNEL_GCC_PLUGINS
+# no gcc plugins; avoid config changes depending on the host compiler
+KERNEL_SHARED_OPT	+= \
+	HOSTCXX="$(HOSTCXX) -DGENERATOR_FILE" \
+	HOSTCC="$(HOSTCC) -DGENERATOR_FILE"
+KERNEL_CONF_ENV		:= \
+	PTXDIST_NO_GCC_PLUGINS=1
+KERNEL_MAKE_ENV		:= \
+	PTXDIST_NO_GCC_PLUGINS=1
+endif
+
+ifneq ($(PTXCONF_KERNEL_CODE_SIGNING)$(PTXCONF_KERNEL_MODULES_SIGN),)
+KERNEL_MAKE_ENV		+= \
+	$(CODE_SIGNING_ENV)
+endif
+
+KERNEL_CONF_TOOL	:= kconfig
+KERNEL_CONF_OPT		= \
+	$(KERNEL_SHARED_OPT)
+
+ifdef PTXCONF_KERNEL_CONFIG_BASE_VERSION
+# force using KERNEL_VERSION in the kernelconfig
+KERNEL_CONF_OPT		+= \
+	KERNELVERSION=$(KERNEL_VERSION)
+endif
+
+#
+# support the different kernel image formats
+#
+KERNEL_IMAGE		:= $(call remove_quotes, $(PTXCONF_KERNEL_IMAGE))
+
+# these are sane defaults
+KERNEL_IMAGE_PATH_y	:= $(KERNEL_BUILD_DIR)/arch/$(GENERIC_KERNEL_ARCH)/boot/$(KERNEL_IMAGE)
+
+# vmlinux and vmlinuz are special
+KERNEL_IMAGE_PATH_$(PTXCONF_KERNEL_IMAGE_VMLINUX) := $(KERNEL_BUILD_DIR)/vmlinux
+KERNEL_IMAGE_PATH_$(PTXCONF_KERNEL_IMAGE_VMLINUZ) := $(KERNEL_BUILD_DIR)/vmlinuz
+# avr32 is also special
+KERNEL_IMAGE_PATH_$(PTXCONF_ARCH_AVR32) := $(KERNEL_BUILD_DIR)/arch/$(GENERIC_KERNEL_ARCH)/boot/images/$(KERNEL_IMAGE)
+
+
+ifdef PTXCONF_KERNEL
+$(KERNEL_CONFIG):
+	@echo
+	@echo "*************************************************************************"
+	@echo "**** Please generate a kernelconfig with 'ptxdist menuconfig kernel' ****"
+	@echo "*************************************************************************"
+	@echo
+	@echo
+	@exit 1
+endif
+
+
+#
+# when compiling the rootfs into the kernel, we just include an empty
+# file for now. the rootfs isn't build yet.
+#
+KERNEL_INITRAMFS_SOURCE_$(PTXCONF_IMAGE_KERNEL_INITRAMFS) += $(STATEDIR)/empty.cpio
+
+$(STATEDIR)/kernel.prepare:
+	@$(call targetinfo)
+#
+# Make sure there is a non empty INITRAMFS_SOURCE in $(KERNEL_CONFIG), but
+# not the real expanded path because it contains local workdir path which
+# is not relevant to other developers.
+#
+ifdef KERNEL_INITRAMFS_SOURCE_y
+	@sed -i -e 's,^CONFIG_INITRAMFS_SOURCE.*$$,CONFIG_INITRAMFS_SOURCE=\"# Automatically set by PTXDist\",g' \
+		"$(KERNEL_CONFIG)"
+endif
+ifdef PTXCONF_KERNEL_IMAGE_SIMPLE
+	cp $(PTXCONF_KERNEL_IMAGE_SIMPLE_DTS) \
+		$(KERNEL_DIR)/arch/$(GENERIC_KERNEL_ARCH)/boot/dts/$(PTXCONF_KERNEL_IMAGE_SIMPLE_TARGET).dts
+endif
+
+	@$(call world/prepare, KERNEL)
+
+#
+# Use an existing dummy INITRAMFS_SOURCE for the first 'make' call. The
+# kernel image will be rebuilt in the image-kernel package with the real
+# initramfs.
+#
+ifdef KERNEL_INITRAMFS_SOURCE_y
+	@touch "$(KERNEL_INITRAMFS_SOURCE_y)"
+	@sed -i -e 's,^CONFIG_INITRAMFS_SOURCE.*$$,CONFIG_INITRAMFS_SOURCE=\"$(KERNEL_INITRAMFS_SOURCE_y)\",g' \
+		"$(KERNEL_BUILD_DIR)/.config"
+endif
+ifdef PTXCONF_KERNEL_CODE_SIGNING
+	if [ -n "`cs_get_ca kernel-trusted`" ]; then \
+		sed -i -e "s'^\(CONFIG_SYSTEM_TRUSTED_KEYS\)=.*'\1=\"`cs_get_ca kernel-trusted`\"'" \
+			"$(KERNEL_BUILD_DIR)/.config"; \
+	fi
+endif
+ifdef PTXCONF_KERNEL_MODULES_SIGN
+	sed -i -e "s'^\(CONFIG_MODULE_SIG_KEY\)=.*'\1=\"`cs_get_uri kernel-modules`\"'" \
+		"$(KERNEL_BUILD_DIR)/.config"
+endif
+	@$(call touch)
+
+
+# ----------------------------------------------------------------------------
+# tags
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/kernel.tags:
+	@$(call targetinfo)
+	@$(MAKE) -C $(KERNEL_DIR) $(KERNEL_MAKE_OPT) tags TAGS cscope
+
+# ----------------------------------------------------------------------------
+# Compile
+# ----------------------------------------------------------------------------
+
+KERNEL_MAKE_OPT		= \
+	$(call kernel/deprecated, KERNEL_MAKE_OPT) \
+	$(KERNEL_SHARED_OPT) \
+	$(KERNEL_IMAGE) \
+	$(call ptx/ifdef, PTXCONF_KERNEL_MODULES,modules)
+
+KERNEL_TOOL_PERF_OPTS	:= \
+	-C $(KERNEL_DIR)/tools/perf \
+	O=$(KERNEL_BUILD_DIR)/tools/perf \
+	$(KERNEL_BASE_OPT) \
+	prefix=/usr \
+	WERROR=0 \
+	NO_LIBPERL=1 \
+	NO_LIBPYTHON=1 \
+	NO_DWARF= \
+	NO_SLANG= \
+	NO_GTK2=1 \
+	NO_DEMANGLE= \
+	NO_LIBELF= \
+	NO_LIBUNWIND=1 \
+	NO_BACKTRACE= \
+	NO_LIBNUMA=1 \
+	NO_LIBAUDIT=1 \
+	NO_LIBBIONIC=1 \
+	NO_LIBCRYPTO=1 \
+	NO_LIBDW_DWARF_UNWIND= \
+	NO_PERF_READ_VDSO32=1 \
+	NO_PERF_READ_VDSOX32=1 \
+	NO_ZLIB= \
+	NO_LIBBABELTRACE=1 \
+	NO_LZMA=1 \
+	NO_LIBZSTD= \
+	NO_AUXTRACE= \
+	NO_LIBBPF=1 \
+	NO_SDT=1 \
+	NO_LIBCAP=1
+
+# manual make to handle CPPFLAGS and broken parallel building for some
+# kernel versions
+KERNEL_TOOL_IIO_OPTS	:= \
+	PTXDIST_ICECC=$(PTXDIST_ICERUN) \
+	CPPFLAGS="-D__EXPORTED_HEADERS__ -I$(KERNEL_DIR)/include/uapi -I$(KERNEL_DIR)/include" \
+	-C $(KERNEL_DIR)/tools/iio \
+	O=$(KERNEL_BUILD_DIR)/tools/iio \
+	$(KERNEL_BASE_OPT) \
+	$(PARALLELMFLAGS_BROKEN)
+
+$(STATEDIR)/kernel.compile:
+	@$(call targetinfo)
+	@rm -f \
+		$(KERNEL_BUILD_DIR)/usr/initramfs_data.cpio.* \
+		$(KERNEL_BUILD_DIR)/usr/.initramfs_data.cpio.*
+	@$(call world/compile, KERNEL)
+ifdef PTXCONF_KERNEL_TOOL_PERF
+	@mkdir -p $(KERNEL_BUILD_DIR)/tools/perf
+	@$(call compile, KERNEL, $(KERNEL_TOOL_PERF_OPTS))
+endif
+ifdef PTXCONF_KERNEL_TOOL_IIO
+	@mkdir -p $(KERNEL_BUILD_DIR)/tools/iio
+	@$(call world/execute, KERNEL, \
+		$(MAKE) $(KERNEL_TOOL_IIO_OPTS))
+endif
+	@$(call touch)
+
+# ----------------------------------------------------------------------------
+# Install
+# ----------------------------------------------------------------------------
+
+KERNEL_INSTALL_OPT = \
+	$(KERNEL_BASE_OPT) \
+	modules_install
+
+$(STATEDIR)/kernel.install:
+	@$(call targetinfo)
+ifdef PTXCONF_KERNEL_MODULES_INSTALL
+	@$(call world/install, KERNEL)
+endif
+	@$(call world/dtb, KERNEL)
+	@$(call world/dtbo, KERNEL)
+	@$(call touch)
+
+# ----------------------------------------------------------------------------
+# Target-Install
+# ----------------------------------------------------------------------------
+
+ifneq ($(KERNEL_DTB_FILES),)
+$(addprefix $(IMAGEDIR)/,$(KERNEL_DTB_FILES)): $(STATEDIR)/kernel.targetinstall
+endif
+
+$(STATEDIR)/kernel.targetinstall:
+	@$(call targetinfo)
+
+	@$(foreach dtb, $(KERNEL_DTB_FILES), \
+		$(call ptx/image-install, KERNEL, \
+			$(KERNEL_PKGDIR)/boot/$(dtb), $(dtb))$(ptx/nl))
+
+ifdef PTXCONF_KERNEL_XPKG
+	@$(call install_init,  kernel)
+	@$(call install_fixup, kernel, PRIORITY,optional)
+	@$(call install_fixup, kernel, SECTION,base)
+	@$(call install_fixup, kernel, AUTHOR,"Robert Schwebel <r.schwebel@pengutronix.de>")
+	@$(call install_fixup, kernel, DESCRIPTION,missing)
+
+	@$(call install_copy, kernel, 0, 0, 0755, /boot);
+
+ifdef PTXCONF_KERNEL_INSTALL
+	@$(call install_copy, kernel, 0, 0, 0644, $(KERNEL_IMAGE_PATH_y), /boot/$(KERNEL_IMAGE), n)
+
+	@$(foreach dtb, $(KERNEL_DTB_FILES), \
+		$(call install_copy, kernel, 0, 0, 0644, -, \
+			/boot/$(dtb), n)$(ptx/nl))
+
+	@$(foreach dtbo, $(KERNEL_DTBO_FILES), \
+		$(call install_copy, kernel, 0, 0, 0644, -, \
+			$(KERNEL_DTBO_DIR)/$(dtbo), n)$(ptx/nl))
+endif
+
+# install the ELF kernel image for debugging purpose
+ifdef PTXCONF_KERNEL_VMLINUX
+	@$(call install_copy, kernel, 0, 0, 0644, $(KERNEL_BUILD_DIR)/vmlinux, /boot/vmlinux, n)
+endif
+
+ifdef PTXCONF_KERNEL_TOOL_PERF
+	@$(call install_copy, kernel, 0, 0, 0755, $(KERNEL_BUILD_DIR)/tools/perf/perf, \
+		/usr/bin/perf)
+endif
+
+ifdef PTXCONF_KERNEL_TOOL_IIO
+	@$(call install_copy, kernel, 0, 0, 0755, $(wildcard $(KERNEL_BUILD_DIR)/tools/iio/*generic_buffer), \
+		/usr/bin/iio_generic_buffer)
+	@$(call install_copy, kernel, 0, 0, 0755, $(KERNEL_BUILD_DIR)/tools/iio/lsiio, \
+		/usr/bin/lsiio)
+	@$(call install_copy, kernel, 0, 0, 0755, $(KERNEL_BUILD_DIR)/tools/iio/iio_event_monitor, \
+		/usr/bin/iio_event_monitor)
+endif
+
+	@$(call install_finish, kernel)
+endif
+
+	@$(call touch)
+
+
+# ----------------------------------------------------------------------------
+# Target-Install-post
+# ----------------------------------------------------------------------------
+
+ifdef PTXCONF_IMAGE_KERNEL_INSTALL_EARLY
+$(STATEDIR)/kernel.targetinstall.post: $(IMAGEDIR)/linuximage
+ifdef PTXCONF_IMAGE_KERNEL_LZOP
+$(STATEDIR)/kernel.targetinstall.post: $(IMAGEDIR)/linuximage.lzo
+endif
+endif
+
+$(STATEDIR)/kernel.targetinstall.post:
+	@$(call targetinfo)
+
+ifdef PTXCONF_KERNEL_MODULES_INSTALL
+	@$(call install_init,  kernel-modules)
+	@$(call install_fixup, kernel-modules, PRIORITY,optional)
+	@$(call install_fixup, kernel-modules, SECTION,base)
+	@$(call install_fixup, kernel-modules, AUTHOR,"Robert Schwebel <r.schwebel@pengutronix.de>")
+	@$(call install_fixup, kernel-modules, DESCRIPTION,missing)
+
+	@$(call install_glob, kernel-modules, 0, 0, -, /lib/modules, *.ko,, n)
+	@$(call install_glob, kernel-modules, 0, 0, -, /lib/modules,, *.ko */build */source, n)
+
+	@$(call install_finish, kernel-modules)
+endif
+
+	@$(call touch)
+
+# ----------------------------------------------------------------------------
+# oldconfig / menuconfig
+# ----------------------------------------------------------------------------
+
+$(call ptx/kconfig-targets, kernel): $(STATEDIR)/kernel.extract
+	@$(call world/kconfig, KERNEL, $(subst kernel_,,$@))
+
+# vim: syntax=make
-- 
2.47.3




             reply	other threads:[~2025-12-11  9:35 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-11  9:35 Michael Olbrich [this message]
2025-12-11  9:35 ` [DistroKit] [PATCH 2/2] kernel: backport modules.builtin.modinfo permission fix Michael Olbrich
2025-12-11  9:59 ` [DistroKit] [PATCH 1/2] kernel: import rule from ptxdist-2025.11.0 Robert Schwebel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251211093545.1050096-1-m.olbrich@pengutronix.de \
    --to=m.olbrich@pengutronix.de \
    --cc=distrokit@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox