aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2018-11-09 13:32:46 -0500
committerXavier Claessens <xclaesse@gmail.com>2018-11-09 20:32:52 -0500
commit8aeb96777333f83c950a8d654c38a4c412235cf8 (patch)
treee59bdd778610733ccf98810bbaa00682c9db2774
parent96f8842b7926b76d3034a8891dd785e09c0e6858 (diff)
downloadmeson-8aeb96777333f83c950a8d654c38a4c412235cf8.zip
meson-8aeb96777333f83c950a8d654c38a4c412235cf8.tar.gz
meson-8aeb96777333f83c950a8d654c38a4c412235cf8.tar.bz2
coredata: Do not use ':' as key delimited in cmd_line.txt
-rw-r--r--mesonbuild/coredata.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py
index cdfed7c..245741a 100644
--- a/mesonbuild/coredata.py
+++ b/mesonbuild/coredata.py
@@ -460,12 +460,18 @@ class CoreData:
sub = 'In subproject {}: '.format(subproject) if subproject else ''
mlog.warning('{}Unknown options: "{}"'.format(sub, unknown_options))
+class CmdLineFileParser(configparser.ConfigParser):
+ def __init__(self):
+ # We don't want ':' as key delimiter, otherwise it would break when
+ # storing subproject options like "subproject:option=value"
+ super().__init__(delimiters=['='])
+
def get_cmd_line_file(build_dir):
return os.path.join(build_dir, 'meson-private', 'cmd_line.txt')
def read_cmd_line_file(build_dir, options):
filename = get_cmd_line_file(build_dir)
- config = configparser.ConfigParser()
+ config = CmdLineFileParser()
config.read(filename)
# Do a copy because config is not really a dict. options.cmd_line_options
@@ -480,7 +486,7 @@ def read_cmd_line_file(build_dir, options):
def write_cmd_line_file(build_dir, options):
filename = get_cmd_line_file(build_dir)
- config = configparser.ConfigParser()
+ config = CmdLineFileParser()
properties = {}
if options.cross_file is not None:
@@ -493,7 +499,7 @@ def write_cmd_line_file(build_dir, options):
def update_cmd_line_file(build_dir, options):
filename = get_cmd_line_file(build_dir)
- config = configparser.ConfigParser()
+ config = CmdLineFileParser()
config.read(filename)
config['options'].update(options.cmd_line_options)
with open(filename, 'w') as f: