summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-07-25 21:50:49 +0100
committerCarl Hetherington <cth@carlh.net>2018-07-25 21:50:49 +0100
commit465f0833391858bed3bf26561bc521b9727dbb77 (patch)
treed3d1f8072104282a8ff57a75f6a044486d56dd0f
parent5470c2f2bd4f28c7e5ac2b498eb22c3b39414304 (diff)
Support flatpak builds.
-rwxr-xr-xcdist51
1 files changed, 41 insertions, 10 deletions
diff --git a/cdist b/cdist
index a45058c..4a9feec 100755
--- a/cdist
+++ b/cdist
@@ -401,13 +401,17 @@ class Target(object):
# Environment variables that we will use when we call cscripts
self.variables = {}
self.debug = False
+ # True to build our dependencies ourselves; False if this is taken care
+ # of in some other way
+ self.build_dependencies = True
def setup(self):
pass
def package(self, project, checkout, output_dir, options):
tree = globals.trees.get(project, checkout, self)
- tree.build_dependencies(options)
+ if self.build_dependencies:
+ tree.build_dependencies(options)
tree.build(options)
if len(inspect.getargspec(tree.cscript['package']).args) == 3:
packages = tree.call('package', tree.version, options)
@@ -423,12 +427,14 @@ class Target(object):
def build(self, project, checkout, options):
tree = globals.trees.get(project, checkout, self)
- tree.build_dependencies(options)
+ if self.build_dependencies:
+ tree.build_dependencies(options)
tree.build(options)
def test(self, tree, test, options):
"""test is the test case to run, or None"""
- tree.build_dependencies(options)
+ if self.build_dependencies:
+ tree.build_dependencies(options)
tree.build(options)
return tree.call('test', test)
@@ -498,6 +504,24 @@ class DockerTarget(Target):
self.mounts.append(m)
+class FlatpakTarget(Target):
+ def __init__(self, project, checkout):
+ super(FlatpakTarget, self).__init__('flatpak')
+ self.build_dependencies = False
+ self.project = project
+ self.checkout = checkout
+
+ def setup(self):
+ pass
+
+ def command(self, cmd):
+ command(cmd)
+
+ def checkout_dependencies(self):
+ tree = globals.trees.get(self.project, self.checkout, self)
+ return tree.checkout_dependencies()
+
+
class WindowsTarget(DockerTarget):
"""
This target exposes the following additional API:
@@ -679,6 +703,7 @@ class SourceTarget(Target):
# or mageia-version-{32,64}
# or osx-{32,64}
# or source
+# or flatpak
# @param debug True to build with debugging symbols (where possible)
def target_factory(args):
s = args.target
@@ -712,6 +737,8 @@ def target_factory(args):
target = OSXUniversalTarget(args.work)
elif s == 'source':
target = SourceTarget()
+ elif s == 'flatpak':
+ target = FlatpakTarget(args.project, args.checkout)
if target is None:
raise Error("Bad target `%s'" % s)
@@ -801,7 +828,7 @@ class Tree(object):
if not k in options:
options[k] = v
- def build_dependencies(self, options):
+ def dependencies(self, options):
if not 'dependencies' in self.cscript:
return
@@ -824,13 +851,17 @@ class Tree(object):
# Then fill in the dependency's defaults
dep.add_defaults(dep_options)
- msg = 'Building dependency %s %s of %s' % (d[0], d[1], self.name)
- if len(dep_options) > 0:
- msg += ' with options %s' % dep_options
- log(msg)
+ for i in dep.dependencies(dep_options):
+ yield i
+ yield (dep, options)
+
+ def checkout_dependencies(self, options={}):
+ for i in self.dependencies(options):
+ pass
- dep.build_dependencies(dep_options)
- dep.build(dep_options)
+ def build_dependencies(self, options):
+ for i in self.dependencies(options):
+ i[0].build(i[1])
def build(self, options):
if self.built: