summaryrefslogtreecommitdiff
path: root/morphlib/builder.py
diff options
context:
space:
mode:
authorJannis Pohlmann <jannis.pohlmann@codethink.co.uk>2012-02-10 17:36:29 +0000
committerJannis Pohlmann <jannis.pohlmann@codethink.co.uk>2012-02-11 13:38:39 +0000
commit63cab3e0e2f550a0bfe470d018063a8b91a759bd (patch)
tree75043a47bfeeb8921c1ff8160f29772468de97a2 /morphlib/builder.py
parent96071402806b87be0599904b033230c089b74c8c (diff)
downloadmorph-63cab3e0e2f550a0bfe470d018063a8b91a759bd.tar.gz
Add --prefix option, adjust autotools system and env variables.
Diffstat (limited to 'morphlib/builder.py')
-rw-r--r--morphlib/builder.py32
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