changelog shortlog tags manifest raw bz2 zip gz

changeset: Make changes for conary 2.0

changeset 949: 5f4748bf9d2c
parent 948:a2931f4437e6
child 950:9d354dc6f815
author: David Christian <http://issues.rpath.com>
date: Tue Nov 06 16:06:53 2007 -0500 (9 months ago)
files: rmake/cmdline/commit.py rmake/compat.py rmake/server/repos.py rmake/worker/resolvesource.py
description: Make changes for conary 2.0
--- 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]