aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter/interpreter.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2022-02-28 16:01:11 -0800
committerDylan Baker <dylan@pnwbakers.com>2022-03-03 10:29:14 -0800
commit3e90f277032d8ce91d99ed1fe62567701ce62622 (patch)
tree9358c2411405549a0e9eb075ae2023edf616da4a /mesonbuild/interpreter/interpreter.py
parentb07d4bb2068f90bfbb0aa6e6ea91412db29388ea (diff)
downloadmeson-3e90f277032d8ce91d99ed1fe62567701ce62622.zip
meson-3e90f277032d8ce91d99ed1fe62567701ce62622.tar.gz
meson-3e90f277032d8ce91d99ed1fe62567701ce62622.tar.bz2
interpreter: replace build_def_files with OrderedSet
We do a bunch of backbending to make sure we don't have duplicates, let's just use the right datastructure to begin with.
Diffstat (limited to 'mesonbuild/interpreter/interpreter.py')
-rw-r--r--mesonbuild/interpreter/interpreter.py14
1 files changed, 7 insertions, 7 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index 5e8240e..5d2e476 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -308,10 +308,10 @@ class Interpreter(InterpreterBase, HoldableObject):
# For non-meson subprojects, we'll be using the ast. Even if it does
# exist we don't want to add a dependency on it, it's autogenerated
# from the actual build files, and is just for reference.
- self.build_def_files = []
+ self.build_def_files: mesonlib.OrderedSet[str] = mesonlib.OrderedSet()
build_filename = os.path.join(self.subdir, environment.build_filename)
if not is_translated:
- self.build_def_files.append(build_filename)
+ self.build_def_files.add(build_filename)
if not mock:
self.parse_project()
self._redetect_machines()
@@ -503,7 +503,7 @@ class Interpreter(InterpreterBase, HoldableObject):
else:
raise InterpreterException(f'Module returned a value of unknown type {v!r}.')
- def get_build_def_files(self) -> T.List[str]:
+ def get_build_def_files(self) -> mesonlib.OrderedSet[str]:
return self.build_def_files
def add_build_def_file(self, f: mesonlib.FileOrString) -> None:
@@ -539,7 +539,7 @@ class Interpreter(InterpreterBase, HoldableObject):
else:
return
if f not in self.build_def_files:
- self.build_def_files.append(f)
+ self.build_def_files.add(f)
def get_variables(self):
return self.variables
@@ -938,9 +938,9 @@ external dependencies (including libraries) must go to "dependencies".''')
self.subprojects[subp_name] = SubprojectHolder(subi, subdir, warnings=subi_warnings)
# Duplicates are possible when subproject uses files from project root
if build_def_files:
- self.build_def_files = list(set(self.build_def_files + build_def_files))
+ self.build_def_files.update(build_def_files)
# We always need the subi.build_def_files, to propgate sub-sub-projects
- self.build_def_files = list(set(self.build_def_files + subi.build_def_files))
+ self.build_def_files.update(subi.build_def_files)
self.build.merge(subi.build)
self.build.subprojects[subp_name] = subi.project_version
self.coredata.initialized_subprojects.add(subp_name)
@@ -2135,7 +2135,7 @@ external dependencies (including libraries) must go to "dependencies".''')
self.subdir = subdir
os.makedirs(os.path.join(self.environment.build_dir, subdir), exist_ok=True)
buildfilename = os.path.join(self.subdir, environment.build_filename)
- self.build_def_files.append(buildfilename)
+ self.build_def_files.add(buildfilename)
absname = os.path.join(self.environment.get_source_dir(), buildfilename)
if not os.path.isfile(absname):
self.subdir = prev_subdir