1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
__metaclass__ = type
import os
from jhbuild.errors import BuildStateError
from jhbuild.modtypes import Package, get_branch, register_module_type
__all__ = ['BundleModule']
class BundleModule(Package):
type = 'bundle'
PHASE_CHECKOUT = 'checkout'
PHASE_FORCE_CHECKOUT = 'force_checkout'
PHASE_BUILD = 'build'
PHASE_INSTALL = 'install'
def __init__(self, name, branch, dependencies=None, after=None):
Package.__init__(self, name, dependencies or [], after or [])
self.branch = branch
def get_srcdir(self, buildscript):
return self.branch.srcdir
def get_builddir(self, buildscript):
return self.get_srcdir(buildscript)
def get_revision(self):
return self.branch.branchname
def do_start(self, buildscript):
pass
do_start.next_phase = PHASE_CHECKOUT
do_start.error_phases = []
def skip_checkout(self, buildscript, last_state):
# skip the checkout stage if the nonetwork flag is set
return buildscript.config.nonetwork
def do_checkout(self, buildscript):
srcdir = self.get_srcdir(buildscript)
buildscript.set_action('Checking out', self)
self.branch.checkout(buildscript)
# did the checkout succeed?
if not os.path.exists(srcdir):
raise BuildStateError('source directory %s was not created'
% srcdir)
do_checkout.next_phase = PHASE_BUILD
do_checkout.error_phases = [PHASE_FORCE_CHECKOUT]
def skip_force_checkout(self, buildscript, last_state):
return False
def do_force_checkout(self, buildscript):
buildscript.set_action('Checking out', self)
self.branch.force_checkout(buildscript)
do_force_checkout.next_phase = PHASE_BUILD
do_force_checkout.error_phases = [PHASE_FORCE_CHECKOUT]
def skip_build(self, buildscript, last_state):
return buildscript.config.nobuild
def do_build(self, buildscript):
buildscript.set_action('Building', self)
srcdir = self.get_srcdir(buildscript)
python = os.environ.get('PYTHON', 'python')
cmd = [python, 'setup.py', 'build']
buildscript.execute(cmd, cwd=srcdir)
do_build.next_phase = PHASE_INSTALL
do_build.error_phases = [PHASE_FORCE_CHECKOUT]
def skip_install(self, buildscript, last_state):
return buildscript.config.nobuild
def do_install(self, buildscript):
buildscript.set_action('Installing', self)
srcdir = self.get_srcdir(buildscript)
python = os.environ.get('PYTHON', 'python')
cmd = [python, 'setup.py', 'install']
cmd.extend(['--prefix', buildscript.config.prefix])
buildscript.execute(cmd, cwd=srcdir)
buildscript.packagedb.add(self.name, self.get_revision() or '')
do_install.next_phase = Package.PHASE_DONE
do_install.error_phases = []
def parse_bundle(node, config, uri, repositories, default_repo):
bundle_id = node.getAttribute('id')
branch = get_branch(node, repositories, default_repo, config)
return BundleModule(bundle_id, branch)
register_module_type('bundle', parse_bundle)
|