diff options
author | Marco Pesenti Gritti <marco@marcopg.org> | 2009-01-17 18:54:42 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@marcopg.org> | 2009-01-17 18:54:42 (GMT) |
commit | ffe31992dd4796c576ab58b61d61bbb772b982f0 (patch) | |
tree | 5a3223f203269f98143e176899db886a5a025d9f /scripts | |
parent | b2a9a81caa6abcc138b346f3aac6d73f5a0b10a8 (diff) |
Big refactoring by David Farning.
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/bundlemodule.py | 94 | ||||
-rw-r--r-- | scripts/report.py | 7 | ||||
-rw-r--r-- | scripts/sysdeps.py | 91 |
3 files changed, 1 insertions, 191 deletions
diff --git a/scripts/bundlemodule.py b/scripts/bundlemodule.py deleted file mode 100644 index 3a662c1..0000000 --- a/scripts/bundlemodule.py +++ /dev/null @@ -1,94 +0,0 @@ -__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' - - STATE_CHECKOUT = 'checkout' - STATE_FORCE_CHECKOUT = 'force_checkout' - STATE_BUILD = 'build' - STATE_INSTALL = 'install' - - def __init__(self, name, branch, dependencies=[], after=[]): - Package.__init__(self, name, dependencies, after) - 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_state = STATE_CHECKOUT - do_start.error_states = [] - - 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_state = STATE_BUILD - do_checkout.error_states = [STATE_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_state = STATE_BUILD - do_force_checkout.error_states = [STATE_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) - builddir = self.get_builddir(buildscript) - python = os.environ.get('PYTHON', 'python') - cmd = [python, 'setup.py', 'build'] - buildscript.execute(cmd, cwd=srcdir) - do_build.next_state = STATE_INSTALL - do_build.error_states = [STATE_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) - builddir = self.get_builddir(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_state = Package.STATE_DONE - do_install.error_states = [] - - -def parse_bundle(node, config, uri, repositories, default_repo): - id = node.getAttribute('id') - branch = get_branch(node, repositories, default_repo, config) - return BundleModule(id, branch) - -register_module_type('bundle', parse_bundle) diff --git a/scripts/report.py b/scripts/report.py index 0ac8659..3617ee2 100644 --- a/scripts/report.py +++ b/scripts/report.py @@ -183,9 +183,4 @@ try: register_command(cmd_report) except ImportError: - try: - import cjson as json - json.read = json.decode - json.write = json.encode - except ImportError: - print 'Disable report, neither json-py nor python-cjson are not installed.' + print 'Disable report, json-py is not installed.' diff --git a/scripts/sysdeps.py b/scripts/sysdeps.py deleted file mode 100644 index b398cff..0000000 --- a/scripts/sysdeps.py +++ /dev/null @@ -1,91 +0,0 @@ -import os -import subprocess - -from xml.dom import minidom - -scripts_dir = os.path.dirname(__file__) -base_dir = os.path.dirname(scripts_dir) - -def get_distribution(): - if 'SJH_DISTRIBUTION' in os.environ: - return os.environ['SJH_DISTRIBUTION'].split('-') - - # Fedora - if os.path.exists('/etc/fedora-release'): - name = 'fedora' - - f = open('/etc/fedora-release') - full_name = f.read() - f.close() - - if 'Rawhide' in full_name: - version = 'rawhide' - else: - version = full_name.split(' ')[2] - - return name, version - - # Debian and Ubuntu - try: - out, err = subprocess.Popen(['lsb_release', '-is'], - stdout=subprocess.PIPE).communicate() - name = out.strip().lower() - - out, err = subprocess.Popen(['lsb_release', '-rs'], - stdout=subprocess.PIPE).communicate() - version = out.strip() - - if name == 'debian' and version == 'testing': - version = 'unstable' - - return name, version - except OSError: - pass - - return None, None - -def check_package(package): - name, version = get_distribution() - if name == 'fedora': - ret = subprocess.call(['rpm', '--quiet', '-q', package]) - return ret == 0 - elif name in ['ubuntu', 'debian']: - cmd = ["dpkg-query", "-f='${status}'", "-W", package] - out, err = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate() - return out.find('install ok installed') != -1 - - return None - -def parse_dependencies(): - name, version = get_distribution() - if name is None or version is None: - return None - - filename = os.path.join(base_dir, 'config', 'sysdeps', - '%s-%s.xml' % (name, version)) - - if not os.path.exists(filename): - return None - - return minidom.parse(filename) - -def get_packages(): - document = parse_dependencies() - if document is None: - return [] - - packages = [] - root = document.childNodes[0] - - for node in root.childNodes: - if node.nodeType == node.ELEMENT_NODE: - if node.nodeName == 'package': - name = node.getAttribute('name') - if node.hasAttribute('source'): - source = node.getAttribute('source') - else: - source = None - - packages.append((name, source)) - - return packages |