aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-02-23 13:11:47 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-02-23 13:11:47 +0200
commit816752f51a5fad8200eefe17908903ccd11bd014 (patch)
tree64907df457f4a41bea83fd72e39684b25790281a
parent2438953b8e2e7f70cc4b71b320b2c2619c24d273 (diff)
downloadmeson-816752f51a5fad8200eefe17908903ccd11bd014.zip
meson-816752f51a5fad8200eefe17908903ccd11bd014.tar.gz
meson-816752f51a5fad8200eefe17908903ccd11bd014.tar.bz2
Determine location of scripts properly.
-rwxr-xr-xenvironment.py11
-rwxr-xr-xgenerators.py12
2 files changed, 14 insertions, 9 deletions
diff --git a/environment.py b/environment.py
index 86ef9bc..c376a3a 100755
--- a/environment.py
+++ b/environment.py
@@ -227,6 +227,7 @@ header_suffixes = ['h', 'hh', 'hpp', 'hxx', 'H']
class Environment():
def __init__(self, source_dir, build_dir, builder_script_file, options):
+ assert(builder_script_file[0] == '/')
self.source_dir = source_dir
self.build_dir = build_dir
self.builder_script_file = builder_script_file
@@ -244,6 +245,16 @@ class Environment():
self.static_lib_suffix = 'a'
self.static_lib_prefix = 'lib'
self.object_suffix = 'o'
+
+ def get_script_dir(self):
+ fullfile = self.builder_script_file
+ while os.path.islink(fullfile):
+ resolved = os.readlink(fullfile)
+ if resolved[0] != '/':
+ fullfile = os.path.join(os.path.dirname(fullfile), resolved)
+ else:
+ fullfile = resolved
+ return os.path.dirname(fullfile)
def get_builder_command(self):
return self.builder_script_file
diff --git a/generators.py b/generators.py
index 51277ec..21fc706 100755
--- a/generators.py
+++ b/generators.py
@@ -58,12 +58,6 @@ class Generator():
self.build_to_src = os.path.relpath(self.environment.get_source_dir(),
self.environment.get_build_dir())
- def get_script_root(self):
- # The path to wherever our internal scripts are.
- # /usr/share/../ when installed, local path
- # when running from source directory.
- return '..' # FIXME
-
def get_compiler_for_source(self, src):
for i in self.build.compilers:
if i.can_compile(src):
@@ -214,10 +208,10 @@ class NinjaGenerator(Generator):
print('Warning: coverage requested but neither gcovr nor lcov/genhtml found.')
def generate_install(self, outfile):
- script_root = self.get_script_root()
+ script_root = self.environment.get_script_dir()
install_script = os.path.join(script_root, 'builder_install.py')
install_data_file = os.path.join(self.environment.get_scratch_dir(), 'install.dat')
- depfixer = os.path.join(self.get_script_root(), 'depfixer.py')
+ depfixer = os.path.join(script_root, 'depfixer.py')
d = InstallData(self.environment.get_prefix(), depfixer, './') # Fixme
outfile.write('build install: CUSTOM_COMMAND | all\n')
@@ -279,7 +273,7 @@ class NinjaGenerator(Generator):
d.data.append(i)
def generate_tests(self, outfile):
- script_root = self.get_script_root()
+ script_root = self.environment.get_script_dir()
test_script = os.path.join(script_root, 'builder_test.py')
test_data = os.path.join(self.environment.get_scratch_dir(), 'builder_test_setup.dat')
outfile.write('build test: CUSTOM_COMMAND\n')