[jhbuild] add new extdeps command
- From: Frederic Peters <fpeters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [jhbuild] add new extdeps command
- Date: Sat, 23 Nov 2013 17:23:17 +0000 (UTC)
commit 410060855275a663cf138ee7e96856bca7aa92ca
Author: Frédéric Péters <fpeters 0d be>
Date: Sat Nov 23 18:21:58 2013 +0100
add new extdeps command
jhbuild/commands/extdeps.py | 170 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 170 insertions(+), 0 deletions(-)
---
diff --git a/jhbuild/commands/extdeps.py b/jhbuild/commands/extdeps.py
new file mode 100644
index 0000000..fa3fa26
--- /dev/null
+++ b/jhbuild/commands/extdeps.py
@@ -0,0 +1,170 @@
+# jhbuild - a build script for GNOME 2.x
+# Copyright (C) 2012 Frederic Peters
+#
+# extdeps.py: report details on GNOME external dependencies
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+from optparse import make_option
+import re
+import socket
+import sys
+import time
+
+try:
+ from cStringIO import StringIO
+except ImportError:
+ from StringIO import StringIO
+
+import jhbuild.moduleset
+from jhbuild.commands import Command, register_command
+
+HTML_AT_TOP = '''<html>
+<head>
+<title>%(title)s</title>
+<style type="text/css">
+body {
+ font-family: sans-serif;
+}
+tbody th {
+ background: #d3d7cf;
+ text-align: left;
+}
+tbody td {
+ text-align: center;
+}
+
+td { padding: 0 1em; }
+td.rdeps { text-align: left; }
+
+tr.zero { text-decoration: line-through; }
+tr.far { color: gray; }
+tr.many { font-weight: bold; }
+
+div#footer {
+ margin-top: 2em;
+ font-size: small;
+}
+
+</style>
+</head>
+<body>
+<h1>%(title)s</h1>
+
+'''
+
+
+class cmd_extdeps(Command):
+ doc = _('Report details on GNOME external dependencies')
+ name = 'extdeps'
+
+ def __init__(self):
+ Command.__init__(self, [
+ make_option('-o', '--output', metavar='FILE',
+ action='store', dest='output', default=None),
+ make_option('--all-modules',
+ action='store_true', dest='list_all_modules', default=False),
+ ])
+
+ def run(self, config, options, args, help=None):
+ if options.output:
+ output = StringIO()
+ else:
+ output = sys.stdout
+
+ config.partial_build = False
+ self.module_set = jhbuild.moduleset.load(config)
+ if options.list_all_modules:
+ module_list = self.module_set.modules.values()
+ else:
+ module_list = self.module_set.get_module_list(args or config.modules, config.skip)
+
+ if type(config.moduleset) is str:
+ moduleset = [config.moduleset]
+ else:
+ moduleset = config.moduleset
+ title = _('External deps for GNOME')
+ for ms in moduleset:
+ try:
+ gnome_ver = re.findall('\d+\.\d+', ms)[0]
+ except IndexError:
+ continue
+ title = _('External deps for GNOME %s') % gnome_ver
+ break
+
+ print >> output, HTML_AT_TOP % {'title': title}
+ print >> output, '<table>'
+ print >> output, '<tbody>'
+
+ module_list.sort(lambda x,y: cmp(x.name.lower(), y.name.lower()))
+ for mod in module_list:
+ #if not mod.moduleset_name.startswith('gnome-suites-core-deps-base'):
+ # continue
+
+ if not hasattr(mod.branch, 'version'):
+ continue
+
+ rdeps = self.compute_rdeps(mod)
+ classes = []
+ if len(rdeps) == 0:
+ classes.append('zero')
+ else:
+ for rdep in rdeps:
+ rdep_mod = self.module_set.modules.get(rdep)
+ if not hasattr(rdep_mod.branch, 'version'):
+ break
+ else:
+ # module who only has tarballs as dependency
+ classes.append('far')
+ if len(rdeps) > 5:
+ classes.append('many')
+
+ print >> output, '<tr class="%s">' % ' '.join(classes)
+ print >> output, '<th>%s</th>' % mod.name
+ version = mod.branch.version
+ if mod.branch.patches:
+ version = version + ' (%s)' % _('patched')
+ print >> output, '<td class="version">%s</td>' % version
+ print >> output, '<td class="url"><a href="%s">tarball</a></td>' % mod.branch.module
+ if len(rdeps) > 5:
+ rdeps = rdeps[:4] + [_('and %d others.') % (len(rdeps)-4)]
+ print >> output, '<td class="rdeps">%s</td>' % ', '.join(rdeps)
+ print >> output, '</tr>'
+
+ print >> output, '</tbody>'
+ print >> output, '</table>'
+
+ print >> output, '<div id="footer">'
+ print >> output, 'Generated:', time.strftime('%Y-%m-%d %H:%M:%S %z')
+ print >> output, 'on ', socket.getfqdn()
+ print >> output, '</div>'
+
+ print >> output, '</body>'
+ print >> output, '</html>'
+
+ if output != sys.stdout:
+ file(options.output, 'w').write(output.getvalue())
+
+
+ def compute_rdeps(self, module):
+ rdeps = []
+ for mod in self.module_set.modules.values():
+ if mod.type == 'meta': continue
+ if module.name in mod.dependencies:
+ rdeps.append(mod.name)
+ rdeps.sort(lambda x,y: cmp(x.lower(), y.lower()))
+ return rdeps
+
+register_command(cmd_extdeps)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]