From 498a3c2b77dad27c0ae7aba3b98294313a99434c Mon Sep 17 00:00:00 2001 From: Anders Blomdell <anders.blomdell@control.lth.se> Date: Tue, 20 Jan 2015 12:36:05 +0100 Subject: [PATCH] Version 2015-01-20 12:36 --- src/mio.py | 3 ++- src/mio/transform.py | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/mio.py b/src/mio.py index aab2f3d..dfa02c1 100755 --- a/src/mio.py +++ b/src/mio.py @@ -23,7 +23,7 @@ if not hasattr(__builtins__, "True"): def parse_with_path(path, filename, repository): f = mio.filecache.loadfile(path, filename) tree = mio.parser.parse(f.filename, url=f.key) - + if tree._tag == "comps": # Transform comps to canonical form tree = mio.transform.from_fedora(tree) @@ -85,6 +85,7 @@ def find_and_parse(target, builder, url=None): except ValueError, e: pass except DuplicateGroupException, e: + print e traceback.print_exc() print "Failed to locate: %s" % target sys.exit(1) diff --git a/src/mio/transform.py b/src/mio/transform.py index 2da67f9..a7846d2 100755 --- a/src/mio/transform.py +++ b/src/mio/transform.py @@ -1,5 +1,6 @@ import mio.parser import copy +import itertools def from_fedora(tree): result = mio.parser.Node("mio", tree._line) @@ -61,6 +62,43 @@ def from_fedora(tree): result._add(mandatory) result._add(default) result._add(optional) + + for e in tree._environment_: + ename = e._id_[0]._char[0] + # print ename + # print unicode(e).encode('ascii', 'replace') + mandatory = mio.parser.Node("group", e._line, + { "name": "@%s/mandatory" % ename }) + default = mio.parser.Node("group", e._line, + { "name": "@%s" % ename }) + default._add(mio.parser.Node("dependency", e._line, + { "name": "@%s/mandatory" % ename })) + optional = mio.parser.Node("group", e._line, + { "name": "@%s/optional" % ename }) + optional._add(mio.parser.Node("dependency", e._line, + { "name": "@%s" % ename })) + for r in e._grouplist_._groupid_: + mandatory._add(mio.parser.Node("dependency", r._line, + { "name": + "@%s/mandatory" % r._char[0] })) + default._add(mio.parser.Node("dependency", r._line, + { "name": + "@%s" % r._char[0] })) + optional._add(mio.parser.Node("dependency", r._line, + { "name": + "@%s/optional" % r._char[0] })) + for r in e._optionlist_._groupid_: + if r.default[0] != None: + default._add(mio.parser.Node("dependency", r._line, + { "name": + "@%s" % r._char[0] })) + optional._add(mio.parser.Node("dependency", r._line, + { "name": + "@%s/optional" % r._char[0] })) + result._add(mandatory) + result._add(default) + result._add(optional) + return result def from_hostinfo(tree): -- GitLab