summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorFelix Hädicke <felixhaedicke@web.de>2017-10-06 23:06:28 +0200
committerMax Kellermann <max@musicpd.org>2018-01-05 08:17:17 +0100
commit8217d75ca159db470846e28e9215fe08a61bc7f6 (patch)
treef417da363eb5505c8e53af3d80334ea4698b7619 /python
parent1ca70d97596937ae8b14719de191ce1a7790e11c (diff)
build/python: refactoring: introduce new class MakeProject
This introduces a the new class MakeProject, which is used as a base class for all Makefile based thirdparty libraries.
Diffstat (limited to 'python')
-rw-r--r--python/build/autotools.py19
-rw-r--r--python/build/makeproject.py28
2 files changed, 37 insertions, 10 deletions
diff --git a/python/build/autotools.py b/python/build/autotools.py
index c3e179f85..56af64cce 100644
--- a/python/build/autotools.py
+++ b/python/build/autotools.py
@@ -1,24 +1,22 @@
import os.path, subprocess, sys
-from build.project import Project
+from build.makeproject import MakeProject
-class AutotoolsProject(Project):
+class AutotoolsProject(MakeProject):
def __init__(self, url, md5, installed, configure_args=[],
autogen=False,
cppflags='',
ldflags='',
libs='',
- install_target='install',
**kwargs):
- Project.__init__(self, url, md5, installed, **kwargs)
+ MakeProject.__init__(self, url, md5, installed, **kwargs)
self.configure_args = configure_args
self.autogen = autogen
self.cppflags = cppflags
self.ldflags = ldflags
self.libs = libs
- self.install_target = install_target
- def build(self, toolchain):
+ def configure(self, toolchain):
src = self.unpack(toolchain)
if self.autogen:
if sys.platform == 'darwin':
@@ -49,7 +47,8 @@ class AutotoolsProject(Project):
] + self.configure_args
subprocess.check_call(configure, cwd=build, env=toolchain.env)
- subprocess.check_call(['/usr/bin/make', '--quiet', '-j12'],
- cwd=build, env=toolchain.env)
- subprocess.check_call(['/usr/bin/make', '--quiet', self.install_target],
- cwd=build, env=toolchain.env)
+ return build
+
+ def build(self, toolchain):
+ build = self.configure(toolchain)
+ MakeProject.build(self, toolchain, build)
diff --git a/python/build/makeproject.py b/python/build/makeproject.py
new file mode 100644
index 000000000..fe676bfa4
--- /dev/null
+++ b/python/build/makeproject.py
@@ -0,0 +1,28 @@
+import subprocess
+
+from build.project import Project
+
+class MakeProject(Project):
+ def __init__(self, url, md5, installed,
+ install_target='install',
+ **kwargs):
+ Project.__init__(self, url, md5, installed, **kwargs)
+ self.install_target = install_target
+
+ def get_simultaneous_jobs(self):
+ return 12
+
+ def get_make_args(self, toolchain):
+ return ['--quiet', '-j' + str(self.get_simultaneous_jobs())]
+
+ def get_make_install_args(self, toolchain):
+ return ['--quiet', self.install_target]
+
+ def make(self, toolchain, wd, args):
+ subprocess.check_call(['/usr/bin/make'] + args,
+ cwd=wd, env=toolchain.env)
+
+ def build(self, toolchain, wd, install=True):
+ self.make(toolchain, wd, self.get_make_args(toolchain))
+ if install:
+ self.make(toolchain, wd, self.get_make_install_args(toolchain))