def main(): usage = "Usage: %prog [options] <package name>" parser = ArgumentParser(usage) parser.add_argument("-s", "--spec-path", dest="specPath", default="../../SPECS") parser.add_argument("-l", "--log-path", dest="logPath", default="../../stage/LOGS") parser.add_argument("-a", "--source-rpm-path", dest="sourceRpmPath", default="../../stage/SRPMS") parser.add_argument("-j", "--output-dir", dest="outputDirPath", default="../../stage/") parser.add_argument("-c", "--pullsources-config", dest="pullsourcesConfig", default="pullsources.conf") parser.add_argument("-f", "--pkg-blacklist-file", dest="pkgBlacklistFile", default=None) parser.add_argument("-p", "--generate-pkg-list", dest="generatePkgList", default=False, action="store_true") parser.add_argument("-y", "--generate-yaml-files", dest="generateYamlFiles", default=False, action="store_true") options = parser.parse_args() errorFlag = False cmdUtils = CommandUtils() try: if not os.path.isdir(options.logPath): cmdUtils.runCommandInShell("mkdir -p " + options.logPath) logger = Logger.getLogger(options.logPath + "/generateYamlFiles") if options.generateYamlFiles: if (options.pkgBlacklistFile is not None and options.pkgBlacklistFile != "" and not os.path.isfile(options.pkgBlacklistFile)): logger.error("Given package blacklist file is not valid:" + options.pkgBlacklistFile) errorFlag = True if not os.path.isdir(options.specPath): logger.error("Given Specs Path is not a directory:" + options.specPath) errorFlag = True if not os.path.isdir(options.sourceRpmPath): logger.error("Given SRPM Path is not a directory:" + options.sourceRpmPath) errorFlag = True if options.generateYamlFiles and not os.path.isfile(options.pullsourcesConfig): logger.error("Given Source config file is not a valid file:" + options.pullsourcesConfig) errorFlag = True if errorFlag: logger.error("Found some errors. Please fix input options and re-run it.") sys.exit(1) if options.generateYamlFiles: if not os.path.isdir(options.outputDirPath): cmdUtils.runCommandInShell("mkdir -p "+options.outputDirPath) constants.setSpecPath(options.specPath) constants.setSourceRpmPath(options.sourceRpmPath) constants.setLogPath(options.logPath) constants.setPullSourcesConfig(options.pullsourcesConfig) constants.initialize() # parse SPECS folder SPECS() if options.generatePkgList: buildPackagesList(options.outputDirPath + "/packages_list.csv") elif options.generateYamlFiles: blackListPkgs = readBlackListPackages(options.pkgBlacklistFile) buildSourcesList(options.outputDirPath, blackListPkgs, logger) buildSRPMList(options.sourceRpmPath, options.outputDirPath, blackListPkgs, logger) except Exception as e: print("Caught Exception: " + str(e)) traceback.print_exc() sys.exit(1) sys.exit(0)
def main(): usage = "Usage: %prog [options] <package name>" parser = ArgumentParser(usage) parser.add_argument("-s", "--spec-path", dest="specPath", default="../../SPECS") parser.add_argument("-l", "--log-path", dest="logPath", default="../../stage/LOGS") parser.add_argument("-a", "--source-rpm-path", dest="sourceRpmPath", default="../../stage/SRPMS") parser.add_argument("-j", "--output-dir", dest="outputDirPath", default="../../stage/") parser.add_argument("-c", "--pullsources-config", dest="pullsourcesConfig", default="pullsources.conf") parser.add_argument("-f", "--pkg-blacklist-file", dest="pkgBlacklistFile", default=None) parser.add_argument("-p", "--generate-pkg-list", dest="generatePkgList", default=False, action="store_true") parser.add_argument("-y", "--generate-yaml-files", dest="generateYamlFiles", default=False, action="store_true") options = parser.parse_args() errorFlag = False cmdUtils = CommandUtils() try: if not os.path.isdir(options.logPath): cmdUtils.runCommandInShell("mkdir -p " + options.logPath) logger = Logger.getLogger(options.logPath + "/generateYamlFiles") if options.generateYamlFiles: if (options.pkgBlacklistFile is not None and options.pkgBlacklistFile != "" and not os.path.isfile(options.pkgBlacklistFile)): logger.error("Given package blacklist file is not valid:" + options.pkgBlacklistFile) errorFlag = True if not os.path.isdir(options.specPath): logger.error("Given Specs Path is not a directory:" + options.specPath) errorFlag = True if not os.path.isdir(options.sourceRpmPath): logger.error("Given SRPM Path is not a directory:" + options.sourceRpmPath) errorFlag = True if options.generateYamlFiles and not os.path.isfile( options.pullsourcesConfig): logger.error("Given Source config file is not a valid file:" + options.pullsourcesConfig) errorFlag = True if errorFlag: logger.error( "Found some errors. Please fix input options and re-run it.") sys.exit(1) if options.generateYamlFiles: if not os.path.isdir(options.outputDirPath): cmdUtils.runCommandInShell("mkdir -p " + options.outputDirPath) constants.setSpecPath(options.specPath) constants.setSourceRpmPath(options.sourceRpmPath) constants.setLogPath(options.logPath) constants.setPullSourcesConfig(options.pullsourcesConfig) constants.initialize() # parse SPECS folder SPECS() if options.generatePkgList: buildPackagesList(options.outputDirPath + "/packages_list.csv") elif options.generateYamlFiles: blackListPkgs = readBlackListPackages(options.pkgBlacklistFile) buildSourcesList(options.outputDirPath, blackListPkgs, logger) buildSRPMList(options.sourceRpmPath, options.outputDirPath, blackListPkgs, logger) except Exception as e: print("Caught Exception: " + str(e)) traceback.print_exc() sys.exit(1) sys.exit(0)
def main(): usage = "Usage: %prog [options] <package name>" parser = ArgumentParser(usage) parser.add_argument("-s", "--spec-path", dest="specPath", default="../../SPECS") parser.add_argument("-x", "--source-path", dest="sourcePath", default="../../stage/SOURCES") parser.add_argument("-r", "--rpm-path", dest="rpmPath", default="../../stage/RPMS") parser.add_argument("-i", "--install-package", dest="installPackage", default=False, action="store_true") parser.add_argument("-p", "--publish-RPMS-path", dest="publishRPMSPath", default="../../stage/PUBLISHRPMS") parser.add_argument("-e", "--publish-XRPMS-path", dest="publishXRPMSPath", default="../../stage/PUBLISHXRPMS") parser.add_argument("-l", "--log-path", dest="logPath", default="../../stage/LOGS") parser.add_argument("-z", "--top-dir-path", dest="topDirPath", default="/usr/src/photon") parser.add_argument("-b", "--build-root-path", dest="buildRootPath", default="/mnt") parser.add_argument("-t", "--threads", dest="buildThreads", default=1, type=int, help="Number of working threads") parser.add_argument("-m", "--tool-chain-stage", dest="toolChainStage", default="None") parser.add_argument("-c", "--pullsources-config", dest="pullsourcesConfig", default="pullsources.conf") parser.add_argument("-d", "--dist", dest="dist", default="") parser.add_argument("-k", "--input-RPMS-path", dest="inputRPMSPath", default=None) parser.add_argument("-n", "--build-number", dest="buildNumber", default="0000000") parser.add_argument("-v", "--release-version", dest="releaseVersion", default="NNNnNNN") parser.add_argument("-u", "--enable-rpmcheck", dest="rpmCheck", default=False, action="store_true") parser.add_argument("-a", "--source-rpm-path", dest="sourceRpmPath", default="../../stage/SRPMS") parser.add_argument("-w", "--pkginfo-file", dest="pkgInfoFile", default="../../stage/pkg_info.json") parser.add_argument("-g", "--pkg-build-option-file", dest="pkgBuildOptionFile", default="../../common/data/pkg_build_options.json") parser.add_argument("-q", "--rpmcheck-stop-on-error", dest="rpmCheckStopOnError", default=False, action="store_true") parser.add_argument("-bd", "--publish-build-dependencies", dest="publishBuildDependencies", default=False) parser.add_argument("-pw", "--package-weights-path", dest="packageWeightsPath", default=None) parser.add_argument("-bt", "--build-type", dest="pkgBuildType", default="chroot") parser.add_argument("-F", "--kat-build", dest="katBuild", default=None) parser.add_argument("PackageName", nargs='?') options = parser.parse_args() cmdUtils = CommandUtils() if not os.path.isdir(options.logPath): cmdUtils.runCommandInShell("mkdir -p " + options.logPath) logger = Logger.getLogger(options.logPath + "/Main") errorFlag = False package = None pkgInfoJsonFile = options.pkgInfoFile if not os.path.isdir(options.sourcePath): logger.error("Given Sources Path is not a directory:" + options.sourcePath) errorFlag = True if not os.path.isdir(options.specPath): logger.error("Given Specs Path is not a directory:" + options.specPath) errorFlag = True if not os.path.isdir(options.publishRPMSPath): logger.error("Given RPMS Path is not a directory:" + options.publishRPMSPath) errorFlag = True if not os.path.isdir(options.publishXRPMSPath): logger.error("Given X RPMS Path is not a directory:" + options.publishXRPMSPath) errorFlag = True if not os.path.isdir(options.publishRPMSPath + "/" + platform.machine()): logger.error("Given RPMS Path is missing " + platform.machine()+ " sub-directory:"+options.publishRPMSPath) errorFlag = True if not os.path.isdir(options.publishXRPMSPath+"/" + platform.machine()): logger.error("Given X RPMS Path is missing "+platform.machine()+ " sub-directory:"+options.publishXRPMSPath) errorFlag = True if not os.path.isdir(options.publishRPMSPath+"/noarch"): logger.error("Given RPMS Path is missing noarch sub-directory:"+ options.publishRPMSPath) errorFlag = True if not os.path.isdir(options.publishXRPMSPath+"/noarch"): logger.error("Given X RPMS Path is missing noarch sub-directory:"+ options.publishXRPMSPath) errorFlag = True if not os.path.isfile(options.pkgBuildOptionFile): logger.warning("Given JSON File is not a file:"+options.pkgBuildOptionFile) if options.inputRPMSPath is not None and not os.path.isdir(options.inputRPMSPath): logger.error("Given input RPMS Path is not a directory:"+options.inputRPMSPath) errorFlag = True if options.packageWeightsPath is not None and not os.path.isfile(options.packageWeightsPath): logger.error("Given input Weights file is not a file:"+options.packageWeightsPath) errorFlag = True if options.installPackage: if not options.PackageName: logger.error("Please provide package name") errorFlag = True else: package = options.PackageName if errorFlag: logger.error("Found some errors. Please fix input options and re-run it.") return False if not os.path.isdir(options.rpmPath): cmdUtils.runCommandInShell("mkdir -p "+options.rpmPath+"/"+platform.machine()) cmdUtils.runCommandInShell("mkdir -p "+options.rpmPath+"/noarch") if not os.path.isdir(options.sourceRpmPath): cmdUtils.runCommandInShell("mkdir -p "+options.sourceRpmPath) if not os.path.isdir(options.buildRootPath): cmdUtils.runCommandInShell("mkdir -p " + options.buildRootPath) logger.info("Source Path :"+options.sourcePath) logger.info("Spec Path :" + options.specPath) logger.info("Rpm Path :" + options.rpmPath) logger.info("Log Path :" + options.logPath) logger.info("Top Dir Path :" + options.topDirPath) logger.info("Publish RPMS Path :" + options.publishRPMSPath) logger.info("Publish X RPMS Path :" + options.publishXRPMSPath) if options.installPackage: logger.info("Package to build:" + package) get_packages_with_build_options(options.pkgBuildOptionFile) try: constants.setSpecPath(options.specPath) constants.setSourcePath(options.sourcePath) constants.setRpmPath(options.rpmPath) constants.setSourceRpmPath(options.sourceRpmPath) constants.setTopDirPath(options.topDirPath) constants.setLogPath(options.logPath) constants.setDist(options.dist) constants.setBuildNumber(options.buildNumber) constants.setReleaseVersion(options.releaseVersion) constants.setPrevPublishRPMRepo(options.publishRPMSPath) constants.setPrevPublishXRPMRepo(options.publishXRPMSPath) constants.setBuildRootPath(options.buildRootPath) constants.setPullSourcesConfig(options.pullsourcesConfig) constants.setInputRPMSPath(options.inputRPMSPath) constants.setRPMCheck(options.rpmCheck) constants.setRpmCheckStopOnError(options.rpmCheckStopOnError) constants.setPublishBuildDependencies(options.publishBuildDependencies) constants.setPackageWeightsPath(options.packageWeightsPath) constants.setKatBuild(options.katBuild) constants.initialize() # parse SPECS folder SPECS() if options.toolChainStage == "stage1": pkgManager = PackageManager() pkgManager.buildToolChain() elif options.toolChainStage == "stage2": pkgManager = PackageManager() pkgManager.buildToolChainPackages(options.buildThreads) elif options.installPackage: buildAPackage(package, options.buildThreads, options.pkgBuildType) else: buildPackagesForAllSpecs(logger, options.buildThreads, pkgInfoJsonFile, options.pkgBuildType) except Exception as e: logger.error("Caught an exception") logger.error(str(e)) # print stacktrace traceback.print_exc() sys.exit(1) sys.exit(0)