--- a/rmake/cmdline/commit.py Tue Nov 06 10:38:18 2007 -0500
+++ b/rmake/cmdline/commit.py Tue Nov 06 16:06:53 2007 -0500
@@ -201,8 +201,18 @@ def commitJobs(conaryclient, jobList, re
trackClone=False,
callback=callback, fullRecurse=False)
if passed:
+ oldTroves = []
for troveCs in cs.iterNewTroveList():
- trv = Trove(troveCs)
+ if troveCs.getOldVersion():
+ oldTroves.append(troveCs.getOldNameVersionFlavor())
+ if oldTroves:
+ oldTroves = dict(zip(oldTroves, repos.getTroves(oldTroves)))
+ for troveCs in cs.iterNewTroveList():
+ if troveCs.getOldVersion():
+ trv = oldTroves.pop(troveCs.getOldNameVersionFlavor())
+ trv.applyChangeSet(troveCs)
+ else:
+ trv = Trove(troveCs)
for _, childVersion, _ in trv.iterTroveList(strongRefs=True,
weakRefs=True):
# make sure there are not
@@ -216,9 +226,8 @@ def commitJobs(conaryclient, jobList, re
else:
return False, 'Creating clone failed'
- # Sign the troves if we have a signature key.
signatureKey = conaryclient.cfg.signatureKey
- if signatureKey:
+ if signatureKey and compat.ConaryVersion().signAfterPromote():
finalCs = signAbsoluteChangeset(cs, signatureKey)
repos.commitChangeSet(cs, callback=callback)
return True, mapping
--- a/rmake/compat.py Tue Nov 06 10:38:18 2007 -0500
+++ b/rmake/compat.py Tue Nov 06 16:06:53 2007 -0500
@@ -14,7 +14,7 @@ testing = False
testing = False
class ConaryVersion(object):
- maxKnownVersion = "1.1.95"
+ maxKnownVersion = "2.0"
_warnedUser = False
def __init__(self, conaryVersion=None):
@@ -35,27 +35,40 @@ class ConaryVersion(object):
for x in self.maxKnownVersion.split('.') ]
self.majorVersion = self.conaryVersion[0:2]
- self.minorVersion = self.conaryVersion[2]
+ if len(self.conaryVersion) < 3:
+ self.minorVersion = 0
+ else:
+ self.minorVersion = self.conaryVersion[2]
self.isOneOne = self.majorVersion == (1,1)
+ self.isOneTwo = self.majorVersion == (1,2)
+ self.isTwoZero = self.majorVersion == (2,0)
def checkRequiredVersion(self):
oneZeroVersion = None
oneOneVersion = 19
- if not self.checkVersion(oneZeroVersion, oneOneVersion):
+ oneTwoVersion = 0
+ twoZeroVersion = 0
+ if not self.checkVersion(oneZeroVersion, oneOneVersion,
+ oneTwoVersion, twoZeroVersion):
+ versions = []
+ if oneOneVersion:
+ versions.append('1.1.%s' % oneOneVersion)
+ if oneTwoVersion:
+ versions.append('1.2.%s' % oneTwoVersion)
+ if twoZeroVersion:
+ versions.append('2.0.%s' % twoZeroVersion)
+ versions = ' or '.join(versions)
+ raise errors.RmakeError('rMake requires conary'
+ ' version %s or greater' % versions)
+
+ def requireVersion(self, oneZeroVersion, oneOneVersion, twoZeroVersion,
+ msg):
+ if not self.checkVersion(oneZeroVersion, oneOneVersion, twoZeroVersion):
version = ''
if oneZeroVersion:
version = '1.0.%s or ' % oneZeroVersion
version += '1.1.%s' % oneOneVersion
- raise errors.RmakeError('rMake requires conary'
- ' version %s or greater' % version)
-
- def requireVersion(self, oneZeroVersion, oneOneVersion, msg):
- if not self.checkVersion(oneZeroVersion, oneOneVersion):
- version = ''
- if oneZeroVersion:
- version = '1.0.%s or ' % oneZeroVersion
- version += '1.1.%s' % oneOneVersion
- raise errors.RmakeError('rMake requires a conary version %s or grater for %' % (version, msg))
+ raise errors.RmakeError('rMake requires a conary version %s or greater for %' % (version, msg))
return True
def stateFileVersion(self):
@@ -63,20 +76,23 @@ class ConaryVersion(object):
return 0
return state.ConaryState.stateVersion
+ def signAfterPromote(self):
+ return self.checkVersion(False, False, False, 0)
+
def acceptsPartialBuildReqCloning(self):
- return self.checkVersion(None, 95)
+ return self.checkVersion(False, 95)
def supportsFindGroupSources(self):
- return self.checkVersion(None, 21)
+ return self.checkVersion(False, 21)
def supportsNewPkgBranch(self):
- return self.checkVersion(None, 25)
+ return self.checkVersion(False, 25)
def updateSrcTakesMultipleVersions(self):
- return self.checkVersion(None, 90)
+ return self.checkVersion(False, 90)
def requireFindGroupSources(self):
- return self.requireVersion(None, 21, 'building group sources')
+ return self.requireVersion(False, 21, None, 'building group sources')
def ConaryStateFromFile(self, path, repos=None, parseSource=True):
if self.stateFileVersion() == 0:
@@ -91,7 +107,7 @@ class ConaryVersion(object):
def supportsCloneNoTracking(self):
# support added in 1.1.17
- return self.checkVersion(None, 17)
+ return self.checkVersion(False, 17)
def supportsConfigIsDefault(self):
# support added in 1.0.33 and 1.1.6
@@ -101,15 +117,28 @@ class ConaryVersion(object):
# support added in 1.0.30 and 1.1.3
return self.checkVersion(30, 3)
- def checkVersion(self, oneZeroVersion, oneOneVersion):
+ def checkVersion(self, oneZeroVersion, oneOneVersion, oneTwoVersion=None,
+ twoZeroVersion=None):
if self.majorVersion == [1,0]:
- if oneZeroVersion is None:
+ if not oneZeroVersion:
return False
return self.minorVersion >= oneZeroVersion
elif self.majorVersion == [1,1]:
- if oneOneVersion is None:
+ if not oneOneVersion:
return False
return self.minorVersion >= oneOneVersion
+ elif self.majorVersion == [1,2]:
+ if oneTwoVersion is None:
+ return True
+ if oneTwoVersion is False:
+ return False
+ return self.minorVersion >= oneTwoVersion
+ elif self.majorVersion == [2,0]:
+ if twoZeroVersion is None:
+ return True
+ if twoZeroVersion is False:
+ return False
+ return self.minorVersion >= twoZeroVersion
# default to supporting everything - we're running something really new!
return True
--- a/rmake/server/repos.py Tue Nov 06 10:38:18 2007 -0500
+++ b/rmake/server/repos.py Tue Nov 06 16:06:53 2007 -0500
@@ -237,7 +237,7 @@ def addUser(cfg, name, password=None, wr
netRepos.auth.deleteUserByName(name)
netRepos.auth.addUser(name, password)
- netRepos.auth.addAcl(name, None, None, write, False, False)
+ netRepos.auth.addAcl(name, None, None, write, False)
if __name__ == '__main__':
sys.excepthook = util.genExcepthook()
--- a/rmake/worker/resolvesource.py Tue Nov 06 10:38:18 2007 -0500
+++ b/rmake/worker/resolvesource.py Tue Nov 06 16:06:53 2007 -0500
@@ -301,12 +301,18 @@ class ResolutionMesh(resolve.BasicResolu
self.mainMethod = mainMethod
def prepareForResolution(self, depList):
+ self.depList = [ x[1] for x in depList]
self.extraMethod.prepareForResolution(depList)
return self.mainMethod.prepareForResolution(depList)
def resolveDependencies(self):
suggMap = self.extraMethod.resolveDependencies()
suggMap2 = self.mainMethod.resolveDependencies()
+ for depSet in self.depList:
+ if depSet not in suggMap:
+ suggMap[depSet] = [[] for x in depSet.iterDeps() ]
+ if depSet not in suggMap2:
+ suggMap2[depSet] = [[] for x in depSet.iterDeps() ]
for depSet, results in suggMap.iteritems():
finalResults = []
mainResults = suggMap2[depSet]