def createCustomerRelease(releaseType, releaseSpecDir, destDir, fromDir, releaseName, allArchitectures=True, allArchiveTypes=False, allowSymbolicLinks=False, parentTmpDir=None): """Create a customer release tarball in destdir from the directories engReleaseDir and releaseSpecDir releaseType is one of biaryReleaseTypes or sourceReleaseTypes fromDir is engineering build for the binary release, source dir for a source release releaseSpecDir is directory containing manifests Returns a path to the tarball Throws an exception on error""" if not os.path.exists(destDir): utils.createDir(destDir) if releaseType in binaryReleaseTypes: isSourceRelease = False elif releaseType in sourceReleaseTypes: isSourceRelease = True else: raise Exception("Unknown release type '%s'" % releaseType) if not isSourceRelease: allArchitectures=False manifestFile = os.path.join(releaseSpecDir, releaseType + "_release", "manifests", releaseType + "_release.manifest") log.info("Creating customer release of type %s", releaseType) log.info("specDir: %s", releaseSpecDir) log.info("fromDir: %s", fromDir) tempdir = utils.createTemporaryDirectory("assemble_release", parentDir=parentTmpDir) try: releaseImageDir = os.path.join(tempdir, releaseName) installFromManifest(manifestFile, fromDir, releaseImageDir, level=0, overwrite=False, destdirExists=False, allArchitectures=allArchitectures, allowSymbolicLinks=allowSymbolicLinks) if isSourceRelease: # run autogen equivalent on source trees build.prepareSourceTree(releaseImageDir, customerRelease=True) # Need to create both zip and tgz source releases on the master build system if allArchiveTypes == True: # sanity checks if not isSourceRelease: raise Exception("Attempt to create both zip and tar file for a binary release. Probably an error") if getArch() == "win32": raise Exception("Attempt to create .tgz source release on a windows system. Would not include autogen.sh") zipFile = utils.createArchive(releaseImageDir, destDir, type="zip") tarFile = utils.createArchive(releaseImageDir, destDir, type="tar") return (tarFile, zipFile) else: release = utils.createArchive(releaseImageDir, destDir) return release finally: utils.remove(tempdir)
def createEngineeringRelease(destDir, engReleaseDir, releaseName, tmpDir=None): """Create and engineering release tarball in destDir from the directory engReleaseDir. Returns a path to the tarball Throws an exception on error. """ log.info("Creating engineering release tarball") if not os.path.exists(destDir): utils.createDir(destDir) engReleaseTarball = utils.createArchive(engReleaseDir, destDir, rootRename=releaseName, tmpDir=tmpDir) return engReleaseTarball