You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@gump.apache.org by aj...@apache.org on 2004/02/05 06:43:56 UTC
cvs commit: jakarta-gump/python/gump/document text.py
ajack 2004/02/04 21:43:56
Modified: python/gump/test/resources/full1 module2.xml module3.xml
python/gump/model project.py ant.py
python/gump engine.py check.py
python/gump/document text.py
Log:
1) Attempt to make property dependency handling as w/ "traditional"
2) Added 'check' (a start) to load/display a workspace.
3) Some work on display workspace as 'text' (not xdocs/forrest)
4) Added a test (or sample metadata) for above.
Revision Changes Path
1.11 +1 -1 jakarta-gump/python/gump/test/resources/full1/module2.xml
Index: module2.xml
===================================================================
RCS file: /home/cvs/jakarta-gump/python/gump/test/resources/full1/module2.xml,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- module2.xml 28 Jan 2004 22:54:50 -0000 1.10
+++ module2.xml 5 Feb 2004 05:43:56 -0000 1.11
@@ -16,7 +16,7 @@
<depend property="project1.jar" project="project1"/>
</ant>
- <depend project="project1" inherit="runtime"/>
+ <option project="project1" inherit="runtime"/>
<home nested="dist"/>
<mkdir dir="mkdir2"/>
1.8 +5 -1 jakarta-gump/python/gump/test/resources/full1/module3.xml
Index: module3.xml
===================================================================
RCS file: /home/cvs/jakarta-gump/python/gump/test/resources/full1/module3.xml,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- module3.xml 23 Jan 2004 23:32:26 -0000 1.7
+++ module3.xml 5 Feb 2004 05:43:56 -0000 1.8
@@ -10,7 +10,11 @@
<project name="project3">
<package>org.apache.project3</package>
- <ant target="gump"/>
+ <ant target="gump" debug="true">
+ <depend property="project1.jar" project="project1"/>
+ </ant>
+
+ <option project="project1" />
<depend project="project2" runtime="true"/>
1.31 +37 -17 jakarta-gump/python/gump/model/project.py
Index: project.py
===================================================================
RCS file: /home/cvs/jakarta-gump/python/gump/model/project.py,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- project.py 30 Jan 2004 17:22:58 -0000 1.30
+++ project.py 5 Feb 2004 05:43:56 -0000 1.31
@@ -485,38 +485,51 @@
report=JunitReport(self.xml.junitreport,self)
self.reports.append(report)
+ # Build Dependencies Map [including depends from <ant|maven/<property/<depend
+ if not packaged:
+ (badDepends, badOptions) = self.importDependencies(workspace)
+
# Expand <ant <depends/<properties...
if self.ant: self.ant.expand(self,workspace)
if self.maven: self.maven.expand(self,workspace)
- # Build Dependencies Map [including depends from <ant|maven/<property/<depend
if not packaged:
- (badDepends, badOptions) = self.buildDependenciesMap(workspace)
-
# Complete dependencies so properties can reference the,
+ # completed metadata within a dependent project
for dependency in self.getDependencies():
dependency.getProject().complete(workspace)
+
+ self.buildDependenciesMap(workspace)
- # complete properties
- if self.ant: self.ant.complete(self,workspace)
- if self.maven: self.maven.complete(self,workspace)
-
+ # complete properties
+ if self.ant:
+ self.ant.complete(self,workspace)
+ transferAnnotations(self.ant, self)
+
+ if self.maven:
+ self.maven.complete(self,workspace)
+ transferAnnotations(self.maven, self)
+
+ if not packaged:
#
# TODO -- move these back?
#
if badDepends or badOptions:
for xmldepend in badDepends:
self.changeState(STATE_FAILED,REASON_CONFIG_FAILED)
- self.addError("Bad Dependency. Project: " + xmldepend.project + " unknown to *this* workspace")
+ self.addError("Bad Dependency. Project: " \
+ + xmldepend.project + " unknown to *this* workspace")
for xmloption in badOptions:
- self.addWarning("Bad *Optional* Dependency. Project: " + xmloption.project + " unknown to *this* workspace")
+ self.addWarning("Bad *Optional* Dependency. Project: " \
+ + xmloption.project + " unknown to *this* workspace")
else:
self.addInfo("This is a packaged project, location: " + str(self.home))
# Copy over any XML errors/warnings
transferAnnotations(self.xml, self)
-
+
+ # Done, don't redo
self.setComplete(1)
def checkPackage(self):
@@ -536,7 +549,7 @@
if outputsOk:
self.changeState(STATE_COMPLETE,REASON_PACKAGE)
else:
- # Just in case it was so bad it thougt it had no
+ # Just in case it was so bad it thought it had no
# jars to check
self.changeState(STATE_FAILED,REASON_PACKAGE_BAD)
@@ -547,7 +560,7 @@
listDirectoryAsWork(self,self.getHomeDirectory(), \
'list_package_'+self.getName())
- def buildDependenciesMap(self,workspace):
+ def importDependencies(self,workspace):
badDepends=[]
# Walk the XML parts converting
for xmldepend in self.xml.depend:
@@ -577,6 +590,10 @@
self.addDependency(dependency)
else:
badOptions.append(xmloption)
+
+ return (badDepends, badOptions)
+
+ def buildDependenciesMap(self,workspace):
#
# Provide backwards links [Note: ant|maven might have added some
@@ -588,7 +605,6 @@
# Add us as a dependee on them
dependProject.addDependee(dependency)
- return (badDepends, badOptions)
def addDependency(self,dependency):
#
@@ -615,10 +631,14 @@
#
def hasFullDependencyOnNamedProject(self,name):
for dependency in self.depends:
- if dependency.getProject().getName()==name: return 1
+ if dependency.getProject().getName()==name:
+ return 1
+
# :TODO:
# and not dependency.noclasspath: return 1
#:TODO: noclasspath????
+
+ return 0
# determine if this project is a prereq of any project on the todo list
def hasDirectDependencyOn(self,project):
1.14 +9 -5 jakarta-gump/python/gump/model/ant.py
Index: ant.py
===================================================================
RCS file: /home/cvs/jakarta-gump/python/gump/model/ant.py,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- ant.py 23 Jan 2004 23:32:26 -0000 1.13
+++ ant.py 5 Feb 2004 05:43:56 -0000 1.14
@@ -92,8 +92,8 @@
# entry that does NOT require referencing another project
#
def expand(self,project,workspace):
- self.expandProperties(project,workspace)
self.expandDependencies(project,workspace)
+ self.expandProperties(project,workspace)
def expandProperties(self,project,workspace):
#
@@ -116,7 +116,11 @@
# If the property is not as simple as srcdir
if property.reference=="srcdir": return
# If it isn't already a classpath dependency
- if project.hasFullDependencyOnNamedProject(property.project): return
+ if project.hasFullDependencyOnNamedProject(property.project):
+ self.addInfo('Dependency on ' + property.project + \
+ ' exists, no need to add for property ' + \
+ property.name + '.')
+ return
# If there are IDs specified
ids=''
1.52 +43 -1 jakarta-gump/python/gump/engine.py
Index: engine.py
===================================================================
RCS file: /home/cvs/jakarta-gump/python/gump/engine.py,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -r1.51 -r1.52
--- engine.py 30 Jan 2004 17:22:57 -0000 1.51
+++ engine.py 5 Feb 2004 05:43:56 -0000 1.52
@@ -162,6 +162,35 @@
return result
+
+ def check(self,run):
+
+ #
+ # Prepare the context
+ #
+ self.preprocess(run, 0)
+
+ #
+ # Check the metadata
+ #
+ self.checkWorkspace(run)
+
+ #
+ # Build HTML Result (via Forrest or ...)
+ #
+ documenter=run.getOptions().getDocumenter()
+ if documenter :
+ documenter.document(run)
+
+ # Return an exit code based off success
+ # :TODO: Move onto run
+ if run.getWorkspace().isSuccess():
+ result = SUCCESS
+ else:
+ result = FAILED
+
+ return result
+
"""
@@ -571,4 +600,17 @@
db.sync()
-
+
+ """
+
+ ******************************************************************
+
+ CHECK WORKSPACE
+
+ ******************************************************************
+
+ """
+
+ def checkWorkspace(self,run): pass
+
+
\ No newline at end of file
1.36 +7 -157 jakarta-gump/python/gump/check.py
Index: check.py
===================================================================
RCS file: /home/cvs/jakarta-gump/python/gump/check.py,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- check.py 11 Dec 2003 18:56:26 -0000 1.35
+++ check.py 5 Feb 2004 05:43:56 -0000 1.36
@@ -88,159 +88,6 @@
# Functions
###############################################################################
-def check(workspace,run,display=1):
- """dump all dependencies to build a project to the output"""
-
- projects=getProjectsForProjectExpression(expr)
-
- missing=[]
- optionalMissing=[]
- optionalOnlyMissing=[]
-
- # for each project
- for project in projects:
- printed_header=0;
- projectmissing = 0
-
- # for each dependency in current project
- for depend in project.depend:
- # if the dependency is not present in the projects, it's missing
- if depend.project not in Project.list:
- projectmissing+=1
- message=" Missing dependency: " + depend.project + " on project " + project.name
-
- if display:
- if not printed_header:
- printHeader(project)
- printed_header=1
- print message
-
- # Store message into context...
- context.addWarning(message)
- if depend.project not in missing:
- missing.append(depend.project)
-
- for depend in project.option:
- # if the dependency is not present in the projects, it's missing
- if depend.project not in Project.list:
- projectmissing+=1
- message=" Missing optional dependency: " + depend.project + " on project " + project.name
-
- if display:
- if not printed_header:
- printHeader(project)
- printed_header=1
- print message
- context.addWarning(message)
- if depend.project not in optionalMissing:
- optionalMissing.append(depend.project)
-
- if display and projectmissing>0:
- print " total errors: " , projectmissing
-
- if display:
- if len(optionalMissing)>0:
- print
- print " ***** MISSING OPTIONAL *ONLY* PROJECTS THAT ARE REFERENCED ***** "
- print
- for missed in optionalMissing:
- if missed not in missing:
- optionalOnlyMissing.append(missed)
- print " " + missed
-
- if len(missing)>0:
- print
- print " ***** MISSING PROJECTS THAT ARE REFERENCED ***** "
- print
- for missed in missing:
- print " " + missed
-
- # Comment out for now ...
- # 'cos loading a new workspace overwrites
- # the loaded one..
-
- #try:
- # peekInGlobalProfile(missing);
- #except:
- # print
- # print " ***** In Global Profile... ***** "
- # print
- # print " Cannot load the global Gump profile, you have to install %\n the jars by hand."
- # print
- # traceback.print_exc()
- # print
-
- if display:
- print
- print " ***** WORKSPACE RESULT ***** "
- print
-
- if len(missing)>0:
- context.addError("Some projects that were referenced are missing in the workspace.")
- if display:
- print
- print " - ERROR - Some projects that were referenced are missing in the workspace. "
- print " See the above messages for more detailed info."
- elif display:
- print " - OK - All projects that are referenced are present in the workspace."
-
- if len(optionalOnlyMissing)>0:
- context.addWarning("Some projects that were referenced as optional are missing in the workspace.");
- if display:
- print
- print " - WARNING - Some projects that were referenced as optional only are "
- print " missing in the workspace. "
- print " See the above messages for more detailed info."
- elif display:
- print " - OK - All OPTIONAL projects that are referenced are present in the workspace."
- print " ***** RESULT ***** "
-
- return 0
-
-def printHeader(project):
- print " *****************************************************"
- print " Project: " + project.name
-
-
-# Comment out for now ...
-# 'cos loading a new workspace overwrites
-# the loaded one..
-#def peekInGlobalProfile(missing):
-#
-# print
-# print " *****************************************************"
-# print " **** Loading global Gump workspace to find info"
-# print " about missing projects. Please wait... *****"
-# print " *****************************************************"
-# print
-#
-# workspace=load(default.globalws)
-#
-# for missed in missing:
-# print
-# print
-# print " **** Project: " + missed
-# print
-# if missed in Project.list:
-# currentproject = Project.list[missed]
-# currentmodule = Module.list[currentproject.module]
-# print " ",currentmodule.description
-# print
-# if not currentproject.url.href == currentmodule.url.href:
-# print " project url: " , currentproject.url.href
-# print " module url: " , currentmodule.url.href
-# print " module cvs: " , currentmodule.cvsroot()
-# if currentmodule.redistributable:
-# print
-# print " NOTE: You can also get it in the Gump jar repository."
-# print " See http://jakarta.apache,org/gump/ for details."
-#
-# else:
-# print " Gump doesn't know about it. Or it's wrong, or you have to "
-# print " install the artifacts of " + missed +" manually."
-#
-
-
# static void main()
if __name__=='__main__':
@@ -259,7 +106,10 @@
# The Run Details...
run=GumpRun(workspace,ps,options)
-
+ #
+ # Perform this check run...
+ #
+ result = GumpEngine().check(run)
#
log.info('Gump Integration complete. Exit code:' + str(result))
1.6 +61 -8 jakarta-gump/python/gump/document/text.py
Index: text.py
===================================================================
RCS file: /home/cvs/jakarta-gump/python/gump/document/text.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- text.py 9 Jan 2004 19:57:20 -0000 1.5
+++ text.py 5 Feb 2004 05:43:56 -0000 1.6
@@ -105,21 +105,35 @@
indent += ' '
for module in workspace.getModules():
- if not gumpSet.inModules(module): continue
+ if not gumpSet.inModules(module): continue
output.write(indent + "Module [" + module.getName() + "] State: " + module.getStateDescription() + "\n")
output.write(indent + "Projects: " + str(len(module.getProjects())) + "\n")
self.documentAnnotations(indent,module)
-
+
for project in module.getProjects():
if not gumpSet.inSequence(project): continue
- output.write(indent + "Project [" + project.getName() \
+ self.documentProject(indent,project)
+
+ def documentProject(self, indent, project):
+ indent += ' '
+ output=self.output
+ output.write(indent + "Project [" + project.getName() \
+ "] State: " + project.getStateDescription() + "\n")
- self.documentAnnotations(indent,project)
- self.documentWork(indent,project)
+
+
+ self.documentDependenciesList(indent, "Project Dependees", \
+ project.getDependees(), 1, project)
+
+ self.documentDependenciesList(indent, "Project Dependencies", \
+ project.getDependencies(), 0, project)
+
+ self.documentAnnotations(indent,project)
+ self.documentWork(indent,project)
def documentWork(self, indent, workable):
+ indent += ' '
output=self.output
output.write(indent+"Work [" + str(len(workable.worklist)) \
+ "] [" + str(workable.getElapsedSecs()) + "] secs." + "\n")
@@ -137,7 +151,46 @@
def documentAnnotations(self, indent, annotatable):
+ indent += ' '
output=self.output
for note in annotatable.getAnnotations():
output.write(indent+" - " + str(note) + "\n")
+
+
+ def documentDependenciesList(self,indent,title,dependencies,dependees,referencingObject):
+ if dependencies:
+ indent += ' '
+ output=self.output
+ output.write(indent+title+'\n')
+ indent += ' '
+ for depend in dependencies:
+
+ # Project/Owner
+ if not dependees:
+ project=depend.getProject()
+ else:
+ project=depend.getOwnerProject()
+ output.write(indent+project.getName())
+
+ # Type
+ type=''
+ if depend.isRuntime():
+ if type: type += ' '
+ type+='Runtime'
+ if depend.isOptional():
+ if type: type += ' '
+ type+='Optional'
+ output.write(' '+type)
+
+ # Inheritence
+ output.write(' '+depend.getInheritenceDescription())
+
+ # Ids
+ ids = depend.getIds() or 'All'
+ output.write(' '+ids)
+
+ # State Icon
+ output.write(' '+referencingObject.getStateDescription()+'\n')
+
+ self.documentAnnotations(indent,depend)