diff options
author | Christian Mauderer <christian.mauderer@embedded-brains.de> | 2018-04-04 15:23:39 +0200 |
---|---|---|
committer | Christian Mauderer <christian.mauderer@embedded-brains.de> | 2018-04-04 15:23:39 +0200 |
commit | e75820d55d195cfbd91edc21d387170ed88a98d8 (patch) | |
tree | 9623b249776324fe4f499d1d35dc413a0609271f | |
parent | 524cccbdca56422810181fdaf1a86d5508efd73a (diff) |
FIXME: waf: Use ini for config.
-rwxr-xr-x | builder.py | 2 | ||||
-rw-r--r-- | buildset/base.ini | 58 | ||||
-rw-r--r-- | buildset/base_conf.py | 61 | ||||
-rw-r--r-- | buildset/ext_conf.py | 9 | ||||
-rw-r--r-- | buildset/extended.ini | 6 | ||||
-rw-r--r-- | wscript | 65 |
6 files changed, 117 insertions, 84 deletions
@@ -671,7 +671,7 @@ class ModuleManager(object): return self.configuration def updateConfiguration(self, config): - return self.configuration.update(config) + self.configuration.update(config) def setModuleConfigiuration(self): mods = sorted(self.modules.keys()) diff --git a/buildset/base.ini b/buildset/base.ini new file mode 100644 index 00000000..fe3ae072 --- /dev/null +++ b/buildset/base.ini @@ -0,0 +1,58 @@ +# +# Default configuration. +# + +[general] +name = base + +[modules-enabled] +altq = 1 +base = 1 +cam = 1 +contrib_expat = 1 +contrib_libpcap = 1 +crypto = 1 +crypto_openssl = 1 +dev_input = 1 +dev_net = 1 +dev_nic = 1 +dev_nic_broadcomm = 1 +dev_nic_dc = 1 +dev_nic_e1000 = 1 +dev_nic_fxp = 1 +dev_nic_re = 1 +dev_nic_smc = 1 +dev_usb = 1 +dev_usb_controller = 1 +dev_usb_controller_bbb = 1 +dev_usb_input = 1 +dev_usb_net = 1 +dev_usb_quirk = 1 +dev_usb_serial = 1 +dev_usb_storage = 1 +dev_usb_wlan = 1 +dev_wlan_rtwn = 1 +dhcpcd = 1 +dpaa = 1 +evdev = 1 +fdt = 1 +in_cksum = 1 +ipfw = 1 +mdnsresponder = 1 +mghttpd = 1 +mmc = 1 +mmc_ti = 1 +net = 1 +net80211 = 1 +netinet = 1 +netinet6 = 1 +opencrypto = 1 +pci = 1 +pf = 1 +rtems = 1 +tests = 1 +tty = 1 +user_space = 1 +user_space_wlanstats = 1 +usr_sbin_tcpdump = 1 +usr_sbin_wpa_supplicant = 1 diff --git a/buildset/base_conf.py b/buildset/base_conf.py deleted file mode 100644 index fa20805b..00000000 --- a/buildset/base_conf.py +++ /dev/null @@ -1,61 +0,0 @@ -# -# Default configuration. -# - -def get_configuration(): - configuration = { - 'name' : "bsd", - 'modules-enabled' : [ - 'altq', - 'base', - 'cam', - 'contrib_expat', - 'contrib_libpcap', - 'crypto', - 'crypto_openssl', - 'dev_input', - 'dev_net', - 'dev_nic', - 'dev_nic_broadcomm', - 'dev_nic_dc', - 'dev_nic_e1000', - 'dev_nic_fxp', - 'dev_nic_re', - 'dev_nic_smc', - 'dev_usb', - 'dev_usb_controller', - 'dev_usb_controller_bbb', - 'dev_usb_input', - 'dev_usb_net', - 'dev_usb_quirk', - 'dev_usb_serial', - 'dev_usb_storage', - 'dev_usb_wlan', - 'dev_wlan_rtwn', - 'dhcpcd', - 'dpaa', - 'evdev', - 'fdt', - 'in_cksum', - 'ipfw', - 'mdnsresponder', - 'mghttpd', - 'mmc', - 'mmc_ti', - 'net', - 'net80211', - 'netinet', - 'netinet6', - 'opencrypto', - 'pci', - 'pf', - 'rtems', - 'tests', - 'tty', - 'user_space', - 'user_space_wlanstats', - 'usr_sbin_tcpdump', - 'usr_sbin_wpa_supplicant', - ] - } - return configuration diff --git a/buildset/ext_conf.py b/buildset/ext_conf.py deleted file mode 100644 index 55f83147..00000000 --- a/buildset/ext_conf.py +++ /dev/null @@ -1,9 +0,0 @@ -def get_configuration(): - import base_conf - - configuration = base_conf.get_configuration() - configuration['name'] = "bsd_ext" - #configuration['modules-enabled'].extend([ - # 'some_mod' - # ]) - return configuration diff --git a/buildset/extended.ini b/buildset/extended.ini new file mode 100644 index 00000000..e761cf95 --- /dev/null +++ b/buildset/extended.ini @@ -0,0 +1,6 @@ +[general] +name = extended +extends = base.ini + +[modules-enabled] +tests = 0 @@ -47,19 +47,55 @@ import waf_libbsd import os.path import runpy import sys +try: + import configparser +except ImportError: + import ConfigParser as configparser builders = None BUILDSET_DIR = "buildset" +BUILDSET_DEFAULT = "buildset/base.ini" + +def load_ini(conf, f): + ini = configparser.ConfigParser() + ini.read(f) + if not ini.has_section('general'): + conf.fatal("'{}' is missing a general section.".format(f)) + if ini.has_option('general', 'extends'): + extends = ini.get('general', 'extends') + extendfile = None + if os.path.isfile(extends): + extendfile = extends + elif os.path.isfile(os.path.join(BUILDSET_DIR, extends)): + extendfile = os.path.join(BUILDSET_DIR, extends) + else: + conf.fatal("'{}': Invalid file given for general/extends:'{}'" + .format(f, extends)) + add = load_ini(conf, extendfile) + for s in add.sections(): + if not ini.has_section(s): + ini.add_section(s) + for o in add.options(s): + ini.set(s, o, add.get(s,o)) + return ini + +def load_config(conf, f): + ini = load_ini(conf, f) + config = {} -def load_conf_from_file(f): - pathsave = sys.path[:] - sys.path.append(BUILDSET_DIR) - sys.path.append(os.path.dirname(f)) - ns = runpy.run_path(f) - conf = ns['get_configuration']() - sys.path = pathsave - return conf + if not ini.has_option('general', 'name'): + conf.fatal("'{}' is missing a general/name.".format(f)) + config['name'] = ini.get('general', 'name') + + config['modules-enabled'] = [] + mods = [] + if ini.has_section('modules-enabled'): + mods = ini.options('modules-enabled') + for mod in mods: + if ini.getboolean('modules-enabled', mod): + config['modules-enabled'].append(mod) + return config def create_builder(conf): global builders @@ -69,7 +105,7 @@ def create_builder(conf): for bs in conf.env.BUILDSET: builder = waf_libbsd.Builder() libbsd.load(builder) - bsconfig = load_conf_from_file(bs) + bsconfig = load_config(conf, bs) builder.updateConfiguration(bsconfig) builder.generate(rtems_version) builders.append(builder) @@ -120,7 +156,6 @@ def bsp_configure(conf, arch_bsp): builder.bsp_configure(conf, arch_bsp) def configure(conf): - create_builder(conf); if conf.options.auto_regen: conf.find_program("lex", mandatory = True) conf.find_program("rpcgen", mandatory = True) @@ -132,15 +167,19 @@ def configure(conf): conf.env.OPTIMIZATION = conf.options.optimization conf.env.BUILDSET = [] if conf.options.buildset == []: - conf.options.buildset.append(BUILDSET_DIR) + conf.options.buildset.append(BUILDSET_DEFAULT) for bs in conf.options.buildset: if os.path.isdir(bs): for f in os.listdir(bs): - if f[-3:] == ".py": + if f[-4:] == ".ini": conf.env.BUILDSET.append(os.path.join(bs,f)) else: - conf.env.BUILDSET.append(bs) + for f in bs.split(','): + conf.env.BUILDSET.append(f) + + create_builder(conf); rtems.configure(conf, bsp_configure) + conf.msg('Enabled buildsets: ', conf.env.BUILDSET) for builder in builders: builder.configure(conf) |