diff options
author | Jannis Pohlmann <jannis.pohlmann@codethink.co.uk> | 2012-02-10 17:36:29 +0000 |
---|---|---|
committer | Jannis Pohlmann <jannis.pohlmann@codethink.co.uk> | 2012-02-11 13:38:39 +0000 |
commit | 63cab3e0e2f550a0bfe470d018063a8b91a759bd (patch) | |
tree | 75043a47bfeeb8921c1ff8160f29772468de97a2 /morphlib/builder.py | |
parent | 96071402806b87be0599904b033230c089b74c8c (diff) | |
download | morph-63cab3e0e2f550a0bfe470d018063a8b91a759bd.tar.gz |
Add --prefix option, adjust autotools system and env variables.
Diffstat (limited to 'morphlib/builder.py')
-rw-r--r-- | morphlib/builder.py | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/morphlib/builder.py b/morphlib/builder.py index 1b2afa44..3de5b67e 100644 --- a/morphlib/builder.py +++ b/morphlib/builder.py @@ -62,6 +62,7 @@ class BlobBuilder(object): # The following MUST get set by the caller. self.builddir = None self.destdir = None + self.prefixdir = None self.staging = None self.settings = None self.real_msg = None @@ -156,10 +157,9 @@ class BlobBuilder(object): for key, value in kwargs.iteritems(): meta[key] = value - 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) + filename = os.path.join(self.prefixdir, '%s.meta' % blob_name) + if not os.path.exists(self.prefixdir): + os.mkdir(self.prefixdir) with open(filename, 'w') as f: json.dump(meta, f, indent=4) @@ -200,8 +200,11 @@ class ChunkBuilder(BlobBuilder): build_system = { 'autotools': { 'configure-commands': [ - 'if [ -e autogen.sh ]; then ./autogen.sh; fi', - './configure --prefix=/usr', + 'if [ -e autogen.sh ]; then' + ' ./autogen.sh --prefix="$PREFIX"; ' + 'else' + ' ./configure --prefix="$PREFIX"; ' + 'fi', ], 'build-commands': [ 'make', @@ -243,6 +246,7 @@ class ChunkBuilder(BlobBuilder): 'TMPDIR', 'LD_PRELOAD', 'LD_LIBRARY_PATH', + 'PKG_CONFIG_PATH', 'FAKEROOTKEY', 'FAKED_MODE', 'FAKEROOT_FD_BASE', @@ -273,6 +277,14 @@ 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'] = \ @@ -638,6 +650,14 @@ 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.staging = self.tempdir.join('staging') builder.settings = self.settings builder.real_msg = self.msg |