[med-svn] r1266 - trunk/community/infrastructure/test

tille at alioth.debian.org tille at alioth.debian.org
Sat Feb 2 18:35:52 UTC 2008


Author: tille
Date: 2008-02-02 18:35:52 +0000 (Sat, 02 Feb 2008)
New Revision: 1266

Modified:
   trunk/community/infrastructure/test/cddtasktools.py
Log:
Several fixes (needs further checking)


Modified: trunk/community/infrastructure/test/cddtasktools.py
===================================================================
--- trunk/community/infrastructure/test/cddtasktools.py	2008-02-02 18:19:24 UTC (rev 1265)
+++ trunk/community/infrastructure/test/cddtasktools.py	2008-02-02 18:35:52 UTC (rev 1266)
@@ -33,6 +33,17 @@
            }
 HTMLBASE = "/var/lib/gforge/chroot/home/groups"
 
+def InitTasksFiles(cddname):
+    # Obtain tasks files from SVN
+    tasksdir = "%s/%s/data/tasks" % (HTMLBASE, cddname)
+    # Checkout/Update tasks from SVN
+    if os.path.isdir(tasksdir+'/.svn'):
+        os.system("svn up %s %s >> /dev/null" % (REPOS[cddname], tasksdir))
+    else:
+        os.system("mkdir -p %s" % (tasksdir))
+        os.system("svn co %s %s >> /dev/null" % (REPOS[cddname], tasksdir))
+    return tasksdir
+
 class Task:
     # This class just stores name and description of a task package
 
@@ -72,31 +83,30 @@
 
     def __init__(self, cddname):
 
+        global available
+
         if cddname not in REPOS.keys():
             print >>sys.stderr, "Unknown CDD."
             return None
 
-        self.cddname = cddname
-        self.tasksdir = "%s/%s/data/tasks" % (HTMLBASE, cddname)
-        # Checkout/Update tasks from SVN
-        if os.path.isdir(self.tasksdir+'/.svn'):
-            os.system("svn up %s %s >> /dev/null" % (REPOS[self.cddname], self.tasksdir))
-        else:
-            os.system("mkdir -p %s" % (self.tasksdir))
-            os.system("svn co %s %s >> /dev/null" % (REPOS[self.cddname], self.tasksdir))
-        self.tasks = {}
-        self.available = Available()
+        self.cddname   = cddname
+        self.tasksdir  = InitTasksFiles(self.cddname)
+        self.tasks     = {}
+        self.tasknames = []
+        self.available = available
 
-    def GetTasks(self):
+    def GetTasknames(self):
         for task in os.listdir(self.tasksdir):
             if os.path.isfile("%s/%s" % (self.tasksdir, task)):
-                self.tasks[task] = self.GetTaskDependencies(task)
+                self.tasknames.append(self.GetTaskDependencies(task))
 
     def GetAllDependencies(self):
-        if self.tasks == {}:
-            self.GetTasks()
-        for task in self.tasks:
-            self.GetTaskDependencies(task)
+        if self.tasknames == []:
+            self.GetTasknames()
+        for task in self.tasknames:
+            td = TaskDependencies(self.cddname, task)
+            td.GetTaskDependencies()
+            self.tasks[task] = td
 
 class TaskDependencies:
     # List of depencencies defined in one Metapackage
@@ -105,21 +115,27 @@
             print >>sys.stderr, "Unknown CDD."
             return None
 
-        self.cddname = cddname
+        self.cddname  = cddname
+        self.tasksdir = InitTasksFiles(self.cddname)
+        self.taskfile = self.tasksdir+'/'+task
+        if os.path.isfile(self.taskfile):
+            self.task = task
+        else:
+            print >>sys.stderr, "No such task file %s." % self.taskfile
+            return None
+
         self.dependencies = { 'official'    : [],
                               'unofficial'  : [],
                               'prospective' : []
                             }
+        self.available = available
 
-    def GetTaskDependencies(self, task):
-        # return a list of 
-        if self.tasks == {}:
-            self.GetTasks()
+        # Main information for a task
+        self.taskPrintedName = None
+        self.taskShortDesc   = None
+        self.taskLongDesc    = None
 
-        if task not in self.tasks:
-            print >>stderr, "Unknown task for %s. Nothing to do." % self.cddname
-            return
-        
+    def GetTaskDependencies(self):
         # First obtain information about Packages
         # available in Debian
         # This might take some time.
@@ -133,7 +149,7 @@
         # has to be separated to detect the dependency
         dependency_keys = [ "Depends", "Recommends", "Suggests" ] 
 
-        f = file(self.tasksdir+'/'+task)
+        f = file(self.taskfile)
         for stanza in deb822.Sources.iter_paragraphs(f):
             # Why and Responsible can be valid for more than one dependency
             # Store them in strings and use them for all Dependent Package objects
@@ -141,6 +157,16 @@
             responsible = None
             dep         = None
             for key in stanza:
+                if key == 'Task':
+                    self.taskPrintedName = stanza['task']
+                    continue
+                if key == 'Description':
+                    lines = stanza['description'].splitlines()
+                    self.taskShortDesc = lines[0]
+                    self.taskLongDesc  = ''
+                    for line in lines[1:]:
+                        self.taskLongDesc += line.strip() + '\n'
+                    continue
                 if key == 'Why':
                     why = stanza['why']
                     continue
@@ -167,6 +193,7 @@
                         dep.pkg            = stanza[key]
                         dep.dists.append(self.available.dist)
                         # Find the component the Dependency might be in
+                        print "DEBUG", self.available.components
                         for component in self.available.components:
                             if dep.pkg in self.available.pkgnames[component]:
                                 dep.component = component
@@ -207,16 +234,19 @@
                               % stanza['pkg-description'].splitlines()[0]
                     else:
                         lines = stanza['pkg-description'].splitlines()
-                        dep.pkgShortDesc   = lines[0]
-                        dep.pkgLongDesc    = lines[1:].join('\n')
+                        dep.pkgShortDesc = lines[0]
+                        dep.pkgLongDesc  = ''
+                        for line in lines[1:]:
+                            dep.pkgLongDesc += line.strip() + '\n'
                 else:
                     print "Unknown key '%s': %s" % (key, stanza[key])
-            if dep.component != None:
-                self.dependencies['official'].append(dep)
-            elif dep.pkgURL != None:
-                self.dependencies['unofficial'].append(dep)
-            else
-                self.dependencies['prospective'].append(dep)
+            if dep != None:
+                if dep.component != None:
+                    self.dependencies['official'].append(dep)
+                elif dep.pkgURL != None:
+                    self.dependencies['unofficial'].append(dep)
+                else:
+                    self.dependencies['prospective'].append(dep)
                 
         f.close()
 
@@ -264,3 +294,5 @@
                     self.pkgnames[component].append(stanza['package'])
             f.close()
 
+available = Available()
+




More information about the debian-med-commit mailing list