示例#1
0
文件: shadow.py 项目: sassoftware/bob
def _makeSourceTrove(package, helper):
    cs = ChangeSet()
    filesToAdd = {}
    ver = macro.expand(package.getBaseVersion(), package)
    version = _createVersion(package, helper, ver)
    latestSpec = (package.getName(), str(version.trailingLabel()), None)
    results = helper.getRepos().findTroves(None,[latestSpec],allowMissing=True,
                        getLeaves=False,troveTypes=trovesource.TROVE_QUERY_ALL)
    if results:
        existingVersions = [x[1] for x in results.get(latestSpec, ())]
        while version in existingVersions:
            version.incrementSourceCount()

    new = Trove(package.name, version, deps.Flavor())
    new.setFactory(package.targetConfig.factory)
    message = "Temporary Source for %s" % version
    message = message.rstrip() + "\n"
    new.changeChangeLog(ChangeLog(name=helper.cfg.name,
                contact=helper.cfg.contact, message=message))
    for path, contents in package.recipeFiles.iteritems():
        isText = path == package.getRecipeName()
        pathId = hashlib.md5(path).digest()
        fileHelper = filetypes.RegularFile(contents=contents,
                    config=isText)
        fileStream = fileHelper.get(pathId)
        fileStream.flags.isSource(set=True)
        fileId = fileStream.fileId()
        fileVersion = new.getVersion()
        key = pathId + fileId
        filesToAdd[key] = (fileStream, fileHelper.contents, isText)
        new.addFile(pathId, path, fileVersion, fileId)
    new.invalidateDigests()
    new.computeDigests()
    for key, (fileObj, fileContents, cfgFile) in filesToAdd.items():
        cs.addFileContents(fileObj.pathId(), fileObj.fileId(),
                    ChangedFileTypes.file, fileContents, cfgFile)
        cs.addFile(None, fileObj.fileId(), fileObj.freeze())
    cs.newTrove(new.diff(None, absolute=True)[0])
    return new.getNameVersionFlavor(), cs
示例#2
0
def _makeSourceTrove(package, helper):
    cs = ChangeSet()
    filesToAdd = {}
    ver = macro.expand(package.getBaseVersion(), package)
    version = _createVersion(package, helper, ver)
    latestSpec = (package.getName(), str(version.trailingLabel()), None)
    results = helper.getRepos().findTroves(None,[latestSpec],allowMissing=True,
                        getLeaves=False,troveTypes=trovesource.TROVE_QUERY_ALL)
    if results:
        existingVersions = [x[1] for x in results.get(latestSpec, ())]
        while version in existingVersions:
            version.incrementSourceCount()

    new = Trove(package.name, version, deps.Flavor())
    new.setFactory(package.targetConfig.factory)
    message = "Temporary Source for %s" % version
    message = message.rstrip() + "\n"
    new.changeChangeLog(ChangeLog(name=helper.cfg.name,
                contact=helper.cfg.contact, message=message))
    for path, contents in package.recipeFiles.iteritems():
        isText = path == package.getRecipeName()
        pathId = hashlib.md5(path).digest()
        fileHelper = filetypes.RegularFile(contents=contents,
                    config=isText)
        fileStream = fileHelper.get(pathId)
        fileStream.flags.isSource(set=True)
        fileId = fileStream.fileId()
        fileVersion = new.getVersion()
        key = pathId + fileId
        filesToAdd[key] = (fileStream, fileHelper.contents, isText)
        new.addFile(pathId, path, fileVersion, fileId)
    new.invalidateDigests()
    new.computeDigests()
    for key, (fileObj, fileContents, cfgFile) in filesToAdd.items():
        cs.addFileContents(fileObj.pathId(), fileObj.fileId(),
                    ChangedFileTypes.file, fileContents, cfgFile)
        cs.addFile(None, fileObj.fileId(), fileObj.freeze())
    cs.newTrove(new.diff(None, absolute=True)[0])
    return new.getNameVersionFlavor(), cs