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/07/10 07:44:10 UTC
svn commit: r962764 - in /gump/live: ./ python/gump/core/build/maven.py
python/gump/core/build/mvn.py python/gump/core/language/java.py
python/gump/core/update/bzr.py python/gump/core/update/darcs.py
python/gump/core/update/hg.py python/gump/test/maven.py
Author: bodewig
Date: Sat Jul 10 05:44:09 2010
New Revision: 962764
URL: http://svn.apache.org/viewvc?rev=962764&view=rev
Log:
merge CLASSPATH fixes: only add jars; mvn and maven don't use it anyway
Modified:
gump/live/ (props changed)
gump/live/python/gump/core/build/maven.py
gump/live/python/gump/core/build/mvn.py
gump/live/python/gump/core/language/java.py (contents, props changed)
gump/live/python/gump/core/update/bzr.py (props changed)
gump/live/python/gump/core/update/darcs.py (props changed)
gump/live/python/gump/core/update/hg.py (props changed)
gump/live/python/gump/test/maven.py
Propchange: gump/live/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Jul 10 05:44:09 2010
@@ -1 +1 @@
-/gump/trunk:746160,746727,746892,747270,747272-747273,747656,748010,748018,748028,748661,748967,760784-761159,815848,953630-954169,955387,955837,956771,957107,957408,958453,958915,959344,959847,960260,960295,960297,960300,960303,961244,961577
+/gump/trunk:746160,746727,746892,747270,747272-747273,747656,748010,748018,748028,748661,748967,760784-761159,815848,953630-954169,955387,955837,956771,957107,957408,958453,958915,959344,959847,960260,960295,960297,960300,960303,961244,961577,961843,961859,961870,962401
Modified: gump/live/python/gump/core/build/maven.py
URL: http://svn.apache.org/viewvc/gump/live/python/gump/core/build/maven.py?rev=962764&r1=962763&r2=962764&view=diff
==============================================================================
--- gump/live/python/gump/core/build/maven.py (original)
+++ gump/live/python/gump/core/build/maven.py Sat Jul 10 05:44:09 2010
@@ -11,7 +11,7 @@
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
+# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
@@ -22,262 +22,239 @@ __copyright__ = "Copyright (c) 1999-2004
__license__ = "http://www.apache.org/licenses/LICENSE-2.0"
-"""
-
-"""
-
+import gump
import os.path
-import sys
+import time
from gump import log
-from gump.core.run.gumprun import *
-from gump.core.config import dir, default, basicConfig
+from gump.core.model.workspace import CommandWorkItem, \
+ REASON_BUILD_FAILED, REASON_BUILD_TIMEDOUT, REASON_PREBUILD_FAILED, \
+ STATE_FAILED, STATE_SUCCESS, WORK_TYPE_BUILD
+from gump.core.run.gumprun import RunSpecific
+
+from gump.util.file import FILE_TYPE_CONFIG
+from gump.util.process.command import Cmd, CMD_STATE_SUCCESS, \
+ CMD_STATE_TIMED_OUT
+from gump.util.process.launcher import execute
+from gump.util.tools import catFileToFileHolder
+
+#
+# Build an Maven command for this project
+#
+def getMavenCommand(project):
+ maven = project.maven
+
+ # 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()
+
+ # Run Maven...
+ cmd = Cmd('maven', 'build_' + project.getModule().getName() + '_' + \
+ project.getName(), basedir)
+
+ #
+ # 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')
+
+ #
+ # Suppress downloads
+ #
+ cmd.addParameter('--offline')
+
+ # End with the goal...
+ if goal:
+ for goalParam in goal.split(', '):
+ cmd.addParameter(goalParam)
+
+ return cmd
+
+# The propertiesFile parameter is primarily for testing.
+def generateMavenProperties(project, languageHelper, propertiesFile = None):
+ """Set properties/overrides for a Maven project"""
+
+ #:TODO: Does Maven have the idea of system properties?
+
+ #
+ # Where to put this:
+ #
+ basedir = project.maven.getBaseDirectory() or project.getBaseDirectory()
+ if not propertiesFile:
+ propertiesFile = os.path.abspath(os.path.join(basedir,
+ 'build.properties'))
+
+ # Ensure containing directory exists, or make it.
+ propsdir = os.path.dirname(propertiesFile)
+ if not os.path.exists(propsdir):
+ project.addInfo('Making directory for Maven properties: [' + \
+ propsdir + ']')
+ os.makedirs(propsdir)
+
+ if os.path.exists(propertiesFile):
+ project.addWarning('Overriding Maven properties: [' + \
+ propertiesFile + ']')
-from gump.util import dump, display, getIndent, logResourceUtilization, \
- invokeGarbageCollection
-from gump.util.note import Annotatable
-from gump.util.work import *
-
-from gump.util.tools import *
-
-from gump.core.model.workspace import *
-from gump.core.model.module import Module
-from gump.core.model.project import Project
-from gump.core.model.depend import ProjectDependency
-from gump.core.model.stats import *
-from gump.core.model.state import *
+ props = open(propertiesFile, 'w')
+
+ props.write(("""# ------------------------------------------------------------------------
+# DO NOT EDIT DO NOT EDIT DO NOT EDIT DO NOT EDIT DO NOT EDIT DO NOT EDIT DO NOT EDIT
+#
+# File Automatically Generated by Gump, see http://gump.apache.org/
+#
+# Generated For : %s
+# Generated At : %s
+#
+#
+# DO NOT EDIT DO NOT EDIT DO NOT EDIT DO NOT EDIT DO NOT EDIT DO NOT EDIT DO NOT EDIT
+# ------------------------------------------------------------------------
+""") % (project.getName(), time.strftime('%Y-%m-%d %H:%M:%S')) )
+
+ #
+ # Output basic properties
+ #
+ for property in project.getWorkspace().getProperties() + \
+ project.getMaven().getProperties():
+ # build.sysclasspath makes Maven sick.
+ if not 'build.sysclasspath' == property.name:
+ props.write(('%s = %s\n') % \
+ (property.name,
+ property.value.replace('\\', '/'))
+ )
+
+ #
+ # Output classpath properties
+ #
+ props.write("""
+# ------------------------------------------------------------------------
+# M A V E N J A R O V E R R I D E
+# ------------------------------------------------------------------------
+maven.jar.override = on
+
+# ------------------------------------------------------------------------
+# Jars set explicity by path.
+# ------------------------------------------------------------------------
+""")
+
+ (classpath, bootclasspath) = languageHelper.getClasspathObjects(project)
+
+ # :TODO: write...
+ for annotatedPath in classpath.getPathParts() + \
+ bootclasspath.getPathParts():
+ if isinstance(annotatedPath, gump.core.language.path.AnnotatedPath):
+ props.write(('# Contributor: %s\nmaven.jar.%s = %s\n') % \
+ ( annotatedPath.getContributor(),
+ annotatedPath.getId(),
+ annotatedPath.getPath().replace('\\', '/')))
+
+ return propertiesFile
+
+def locateMavenProjectPropertiesFile(project):
+ """Return Maven project properties file location"""
+ basedir = project.maven.getBaseDirectory() or project.getBaseDirectory()
+ return os.path.abspath(os.path.join(basedir, 'project.properties'))
+
+def locateMavenProjectFile(project):
+ """Return Maven project file location"""
+ basedir = project.maven.getBaseDirectory() or project.getBaseDirectory()
+ return os.path.abspath(os.path.join(basedir, 'project.xml'))
###############################################################################
# Classes
###############################################################################
-class MavenBuilder(gump.core.run.gumprun.RunSpecific):
-
- def __init__(self,run):
- gump.core.run.gumprun.RunSpecific.__init__(self,run)
+class MavenBuilder(RunSpecific):
+
+ def __init__(self, run):
+ RunSpecific.__init__(self, run)
- def buildProject(self,project,languageHelper,stats):
+ def buildProject(self, project, languageHelper, stats):
"""
Build a Maven project
"""
-
- workspace=self.run.getWorkspace()
-
- log.debug('Run Maven on Project: #[' + `project.getPosition()` + '] ' + project.getName())
-
+
+ workspace = self.run.getWorkspace()
+
+ log.debug('Run Maven on Project: #[' + `project.getPosition()` + \
+ '] ' + project.getName())
+
self.performPreBuild(project, languageHelper, stats)
-
+
if project.okToPerformWork():
#
# Get the appropriate build command...
#
- cmd=self.getMavenCommand(project,languageHelper)
+ cmd = getMavenCommand(project)
if cmd:
# Execute the command ....
- cmdResult=execute(cmd,workspace.tmpdir)
-
- # Update Context
- work=CommandWorkItem(WORK_TYPE_BUILD,cmd,cmdResult)
+ cmdResult = execute(cmd, workspace.tmpdir)
+
+ # Update Context
+ work = CommandWorkItem(WORK_TYPE_BUILD, cmd, cmdResult)
project.performedWork(work)
project.setBuilt(True)
-
- # Update Context w/ Results
- if not cmdResult.state==CMD_STATE_SUCCESS:
- reason=REASON_BUILD_FAILED
- if cmdResult.state==CMD_STATE_TIMED_OUT:
- reason=REASON_BUILD_TIMEDOUT
- project.changeState(STATE_FAILED,reason)
- else:
+
+ # Update Context w/ Results
+ if not cmdResult.state == CMD_STATE_SUCCESS:
+ reason = REASON_BUILD_FAILED
+ if cmdResult.state == CMD_STATE_TIMED_OUT:
+ reason = REASON_BUILD_TIMEDOUT
+ project.changeState(STATE_FAILED, reason)
+ else:
# For now, things are going good...
project.changeState(STATE_SUCCESS)
-
+
if project.wasBuilt():
- pomFile=self.locateMavenProjectFile(project)
- if os.path.exists(pomFile):
+ pomFile = locateMavenProjectFile(project)
+ if os.path.exists(pomFile):
project.addDebug('Maven POM in: ' + pomFile)
catFileToFileHolder(project, pomFile, FILE_TYPE_CONFIG)
-
- projpFile=self.locateMavenProjectPropertiesFile(project)
- if os.path.exists(projpFile):
- project.addDebug('Maven project properties in: ' + projpFile)
- catFileToFileHolder(project, projpFile, FILE_TYPE_CONFIG)
-
- #
- # Build an Maven command for this project
- #
- def getMavenCommand(self,project,languageHelper):
- maven=project.maven
-
- # 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('maven','build_'+project.getModule().getName()+'_'+project.getName(),\
- basedir,{'CLASSPATH':classpath})
-
- # Set this as a system property. Setting it here helps JDK1.4+
- # AWT implementations cope w/o an X11 server running (e.g. on
- # Linux)
- # cmd.addPrefixedParameter('-D','java.awt.headless','true','=')
-
- #
- # Add BOOTCLASSPATH
- #
- #if bootclasspath:
- # cmd.addPrefixedParameter('-X','bootclasspath/p',bootclasspath,':')
-
- #if jvmargs:
- # cmd.addParameters(jvmargs)
-
- # cmd.addParameter('org.apache.maven.cli.App')
-
- #
- # 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')
-
- #
- # Suppress downloads
- #
- cmd.addParameter('--offline')
-
- #
- # This sets the *defaults*, a workspace could override them.
- #
- #cmd.addPrefixedParameter('-D','build.sysclasspath','only','=')
-
- # End with the goal...
- if goal:
- for goalParam in goal.split(','):
- cmd.addParameter(goalParam)
-
- return cmd
-
+
+ projpFile = locateMavenProjectPropertiesFile(project)
+ if os.path.exists(projpFile):
+ project.addDebug('Maven project properties in: ' + projpFile)
+ catFileToFileHolder(project, projpFile, FILE_TYPE_CONFIG)
+
# 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():
try:
- propertiesFile=self.generateMavenProperties(project,languageHelper)
- project.addDebug('(Gump generated) Maven Properties in: ' + propertiesFile)
-
+ propertiesFile = generateMavenProperties(project,
+ languageHelper)
+ project.addDebug('(Gump generated) Maven Properties in: ' + \
+ propertiesFile)
+
try:
- catFileToFileHolder(project,propertiesFile,
- FILE_TYPE_CONFIG,
+ catFileToFileHolder(project, propertiesFile,
+ FILE_TYPE_CONFIG,
os.path.basename(propertiesFile))
except:
- log.error('Display Properties [ ' + propertiesFile + '] Failed', exc_info=1)
-
+ log.error('Display Properties [ ' + propertiesFile + \
+ '] Failed', exc_info = 1)
+
except Exception, details:
- message='Generate Maven Properties Failed:' + str(details)
- log.error(message, exc_info=1)
- project.addError(message)
- project.changeState(STATE_FAILED,REASON_PREBUILD_FAILED)
+ message = 'Generate Maven Properties Failed:' + str(details)
+ log.error(message, exc_info = 1)
+ project.addError(message)
+ project.changeState(STATE_FAILED, REASON_PREBUILD_FAILED)
- # The propertiesFile parameter is primarily for testing.
- def generateMavenProperties(self,project,languageHelper,propertiesFile=None):
- """Set properties/overrides for a Maven project"""
-
- #:TODO: Does Maven have the idea of system properties?
-
- #
- # Where to put this:
- #
- basedir = project.maven.getBaseDirectory() or project.getBaseDirectory()
- if not propertiesFile:
- propertiesFile=os.path.abspath(os.path.join(basedir,'build.properties'))
-
- # Ensure containing directory exists, or make it.
- propsdir=os.path.dirname(propertiesFile)
- if not os.path.exists(propsdir):
- project.addInfo('Making directory for Maven properties: ['+propsdir+']')
- os.makedirs(propsdir)
-
- if os.path.exists(propertiesFile):
- project.addWarning('Overriding Maven properties: ['+propertiesFile+']')
-
-
- props=open(propertiesFile,'w')
-
- props.write(("""# ------------------------------------------------------------------------
-# DO NOT EDIT DO NOT EDIT DO NOT EDIT DO NOT EDIT DO NOT EDIT DO NOT EDIT DO NOT EDIT
-#
-# File Automatically Generated by Gump, see http://gump.apache.org/
-#
-# Generated For : %s
-# Generated At : %s
-#
-#
-# DO NOT EDIT DO NOT EDIT DO NOT EDIT DO NOT EDIT DO NOT EDIT DO NOT EDIT DO NOT EDIT
-# ------------------------------------------------------------------------
-""") % (project.getName(), time.strftime('%Y-%m-%d %H:%M:%S')) )
-
- #
- # Output basic properties
- #
- for property in project.getWorkspace().getProperties()+project.getMaven().getProperties():
- # build.sysclasspath makes Maven sick.
- if not 'build.sysclasspath' == property.name:
- props.write(('%s=%s\n') % (property.name,property.value.replace('\\','/')))
-
- #
- # Output classpath properties
- #
- props.write("""
-# ------------------------------------------------------------------------
-# M A V E N J A R O V E R R I D E
-# ------------------------------------------------------------------------
-maven.jar.override = on
+ def preview(self, project, _languageHelper, _stats):
+ cmd = getMavenCommand(project)
+ cmd.dump()
-# ------------------------------------------------------------------------
-# Jars set explicity by path.
-# ------------------------------------------------------------------------
-""")
-
- (classpath,bootclasspath)=languageHelper.getClasspathObjects(project)
-
- # :TODO: write...
- for annotatedPath in classpath.getPathParts()+bootclasspath.getPathParts():
- if isinstance(annotatedPath,gump.core.language.path.AnnotatedPath):
- props.write(('# Contributor: %s\nmaven.jar.%s=%s\n') % \
- ( annotatedPath.getContributor(),
- annotatedPath.getId(),
- annotatedPath.getPath().replace('\\','/')))
-
- return propertiesFile
-
- def locateMavenProjectPropertiesFile(self,project):
- """Return Maven project properties file location"""
- basedir = project.maven.getBaseDirectory() or project.getBaseDirectory()
- return os.path.abspath(os.path.join(basedir,'project.properties'))
-
- def locateMavenProjectFile(self,project):
- """Return Maven project file location"""
- basedir = project.maven.getBaseDirectory() or project.getBaseDirectory()
- return os.path.abspath(os.path.join(basedir,'project.xml'))
-
- def preview(self,project,languageHelper,stats):
- command=self.getMavenCommand(project,languageHelper)
- command.dump()
-
Modified: gump/live/python/gump/core/build/mvn.py
URL: http://svn.apache.org/viewvc/gump/live/python/gump/core/build/mvn.py?rev=962764&r1=962763&r2=962764&view=diff
==============================================================================
--- gump/live/python/gump/core/build/mvn.py (original)
+++ gump/live/python/gump/core/build/mvn.py Sat Jul 10 05:44:09 2010
@@ -65,7 +65,7 @@ def getMavenProperties(project):
property.value, '=')
return properties
-def getMavenCommand(project, languageHelper):
+def getMavenCommand(project):
""" Build an Maven command for this project """
maven = project.mvn
@@ -81,14 +81,9 @@ def getMavenCommand(project, languageHel
#
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})
+ project.getName(), basedir)
cmd.addParameter('--batch-mode')
@@ -153,7 +148,7 @@ class Maven2Builder(RunSpecific):
#
# Get the appropriate build command...
#
- cmd = getMavenCommand(project, languageHelper)
+ cmd = getMavenCommand(project)
if cmd:
# Execute the command ....
@@ -205,8 +200,8 @@ class Maven2Builder(RunSpecific):
project.addError(message)
project.changeState(STATE_FAILED, REASON_PREBUILD_FAILED)
- def preview(self, project, languageHelper, _stats):
- command = getMavenCommand(project, languageHelper)
+ def preview(self, project, _languageHelper, _stats):
+ command = getMavenCommand(project)
command.dump()
def generateMvnSettings(self, project, _languageHelper):
Modified: gump/live/python/gump/core/language/java.py
URL: http://svn.apache.org/viewvc/gump/live/python/gump/core/language/java.py?rev=962764&r1=962763&r2=962764&view=diff
==============================================================================
--- gump/live/python/gump/core/language/java.py (original)
+++ gump/live/python/gump/core/language/java.py Sat Jul 10 05:44:09 2010
@@ -11,14 +11,14 @@
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
+# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
- Generates Classpaths for projects w/ dependencies
+ Generates Classpaths for projects w/ dependencies
"""
@@ -32,68 +32,69 @@ import gump.util.process.command
import gump.core.model.depend
-import gump.core.language.path
+from gump.core.language.path import AnnotatedPath, Classpath
+from gump.core.model.output import OUTPUT_BOOTCLASSPATH_JAR
###############################################################################
# Classes
###############################################################################
class JavaHelper(gump.core.run.gumprun.RunSpecific):
-
- def __init__(self,run):
- gump.core.run.gumprun.RunSpecific.__init__(self,run)
-
+
+ def __init__(self, run):
+ gump.core.run.gumprun.RunSpecific.__init__(self, run)
+
# Caches for classpaths
- self.classpaths={}
- self.bootclasspaths={}
-
- def getJVMArgs(self,project):
-
+ self.classpaths = {}
+ self.bootclasspaths = {}
+
+ def getJVMArgs(self, project):
+
"""
-
+
Get JVM arguments for a project
-
+
"""
args = project.jvmargs
if os.environ.has_key('GUMP_JAVA_ARGS'):
args = gump.util.process.command.Parameters()
for p in os.environ['GUMP_JAVA_ARGS'].split(' '):
- args.addParameter(p);
+ args.addParameter(p)
for p in project.jvmargs.items() :
- args.addParameterObject(p);
+ args.addParameterObject(p)
return args
-
- def getClasspaths(self,project,debug=False):
+
+ def getClasspaths(self, project, debug = False):
"""
Get boot and regular classpaths for a project.
-
+
Return a (classpath, bootclaspath) tuple for this project
"""
# Calculate classpath and bootclasspath
- (classpath, bootclasspath) = self.getClasspathObjects(project,debug)
-
+ (classpath, bootclasspath) = self.getClasspathObjects(project, debug)
+
# Return them simple/flattened
return ( classpath.getFlattened(), bootclasspath.getFlattened() )
-
+
def getBaseClasspath(self):
"""
-
+
The basic classpath needs to include a compiler...
-
+
Return a system classpath (to include $JAVA_HOME/lib/tools.jar'
for a compiler).
"""
- sysClasspath=gump.core.language.path.Classpath('System Classpath')
- javaHome=self.run.getEnvironment().getJavaHome()
- syscp=os.path.join(os.path.join(javaHome,'lib'),'tools.jar')
+ sysClasspath = Classpath('System Classpath')
+ javaHome = self.run.getEnvironment().getJavaHome()
+ syscp = os.path.join(os.path.join(javaHome, 'lib'), 'tools.jar')
if os.path.exists(syscp):
- sysClasspath.importFlattenedParts(syscp)
+ sysClasspath.importFlattenedParts(syscp)
return sysClasspath
- def getClasspathObjects(self,project,debug=False):
+ def getClasspathObjects(self, project, debug = False):
"""
Get a TOTAL classpath for a project (including its dependencies)
-
+
A tuple of (CLASSPATH, BOOTCLASSPATH) for a project
"""
@@ -101,161 +102,193 @@ class JavaHelper(gump.core.run.gumprun.R
# Do this once only... storing it on the context. Not as nice as
# doing it OO (each project context stores its own, but a step..)
#
- if self.classpaths.has_key(project) and self.bootclasspaths.has_key(project) :
- if debug: print "Classpath/Bootclasspath previously resolved..."
- return ( self.classpaths[project], self.bootclasspaths[project] )
-
+ if self.classpaths.has_key(project) and \
+ self.bootclasspaths.has_key(project) :
+ if debug:
+ print "Classpath/Bootclasspath previously resolved..."
+ return (self.classpaths[project], self.bootclasspaths[project])
+
# Start with the system classpath (later remove this)
- classpath=self.getBaseClasspath()
- bootclasspath=gump.core.language.path.Classpath('Boot Classpath')
+ classpath = self.getBaseClasspath()
+ bootclasspath = Classpath('Boot Classpath')
# Add this project's work directories (these go into
# CLASSPATH, never BOOTCLASSPATH)
- workdir=project.getModule().getWorkingDirectory()
for work in project.getWorks():
- path=work.getResolvedPath()
+ path = work.getResolvedPath()
if path:
- classpath.addPathPart(gump.core.language.path.AnnotatedPath('',path,project,None,'Work Entity'))
+ classpath.addPathPart(AnnotatedPath('', path, project, None,
+ 'Work Entity'))
else:
- log.error("<work element with neither 'nested' nor 'parent' attribute on " \
- + project.getName() + " in " + project.getModule().getName())
-
+ log.error("<work element with neither 'nested' nor 'parent'" \
+ + " attribute on " \
+ + project.getName() + " in " \
+ + project.getModule().getName())
+
# Append dependent projects (including optional)
- visited=[]
-
+ visited = []
+
# Does it have any depends? Process all of them...
for dependency in project.getDirectDependencies():
- (subcp, subbcp) = self._getDependOutputList(project,dependency,visited,1,debug)
- self._importClasspaths(classpath,bootclasspath,subcp,subbcp)
-
+ (subcp, subbcp) = self._getDependOutputList(project, dependency,
+ visited, 1, debug)
+ _importClasspaths(classpath, bootclasspath, subcp, subbcp)
+
# Store so we don't do this twice.
self.classpaths[project] = classpath
self.bootclasspaths[project] = bootclasspath
-
+
return ( classpath, bootclasspath )
- def _getDependOutputList(self,project,dependency,visited,depth=0,debug=0):
+ def _getDependOutputList(self, project, dependency, visited, depth = 0,
+ debug = 0):
"""
-
+
Perform this 'dependency' (mandatory or optional)
-
+
1) Bring in the JARs (or those specified by id in depend ids)
2) Do NOT bring in the working entities (directories/jars)
- 3) Bring in the sub-depends (or optional) if inherit='all' or 'hard'
- 4) Bring in the runtime sub-depends if inherit='runtime'
+ 3) Bring in the sub-depends (or optional) if inherit = 'all' or 'hard'
+ 4) Bring in the runtime sub-depends if inherit = 'runtime'
5) Also: *** Bring in any depenencies that the dependency inherits ***
-
- """
-
+
+ """
+
# Skip ones that aren't here to affect the classpath
- if dependency.isNoClasspath():
- return (None,None)
-
+ if dependency.isNoClasspath():
+ return (None, None)
+
# Don't loop
if (dependency in visited):
- # beneficiary.addInfo("Duplicated dependency [" + str(depend) + "]")
+ # beneficiary.addInfo("Duplicated dependency [" + str(depend) + "]")
if debug:
print str(depth) + ") Already Visited : " + str(dependency)
print str(depth) + ") Previously Visits : "
for v in visited:
print str(depth) + ") - " + str(v)
- return (None,None)
-
+ return (None, None)
+
visited.append(dependency)
-
+
if debug:
print str(depth) + ") Perform : " + `dependency`
-
+
#
- classpath=gump.core.language.path.Classpath('Classpath for ' + `dependency`)
- bootclasspath=gump.core.language.path.Classpath('Bootclasspath for ' + `dependency`)
+ classpath = Classpath('Classpath for ' + `dependency`)
+ bootclasspath = Classpath('Bootclasspath for ' + `dependency`)
# Context for this dependecy project...
- project=dependency.getProject()
-
+ project = dependency.getProject()
+
# The dependency drivers...
#
# runtime (i.e. this is a runtime dependency)
# inherit (i.e. inherit stuff from a dependency)
#
- runtime=dependency.runtime
- inherit=dependency.inherit
+ runtime = dependency.runtime
+ inherit = dependency.inherit
if dependency.ids:
- ids=dependency.ids.split()
+ ids = dependency.ids.split()
else:
- ids=None
-
+ ids = None
+
# Explain..
- dependStr=''
+ dependStr = ''
if inherit:
- if dependStr: dependStr += ', '
- dependStr += 'Inherit:'+dependency.getInheritenceDescription()
+ if dependStr:
+ dependStr += ', '
+ dependStr += 'Inherit:' + dependency.getInheritenceDescription()
if runtime:
- if dependStr: dependStr += ', '
+ if dependStr:
+ dependStr += ', '
dependStr += 'Runtime'
-
+
# Append JARS for this project
# (respect ids --- none means 'all)
####################################################
# Note, if they don't come from the project outputs
# (e.g. 'cos the project failed) attempt to get them
- # from the repository. [This has been done already,
+ # from the repository. [This has been done already,
# so is transparent here.]
- projectIds=[]
- for jar in project.getOutputs():
+ projectIds = []
+ for jar in [o for o in project.getOutputs() if o.is_jar()]:
# Store for double checking
- if jar.getId(): projectIds.append(jar.getId())
-
+ if jar.getId():
+ projectIds.append(jar.getId())
+
# If 'all' or in ids list:
- if (not ids) or (jar.getId() in ids):
- if ids: dependStr += ' Id = ' + jar.getId()
- path=gump.core.language.path.AnnotatedPath(jar.getId(),jar.path,project,dependency.getOwnerProject(),dependStr)
-
+ if (not ids) or (jar.getId() in ids):
+ if ids:
+ dependStr += ' Id = ' + jar.getId()
+ path = AnnotatedPath(jar.getId(), jar.path, project,
+ dependency.getOwnerProject(), dependStr)
+
# Add to CLASSPATH
- if not jar.getType() == 'boot':
- if debug: print str(depth) + ') Append JAR : ' + str(path)
+ if not jar.getType() == OUTPUT_BOOTCLASSPATH_JAR:
+ if debug:
+ print str(depth) + ') Append JAR : ' + str(path)
classpath.addPathPart(path)
else:
# Add to BOOTCLASSPATH
- if debug: print str(depth) + ') Append *BOOTCLASSPATH* JAR : ' + str(path)
- bootclasspath.addPathPart(path)
+ if debug:
+ print str(depth) + ') Append *BOOTCLASSPATH* JAR : ' \
+ + str(path)
+ bootclasspath.addPathPart(path)
# Double check IDs (to reduce stale ids in metadata)
if ids:
for id in ids:
if not id in projectIds:
- dependency.getOwnerProject().addWarning("Invalid ID [" + id \
- + "] for dependency on [" + project.getName() + "]")
+ dependency.getOwnerProject()\
+ .addWarning("Invalid ID [" + id \
+ + "] for dependency on [" \
+ + project.getName() + "]")
# Append sub-projects outputs, if inherited
- for subdependency in project.getDirectDependencies():
- #
- # For the main project we working on, we care about it's request for inheritence
- # but we don't recursively inherit. (i.e. we only do this at recursion depth 1).
- #
- # If the dependency is set to 'all' (or 'hard') we inherit all dependencies.
- # If the dependency is set to 'runtime' we inherit all runtime dependencies.
+ for subdependency in project.getDirectDependencies():
#
- # INHERIT_OUTPUTS (aka INHERIT_JARS) is more sticky, and we track that down (and down, ...).
+ # For the main project we working on, we care about it's
+ # request for inheritence but we don't recursively
+ # inherit. (i.e. we only do this at recursion depth 1).
#
- if ( ( ( 1 == depth ) and \
- (inherit in [ gump.core.model.depend.INHERIT_ALL, gump.core.model.depend.INHERIT_HARD ]) \
- or \
- (inherit == gump.core.model.depend.INHERIT_RUNTIME and subdependency.isRuntime()) ) \
- or \
- ( inherit in [ gump.core.model.depend.INHERIT_OUTPUTS ] ) ) :
- (subcp, subbcp) = self._getDependOutputList(project,subdependency,visited,depth+1,debug)
- self._importClasspaths(classpath,bootclasspath,subcp,subbcp)
+
+ # If the dependency is set to 'all' (or 'hard') we
+ # inherit all dependencies.
+ # If the dependency is set to 'runtime' we inherit all
+ # runtime dependencies.
+ #
+ # INHERIT_OUTPUTS (aka INHERIT_JARS) is more sticky, and
+ # we track that down (and down, ...).
+ #
+ if (
+ ( ( 1 == depth ) and \
+ (inherit in [ gump.core.model.depend.INHERIT_ALL,
+ gump.core.model.depend.INHERIT_HARD ]) \
+ or \
+ (inherit == gump.core.model.depend.INHERIT_RUNTIME \
+ and subdependency.isRuntime())
+ ) \
+ or \
+ (inherit in [ gump.core.model.depend.INHERIT_OUTPUTS ])
+ ) :
+ (subcp, subbcp) = self._getDependOutputList(project,
+ subdependency,
+ visited, depth + 1,
+ debug)
+ _importClasspaths(classpath, bootclasspath, subcp, subbcp)
elif debug:
- print str(depth) + ') Skip : ' + str(subdependency) + ' in ' + project.name
+ print str(depth) + ') Skip : ' + str(subdependency) \
+ + ' in ' + project.name
return (classpath, bootclasspath)
-
- def _importClasspaths(self,classpath,bootclasspath,cp,bcp):
- """
- Import cp and bcp into classpath and bootclasspath,
- but do not accept duplicates. Report duplicates.
- """
- if cp: classpath.importPath(cp)
- if bcp: bootclasspath.importPath(bcp)
-
+
+def _importClasspaths(classpath, bootclasspath, cp, bcp):
+ """
+ Import cp and bcp into classpath and bootclasspath,
+ but do not accept duplicates. Report duplicates.
+ """
+ if cp:
+ classpath.importPath(cp)
+ if bcp:
+ bootclasspath.importPath(bcp)
+
Propchange: gump/live/python/gump/core/language/java.py
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Sat Jul 10 05:44:09 2010
@@ -0,0 +1 @@
+/gump/trunk/python/gump/core/language/java.py:746160,746727,746892,747270,747272-747273,747656,748010,748018,748028,748661,748967,760784-761159,815848,953630-954169,955387,955837,956771,957107,957408,958453,958915,959344,959847,960260,960295,960297,960300,960303,961244,962395,962401
Propchange: gump/live/python/gump/core/update/bzr.py
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Jul 10 05:44:09 2010
@@ -1 +1 @@
-/gump/trunk/python/gump/core/update/bzr.py:815848,953630-954169,955387,955837,956771,957107,957408,958453,958915,959344,959847,960260,960295,960297,960300,960303,961244,961577
+/gump/trunk/python/gump/core/update/bzr.py:815848,953630-954169,955387,955837,956771,957107,957408,958453,958915,959344,959847,960260,960295,960297,960300,960303,961244,961577,961843,961859,961870,962401
Propchange: gump/live/python/gump/core/update/darcs.py
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Jul 10 05:44:09 2010
@@ -1 +1 @@
-/gump/trunk/python/gump/core/update/darcs.py:815848,953630-954169,955387,955837,956771,957107,957408,958453,958915,959344,959847,960260,960295,960297,960300,960303,961244,961577
+/gump/trunk/python/gump/core/update/darcs.py:815848,953630-954169,955387,955837,956771,957107,957408,958453,958915,959344,959847,960260,960295,960297,960300,960303,961244,961577,961843,961859,961870,962401
Propchange: gump/live/python/gump/core/update/hg.py
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Jul 10 05:44:09 2010
@@ -1 +1 @@
-/gump/trunk/python/gump/core/update/hg.py:815848,953630-954169,955387,955837,956771,957107,957408,958453,958915,959344,959847,960260,960295,960297,960300,960303,961244,961577
+/gump/trunk/python/gump/core/update/hg.py:815848,953630-954169,955387,955837,956771,957107,957408,958453,958915,959344,959847,960260,960295,960297,960300,960303,961244,961577,961843,961859,961870,962401
Modified: gump/live/python/gump/test/maven.py
URL: http://svn.apache.org/viewvc/gump/live/python/gump/test/maven.py?rev=962764&r1=962763&r2=962764&view=diff
==============================================================================
--- gump/live/python/gump/test/maven.py (original)
+++ gump/live/python/gump/test/maven.py Sat Jul 10 05:44:09 2010
@@ -27,7 +27,7 @@ import types, StringIO
from gump import log
import gump.core.config
from gump.core.model.state import *
-from gump.core.build.maven import MavenBuilder
+from gump.core.build.maven import generateMavenProperties, getMavenCommand
import gump.core.language.java
@@ -57,18 +57,17 @@ class MavenTestSuite(UnitTestSuite):
self.maven1=self.workspace.getProject('maven1')
self.assertNotNone('Needed a maven project', self.maven1)
- self.mavenBuilder=MavenBuilder(self.run)
self.javaHelper=gump.core.language.java.JavaHelper(self.run)
def testMavenProperties(self):
self.assertTrue('Maven project has a Maven object', self.maven1.hasMaven())
- self.mavenBuilder.generateMavenProperties(self.maven1, self.javaHelper, 'test/unit-testing-maven.properties')
+ generateMavenProperties(self.maven1, self.javaHelper, 'test/unit-testing-maven.properties')
def testMavenCommand(self):
self.assertTrue('Maven project has a Maven object', self.maven1.hasMaven())
- cmd=self.mavenBuilder.getMavenCommand(self.maven1,self.javaHelper)
+ cmd = getMavenCommand(self.maven1)
# cmd.dump()