From 4501eaa3c6eac161ec0aaec87d7b648361552912 Mon Sep 17 00:00:00 2001 From: Mark Hatle Date: Sat, 18 Dec 2021 13:44:31 -0800 Subject: Deprecate BOARD and BOARD_VARIANT support If the BOARD and/or BOARD_VARIANT is set, continue to allow this to work, however warn the user it is deprecated. Signed-off-by: Mark Hatle --- meta-xilinx-core/classes/xilinx-deprecated.bbclass | 73 ++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 meta-xilinx-core/classes/xilinx-deprecated.bbclass (limited to 'meta-xilinx-core/classes/xilinx-deprecated.bbclass') diff --git a/meta-xilinx-core/classes/xilinx-deprecated.bbclass b/meta-xilinx-core/classes/xilinx-deprecated.bbclass new file mode 100644 index 00000000..b9a44fc7 --- /dev/null +++ b/meta-xilinx-core/classes/xilinx-deprecated.bbclass @@ -0,0 +1,73 @@ +# Class to add a deprecated warning from various configuration files. + +# Immediately after the ConfigParsed event handler, warn the user of any +# deprecated files the user has used. +addhandler xilinx_deprecated_config_eventhandler +xilinx_deprecated_config_eventhandler[eventmask] = "bb.event.ConfigParsed" +python xilinx_deprecated_config_eventhandler () { + # Check for BOARD & BOARD_VARIANT usage + if d.getVar('BOARD') or d.getVar('BOARD_VARIANT'): + bb.warn("Deprecated BOARD (%s) or BOARD_VARIANT (%s) is being used." % (d.getVar('BOARD'), d.getVar('BOARD_VARIANT'))) + + if d.getVar('MACHINE') != d.getVar('ORIG_MACHINE'): + if d.getVar('BOARD_VARIANT') or d.getVar('BOARD') == d.getVar('MACHINE'): + if not check_conf_exists("conf/machine/${MACHINE}.conf", d): + mach_path = os.path.join(d.getVar('TOPDIR'), "conf/machine", d.getVar('MACHINE') + '.conf') + bb.utils.mkdirhier(os.path.dirname(mach_path)) + bb.warn('Generating (board_variant) MACHINE file: %s' % mach_path) + with open(mach_path, "w") as f: + f.write('#@TYPE: Machine\n') + f.write('#@NAME: %s\n' % d.getVar('MACHINE')) + f.write('#@DESCRIPTION: Generated %s machine\n' % d.getVar('MACHINE')) + f.write('\n') + f.write('#### Preamble\n') + f.write('''MACHINEOVERRIDES =. "${@['', '%s:']['%s' != '${MACHINE}']}"\n''' % (d.getVar('MACHINE'), d.getVar('MACHINE'))) + f.write('#### Regular settings follow\n') + f.write('\n') + f.write('unset BOARD\n') + f.write('unset BOARD_VARIANT\n') + f.write('\n') + f.write('DEFAULTTUNE ?= "%s"\n' % d.getVar('DEFAULTTUNE')) + if d.getVar('TUNE_FEATURES:tune-microblaze'): + f.write('TUNE_FEATURES:tune-microblaze ?= "%s"\n' % d.getVar('TUNE_FEATURES')) + if d.getVar('SOC_VARIANT'): + f.write('SOC_VARIANT ?= "%s"\n' % d.getVar('SOC_VARIANT')) + f.write('\n') + f.write('require conf/machine/%s.conf\n' % [d.getVar('ORIG_MACHINE'), d.getVar('BOARD')][bool(d.getVar('BOARD_VARIANT'))]) + f.write('\n') + f.write('#### No additional settings should be after the Postamble\n') + f.write('#### Postamble\n') + f.write('''PACKAGE_EXTRA_ARCHS:append = "${@['', ' %s']['%s' != "${MACHINE}"]}"\n''' % ((d.getVar('MACHINE_ARCH'), d.getVar('MACHINE')))) + bb.warn('Note: The generated machine conf file may be incomplete. If so copy the missing settings from the original conf files.') + bb.warn('In the future use: MACHINE = "%s"' % d.getVar('MACHINE')) + if d.getVar('BOARD') and d.getVar('BOARD') != d.getVar('MACHINE'): + if not check_conf_exists("conf/machine/${BOARD}.conf", d): + mach_path = os.path.join(d.getVar('TOPDIR'), "conf/machine", d.getVar('BOARD') + '.conf') + bb.utils.mkdirhier(os.path.dirname(mach_path)) + bb.warn('Generating (board) MACHINE file: %s' % mach_path) + with open(mach_path, "w") as f: + f.write('#@TYPE: Machine\n') + f.write('#@NAME: %s\n' % d.getVar('BOARD')) + f.write('#@DESCRIPTION: Generated %s machine\n' % d.getVar('BOARD')) + f.write('\n') + f.write('#### Preamble\n') + f.write('''MACHINEOVERRIDES =. "${@['', '%s:']['%s' != '${MACHINE}']}"\n''' % (d.getVar('BOARD'), d.getVar('BOARD'))) + f.write('#### Regular settings follow\n') + f.write('\n') + f.write('unset BOARD\n') + f.write('unset BOARD_VARIANT\n') + f.write('require conf/machine/%s.conf\n' % d.getVar('ORIG_MACHINE')) + f.write('\n') + f.write('#### No additional settings should be after the Postamble\n') + f.write('#### Postamble\n') + f.write('''PACKAGE_EXTRA_ARCHS:append = "${@['', ' %s']['%s' != "${MACHINE}"]}"\n''' % ((d.getVar('BOARD_ARCH'), d.getVar('BOARD')))) + bb.warn('Note: The generated machine conf file may be incomplete. If so copy the missing settings from the original conf files.') + d.delVar('ORIG_MACHINE') + + msg_list = d.getVarFlags('XILINX_DEPRECATED') or [] + for msg_source in msg_list: + if msg_source == "doc": + continue + msg = d.getVarFlag('XILINX_DEPRECATED', msg_source) or "" + bb.warn('%s: %s' % (msg_source, msg)) +} -- cgit v1.2.3-54-g00ecf