aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-03-09 23:53:02 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-03-09 23:53:02 +0200
commitf010ec624c4790c78aaa2f61536575b5ca1ab5a9 (patch)
tree0c1797683d13d5dc33596af34395e57438275aaf
parentbbed8ec3d11a3b852e43d0ac88208909d9901b8b (diff)
downloadmeson-f010ec624c4790c78aaa2f61536575b5ca1ab5a9.zip
meson-f010ec624c4790c78aaa2f61536575b5ca1ab5a9.tar.gz
meson-f010ec624c4790c78aaa2f61536575b5ca1ab5a9.tar.bz2
Prevent creation of targets with names that could lead to collisions.
-rw-r--r--coredata.py11
-rwxr-xr-xinterpreter.py6
2 files changed, 16 insertions, 1 deletions
diff --git a/coredata.py b/coredata.py
index 75eadfa..2269118 100644
--- a/coredata.py
+++ b/coredata.py
@@ -55,3 +55,14 @@ def save(obj, filename):
if obj.version != version:
raise RuntimeError('Fatal version mismatch corruption.')
pickle.dump(obj, open(filename, 'wb'))
+
+forbidden_target_names = {'clean': None,
+ 'coverage-text': None,
+ 'coverage-xml': None,
+ 'coverage-html': None,
+ 'phony': None,
+ 'all': None,
+ 'test': None,
+ 'install': None,
+ 'build.ninja': None
+ }
diff --git a/interpreter.py b/interpreter.py
index d745719..a9027fc 100755
--- a/interpreter.py
+++ b/interpreter.py
@@ -17,6 +17,7 @@
import mparser
import nodes
import environment
+import coredata
import os, sys, platform
import shutil
@@ -662,7 +663,7 @@ class Interpreter():
libname = args[0]
if libname in self.coredata.ext_libs and\
self.coredata.ext_libs[libname].found():
- return ExternalLibraryHolder(self.coredata.ext_progs[libname])
+ return ExternalLibraryHolder(self.coredata.ext_libs[libname])
result = self.environment.find_library(libname)
extlib = environment.ExternalLibrary(libname, result)
libobj = ExternalLibraryHolder(extlib)
@@ -789,6 +790,9 @@ class Interpreter():
args = self.flatten(args)
name = args[0]
sources = args[1:]
+ if name in coredata.forbidden_target_names:
+ raise InvalidArguments('Line %d: target name "%s" is reserved for Meson\'s internal use. Please rename.'\
+ % (node.lineno(), name))
try:
kw_src = self.flatten(kwargs['sources'])
if not isinstance(kw_src, list):