summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Mauderer <christian.mauderer@embedded-brains.de>2018-04-04 15:23:39 +0200
committerChristian Mauderer <christian.mauderer@embedded-brains.de>2018-04-04 15:23:39 +0200
commite75820d55d195cfbd91edc21d387170ed88a98d8 (patch)
tree9623b249776324fe4f499d1d35dc413a0609271f
parent524cccbdca56422810181fdaf1a86d5508efd73a (diff)
FIXME: waf: Use ini for config.
-rwxr-xr-xbuilder.py2
-rw-r--r--buildset/base.ini58
-rw-r--r--buildset/base_conf.py61
-rw-r--r--buildset/ext_conf.py9
-rw-r--r--buildset/extended.ini6
-rw-r--r--wscript65
6 files changed, 117 insertions, 84 deletions
diff --git a/builder.py b/builder.py
index 23ae3f1c..c97f20e4 100755
--- a/builder.py
+++ b/builder.py
@@ -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
diff --git a/wscript b/wscript
index 0c762b81..0817f270 100644
--- a/wscript
+++ b/wscript
@@ -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)