diff options
author | Jannis Pohlmann <jannis.pohlmann@codethink.co.uk> | 2012-02-10 17:27:32 +0000 |
---|---|---|
committer | Jannis Pohlmann <jannis.pohlmann@codethink.co.uk> | 2012-02-11 13:46:26 +0000 |
commit | e0fb97f08156af97ec2341ec8061fe514ae358e5 (patch) | |
tree | 50957b235a7dcdcc71e230bd43ab58eefcab3cae /morphlib/builder.py | |
parent | 63cab3e0e2f550a0bfe470d018063a8b91a759bd (diff) | |
download | morph-e0fb97f08156af97ec2341ec8061fe514ae358e5.tar.gz |
Set environment variables needed to build in a different prefix.
This only includes PKG_CONFIG_PATH and LD_LIBRARY_PATH at the moment.
Diffstat (limited to 'morphlib/builder.py')
-rw-r--r-- | morphlib/builder.py | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/morphlib/builder.py b/morphlib/builder.py index 3de5b67e..1fe36fc7 100644 --- a/morphlib/builder.py +++ b/morphlib/builder.py @@ -64,6 +64,7 @@ class BlobBuilder(object): self.destdir = None self.prefixdir = None self.staging = None + self.stagingprefix = None self.settings = None self.real_msg = None self.cache_prefix = None @@ -157,9 +158,10 @@ class BlobBuilder(object): for key, value in kwargs.iteritems(): meta[key] = value - filename = os.path.join(self.prefixdir, '%s.meta' % blob_name) - if not os.path.exists(self.prefixdir): - os.mkdir(self.prefixdir) + dirname = os.path.join(self.destdir, 'baserock') + filename = os.path.join(dirname, '%s.meta' % blob_name) + if not os.path.exists(dirname): + os.mkdir(dirname) with open(filename, 'w') as f: json.dump(meta, f, indent=4) @@ -261,6 +263,19 @@ class ChunkBuilder(BlobBuilder): if copied_vars[name] is not None: self.ex.env[name] = copied_vars[name] + # set and extend certain variables to support arbitrary + # install prefixes such as /usr/local + self.ex.env['PREFIX'] = self.settings['prefix'] + extended_paths = { + 'PKG_CONFIG_PATH': + os.path.join(self.stagingprefix, 'lib', 'pkgconfig'), + 'LD_LIBRARY_PATH': + os.path.join(self.stagingprefix, 'lib'), + } + for varname, pathname in extended_paths.iteritems(): + value = self.ex.env.get(varname, '') + self.ex.env[varname] = '%s:%s' % (pathname, value) + self.ex.env['TERM'] = 'dumb' self.ex.env['SHELL'] = '/bin/sh' self.ex.env['USER'] = \ @@ -277,14 +292,6 @@ class ChunkBuilder(BlobBuilder): for x in bindirs) self.ex.env['PATH'] = path - self.ex.env['PREFIX'] = self.settings['prefix'] - self.ex.env['PKG_CONFIG_PATH'] = ('%s:%s' % - (os.path.join(self.prefixdir, 'lib', 'pkgconfig'), - self.ex.env['PKG_CONFIG_PATH'])) - self.ex.env['LD_LIBRARY_PATH'] = ('%s:%s' % - (os.path.join(self.prefixdir, 'lib'), - self.ex.env['LD_LIBRARY_PATH'])) - self.ex.env['WORKAREA'] = self.tempdir.dirname self.ex.env['DESTDIR'] = self.destdir + '/' self.ex.env['TOOLCHAIN_TARGET'] = \ @@ -650,15 +657,10 @@ class Builder(object): builder.builddir = self.tempdir.join('%s.build' % blob.morph.name) builder.destdir = self.tempdir.join('%s.inst' % blob.morph.name) - if self.settings['prefix'] != '/usr': - relative_prefix = self.settings['prefix'] - if relative_prefix.startswith('/'): - relative_prefix = relative_prefix[1:] - builder.prefixdir = os.path.join( - builder.destdir, relative_prefix, 'baserock') - else: - builder.prefixdir = os.path.join(builder.destdir, 'baserock') + builder.prefixdir = self.settings['prefix'] builder.staging = self.tempdir.join('staging') + builder.stagingprefix = os.path.join( + builder.staging, os.path.relpath(builder.prefixdir, '/')) builder.settings = self.settings builder.real_msg = self.msg builder.cache_prefix = self.cachedir.name(cache_id) |