diff options
author | Stewart Smith <stewart@linux.vnet.ibm.com> | 2017-05-15 12:14:59 +1000 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2017-05-16 10:31:11 +1000 |
commit | cd986e4cf84a526ee9653f1282e7889a9312f658 (patch) | |
tree | c89579ad430371bd21416c1e8672e4ad00f1d1c1 /openpower/package/machine-xml | |
parent | 810aaed1299942c1e80d20078c309ba6374fec06 (diff) | |
download | blackbird-op-build-cd986e4cf84a526ee9653f1282e7889a9312f658.tar.gz blackbird-op-build-cd986e4cf84a526ee9653f1282e7889a9312f658.zip |
Single XML package rather than one per platform
This saves us a *lot* of copy&pasted build foo and replaces it with a couple
of config options that can be set in menuconfig.
This makes adding a new platform a much smaller operation, requiring fewer
changes that are scattered throughout the buildroot tree.
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'openpower/package/machine-xml')
-rwxr-xr-x | openpower/package/machine-xml/Config.in | 63 | ||||
-rw-r--r-- | openpower/package/machine-xml/machine-xml.mk | 107 |
2 files changed, 170 insertions, 0 deletions
diff --git a/openpower/package/machine-xml/Config.in b/openpower/package/machine-xml/Config.in new file mode 100755 index 00000000..3f2163f0 --- /dev/null +++ b/openpower/package/machine-xml/Config.in @@ -0,0 +1,63 @@ +config BR2_PACKAGE_MACHINE_XML + bool "machine_xml" + default y if (BR2_OPENPOWER_PLATFORM) + select BR2_PACKAGE_COMMON_P8_XML + help + +choice + prompt "Machine XML location" + +config BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT + bool "OpenPOWER Github project name" + +config BR2_OPENPOWER_MACHINE_XML_CUSTOM_GIT + bool "Custom URL of machine xml repository" + +endchoice + +config BR2_OPENPOWER_MACHINE_XML_FILTER_UNWANTED_ATTRIBUTES + bool "Filter Unwanted Attributes" + default y if (BR2_OPENPOWER_POWER9) + default n + +config BR2_OPENPOWER_MACHINE_XML_OPPOWERVM_ATTRIBUTES + bool "OPPOWERVM Attributes/Target" + default y if (BR2_OPENPOWER_POWER9) + default n + +config BR2_OPENPOWER_MACHINE_XML_TARGET_TYPES_OPENPOWER_XML + bool "Include target_types_openpower.xml" + default y if (BR2_OPENPOWER_POWER9) + default n + +config BR2_OPENPOWER_MACHINE_XML_CUSTOM_GIT_VALUE + string "URL of machine xml repository" + depends on BR2_OPENPOWER_MACHINE_XML_CUSTOM_GIT + +config BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE + string "The Github project name (e.g. palmetto-xml)" + depends on BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT + +config BR2_OPENPOWER_MACHINE_XML_VERSION + string "Version of Machine XML" + +config BR2_OPENPOWER_MACHINE_XML_FILENAME + string "Machine XML filename (e.g. habanero.xml)" + +config BR2_OPENPOWER_SYSTEM_XML_FILENAME + string "Targeting system xml filename" + default "" + help + Defines the name of the system XML filename to be used when creating targeting binary image + +config BR2_OPENPOWER_MRW_XML_FILENAME + string "Targeting mrw xml filename" + default "" + help + Defines the name of the mrw XML filename to be used when creating targeting binary image + +config BR2_OPENPOWER_BIOS_XML_FILENAME + string "BIOS metadata XML filename" + default "" + help + Defines the name of the BIOS XML filename to parse when generating BIOS metadata diff --git a/openpower/package/machine-xml/machine-xml.mk b/openpower/package/machine-xml/machine-xml.mk new file mode 100644 index 00000000..5ac4bc2a --- /dev/null +++ b/openpower/package/machine-xml/machine-xml.mk @@ -0,0 +1,107 @@ +################################################################################ +# machine_xml +# +################################################################################ + +MACHINE_XML_VERSION ?= $(BR2_OPENPOWER_MACHINE_XML_VERSION) +ifeq ($(BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT),y) +MACHINE_XML_SITE = $(call github,open-power,$(BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE),$(MACHINE_XML_VERSION)) +else ifeq ($(BR2_OPENPOWER_MACHINE_XML_CUSTOM_GIT),y) +MACHINE_XML_SITE_METHOD = git +MACHINE_XML_SITE = $(BR2_OPENPOWER_MACHINE_XML_CUSTOM_GIT_VALUE) +endif + +MACHINE_XML_LICENSE = Apache-2.0 +MACHINE_XML_LICENSE_FILES = LICENSE +MACHINE_XML_DEPENDENCIES = hostboot openpower-mrw common-p8-xml + +MACHINE_XML_INSTALL_IMAGES = YES +MACHINE_XML_INSTALL_TARGET = YES + +MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch +MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images + +# Defines for BIOS metadata creation +BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd +OPENPOWER_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_OPENPOWER_BIOS_XML_FILENAME) +BIOS_XML_METADATA_FILE = \ + $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml +PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt +PETITBOOT_BIOS_XML_METADATA_FILE = \ + $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml +PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \ + $(TARGET_DIR)/usr/share/bios_metadata.xml + +ifeq ($(BR2_OPENPOWER_MACHINE_XML_OPPOWERVM_ATTRIBUTES),y) +MACHINE_XML_OPPOWERVM_ATTR_XML = $(MRW_HB_TOOLS)/attribute_types_oppowervm.xml +MACHINE_XML_OPPOWERVM_TARGET_XML = $(MRW_HB_TOOLS)/target_types_oppowervm.xml +endif +ifeq ($(BR2_OPENPOWER_MACHINE_XML_TARGET_TYPES_OPENPOWER_XML),y) +MACHINE_XML_TARGET_TYPES_OPENPOWER_XML = $(MRW_HB_TOOLS)/target_types_openpower.xml +endif + +define MACHINE_XML_FILTER_UNWANTED_ATTRIBUTES + chmod +x $(MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl + + $(MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl \ + --tgt-xml $(MRW_HB_TOOLS)/target_types_merged.xml \ + --tgt-xml $(MRW_HB_TOOLS)/target_types_hb.xml \ + --tgt-xml $(MRW_HB_TOOLS)/target_types_oppowervm.xml \ + --tgt-xml $(MRW_HB_TOOLS)/target_types_openpower.xml \ + --mrw-xml $(MRW_SCRATCH)/$(BR2_OPENPOWER_MRW_XML_FILENAME) + + cp $(MRW_SCRATCH)/$(BR2_OPENPOWER_MRW_XML_FILENAME).updated $(MRW_SCRATCH)/$(BR2_OPENPOWER_MRW_XML_FILENAME) +endef + +define MACHINE_XML_BUILD_CMDS + # copy the machine xml where the common lives + bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)' + + # generate the system mrw xml + perl -I $(MRW_HB_TOOLS) \ + $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/$(BR2_OPENPOWER_MACHINE_XML_FILENAME) + + $(if $(BR2_OPENPOWER_MACHINE_XML_FILTER_UNWANTED_ATTRIBUTES), $(call MACHINE_XML_FILTER_UNWANTED_ATTRIBUTES)) + + # merge in any system specific attributes, hostboot attributes + $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_OPENPOWER_SYSTEM_XML_FILENAME) \ + $(MRW_HB_TOOLS)/attribute_types.xml \ + $(MRW_HB_TOOLS)/attribute_types_hb.xml \ + $(MACHINE_XML_OPPOWERVM_ATTR_XML) \ + $(MRW_HB_TOOLS)/attribute_types_openpower.xml \ + $(MRW_HB_TOOLS)/target_types_merged.xml \ + $(MRW_HB_TOOLS)/target_types_hb.xml \ + $(MACHINE_XML_OPPOWERVM_TARGET_XML) \ + $(MACHINE_XML_TARGET_TYPES_OPENPOWER_XML) \ + $(MRW_SCRATCH)/$(BR2_OPENPOWER_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml; + + # creating the targeting binary + $(MRW_HB_TOOLS)/xmltohb.pl \ + --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \ + --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \ + --src-output-dir=none \ + --img-output-dir=$(MRW_HB_TOOLS)/ \ + --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \ + --bios-xml-file=$(OPENPOWER_BIOS_XML_CONFIG_FILE) \ + --bios-schema-file=$(BIOS_SCHEMA_FILE) \ + --bios-output-file=$(BIOS_XML_METADATA_FILE) + + # Transform BIOS XML into Petitboot specific BIOS XML via the schema + xsltproc -o \ + $(PETITBOOT_BIOS_XML_METADATA_FILE) \ + $(PETITBOOT_XSLT_FILE) \ + $(BIOS_XML_METADATA_FILE) +endef + +define MACHINE_XML_INSTALL_IMAGES_CMDS + mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME) +endef + +define MACHINE_XML_INSTALL_TARGET_CMDS + # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir + $(INSTALL) -D -m 0644 \ + $(PETITBOOT_BIOS_XML_METADATA_FILE) \ + $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE) +endef + +$(eval $(generic-package)) |