You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sa...@apache.org on 2012/03/20 01:21:13 UTC
svn commit: r1302734 - in /lucene/dev/trunk: ./ dev-tools/
dev-tools/scripts/smokeTestRelease.py lucene/ solr/
Author: sarowe
Date: Tue Mar 20 00:21:13 2012
New Revision: 1302734
URL: http://svn.apache.org/viewvc?rev=1302734&view=rev
Log:
LUCENE-3885: When checking maven artifacts from an RC URL that doesn't name a release branch, instead of failing, find the POM templates in the local working copy the script is run from; also, (temporarily) stop requiring that maven artifacts are identical to their counterparts in the binary distribution
Modified:
lucene/dev/trunk/ (props changed)
lucene/dev/trunk/dev-tools/ (props changed)
lucene/dev/trunk/dev-tools/scripts/smokeTestRelease.py
lucene/dev/trunk/lucene/ (props changed)
lucene/dev/trunk/solr/ (props changed)
Modified: lucene/dev/trunk/dev-tools/scripts/smokeTestRelease.py
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/dev-tools/scripts/smokeTestRelease.py?rev=1302734&r1=1302733&r2=1302734&view=diff
==============================================================================
--- lucene/dev/trunk/dev-tools/scripts/smokeTestRelease.py (original)
+++ lucene/dev/trunk/dev-tools/scripts/smokeTestRelease.py Tue Mar 20 00:21:13 2012
@@ -457,10 +457,8 @@ def checkMaven(baseURL, tmpDir, version)
for text, subURL in branches:
if text == releaseBranchText:
releaseBranchSvnURL = subURL
- if releaseBranchSvnURL is None:
- raise RuntimeError('Release branch %s%s not found' % (branchesURL, releaseBranchText))
- print ' download POM templates',
+ print ' get POM templates',
POMtemplates = defaultdict()
getPOMtemplates(POMtemplates, tmpDir, releaseBranchSvnURL)
print
@@ -495,7 +493,7 @@ def checkMaven(baseURL, tmpDir, version)
print ' verify that non-Mavenized deps are same as in the binary distribution...'
checkIdenticalNonMavenizedDeps(distributionFiles, nonMavenizedDeps)
print ' verify that Maven artifacts are same as in the binary distribution...'
- checkIdenticalMavenArtifacts(distributionFiles, nonMavenizedDeps, artifacts)
+ checkIdenticalMavenArtifacts(distributionFiles, nonMavenizedDeps, artifacts, version)
def getDistributionsForMavenChecks(tmpDir, version, baseURL):
distributionFiles = defaultdict()
@@ -549,8 +547,8 @@ def checkIdenticalNonMavenizedDeps(distr
raise RuntimeError('Deployed non-mavenized dep %s differs from distribution dep %s'
% (dep, distFilenames[depOrigFilename]))
-def checkIdenticalMavenArtifacts(distributionFiles, nonMavenizedDeps, artifacts):
- reJarWar = re.compile(r'\.[wj]ar$')
+def checkIdenticalMavenArtifacts(distributionFiles, nonMavenizedDeps, artifacts, version):
+ reJarWar = re.compile(r'%s\.[wj]ar$' % version) # exclude *-javadoc.jar and *-sources.jar
for project in ('lucene', 'solr'):
distFilenames = dict()
for file in distributionFiles[project]:
@@ -562,10 +560,11 @@ def checkIdenticalMavenArtifacts(distrib
if artifactFilename not in distFilenames.keys():
raise RuntimeError('Maven artifact %s is not present in %s binary distribution'
% (artifact, project))
- identical = filecmp.cmp(artifact, distFilenames[artifactFilename], shallow=False)
- if not identical:
- raise RuntimeError('Maven artifact %s is not identical to %s in %s binary distribution'
- % (artifact, distFilenames[artifactFilename], project))
+ # TODO: Either fix the build to ensure that maven artifacts *are* identical, or recursively compare contents
+ # identical = filecmp.cmp(artifact, distFilenames[artifactFilename], shallow=False)
+ # if not identical:
+ # raise RuntimeError('Maven artifact %s is not identical to %s in %s binary distribution'
+ # % (artifact, distFilenames[artifactFilename], project))
def verifyMavenDigests(artifacts):
reJarWarPom = re.compile(r'\.(?:[wj]ar|pom)$')
@@ -643,20 +642,29 @@ def checkNonMavenizedDeps(nonMavenizedDe
nonMavenizedDependencies[depJar] = file
elif pomFile: # Find non-Mavenized deps with associated POMs
pomFile = pomFile.split('/')[-1] # remove path
+ doc2 = None
+ workingCopy = os.path.abspath('%s/../..' % sys.path[0])
for pomDir in pomDirs:
- entries = getDirEntries('%s/%s' % (releaseBranchSvnURL, pomDir))
- for text, subURL in entries:
- if text == pomFile:
- doc2 = ET.XML(load(subURL))
- groupId2, artifactId2, packaging2, POMversion = getPOMcoordinate(doc2)
- depJar = '%s/maven/%s/%s/%s/%s-%s.jar' \
- % (tmpDir, groupId2.replace('.', '/'),
- artifactId2, version, artifactId2, version)
- if depJar not in artifacts['lucene'] \
- and depJar not in artifacts['solr']:
- raise RuntimeError('Missing non-mavenized dependency %s' % depJar)
- nonMavenizedDependencies[depJar] = file
+ if releaseBranchSvnURL is None:
+ pomPath = '%s/%s/%s' % (workingCopy, pomDir, pomFile)
+ if os.path.exists(pomPath):
+ doc2 = ET.XML(open(pomPath).read())
break
+ else:
+ entries = getDirEntries('%s/%s' % (releaseBranchSvnURL, pomDir))
+ for text, subURL in entries:
+ if text == pomFile:
+ doc2 = ET.XML(load(subURL))
+ break
+ if doc2 is not None: break
+
+ groupId2, artifactId2, packaging2, POMversion = getPOMcoordinate(doc2)
+ depJar = '%s/maven/%s/%s/%s/%s-%s.jar' \
+ % (tmpDir, groupId2.replace('.', '/'),
+ artifactId2, version, artifactId2, version)
+ if depJar not in artifacts['lucene'] and depJar not in artifacts['solr']:
+ raise RuntimeError('Missing non-mavenized dependency %s' % depJar)
+ nonMavenizedDependencies[depJar] = file
def getPOMcoordinate(treeRoot):
namespace = '{http://maven.apache.org/POM/4.0.0}'
@@ -775,21 +783,31 @@ def verifyArtifactPerPOMtemplate(POMtemp
raise RuntimeError('Missing artifact %s' % artifact)
def getPOMtemplates(POMtemplates, tmpDir, releaseBranchSvnURL):
- releaseBranchSvnURL += 'dev-tools/maven/'
- targetDir = '%s/dev-tools/maven' % tmpDir
- if not os.path.exists(targetDir):
- os.makedirs(targetDir)
allPOMtemplates = []
- crawl(allPOMtemplates, releaseBranchSvnURL, targetDir, set(['Apache Subversion'])) # Ignore "Apache Subversion" links
- POMtemplates['lucene'] = [p for p in allPOMtemplates if '/lucene/' in p]
+ sourceLocation = releaseBranchSvnURL
+ if sourceLocation is None:
+ # Use the POM templates under dev-tools/maven/ in the local working copy
+ # sys.path[0] is the directory containing this script: dev-tools/scripts/
+ sourceLocation = os.path.abspath('%s/../maven' % sys.path[0])
+ rePOMtemplate = re.compile(r'^pom.xml.template$')
+ for root, dirs, files in os.walk(sourceLocation):
+ allPOMtemplates.extend([os.path.join(root, f) for f in files if rePOMtemplate.search(f)])
+ else:
+ sourceLocation += 'dev-tools/maven/'
+ targetDir = '%s/dev-tools/maven' % tmpDir
+ if not os.path.exists(targetDir):
+ os.makedirs(targetDir)
+ crawl(allPOMtemplates, sourceLocation, targetDir, set(['Apache Subversion'])) # Ignore "Apache Subversion" links
+
+ POMtemplates['lucene'] = [p for p in allPOMtemplates if '/maven/lucene/' in p]
if POMtemplates['lucene'] is None:
- raise RuntimeError('No Lucene POMs found at %s' % releaseBranchSvnURL)
- POMtemplates['solr'] = [p for p in allPOMtemplates if '/solr/' in p]
+ raise RuntimeError('No Lucene POMs found at %s' % sourceLocation)
+ POMtemplates['solr'] = [p for p in allPOMtemplates if '/maven/solr/' in p]
if POMtemplates['solr'] is None:
- raise RuntimeError('No Solr POMs found at %s' % releaseBranchSvnURL)
+ raise RuntimeError('No Solr POMs found at %s' % sourceLocation)
POMtemplates['grandfather'] = [p for p in allPOMtemplates if '/maven/pom.xml.template' in p]
if POMtemplates['grandfather'] is None:
- raise RuntimeError('No Lucene/Solr grandfather POM found at %s' % releaseBranchSvnURL)
+ raise RuntimeError('No Lucene/Solr grandfather POM found at %s' % sourceLocation)
def crawl(downloadedFiles, urlString, targetDir, exclusions=set()):
for text, subURL in getDirEntries(urlString):