rainier_defconfig: Add multi-target support
Through OpenBMC and PLDM file.io, Power10 will support multiple MRW
definitions as part of one driver.
In order to achieve this in a staged approach, this commit introduces a
new 'openpower-pnor-p10' package that still creates the expected
pnor-related artifacts and intermediate files, while also creating the
individual files for each of the PNOR partitions (PAYLOAD, BOOTKERNEL)
inside the images/mmc directory. Each of those files will be suffixed
with ".P10" for target-agnostic files, or "uppercase-xml-name" (i.e.,
RAINIER_2U_XML) for target-specific files.
This patch also creates packages rainier-2u-xml and rainier-4u-xml(based
on machine-xml) that are both built and included in rainier_defconfig,
with rainier_2u_xml also serving as the 'legacy' pnor for smooth
transitions purposes.
Several other packages makefiles had to be reworked, but that should
allow both legacy openpower-pnor as well as the new mmc variant to build.
Signed-off-by: Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com>
diff --git a/openpower/package/pkg-versions.mk b/openpower/package/pkg-versions.mk
index be50245..3d967bf 100644
--- a/openpower/package/pkg-versions.mk
+++ b/openpower/package/pkg-versions.mk
@@ -58,7 +58,7 @@
rm -rf $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt; \
fi
-endef ###
+endef # $(2)_OPENPOWER_PATCH_FILE
### Create subpackage version file
define $(2)_OPENPOWER_VERSION_FILE
@@ -103,11 +103,15 @@
# Add new line to version.txt
echo "" >> $$($(2)_VERSION_FILE);
-endef ###
+endef # $(2)_OPENPOWER_VERSION_FILE
-# Add appropriate templates to hooks
+# Add appropriate templates to hooks if they're not there already
+ifeq (,$$(findstring $(2)_OPENPOWER_PATCH_FILE,$$($(2)_POST_PATCH_HOOKS)))
$(2)_POST_PATCH_HOOKS += $(2)_OPENPOWER_PATCH_FILE
+endif
+ifeq (,$$(findstring $(2)_OPENPOWER_VERSION_FILE,$$($(2)_PRE_CONFIGURE_HOOKS)))
$(2)_PRE_CONFIGURE_HOOKS += $(2)_OPENPOWER_VERSION_FILE
+endif
# Top-level rule to print or generate a subpackage version
$(1)-version: $$(if $$(wildcard $$($(2)_VERSION_FILE)),$(1)-print-version,$(1)-build-version)
@@ -128,99 +132,114 @@
@echo " End creating version string..."
@echo -n " version: "; cat $$($(2)_VERSION_FILE) | xargs echo
-endef
+endef # OPENPOWER_SUBPACKAGE_VERSION
-define OPENPOWER_VERSION
-UPPER_CASE_PKG = $(call UPPERCASE,$(1))
-$$(UPPER_CASE_PKG)_VERSION_FILE = $$(OPENPOWER_VERSION_DIR)/$(1).version.txt
+####
+# $(1) is the lowercase package version
+# $(2) is the uppercase pacakge version
+####
+define INNER_OPENPOWER_VERSION
+
+$(2)_VERSION_FILE = $$(OPENPOWER_VERSION_DIR)/$(1).version.txt
+ifeq ($$(BR2_PACKAGE_OPENPOWER_PNOR_P10),y)
+UPPER_CASE_SIGN_MODE = $(call UPPERCASE,$$(BR2_OPENPOWER_P10_SECUREBOOT_SIGN_MODE))
+CONFIG_NAME = $$(BR2_OPENPOWER_P10_CONFIG_NAME)
+VERSIONED_SUBPACKAGES = $$(OPENPOWER_PNOR_P10_VERSIONED_SUBPACKAGES)
+else
UPPER_CASE_SIGN_MODE = $(call UPPERCASE,$$(BR2_OPENPOWER_SECUREBOOT_SIGN_MODE))
+CONFIG_NAME = $$(BR2_OPENPOWER_CONFIG_NAME)
+VERSIONED_SUBPACKAGES = $$(OPENPOWER_VERSIONED_SUBPACKAGES)
+endif
-$$(eval $$(foreach pkg,$$(OPENPOWER_VERSIONED_SUBPACKAGES), \
+$$(eval $$(foreach pkg,$$(VERSIONED_SUBPACKAGES), \
$$(call OPENPOWER_SUBPACKAGE_VERSION,$$(pkg),$$(call UPPERCASE,$$(pkg)))))
### Combine subpackage files into one version file
-define $$(UPPER_CASE_PKG)_OPENPOWER_VERSION_FILE
+define $(2)_OPENPOWER_VERSION_FILE
mkdir -p "$$(OPENPOWER_VERSION_DIR)"
# Add vendor or default open-power
if [ -n "$$(OPBUILD_VENDOR)" ]; then \
-echo -n "$$(OPBUILD_VENDOR)-" > $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+echo -n "$$(OPBUILD_VENDOR)-" > $$($(2)_VERSION_FILE); \
else \
-echo -n "open-power-" > $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+echo -n "open-power-" > $$($(2)_VERSION_FILE); \
fi
# Add platform or default from defconfig
if [ -n "$$(OPBUILD_PLATFORM)" ]; then \
-echo -n "$$(OPBUILD_PLATFORM)-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+echo -n "$$(OPBUILD_PLATFORM)-" >> $$($(2)_VERSION_FILE); \
else \
-echo -n "$$(BR2_OPENPOWER_CONFIG_NAME)-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+echo -n "$$(CONFIG_NAME)-" >> $$($(2)_VERSION_FILE); \
fi
# Add op-build version
# Order: OPBUILD_VERSION, tag, commit, unknown
if [ -n "$$(OPBUILD_VERSION)" ]; then \
- echo -n "$$(OPBUILD_VERSION)" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+ echo -n "$$(OPBUILD_VERSION)" >> $$($(2)_VERSION_FILE); \
else \
cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; (git describe --always --dirty || echo "unknown") \
| xargs echo -n \
- >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+ >> $$($(2)_VERSION_FILE); \
fi
# Flag whether op-build is production signed
if [ "$$(UPPER_CASE_SIGN_MODE)" == 'PRODUCTION' ]; then \
- echo -n "-prod" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+ echo -n "-prod" >> $$($(2)_VERSION_FILE); \
fi
-# Add new line to $$($$(UPPER_CASE_PKG)_VERSION_FILE)
-echo "" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
+# Add new line to $$($(2)_VERSION_FILE)
+echo "" >> $$($(2)_VERSION_FILE);
# Add a specific line for op-build if it has been overwritten
if [ -n "$$(OPBUILD_VENDOR)" ]; then \
-echo -n " op-build-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+echo -n " op-build-" >> $$($(2)_VERSION_FILE); \
(cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; (git describe --always --dirty || echo "unknown")) \
| xargs echo \
- >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+ >> $$($(2)_VERSION_FILE); \
fi
# Include the currently checked-out buildroot version
-echo -n " buildroot-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
+echo -n " buildroot-" >> $$($(2)_VERSION_FILE);
(git describe --always --dirty || echo "unknown") \
| xargs echo \
- >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+ >> $$($(2)_VERSION_FILE); \
-# Combing subpackage version files into $$($$(UPPER_CASE_PKG)_VERSION_FILE)
+# Combing subpackage version files into $$($(2)_VERSION_FILE)
$$(foreach verFile,$$(ALL_SUBPACKAGE_VERSIONS),
if [ -f $$(verFile) ]; then cat $$(verFile) \
- >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); fi )
+ >>$$($(2)_VERSION_FILE); fi )
-endef ###
+endef # $(2)_OPENPOWER_VERSION_FILE
-$$(UPPER_CASE_PKG)_PRE_BUILD_HOOKS += $$(UPPER_CASE_PKG)_OPENPOWER_VERSION_FILE
+$(2)_PRE_BUILD_HOOKS += $(2)_OPENPOWER_VERSION_FILE
# Top-level rule to print or generate openpower-pnor version
-$(1)-version: $$(if $$(wildcard $$($$(UPPER_CASE_PKG)_VERSION_FILE)),$(1)-print-version,$(1)-build-version)
+$(1)-version: $$(if $$(wildcard $$($(2)_VERSION_FILE)),$(1)-print-version,$(1)-build-version)
# Rule to print out pnor version
$(1)-print-version:
- @echo "=== $$(UPPER_CASE_PKG)_VERSION ==="
- @cat $$($$(UPPER_CASE_PKG)_VERSION_FILE)
+ @echo "=== $(2)_VERSION ==="
+ @cat $$($(2)_VERSION_FILE)
@echo ""; echo "**See openpower/package/VERSION.readme for detailed info on package strings"; echo ""
# Rule to generate pnor version
-$(1)-build-version: $$(foreach pkg,$$(OPENPOWER_VERSIONED_SUBPACKAGES), $$(pkg)-version)
- @$$($$(UPPER_CASE_PKG)_OPENPOWER_VERSION_FILE)
- @echo "=== $$(UPPER_CASE_PKG)_VERSION ==="
- @cat $$($$(UPPER_CASE_PKG)_VERSION_FILE)
+$(1)-build-version: $$(foreach pkg,$$(VERSIONED_SUBPACKAGES), $$(pkg)-version)
+ @$$($(2)_OPENPOWER_VERSION_FILE)
+ @echo "=== $(2)_VERSION ==="
+ @cat $$($(2)_VERSION_FILE)
@echo ""; echo "**See openpower/package/VERSION.readme for detailed info on package strings"; echo ""
# Rule to force re-generation of all versioned subpackages
-$(1)-build-version-all: $$(foreach pkg,$$(OPENPOWER_VERSIONED_SUBPACKAGES), $$(pkg)-build-version)
- @$$($$(UPPER_CASE_PKG)_OPENPOWER_VERSION_FILE)
- @echo "=== $$(UPPER_CASE_PKG)_VERSION ==="
- @cat $$($$(UPPER_CASE_PKG)_VERSION_FILE)
+$(1)-build-version-all: $$(foreach pkg,$$(VERSIONED_SUBPACKAGES), $$(pkg)-build-version)
+ @$$($(2)_OPENPOWER_VERSION_FILE)
+ @echo "=== $(2)_VERSION ==="
+ @cat $$($(2)_VERSION_FILE)
@echo ""; echo "**See openpower/package/VERSION.readme for detailed info on package strings"; echo ""
-endef
+endef # INNER_OPENPOWER_VERSION
+
+OPENPOWER_VERSION = $(call INNER_OPENPOWER_VERSION,$(pkgname),$(call UPPERCASE,$(pkgname)))
+