diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-01-01 20:08:03 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-01-01 20:08:03 +0200 |
commit | 1892e92a93c4a261fa030118b66cd7bbb02bf62f (patch) | |
tree | cfc2297c0271f31458ca98ecbf8e0a1072fb0aef | |
parent | 16aa9b16b2260ec60a0aa37c7143224f688c1155 (diff) | |
download | meson-1892e92a93c4a261fa030118b66cd7bbb02bf62f.zip meson-1892e92a93c4a261fa030118b66cd7bbb02bf62f.tar.gz meson-1892e92a93c4a261fa030118b66cd7bbb02bf62f.tar.bz2 |
Put temporary stuff in a scratch directory.
-rwxr-xr-x | builder.py | 2 | ||||
-rwxr-xr-x | environment.py | 5 | ||||
-rwxr-xr-x | interpreter.py | 11 | ||||
-rw-r--r-- | test cases/1 trivial/builder.txt | 1 |
4 files changed, 14 insertions, 5 deletions
@@ -67,7 +67,7 @@ class Builder(): raise interpreter.InvalidCode('Builder file is empty.') assert(isinstance(code, str)) env = environment.Environment(self.source_dir, self.build_dir) - intr = interpreter.Interpreter(code) + intr = interpreter.Interpreter(code, env.get_scratch_dir()) g = shellgenerator.ShellGenerator(intr, env) g.generate() diff --git a/environment.py b/environment.py index 2fbe652..786607e 100755 --- a/environment.py +++ b/environment.py @@ -108,6 +108,8 @@ class Environment(): def __init__(self, source_dir, build_dir): self.source_dir = source_dir self.build_dir = build_dir + self.scratch_dir = os.path.join(build_dir, 'builder-private') + os.makedirs(self.scratch_dir, exist_ok=True) self.default_c = ['cc'] self.default_cxx = ['c++'] @@ -124,6 +126,9 @@ class Environment(): if evar in os.environ: return os.environ[evar].split() return self.default_c + + def get_scratch_dir(self): + return self.scratch_dir def get_cxx_compiler(self): evar = 'CXX' diff --git a/interpreter.py b/interpreter.py index e35c203..4d28ce6 100755 --- a/interpreter.py +++ b/interpreter.py @@ -66,14 +66,15 @@ class Executable(BuildTarget): class Interpreter(): - def __init__(self, code): + def __init__(self, code, scratch_dir): self.ast = parser.build_ast(code) self.sanity_check_ast() self.project = None self.compilers = [] self.executables = {} self.variables = {} - + self.scratch_dir = scratch_dir + def get_project(self): return self.project @@ -136,7 +137,9 @@ class Interpreter(): raise InvalidCode('Function language() can only be called once (line %d).' % node.lineno()) lang = args[0] if lang.lower() == 'c': - self.compilers.append(environment.detect_c_compiler('gcc')) + comp = environment.detect_c_compiler('gcc') + comp.sanity_check(self.scratch_dir) + self.compilers.append(comp) else: raise InvalidCode('Tried to use unknown language "%s".' % lang) @@ -231,5 +234,5 @@ if __name__ == '__main__': dep = find_dep('gtk+-3.0') prog.add_dep(dep) """ - i = Interpreter(code) + i = Interpreter(code, '.') i.run() diff --git a/test cases/1 trivial/builder.txt b/test cases/1 trivial/builder.txt index a499cf7..fdd1c62 100644 --- a/test cases/1 trivial/builder.txt +++ b/test cases/1 trivial/builder.txt @@ -1,2 +1,3 @@ project('trivial test') +language('c') |