You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gump.apache.org by bo...@apache.org on 2010/04/26 06:35:43 UTC

svn commit: r937932 - in /gump/live/python/gump/core: build/mvn.py model/builder.py

Author: bodewig
Date: Mon Apr 26 04:35:43 2010
New Revision: 937932

URL: http://svn.apache.org/viewvc?rev=937932&view=rev
Log:
separateLocalRepository now can be a name in addition to a boolean so that several projects can share one

Modified:
    gump/live/python/gump/core/build/mvn.py
    gump/live/python/gump/core/model/builder.py

Modified: gump/live/python/gump/core/build/mvn.py
URL: http://svn.apache.org/viewvc/gump/live/python/gump/core/build/mvn.py?rev=937932&r1=937931&r2=937932&view=diff
==============================================================================
--- gump/live/python/gump/core/build/mvn.py (original)
+++ gump/live/python/gump/core/build/mvn.py Mon Apr 26 04:35:43 2010
@@ -27,7 +27,7 @@ from gump.util.file import FILE_TYPE_CON
 from gump.util.process.command import Cmd, CMD_STATE_SUCCESS, \
     CMD_STATE_TIMED_OUT, Parameters
 from gump.util.process.launcher import execute
-from gump.util.tools import catFileToFileHolder, wipeDirectoryTree
+from gump.util.tools import catFileToFileHolder
 
 from time import strftime
 
@@ -44,6 +44,92 @@ def write_mirror_entry(props, prefix, mi
       <mirrorOf>%s</mirrorOf>
     </mirror>""" % (mirror_of, mirror_of, port, prefix, mirror_of) )
 
+def locateMavenProjectFile(project):
+    """Return Maven project file location"""
+    basedir = project.mvn.getBaseDirectory() or project.getBaseDirectory()
+    return os.path.abspath(os.path.join(basedir, 'pom.xml'))
+
+def locateMavenSettings(project):
+    #
+    # Where to put this:
+    #
+    basedir = project.mvn.getBaseDirectory() or project.getBaseDirectory()
+    return os.path.abspath(os.path.join(basedir, 'gump_mvn_settings.xml'))
+
+def getMavenProperties(project):
+    """ Get properties for a project """
+    properties = Parameters()
+    for property in project.getMvn().getProperties():
+        properties.addPrefixedNamedParameter('-D', property.name, \
+                                                 property.value, '=')
+    return properties
+
+def getMavenCommand(project, languageHelper):
+    """ Build an Maven command for this project """
+    maven = project.mvn
+
+    # The maven goal (or none == maven default goal)
+    goal = maven.getGoal()
+
+    # Optional 'verbose' or 'debug'
+    verbose = maven.isVerbose()
+    debug = maven.isDebug()
+
+    #
+    # Where to run this:
+    #
+    basedir = maven.getBaseDirectory() or project.getBaseDirectory()
+
+    #
+    # Build a classpath (based upon dependencies)
+    #
+    (classpath, _bootclasspath) = languageHelper.getClasspaths(project)
+
+    # Run Maven...
+    cmd = Cmd('mvn', 'build_' + project.getModule().getName() + '_' + \
+                project.getName(), basedir, {'CLASSPATH':classpath})
+
+    cmd.addParameter('--batch-mode')
+
+    #
+    # Allow maven-level debugging...
+    #
+    if project.getWorkspace().isDebug() or project.isDebug() or debug: 
+        cmd.addParameter('--debug')
+    if project.getWorkspace().isVerbose() \
+            or project.isVerbose() or verbose: 
+        cmd.addParameter('--exception') 
+
+    props = getMavenProperties(project)
+    cmd.addNamedParameters(props)
+
+    #
+    # Suppress downloads
+    #
+
+    # As long as we don't know how to pass our local artifacts to
+    # mvn there is no point in using the offline mode
+    #
+    # cmd.addParameter('--offline')
+
+    #
+    #       This sets the *defaults*, a workspace could override them.
+    #
+    #cmd.addPrefixedParameter('-D', 'build.sysclasspath', 'only', '=')
+
+    cmd.addParameter('--settings')
+    cmd.addParameter(locateMavenSettings(project))
+
+    # End with the goal...
+    if goal: 
+        for goalParam in goal.split(','):
+            cmd.addParameter(goalParam)
+
+    return cmd
+
+def needsSeparateLocalRepository(project):
+    return project.mvn.needsSeparateLocalRepository()
+
 class Maven2Builder(RunSpecific):
 
     def __init__(self, run):
@@ -66,7 +152,7 @@ class Maven2Builder(RunSpecific):
             #
             # Get the appropriate build command...
             #
-            cmd = self.getMavenCommand(project, languageHelper)
+            cmd = getMavenCommand(project, languageHelper)
 
             if cmd:
                 # Execute the command ....
@@ -88,94 +174,14 @@ class Maven2Builder(RunSpecific):
                     project.changeState(STATE_SUCCESS)
 
         if project.wasBuilt():
-            pomFile = self.locateMavenProjectFile(project) 
+            pomFile = locateMavenProjectFile(project) 
             if os.path.exists(pomFile):
                 project.addDebug('Maven POM in: ' + pomFile) 
                 catFileToFileHolder(project, pomFile, FILE_TYPE_CONFIG)
-
-            wipeDirectoryTree(self.locateLocalRepo(project), False)
  
 
-    #
-    # Build an Maven command for this project
-    #
-    def getMavenCommand(self, project, languageHelper):
-        maven = project.mvn
-
-        # The maven goal (or none == maven default goal)
-        goal = maven.getGoal()
-
-        # Optional 'verbose' or 'debug'
-        verbose = maven.isVerbose()
-        debug = maven.isDebug()
-
-        #
-        # Where to run this:
-        #
-        basedir = maven.getBaseDirectory() or project.getBaseDirectory()
-
-        #
-        # Build a classpath (based upon dependencies)
-        #
-        (classpath, bootclasspath) = languageHelper.getClasspaths(project)
-
-        # Run Maven...
-        cmd = Cmd('mvn', 'build_' + project.getModule().getName() + '_' + \
-                    project.getName(), basedir, {'CLASSPATH':classpath})
-
-        cmd.addParameter('--batch-mode')
-
-        #
-        # Allow maven-level debugging...
-        #
-        if project.getWorkspace().isDebug() or project.isDebug() or debug: 
-            cmd.addParameter('--debug')
-        if project.getWorkspace().isVerbose() \
-                or project.isVerbose() or verbose: 
-            cmd.addParameter('--exception') 
-
-        props = self.getProperties(project)
-        cmd.addNamedParameters(props)
-
-        #
-        # Suppress downloads
-        #
-
-        # As long as we don't know how to pass our local artifacts to
-        # mvn there is no point in using the offline mode
-        #
-        # cmd.addParameter('--offline')
-
-        #
-        #       This sets the *defaults*, a workspace could override them.
-        #
-        #cmd.addPrefixedParameter('-D', 'build.sysclasspath', 'only', '=')
-
-        cmd.addParameter('--settings')
-        cmd.addParameter(self.locateMvnSettings(project))
-
-        # End with the goal...
-        if goal: 
-            for goalParam in goal.split(','):
-                cmd.addParameter(goalParam)
-
-        return cmd
-
-    def getProperties(self, project):
-        """ Get properties for a project """
-        properties = Parameters()
-        for property in project.getMvn().getProperties():
-            properties.addPrefixedNamedParameter('-D', property.name, \
-                                                     property.value, '=')
-        return properties
-
-    def locateMavenProjectFile(self, project):
-        """Return Maven project file location"""
-        basedir = project.mvn.getBaseDirectory() or project.getBaseDirectory()
-        return os.path.abspath(os.path.join(basedir, 'pom.xml'))
-
     # Do this even if not ok
-    def performPreBuild(self, project, languageHelper, stats):
+    def performPreBuild(self, project, languageHelper, _stats):
 
         # Maven requires a build.properties to be generated...
         if project.okToPerformWork():
@@ -198,14 +204,14 @@ class Maven2Builder(RunSpecific):
                 project.addError(message)
                 project.changeState(STATE_FAILED, REASON_PREBUILD_FAILED)
 
-    def preview(self, project, languageHelper, stats):
-        command = self.getMavenCommand(project, languageHelper) 
+    def preview(self, project, languageHelper, _stats):
+        command = getMavenCommand(project, languageHelper) 
         command.dump()
 
-    def generateMvnSettings(self, project, languageHelper):
+    def generateMvnSettings(self, project, _languageHelper):
         """Set repository for a Maven2 project"""
 
-        settingsFile = self.locateMvnSettings(project)
+        settingsFile = locateMavenSettings(project)
         # Ensure containing directory exists, or make it.
         settingsdir = os.path.dirname(settingsFile)
         if not os.path.exists(settingsdir):
@@ -217,11 +223,13 @@ class Maven2Builder(RunSpecific):
             project.addWarning('Overriding Maven2 settings: [' + settingsFile \
                                    + ']')
 
-        if self.needsSeparateLocalRepository(project):
+        if needsSeparateLocalRepository(project):
             localRepositoryDir = self.locateLocalRepo(project)
         else:
-            localRepositoryDir = \
-                self.run.getWorkspace().getLocalRepositoryDirectory()
+            localRepositoryDir = os.path.abspath(\
+                os.path.join(self.run.getWorkspace()
+                             .getLocalRepositoryDirectory(), "shared")
+                )
 
         props = open(settingsFile, 'w')
 
@@ -257,21 +265,14 @@ class Maven2Builder(RunSpecific):
 
         return settingsFile
 
-    def locateMvnSettings(self, project):
-        #
-        # Where to put this:
-        #
-        basedir = project.mvn.getBaseDirectory() or project.getBaseDirectory()
-        return os.path.abspath(os.path.join(basedir, 'gump_mvn_settings.xml'))
-
     def locateLocalRepo(self, project):
         #
         # Where to put the local repository
         #
+        name = project.mvn.getLocalRepositoryName()
+        if not name:
+            name = project.getName() + ".mvnlocalrepo"
         return os.path.abspath(os.path.join(self.run.getWorkspace()\
-                                                .getBaseDirectory(),
-                                            project.getName() \
-                                            + ".mvnlocalrepo"))
-
-    def needsSeparateLocalRepository(self, project):
-        return project.mvn.needsSeparateLocalRepository()
+                                                .getLocalRepositoryDirectory(),
+                                            name
+                                            ))

Modified: gump/live/python/gump/core/model/builder.py
URL: http://svn.apache.org/viewvc/gump/live/python/gump/core/model/builder.py?rev=937932&r1=937931&r2=937932&view=diff
==============================================================================
--- gump/live/python/gump/core/model/builder.py (original)
+++ gump/live/python/gump/core/model/builder.py Mon Apr 26 04:35:43 2010
@@ -18,234 +18,243 @@
 """
 
     This module contains information on builders (ant/maven/script)
-    
-"""
-
-from time import localtime, strftime, tzname
 
-from gump.util.work import *
-from gump.util.note import *
+"""
 
-from gump.core.model.state import *
-from gump.core.model.object import *
-from gump.core.model.misc import *
-from gump.core.model.depend import *
-from gump.core.model.property import *
-    
+import os
+import sys
 from xml.dom import getDOMImplementation
 
+from gump.util import getIndent
+from gump.util.domutils import domAttributeIsTrue, getDomAttributeValue, \
+    hasDomAttribute, hasDomChild, transferDomAttributes
+
+from gump.core.model.depend import INHERIT_NONE, ProjectDependency
+from gump.core.model.object import ModelObject
+from gump.core.model.property import PropertyContainer
+
 # represents a generic build (e.g. <ant/>) element
 class Builder(ModelObject, PropertyContainer):
     """ A build command (within a project)"""
-    def __init__(self,dom,project):
-    	ModelObject.__init__(self,dom,project)
-    	PropertyContainer.__init__(self)
-            
-        self.basedir=None
-        
+    def __init__(self, dom, project):
+        ModelObject.__init__(self, dom, project)
+        PropertyContainer.__init__(self)
+
+        self.basedir = None
+
         # Store owning project
-        self.project=project
-            	
+        self.project = project
+
     def __str__(self):
         """
         Display what project this is on, if possible.
-        """       
+        """
         if not self.project:
             return self.__class__.__name__
         else:
             return self.__class__.__name__ + ' on ' + `self.project`
-        
+
     #
     # expand properties - in other words, do everything to complete the
     # entry that does NOT require referencing another project
     #
-    def expand(self,project,workspace):
-        self.expandDomDependencies(project,workspace)
-        self.expandDomProperties(project,workspace)
-        
-    def expandDomDependencies(self,project,workspace):
+    def expand(self, project, workspace):
+        self.expandDomDependencies(project, workspace)
+        self.expandDomProperties(project, workspace)
+
+    def expandDomDependencies(self, project, workspace):
         """
             Convert all depend elements into property elements, and
             move the dependency onto the project
         """
-        impl=getDOMImplementation()
-        
+        impl = getDOMImplementation()
+
         for ddom in self.getDomChildIterator('depend'):
-             
+
             pdom = impl.createDocument(None, 'property', None)
             pelement = pdom.documentElement
-        
+
             # Transfer depend attributes over as a basis for
             # the property
-            transferDomAttributes(ddom,pelement)
-                
+            transferDomAttributes(ddom, pelement)
+
             # Fix the reference to a outputpath
-            pelement.setAttribute('reference','outputpath')
+            pelement.setAttribute('reference', 'outputpath')
 
             # Name the xmlproperty...
-            if hasDomAttribute(ddom,'property'):
-                pelement.setAttribute('name',getDomAttributeValue(ddom,'property'))
-            elif not hasDomAttribute(pelement,'name'):                   
-                # :TODO: Reconsider later, but default to project name for now...
-                pname=getDomAttributeValue(ddom,'project')
-                pelement.setAttribute('name',pname)
-                project.addWarning('Unnamed property for [' + project.name + '] in depend on: ' + pname )
-        
+            if hasDomAttribute(ddom, 'property'):
+                pelement.setAttribute('name',
+                                      getDomAttributeValue(ddom, 'property'))
+            elif not hasDomAttribute(pelement, 'name'):
+                pname = getDomAttributeValue(ddom, 'project')
+                pelement.setAttribute('name', pname)
+                project.addWarning('Unnamed property for [' + project.name \
+                                       + '] in depend on: ' + pname )
+
             # :TODO: AJ added this, no idea if it is right/needed.
-            if hasDomAttribute(ddom,'id'):
-                pelement.setAttribute('ids',getDomAttributeValue(ddom,'id'))
-            
+            if hasDomAttribute(ddom, 'id'):
+                pelement.setAttribute('ids', getDomAttributeValue(ddom, 'id'))
+
             # <depend wants the classpath, unless <noclasspath/> stated
             # as a child element or attribute.
-            if not hasDomChild(ddom,'noclasspath') and not hasDomAttribute(ddom,'noclasspath'):
-                pelement.setAttribute('classpath','add')
-            
+            if not hasDomChild(ddom, 'noclasspath') \
+                    and not hasDomAttribute(ddom, 'noclasspath'):
+                pelement.setAttribute('classpath', 'add')
+
             # Store it
-            self.expandDomProperty(pelement,project,workspace)            
+            self.expandDomProperty(pelement, project, workspace)
             self.importProperty(pelement) 
-            
+
             # Stash the constructed property DOM (the doc above the element)
-            if not hasattr(project,'extraDoms'):
-                project.extraDoms=[]
+            if not hasattr(project, 'extraDoms'):
+                project.extraDoms = []
             project.extraDoms.append(pdom)
-        
-    def expandDomProperties(self,project,workspace):
+
+    def expandDomProperties(self, project, workspace):
         #
         # convert Ant property elements which reference a project 
         # into dependencies
         #
         for pdom in self.getDomChildIterator('property'):
-            self.expandDomProperty(pdom,project,workspace)       
+            self.expandDomProperty(pdom, project, workspace)
             self.importProperty(pdom)
-            
+
         #
         # convert Ant sysproperty elements which reference a project 
         # into dependencies
         #
         for spdom in self.getDomChildIterator('sysproperty'):
-            self.expandDomProperty(spdom,project,workspace)       
+            self.expandDomProperty(spdom, project, workspace)
             self.importSysProperty(spdom)
-    
+
     #
     # Expands
     #
-    def expandDomProperty(self,pdom,project,workspace):
-        
+    def expandDomProperty(self, pdom, project, workspace):
+
         # :TODO: Cleanup this Workaround
-        name=getDomAttributeValue(pdom,'name',getDomAttributeValue(pdom,'project'))
-            
+        name = getDomAttributeValue(pdom, 'name',
+                                    getDomAttributeValue(pdom, 'project'))
+
         # Check if the pdom comes from another project
-        if not hasDomAttribute(pdom,'project'): return          
-        projectName=getDomAttributeValue(pdom,'project')           
+        if not hasDomAttribute(pdom, 'project'):
+            return
+        projectName = getDomAttributeValue(pdom, 'project')
         # If that project is the one we have in hand
-        if projectName==project.getName(): return
-        
+        if projectName == project.getName():
+            return
+
         # If the pdom is not as simple as srcdir
-        reference=getDomAttributeValue(pdom,'reference') 
-        if reference=='srcdir': return
-        
+        reference = getDomAttributeValue(pdom, 'reference') 
+        if reference == 'srcdir':
+            return
+
         # If it isn't already a classpath dependency
         if project.hasFullDependencyOnNamedProject(projectName): 
             self.addDebug('Dependency on ' + projectName + \
                     ' exists, no need to add for property ' + \
                         name + '.')
             return
-            
+
         # If there are IDs specified
-        ids=getDomAttributeValue(pdom,'id','')
+        ids = getDomAttributeValue(pdom, 'id', '')
 
         # Runtime?
-        runtime=domAttributeIsTrue(pdom,'runtime')
+        runtime = domAttributeIsTrue(pdom, 'runtime')
 
         if workspace.hasProject(projectName): 
-                        
+
             # A Property
-            noclasspath=not hasDomAttribute(pdom,'classpath')
-                        
+            noclasspath = not hasDomAttribute(pdom, 'classpath')
+
             # Add a dependency (to bring property)
-            dependency=ProjectDependency(project, 	\
-                            workspace.getProject(projectName),	\
-                            INHERIT_NONE,	\
+            dependency = ProjectDependency(project,       \
+                            workspace.getProject(projectName),  \
+                            INHERIT_NONE,       \
                             runtime,
-                            False,	\
+                            False,      \
                             ids,
                             noclasspath,
                             'Property Dependency for ' + name)
-            
-            
+
+
             # Add depend to project...
             # :TODO: Convert to ModelObject
             project.addDependency(dependency)
         else:
-            project.addError('No such project [' + projectName + '] for property.')
-     
-    def complete(self,project,workspace):
+            project.addError('No such project [' + projectName \
+                                 + '] for property.')
+
+    def complete(self, _project, workspace):
         """
         Complete the model from XML
         """
-        if self.isComplete(): return
-        
+        if self.isComplete():
+            return
+
         # Import the properties..
-    	PropertyContainer.importProperties(self,self.dom)
-    	
-    	# Complete them all
+        PropertyContainer.importProperties(self, self.dom)
+
+        # Complete them all
         self.completeProperties(workspace)
-        
+
         # Set this up...
         if self.hasDomAttribute('basedir'):
-            self.basedir = os.path.abspath(	\
-                                os.path.join(	\
-                                    self.project.getModule().getWorkingDirectory() or dir.base,	\
-                                    self.getDomAttributeValue('basedir')))
+            self.basedir = os.path.abspath(os.path.join(
+                    self.project.getModule().getWorkingDirectory() or dir.base,
+                    self.getDomAttributeValue('basedir')
+                    ))
         else:
-            self.basedir=self.project.getBaseDirectory()
+            self.basedir = self.project.getBaseDirectory()
 
         # Check for debugging properties
         self.setDebug(self.domAttributeIsTrue('debug'))
         self.setVerbose(self.domAttributeIsTrue('verbose'))
-        
+
         self.setComplete(True)
-                    
-    def dump(self, indent=0, output=sys.stdout):
+
+    def dump(self, indent = 0, output = sys.stdout):
         """ Display the contents of this object """
-        i=getIndent(indent)
-        output.write(i+self.__class__.__name__+'\n')
-        ModelObject.dump(self,indent+1,output)
+        i = getIndent(indent)
+        output.write(i + self.__class__.__name__ + '\n')
+        ModelObject.dump(self, indent + 1, output)
         # Dump all properties...
-        PropertyContainer.dump(self,indent+1,output)
+        PropertyContainer.dump(self, indent + 1, output)
 
     def getBaseDirectory(self):
-         return self.basedir
-    
+        return self.basedir
+
 # represents an <ant/> element
 class BaseAnt(Builder):
     """ An Ant command (within a project)"""
-    def __init__(self,dom,project):
-        Builder.__init__(self,dom,project)
-      
+    def __init__(self, dom, project):
+        Builder.__init__(self, dom, project)
+
         # Import the target
-        self.target=self.getDomAttributeValue('target') # :TODO: Soon add ... ,'gump')            
+        self.target = self.getDomAttributeValue('target')
         # Import the buildfile
-        self.buildfile=self.getDomAttributeValue('buildfile') # :TODO: Soon add ... ,'build.xml')
-            
+        self.buildfile = self.getDomAttributeValue('buildfile')
+
     def hasTarget(self):
-        if self.target: return True
+        if self.target:
+            return True
         return False
-        
+
     def getTarget(self):
         return self.target
-        
+
     def hasBuildFile(self):
-        if self.buildfile: return True
+        if self.buildfile:
+            return True
         return False
-        
+
     def getBuildFile(self):
         return self.buildfile
-                
-    def dump(self, indent=0, output=sys.stdout):
+
+    def dump(self, indent = 0, output = sys.stdout):
         """ Display the contents of this object """
-        Builder.dump(self,indent,output)
-        i=getIndent(indent+1)
+        Builder.dump(self, indent, output)
+        i = getIndent(indent+1)
         if self.hasTarget():
             output.write(i+'Target: ' + self.getTarget() + '\n')
         if self.hasBuildFile():
@@ -254,69 +263,77 @@ class BaseAnt(Builder):
 class Ant(BaseAnt): 
     """ An Ant command (within a project) """
     pass
-    
+
 # represents a <nant/> element
 class NAnt(BaseAnt):
     """ A NAnt command (within a project) """
     pass
-    
+
 # represents an <maven/> element
 class Maven(Builder):
     """ A Maven command (within a project)"""
-    def __init__(self,dom,project):
-    	Builder.__init__(self,dom,project)
-    	
+    def __init__(self, dom, project):
+        Builder.__init__(self, dom, project)
+
         # Import the goal
-        self.goal=self.getDomAttributeValue('goal','jar')
-            	    
+        self.goal = self.getDomAttributeValue('goal', 'jar')
+
     def getGoal(self):
         return self.goal
-    	
-    def dump(self, indent=0, output=sys.stdout):
+
+    def dump(self, indent = 0, output = sys.stdout):
         """ Display the contents of this object """
-        Builder.dump(self,indent,output)
-        i=getIndent(indent+1)
-        output.write(i+'Goal: ' + self.getGoal() + '\n')
+        Builder.dump(self, indent, output)
+        i = getIndent(indent + 1)
+        output.write(i + 'Goal: ' + self.getGoal() + '\n')
 
 # represents an <mvn/> element
 class Maven2(Builder):
     """ A Maven command (within a project)"""
-    def __init__(self,dom,project):
-    	Builder.__init__(self,dom,project)
-    	
+    def __init__(self, dom, project):
+        Builder.__init__(self, dom, project)
+
         # Import the goal
-        self.goal=self.getDomAttributeValue('goal','package')
+        self.goal = self.getDomAttributeValue('goal', 'package')
+
+        self.local_repo = self.getDomAttributeValue('separateLocalRepository',
+                                                    'False')
 
-        self.separateLocalRepo = self.domAttributeIsTrue('separateLocalRepository')
-            	    
     def getGoal(self):
         return self.goal
-    	
-    def dump(self, indent=0, output=sys.stdout):
+
+    def dump(self, indent = 0, output = sys.stdout):
         """ Display the contents of this object """
-        Builder.dump(self,indent,output)
-        i=getIndent(indent+1)
-        output.write(i+'Goal: ' + self.getGoal() + '\n')
+        Builder.dump(self, indent, output)
+        i = getIndent(indent + 1)
+        output.write(i + 'Goal: ' + self.getGoal() + '\n')
 
     def needsSeparateLocalRepository(self):
-        """ Whether a separate local repository should be used for this build """
-        return self.separateLocalRepo
+        """ Whether a separate local repository will be used for this build """
+        return self.local_repo and self.local_repo not in ['False', 'false']
+
+    def getLocalRepositoryName(self):
+        """ Name of the local repository if one has been given """
+        if not self.needsSeparateLocalRepository() \
+                or self.local_repo in ['True', 'true']:
+            return None
+        return self.local_repo
 
 
 # represents an <configure/> element
 class Configure(Builder):
     """ A configure command (within a project)"""
 
-    def __init__(self,dom,project):
-        Builder.__init__(self,dom,project)
+    def __init__(self, dom, project):
+        Builder.__init__(self, dom, project)
 
-    def expandDomProperties(self,project,workspace):
+    def expandDomProperties(self, project, workspace):
         #
         # convert Ant property elements which reference a project 
         # into dependencies
         #
         for pdom in self.getDomChildIterator('arg'):
-            self.expandDomProperty(pdom,project,workspace)       
+            self.expandDomProperty(pdom, project, workspace)
             self.importProperty(pdom)
 
 # represents a <make/> element
@@ -324,36 +341,38 @@ class Configure(Builder):
 class Make(Configure):
     """ A make command (within a project) """
 
-    def __init__(self,dom,project):
-    	Configure.__init__(self,dom,project)
+    def __init__(self, dom, project):
+        Configure.__init__(self, dom, project)
         # Import the target
-        self.target=self.getDomAttributeValue('target')
+        self.target = self.getDomAttributeValue('target')
         # Import the makefile
-        self.makefile=self.getDomAttributeValue('makefile')
-            
+        self.makefile = self.getDomAttributeValue('makefile')
+
     def hasTarget(self):
-        if self.target: return True
+        if self.target:
+            return True
         return False
-        
+
     def getTarget(self):
         return self.target
-        
+
     def hasMakeFile(self):
-        if selfmakefile: return True
+        if self.makefile:
+            return True
         return False
-        
+
     def getMakeFile(self):
         return self.makefile
 
 # represents an <script/> element
 class Script(Configure):
     """ A script command (within a project)"""
-    def __init__(self,dom,project):
-    	Configure.__init__(self,dom,project)
-    	
-    	# Get the name
-    	self.name=self.getDomAttributeValue('name','unset')
-    	
+    def __init__(self, dom, project):
+        Configure.__init__(self, dom, project)
+
+        # Get the name
+        self.name = self.getDomAttributeValue('name', 'unset')
+
     def getName(self):
         return self.name