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