Example #1
0
def buildAPackage(package, listBuildOptionPackages, pkgBuildOptionFile, buildThreads):
    listPackages=[]
    listPackages.append(package)
    pkgManager = PackageManager()
    if constants.rpmCheck:
        constants.setTestForceRPMS(listPackages[:])
    pkgManager.buildPackages(listPackages, listBuildOptionPackages, pkgBuildOptionFile, buildThreads)
Example #2
0
def buildAPackage(package, listBuildOptionPackages, pkgBuildOptionFile,
                  buildThreads):
    listPackages = []
    listPackages.append(package)
    pkgManager = PackageManager()
    pkgManager.buildPackages(listPackages, listBuildOptionPackages,
                             pkgBuildOptionFile, buildThreads)
Example #3
0
def buildAPackage(package, listBuildOptionPackages, pkgBuildOptionFile, buildThreads):
    listPackages=[]
    listPackages.append(package)
    pkgManager = PackageManager()
    if constants.rpmCheck:
        constants.setTestForceRPMS(listPackages[:])
    pkgManager.buildPackages(listPackages, listBuildOptionPackages, pkgBuildOptionFile, buildThreads)
Example #4
0
def __main__(**kwargs):
    from PackageManager import PackageManager

    package_install = PackageManager(verbose=True)
    # p = package_install.search('vlc')
    # print(p)
    # package_install.update_repository()
    package_install.install(['vlc', 'amarok'])
Example #5
0
def buildPackagesFromGivenJSONFile(inputJSONFile,buildOption,logger, buildThreads):
    listPackages = get_all_package_names(inputJSONFile)

    listPackagesToBuild=[]
    for pkg in listPackages:
        p =  pkg.encode('utf-8')
        listPackagesToBuild.append(str(p))
    logger.info("List of packages to build:")
    logger.info(listPackagesToBuild)
    pkgManager = PackageManager()
    pkgManager.buildPackages(listPackagesToBuild, buildThreads)
Example #6
0
def buildPackagesFromGivenJSONFile(inputJSONFile, buildOption, listBuildOptionPackages, pkgBuildOptionFile, logger, buildThreads):
    listPackages = get_all_package_names(inputJSONFile)

    listPackagesToBuild=[]
    for pkg in listPackages:
        p =  pkg.encode('utf-8')
        listPackagesToBuild.append(str(p))
    logger.info("List of packages to build:")
    logger.info(listPackagesToBuild)
    pkgManager = PackageManager()
    pkgManager.buildPackages(listPackagesToBuild, listBuildOptionPackages, pkgBuildOptionFile, buildThreads)
Example #7
0
def buildPackagesForAllSpecs(logger, buildThreads, pkgInfoJsonFile, pkgBuildType):
    listPackages = SPECS.getData().getListPackages()
    if constants.rpmCheck:
        constants.setTestForceRPMS(copy.copy(listPackages))
    pkgManager = PackageManager(pkgBuildType=pkgBuildType)
    pkgManager.buildPackages(listPackages, buildThreads, pkgBuildType)

    # Generating package info file which is required by installer
    logger.debug("Writing Package info to the file:" + pkgInfoJsonFile)
    pkgInfo = PackageInfo()
    pkgInfo.loadPackagesData()
    pkgInfo.writePkgListToFile(pkgInfoJsonFile)
Example #8
0
def buildSpecifiedPackages(listPackages, buildThreads, pkgBuildType, pkgInfoJsonFile=None, logger=None):
    if constants.rpmCheck:
        constants.setTestForceRPMS(copy.copy(listPackages))
    pkgManager = PackageManager(pkgBuildType=pkgBuildType)
    pkgManager.buildPackages(listPackages, buildThreads)

    if pkgInfoJsonFile is not None:
        # Generating package info file which is required by installer
        if logger is not None:
            logger.debug("Writing Package info to the file:" + pkgInfoJsonFile)
        pkgInfo = PackageInfo()
        pkgInfo.loadPackagesData()
        pkgInfo.writePkgListToFile(pkgInfoJsonFile)
Example #9
0
def buildPackagesFromGivenJSONFile(inputJSONFile, buildOption, listBuildOptionPackages, pkgBuildOptionFile, logger, buildThreads):
    listPackages = get_all_package_names(inputJSONFile)

    listPackagesToBuild=[]
    for pkg in listPackages:
        p =  pkg.encode('utf-8')
        listPackagesToBuild.append(str(p))
    logger.info("List of packages to build:")
    logger.info(listPackagesToBuild)
    if constants.rpmCheck:
        constants.setTestForceRPMS(listPackagesToBuild[:])
    pkgManager = PackageManager()
    pkgManager.buildPackages(listPackagesToBuild, listBuildOptionPackages, pkgBuildOptionFile, buildThreads)
Example #10
0
def buildSpecifiedPackages(listPackages, buildThreads, pkgBuildType, pkgInfoJsonFile=None, logger=None):
    if constants.rpmCheck:
        constants.setTestForceRPMS(copy.copy(listPackages))
    pkgManager = PackageManager(pkgBuildType=pkgBuildType)
    pkgManager.buildPackages(listPackages, buildThreads)

    if pkgInfoJsonFile is not None:
        # Generating package info file which is required by installer
        if logger is not None:
            logger.debug("Writing Package info to the file:" + pkgInfoJsonFile)
        pkgInfo = PackageInfo()
        pkgInfo.loadPackagesData()
        pkgInfo.writePkgListToFile(pkgInfoJsonFile)
Example #11
0
def buildPackagesFromGivenJSONFile(inputJSONFile,buildOption,logger):
    jsonData=open(inputJSONFile)
    jsonObj = json.load(jsonData)
    jsonData.close()
    listPackages=jsonObj[buildOption]
    listPackagesToBuild=[]
    for pkg in listPackages:
        p =  pkg.encode('utf-8')
        listPackagesToBuild.append(str(p))
    logger.info("List of packages to build:")
    logger.info(listPackagesToBuild)
    pkgManager = PackageManager()
    pkgManager.buildPackages(listPackagesToBuild)
Example #12
0
def buildPackagesForAllSpecs(listBuildOptionPackages, pkgBuildOptionFile, logger, buildThreads, pkgInfoJsonFile):
    listPackages = constants.specData.getListPackages()

    logger.info("List of packages to build:")
    logger.info(listPackages)
    if constants.rpmCheck:
        constants.setTestForceRPMS(listPackages[:])
    pkgManager = PackageManager()
    pkgManager.buildPackages(listPackages, listBuildOptionPackages, pkgBuildOptionFile, buildThreads)

    #Generating package info file which is required by installer
    logger.info("Writing Package info to the file:"+pkgInfoJsonFile)
    pkgInfo = PackageInfo()
    pkgInfo.loadPackagesData()
    pkgInfo.writePkgListToFile(pkgInfoJsonFile)
Example #13
0
def buildPackagesInJson(logger, buildThreads, pkgInfoJsonFile, pkgJsonInput, pkgBuildType):
    listPackages = []
    with open(pkgJsonInput) as jsonData:
        pkg_list_json = json.load(jsonData)
        listPackages = pkg_list_json["packages"]
    if constants.rpmCheck:
        constants.setTestForceRPMS(copy.copy(listPackages))
    pkgManager = PackageManager(pkgBuildType=pkgBuildType)
    pkgManager.buildPackages(listPackages, buildThreads, pkgBuildType)

    # Generating package info file which is required by installer
    logger.debug("Writing Package info to the file:" + pkgInfoJsonFile)
    pkgInfo = PackageInfo()
    pkgInfo.loadPackagesData()
    pkgInfo.writePkgListToFile(pkgInfoJsonFile)
Example #14
0
def buildPackagesForAllSpecs(listBuildOptionPackages, pkgBuildOptionFile, logger, buildThreads, pkgInfoJsonFile):
    listPackages = constants.specData.getListPackages()

    logger.info("List of packages to build:")
    logger.info(listPackages)
    if constants.rpmCheck:
        constants.setTestForceRPMS(listPackages[:])
    pkgManager = PackageManager()
    pkgManager.buildPackages(listPackages, listBuildOptionPackages, pkgBuildOptionFile, buildThreads)

    #Generating package info file which is required by installer
    logger.info("Writing Package info to the file:"+pkgInfoJsonFile)
    pkgInfo = PackageInfo()
    pkgInfo.loadPackagesData()
    pkgInfo.writePkgListToFile(pkgInfoJsonFile)
Example #15
0
 def __init__(self, gui):
     """
     Initialize the ObsProjectsManager.
     `gui` must be a reference to the main `Gui` instance.
     """
     ObsLightGuiObject.__init__(self, gui)
     ProjectsManagerBase.__init__(self,
                                  self.mainWindow.obsProjectsListWidget,
                                  self.manager.getLocalProjectList)
     self.__projectConfigManager = None
     self.__repoConfigManager = None
     self.loadProjectList()
     self.projectListWidget.currentTextChanged.connect(
         self.on_projectSelected)
     self.__packageManager = PackageManager(self.gui)
     self.__connectButtons()
Example #16
0
def buildToolChain(buildThreads):
    pkgManager = PackageManager()
    pkgManager.buildToolChainPackages(buildThreads)
Example #17
0
def buildAPackage(package, buildThreads, pkgBuildType):
    listPackages = [package]
    pkgManager = PackageManager(pkgBuildType=pkgBuildType)
    if constants.rpmCheck:
        constants.setTestForceRPMS(copy.copy(listPackages))
    pkgManager.buildPackages(listPackages, buildThreads, pkgBuildType)
Example #18
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("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+"/x86_64"):
        logger.error("Given RPMS Path is missing x86_64 sub-directory:"+options.publishRPMSPath)
        errorFlag = True
    if not os.path.isdir(options.publishXRPMSPath+"/x86_64"):
        logger.error("Given X RPMS Path is missing x86_64 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.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+"/x86_64")
        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)

    listBuildOptionPackages = get_packages_with_build_options(options.pkgBuildOptionFile)

    try:
        constants.initialize(options)
        if package == "packages_list":
            buildPackagesList(options.buildRootPath+"/../packages_list.csv")
        elif package == "sources_list":
            if not os.path.isdir("../../stage/yaml_sources"):
                cmdUtils.runCommandInShell("mkdir -p ../../stage/yaml_sources")
            buildSourcesList('../../stage/yaml_sources',logger)
        elif package == "srpms_list":
            if not os.path.isdir("../../stage/yaml_srpms"):
                cmdUtils.runCommandInShell("mkdir -p ../../stage/yaml_srpms")
            buildSRPMList(options.sourceRpmPath,"../../stage/yaml_srpms",logger)
        elif options.toolChainStage == "stage1":
            pkgManager = PackageManager()
            pkgManager.buildToolChain()
        elif options.toolChainStage == "stage2":
            pkgManager = PackageManager()
            pkgManager.buildToolChainPackages(options.buildThreads)
        elif options.installPackage:
            buildAPackage(package, listBuildOptionPackages, options.pkgBuildOptionFile, options.buildThreads)
        else:
            buildPackagesForAllSpecs(listBuildOptionPackages, options.pkgBuildOptionFile, logger, options.buildThreads, pkgInfoJsonFile)
    except Exception as e:
        logger.error("Caught an exception")
        logger.error(str(e))
        # print stacktrace
        traceback.print_exc()
        sys.exit(1)

    sys.exit(0)
Example #19
0
class ObsProjectsManager(ObsLightGuiObject, ProjectsManagerBase):
    '''
    Manages the local project list widget and project-related buttons
    of the main window.
    '''
    def __init__(self, gui):
        """
        Initialize the ObsProjectsManager.
        `gui` must be a reference to the main `Gui` instance.
        """
        ObsLightGuiObject.__init__(self, gui)
        ProjectsManagerBase.__init__(self,
                                     self.mainWindow.obsProjectsListWidget,
                                     self.manager.getLocalProjectList)
        self.__projectConfigManager = None
        self.__repoConfigManager = None
        self.loadProjectList()
        self.projectListWidget.currentTextChanged.connect(
            self.on_projectSelected)
        self.__packageManager = PackageManager(self.gui)
        self.__connectButtons()

    def __connectButtons(self):
        """
        Connect project-related, chroot-related and repository-related
        buttons of the OBS project tab to the appropriate methods.
        """
        mw = self.mainWindow
        mw.newObsProjectButton.clicked.connect(self.gui.runWizard)
        #        mw.modifyObsProjectButton.clicked.connect(self.on_modifyObsProjectButton_clicked)
        mw.deleteObsProjectButton.clicked.connect(
            self.on_deleteObsProjectButton_clicked)
        #        mw.loadObsProjectButton.clicked.connect(self.on_importObsProjectButton_clicked)
        #        mw.saveObsProjectButton.clicked.connect(self.on_exportObsProjectButton_clicked)
        mw.newChrootButton.clicked.connect(self.on_newChrootButton_clicked)
        mw.openChrootButton.clicked.connect(self.on_openChrootButton_clicked)
        mw.deleteChrootButton.clicked.connect(
            self.on_deleteChrootButton_clicked)

#    @popupOnException
#    def on_modifyObsProjectButton_clicked(self):
#        projectName = self.currentProject
#        if projectName is None:
#            return
#        self.__projectConfigManager = ProjectConfigManager(self.gui, projectName)
#        self.__projectConfigManager.finished.connect(self.on_projectConfigManager_finished)

    @popupOnException
    def on_deleteObsProjectButton_clicked(self):
        projectName = self.currentProject
        if projectName is None:
            return
        result = QMessageBox.question(
            self.mainWindow,
            "Are you sure ?",
            "Are you sure you want to delete %s project ?" % projectName,
            buttons=QMessageBox.Yes | QMessageBox.No,
            defaultButton=QMessageBox.Yes)
        if result == QMessageBox.No:
            return
        progress = self.gui.getInfiniteProgressDialog()
        runnable = ProgressRunnable2(progress)
        runnable.setDialogMessage(u"Deleting project...")
        runnable.setRunMethod(self.manager.removeProject, projectName)
        runnable.finished.connect(self.refresh)
        runnable.caughtException.connect(self.gui.popupErrorCallback)
        runnable.runOnGlobalInstance()

#    @popupOnException
#    def on_importObsProjectButton_clicked(self):
#        filePath, _filter = QFileDialog.getOpenFileName(self.mainWindow,
#                                                        u"Select project to import")
#        if len(filePath) < 1:
#            return
#        progress = self.gui.getInfiniteProgressDialog()
#        runnable = ProgressRunnable2(progress)
#        runnable.setDialogMessage(u"Importing project...")
#        runnable.setRunMethod(self.manager.importProject, filePath)
#        runnable.caughtException.connect(self.gui.popupErrorCallback)
#        runnable.finished.connect(self.refresh)
#        runnable.runOnGlobalInstance()

#    @popupOnException
#    def on_exportObsProjectButton_clicked(self):
#        project = self.currentProject
#        if project is None:
#            return
#        filePath, _filter = QFileDialog.getSaveFileName(self.mainWindow,
#                                                        u"Select file to export")
#        if len(filePath) < 1:
#            return
#        progress = self.gui.getInfiniteProgressDialog()
#        runnable = ProgressRunnable2(progress)
#        runnable.setDialogMessage(u"Exporting project...")
#        runnable.setRunMethod(self.manager.exportProject, project, filePath)
#        runnable.caughtException.connect(self.gui.popupErrorCallback)
#        runnable.finished.connect(self.refresh)
#        runnable.runOnGlobalInstance()

    @popupOnException
    def on_projectConfigManager_finished(self, success):
        if success:
            self.loadProjectList()
            self.on_projectSelected(None)

    @popupOnException
    def on_newChrootButton_clicked(self):
        projectName = self.currentProject
        if projectName is None or self.manager.isChRootInit(projectName):
            return
        runnable = ProgressRunnable2(self.gui.getInfiniteProgressDialog())
        runnable.setDialogMessage(u"Creating project file system...")
        runnable.setRunMethod(self.manager.createChRoot, projectName)
        runnable.caughtException.connect(self.gui.popupErrorCallback)
        runnable.finished.connect(self.refreshProject)
        runnable.runOnGlobalInstance()

    @popupOnException
    def on_openChrootButton_clicked(self):
        projectName = self.currentProject
        if projectName is None or not self.manager.isChRootInit(projectName):
            return

        currentPackage = self.__packageManager.currentPackage()
        runnable = ProgressRunnable2()
        useRootId = self.mainWindow.checkUserRootForChroot.isChecked()
        if useRootId:
            self.mainWindow.checkUserRootForChroot.setCheckState(
                Qt.CheckState(False))
        if currentPackage is None:
            runnable.setRunMethod(self.manager.goToChRoot,
                                  projectName,
                                  useRootId=useRootId,
                                  detach=True)
        else:
            runnable.setRunMethod(self.manager.goToChRoot,
                                  projectName,
                                  currentPackage,
                                  useRootId=useRootId,
                                  detach=True)
        runnable.caughtException.connect(self.gui.popupErrorCallback)
        runnable.finished.connect(self.refreshProject)
        runnable.runOnGlobalInstance()

    @popupOnException
    def on_deleteChrootButton_clicked(self):
        projectName = self.currentProject
        if projectName is not None:
            result = QMessageBox.question(
                self.mainWindow,
                "Are you sure ?",
                "Are you sure you want to delete %s's file system ?" %
                projectName,
                buttons=QMessageBox.Yes | QMessageBox.No,
                defaultButton=QMessageBox.Yes)
            if result == QMessageBox.No:
                return
            progress = self.gui.getInfiniteProgressDialog()
            runnable = ProgressRunnable2(progress)
            runnable.setDialogMessage(u"Deleting file system")
            runnable.setRunMethod(self.manager.removeChRoot, projectName)
            runnable.finished.connect(self.refreshProject)
            runnable.caughtException.connect(self.gui.popupErrorCallback)
            runnable.runOnGlobalInstance()

    def on_projectSelected(self, _project):
        self.refreshProject()

    def refreshProject(self):
        """
        Refresh the project, package and chroot views.
        """
        project = self.currentProject
        self.__packageManager.setCurrentProject(project)
        self.updateProjectLabels()
        self.updateChrootPathAndButtons()

    @popupOnException
    def updateProjectLabels(self):
        '''
        Update the different labels according to project parameters.
        '''
        project = self.currentProject
        if project is not None:
            projectLink = self.manager.getProjectWebPage(project)
            projectObsName = self.manager.getProjectParameter(
                project, "projectObsName")
            target = self.manager.getProjectParameter(project, "projectTarget")
            obsRepoLink = self.manager.getProjectRepository(project)
            localRepoLink = self.manager.getLocalRepository(project)
            projectTitle = self.manager.getProjectParameter(project, "title")
            projectDescription = self.manager.getProjectParameter(
                project, "description")

            self.mainWindow.projectLabelValue.setText(project)
            self.mainWindow.projectTitleLabel.setText(projectTitle)
            self.mainWindow.projectDescriptionLabel.setText(projectDescription)
            self.mainWindow.projectPageLinkLabel.setText(
                u'<a href="%s">%s</a>' % (projectLink, projectObsName))
            repoObsLink = u'<a href="%s">%s</a>' % (obsRepoLink, target)
            repoLocalLink = u'<a href="%s">%s</a>' % (localRepoLink, project)
            self.mainWindow.projectObsRepoPageLinkLabel.setText(repoObsLink)
            self.mainWindow.projectLocalRepoPageLinkLabel.setText(
                repoLocalLink)
#            self.mainWindow.saveObsProjectButton.setEnabled(True)
#        else:
#            self.mainWindow.saveObsProjectButton.setEnabled(False)

    @popupOnException
    def updateChrootPathAndButtons(self):
        '''
        Update the chroot path displayed in the main window
        with the one of the currently selected project.
        Enable/disable some buttons according to the state
        of the chroot.
        '''
        project = self.currentProject
        if project is not None:
            isChrootInit = self.manager.isChRootInit(project)
            if isChrootInit:
                chrootPath = self.manager.getChRootPath(project)
                self.mainWindow.chrootPathLineEdit.setText(chrootPath)

                self.mainWindow.newChrootButton.setEnabled(False)
                self.mainWindow.openChrootButton.setEnabled(True)
            else:
                self.mainWindow.newChrootButton.setEnabled(True)
                self.mainWindow.openChrootButton.setEnabled(False)
                self.mainWindow.chrootPathLineEdit.setText("")

            self.mainWindow.deleteChrootButton.setEnabled(isChrootInit)
Example #20
0
def buildAPackage(package, listBuildOptionPackages, pkgBuildOptionFile, buildThreads):
    listPackages=[]
    listPackages.append(package)
    pkgManager = PackageManager()
    pkgManager.buildPackages(listPackages, listBuildOptionPackages, pkgBuildOptionFile, buildThreads)
Example #21
0
def buildAPackage(package, buildThreads):
    listPackages = []
    listPackages.append(package)
    pkgManager = PackageManager()
    pkgManager.buildPackages(listPackages, buildThreads)
Example #22
0
def buildToolChain(buildThreads):
    pkgManager = PackageManager()
    pkgManager.buildToolChainPackages(buildThreads)
Example #23
0
def main():
    usage = "Usage: %prog [options] <package name>"
    parser = OptionParser(usage)
    parser.add_option("-s",
                      "--spec-path",
                      dest="specPath",
                      default="../../SPECS")
    parser.add_option("-x",
                      "--source-path",
                      dest="sourcePath",
                      default="../../stage/SOURCES")
    parser.add_option("-r",
                      "--rpm-path",
                      dest="rpmPath",
                      default="../../stage/RPMS")
    parser.add_option("-i",
                      "--install-package",
                      dest="installPackage",
                      default=False,
                      action="store_true")
    parser.add_option("-p",
                      "--publish-RPMS-path",
                      dest="publishRPMSPath",
                      default="../../stage/PUBLISHRPMS")
    parser.add_option("-l",
                      "--log-path",
                      dest="logPath",
                      default="../../stage/LOGS")
    parser.add_option("-o",
                      "--build-option",
                      dest="buildOption",
                      default="full")
    parser.add_option("-z",
                      "--top-dir-path",
                      dest="topDirPath",
                      default="/usr/src/photon")
    parser.add_option(
        "-j",
        "--json-file",
        dest="inputJSONFile",
        default="../../common/data/build_install_options_all.json")
    parser.add_option("-b",
                      "--build-root-path",
                      dest="buildRootPath",
                      default="/mnt")
    parser.add_option("-t",
                      "--threads",
                      dest="buildThreads",
                      default=1,
                      type="int",
                      help="Numbeer of working threads")
    parser.add_option("-m",
                      "--tool-chain-stage",
                      dest="toolChainStage",
                      default="None")
    parser.add_option("-c",
                      "--pullsources-config",
                      dest="pullsourcesConfig",
                      default="pullsources.conf")
    parser.add_option("-d", "--dist", dest="dist", default="")
    parser.add_option("-k",
                      "--input-RPMS-path",
                      dest="inputRPMSPath",
                      default=None)
    parser.add_option("-n",
                      "--build-number",
                      dest="buildNumber",
                      default="0000000")
    parser.add_option("-v",
                      "--release-version",
                      dest="releaseVersion",
                      default="NNNnNNN")
    parser.add_option("-u",
                      "--enable-rpmcheck",
                      dest="rpmCheck",
                      default=False,
                      action="store_true")
    parser.add_option("-a",
                      "--source-rpm-path",
                      dest="sourceRpmPath",
                      default="../../stage/SRPMS")

    (options, args) = 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
    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.publishRPMSPath + "/x86_64"):
        logger.error("Given RPMS Path is missing x86_64 sub-directory:" +
                     options.publishRPMSPath)
        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.isfile(
            options.inputJSONFile) and not options.installPackage:
        logger.error("Given JSON File is not a file:" + options.inputJSONFile)
        errorFlag = True

    if options.inputRPMSPath is not None and not os.path.isdir(
            options.inputRPMSPath):
        logger.error("Given input RPMS Path is not a directory:" +
                     options.publishRPMSPath)
        errorFlag = True

    if options.installPackage:
        if len(args) != 1:
            logger.error("Please provide package name")
            errorFlag = True
        else:
            package = args[0]

    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 + "/x86_64")
        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)
    if not options.installPackage:
        logger.info("JSON File :" + options.inputJSONFile)
    else:
        logger.info("Package to build:" + package)
    '''    
    listPackages=["acl","attr","autoconf","automake","bash","bc","bindutils","binutils","bison","boost","btrfs-progs","bzip2","ca-certificates","cdrkit","check",
                  "cloud-init","cmake","coreutils","cpio","cracklib","createrepo","curl","cyrus-sasl","db","dbus","deltarpm","diffutils","docbook-xml","docbook-xsl",
                  "docker","dracut","e2fsprogs","elfutils","etcd","expat","file","filesystem","findutils","flex","gawk","gcc","gdb","gdbm","gettext","git",
                  "glib","glibc","glibmm","gmp","go","gobject-introspection","google-daemon","google-startup-scripts","gperf","gpgme","gptfdisk","grep","groff",
                  "grub","gtk-doc","gzip","haveged","hawkey","iana-etc","inetutils","intltool","iproute2","iptables","itstool","json-glib","kbd","kmod","krb5",
                  "kubernetes","less","libaio","libassuan","libcap","libdnet","libffi","libgpg-error","libgsystem","libhif","libmspack","libpcap","libpipeline",
                  "librepo","libselinux","libsepol","libsigc++","libsolv","libtool","libxml2","libxslt","libyaml","linux","linux-api-headers","Linux-PAM","lua",
                  "lvm2","lzo","m4","make","man-db","man-pages","mercurial","mpc","mpfr","nano","ncurses","nspr","nss","ntp","openldap","openssh","openssl",
                  "open-vm-tools","ostree","parted","patch","pcre","perl","perl-common-sense","perl-Config-IniFiles","perl-DBD-SQLite","perl-DBI","perl-DBIx-Simple",
                  "perl-Exporter-Tiny","perl-JSON-XS","perl-libintl","perl-List-MoreUtils","perl-Module-Install","perl-Module-ScanDeps","perl-Types-Serialiser",
                  "perl-WWW-Curl","perl-YAML","perl-YAML-Tiny","photon-release","pkg-config","popt","procps-ng","psmisc","pycurl","pygobject","python2",
                  "python-configobj","python-iniparse","python-jsonpatch","python-jsonpointer","python-prettytable","python-requests","python-setuptools",
                  "python-six","PyYAML","readline","rocket","rpm","rpm-ostree","rpm-ostree-toolbox","ruby","sed","shadow","sqlite-autoconf","strace","sudo",
                  "swig","systemd","tar","tcpdump","tcsh","tdnf","texinfo","thin-provisioning-tools","tzdata","unzip","urlgrabber","util-linux","vim","wget",
                  "which","xerces-c","XML-Parser","xml-security-c","xz","yum","yum-metadata-parser","zlib"]
    '''
    try:
        constants.initialize(options)
        if package == "packages_list":
            buildPackagesList(options.specPath,
                              options.buildRootPath + "/../packages_list.csv")
        elif package == "sources_list":
            buildSourcesList(options.specPath, options.buildRootPath + "/../")
        elif options.toolChainStage == "stage1":
            pkgManager = PackageManager()
            pkgManager.buildToolChain()
        elif options.toolChainStage == "stage2":
            pkgManager = PackageManager()
            pkgManager.buildToolChainPackages(options.buildThreads)
        elif options.installPackage:
            buildAPackage(package, options.buildThreads)
        else:
            buildPackagesFromGivenJSONFile(options.inputJSONFile,
                                           options.buildOption, logger,
                                           options.buildThreads)
    except Exception as e:
        logger.error("Caught an exception")
        logger.error(str(e))
        # print stacktrace
        traceback.print_exc()
        sys.exit(1)

    sys.exit(0)
Example #24
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("-y", "--log-level", dest="logLevel", default="error")
    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-tag", 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("-pj",
                        "--packages-json-input",
                        dest="pkgJsonInput",
                        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("Main", options.logPath, options.logLevel)
    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.pkgJsonInput is not None and not os.path.isfile(
            options.pkgJsonInput):
        logger.error("Given input packages file is not a file:" +
                     options.pkgJsonInput)
        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.debug("Source Path :" + options.sourcePath)
    logger.debug("Spec Path :" + options.specPath)
    logger.debug("Rpm Path :" + options.rpmPath)
    logger.debug("Log Path :" + options.logPath)
    logger.debug("Log Level :" + options.logLevel)
    logger.debug("Top Dir Path :" + options.topDirPath)
    logger.debug("Publish RPMS Path :" + options.publishRPMSPath)
    logger.debug("Publish X RPMS Path :" + options.publishXRPMSPath)

    if options.installPackage:
        logger.debug("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.setLogLevel(options.logLevel)
        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.setPullSourcesURL(get_baseurl(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:
            buildSpecifiedPackages([package], options.buildThreads,
                                   options.pkgBuildType)
        elif options.pkgJsonInput:
            buildPackagesInJson(options.pkgJsonInput, options.buildThreads,
                                options.pkgBuildType, pkgInfoJsonFile, logger)
        else:
            buildPackagesForAllSpecs(options.buildThreads,
                                     options.pkgBuildType, pkgInfoJsonFile,
                                     logger)
    except Exception as e:
        logger.error("Caught an exception")
        logger.error(str(e))
        # print stacktrace
        traceback.print_exc()
        sys.exit(1)
    sys.exit(0)
Example #25
0
def main():
    usage = "Usage: %prog [options] <package name>"
    parser = OptionParser(usage)
    parser.add_option("-s",  "--spec-path",  dest="specPath",  default="../../SPECS")
    parser.add_option("-x",  "--source-path",  dest="sourcePath",  default="../../stage/SOURCES")
    parser.add_option("-r",  "--rpm-path",  dest="rpmPath",  default="../../stage/RPMS")
    parser.add_option("-i",  "--install-package", dest="installPackage",  default=False,  action ="store_true")
    parser.add_option("-p",  "--publish-RPMS-path", dest="publishRPMSPath",  default="../../stage/PUBLISHRPMS")
    parser.add_option("-l",  "--log-path", dest="logPath",  default="../../stage/LOGS")
    parser.add_option("-o",  "--build-option", dest="buildOption",  default="full")
    parser.add_option("-z",  "--top-dir-path", dest="topDirPath",  default="/usr/src/photon")
    parser.add_option("-j",  "--json-file", dest="inputJSONFile",  default="../../common/data/build_install_options_all.json")
    parser.add_option("-b",  "--build-root-path", dest="buildRootPath",  default="/mnt")
    parser.add_option("-t",  "--threads", dest="buildThreads",  default=1, type="int", help="Number of working threads")
    parser.add_option("-m",  "--tool-chain-stage", dest="toolChainStage",  default="None")
    parser.add_option("-c",  "--pullsources-config", dest="pullsourcesConfig",  default="pullsources.conf")
    parser.add_option("-d",  "--dist", dest="dist",  default="")
    parser.add_option("-k",  "--input-RPMS-path", dest="inputRPMSPath",   default=None)
    parser.add_option("-n",  "--build-number", dest="buildNumber",  default="0000000")
    parser.add_option("-v",  "--release-version", dest="releaseVersion",  default="NNNnNNN")
    parser.add_option("-u",  "--enable-rpmcheck", dest="rpmCheck",  default=False, action ="store_true")
    parser.add_option("-a",  "--source-rpm-path",  dest="sourceRpmPath",  default="../../stage/SRPMS")
    parser.add_option("-w",  "--pkginfo-file",  dest="pkgInfoFile",  default="../../common/data/pkg_info.json")
    parser.add_option("-g",  "--pkg-build-option-file",  dest="pkgBuildOptionFile",  default="../../common/data/pkg_build_options.json")
    parser.add_option("-q",  "--rpmcheck-stop-on-error", dest="rpmCheckStopOnError",  default=False, action ="store_true")

    (options,  args) = 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.publishRPMSPath+"/x86_64"):
        logger.error("Given RPMS Path is missing x86_64 sub-directory:"+options.publishRPMSPath)
        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.isfile(options.inputJSONFile) and not options.installPackage:
        logger.error("Given JSON File is not a file:"+options.inputJSONFile)
        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.publishRPMSPath)
        errorFlag = True
        
    if options.installPackage :
        if len(args) != 1:
            logger.error("Please provide package name")
            errorFlag = True
        else:
            package=args[0]
        
    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+"/x86_64")
        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)

    if not options.installPackage:
        logger.info("JSON File :" + options.inputJSONFile)
    else:
        logger.info("Package to build:"+package)
    
    listBuildOptionPackages = get_packages_with_build_options(options.pkgBuildOptionFile)

    try:
        constants.initialize(options)
        SourcePackageInfo.setLogging()
        SourcePackageInfo.loadPkgInfoFromFile(pkgInfoJsonFile)
        if package == "packages_list":
            buildPackagesList(options.specPath, options.buildRootPath+"/../packages_list.csv")
        elif package == "sources_list":
            if not os.path.isdir("../../stage/yaml_sources"):
                cmdUtils.runCommandInShell("mkdir -p ../../stage/yaml_sources")
            buildSourcesList(options.specPath,"../../stage/yaml_sources", options.buildRootPath+"/../",logger)
        elif package == "srpms_list":
            if not os.path.isdir("../../stage/yaml_srpms"):
                cmdUtils.runCommandInShell("mkdir -p ../../stage/yaml_srpms")
            buildSRPMList(options.specPath,options.sourceRpmPath,"../../stage/yaml_srpms",logger)
        elif options.toolChainStage == "stage1":
            pkgManager = PackageManager()
            pkgManager.buildToolChain()
        elif options.toolChainStage == "stage2":
            pkgManager = PackageManager()
            pkgManager.buildToolChainPackages(options.buildThreads)
        elif options.installPackage:
            buildAPackage(package, listBuildOptionPackages, options.pkgBuildOptionFile, options.buildThreads)
        else:
            buildPackagesFromGivenJSONFile(options.inputJSONFile, options.buildOption, listBuildOptionPackages, options.pkgBuildOptionFile, logger, options.buildThreads)
    except Exception as e:
        logger.error("Caught an exception")
        logger.error(str(e))
        # print stacktrace
        traceback.print_exc()
        sys.exit(1)

    logger.info("Writing Package info to the file:"+pkgInfoJsonFile)
    SourcePackageInfo.writePkgListToFile(pkgInfoJsonFile)   
    sys.exit(0)
Example #26
0
def main():
    parser = ArgumentParser()
    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("-y", "--log-level", dest="logLevel", default="error")
    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-tag", 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="../../common/data/packageWeights.json")
    parser.add_argument("-bt", "--build-type", dest="pkgBuildType", choices=['chroot', 'container'], default="chroot")
    parser.add_argument("-F", "--kat-build", dest="katBuild", default=None)
    parser.add_argument("-pj", "--packages-json-input", dest="pkgJsonInput", 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("Main", options.logPath, options.logLevel)
    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 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.pkgJsonInput is not None and not os.path.isfile(options.pkgJsonInput):
        logger.error("Given input packages file is not a file:"+options.pkgJsonInput)
        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

    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.debug("Source Path :"+options.sourcePath)
    logger.debug("Spec Path :" + options.specPath)
    logger.debug("Rpm Path :" + options.rpmPath)
    logger.debug("Log Path :" + options.logPath)
    logger.debug("Log Level :" + options.logLevel)
    logger.debug("Top Dir Path :" + options.topDirPath)
    logger.debug("Publish RPMS Path :" + options.publishRPMSPath)
    logger.debug("Publish X RPMS Path :" + options.publishXRPMSPath)

    if options.installPackage:
        logger.debug("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.setLogLevel(options.logLevel)
        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.setPullSourcesURL(get_baseurl(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:
            buildSpecifiedPackages([package], options.buildThreads, options.pkgBuildType)
        elif options.pkgJsonInput:
            buildPackagesInJson(options.pkgJsonInput, options.buildThreads,
                                options.pkgBuildType, pkgInfoJsonFile, logger)
        else:
            buildPackagesForAllSpecs(options.buildThreads, options.pkgBuildType,
                                     pkgInfoJsonFile, logger)
    except Exception as e:
        logger.error("Caught an exception")
        logger.error(str(e))
        # print stacktrace
        traceback.print_exc()
        sys.exit(1)
    sys.exit(0)
Example #27
0
def main():
    usage = "Usage: %prog [options] <package name>"
    parser = OptionParser(usage)
    parser.add_option("-s",  "--spec-path",  dest="specPath",  default="../../SPECS")
    parser.add_option("-x",  "--source-path",  dest="sourcePath",  default="../../stage/SOURCES")
    parser.add_option("-r",  "--rpm-path",  dest="rpmPath",  default="../../stage/RPMS")
    parser.add_option("-i",  "--install-package", dest="installPackage",  default=False,  action ="store_true")
    parser.add_option("-p",  "--publish-RPMS-path", dest="publishRPMSPath",  default="../../stage/PUBLISHRPMS")
    parser.add_option("-l",  "--log-path", dest="logPath",  default="../../stage/LOGS")
    parser.add_option("-o",  "--build-option", dest="buildOption",  default="full")
    parser.add_option("-z",  "--top-dir-path", dest="topDirPath",  default="/usr/src/photon")
    parser.add_option("-j",  "--json-file", dest="inputJSONFile",  default="../../common/data/build_install_options_all.json")
    parser.add_option("-b",  "--build-root-path", dest="buildRootPath",  default="/mnt")
    parser.add_option("-t",  "--threads", dest="buildThreads",  default=1, type="int", help="Numbeer of working threads")
    parser.add_option("-m",  "--tool-chain-stage", dest="toolChainStage",  default="None")
    parser.add_option("-c",  "--pullsources-config", dest="pullsourcesConfig",  default="pullsources.conf")
    parser.add_option("-d",  "--dist", dest="dist",  default="")

    (options,  args) = 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
    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.publishRPMSPath+"/x86_64"):
        logger.error("Given RPMS Path is missing x86_64 sub-directory:"+options.publishRPMSPath)
        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.isfile(options.inputJSONFile) and not options.installPackage:
        logger.error("Given JSON File is not a file:"+options.inputJSONFile)
        errorFlag = True
        
    if options.installPackage :
        if len(args) != 1:
            logger.error("Please provide package name")
            errorFlag = True
        else:
            package=args[0]
        
    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+"/x86_64")
        cmdUtils.runCommandInShell("mkdir -p "+options.rpmPath+"/noarch")
    
    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)
    if not options.installPackage:
        logger.info("JSON File :" + options.inputJSONFile)
    else:
        logger.info("Package to build:"+package)

    '''    
    listPackages=["acl","attr","autoconf","automake","bash","bc","bindutils","binutils","bison","boost","btrfs-progs","bzip2","ca-certificates","cdrkit","check",
                  "cloud-init","cmake","coreutils","cpio","cracklib","createrepo","curl","cyrus-sasl","db","dbus","deltarpm","diffutils","docbook-xml","docbook-xsl",
                  "docker","dracut","e2fsprogs","elfutils","etcd","expat","file","filesystem","findutils","flex","gawk","gcc","gdb","gdbm","gettext","git",
                  "glib","glibc","glibmm","gmp","go","gobject-introspection","google-daemon","google-startup-scripts","gperf","gpgme","gptfdisk","grep","groff",
                  "grub","gtk-doc","gzip","haveged","hawkey","iana-etc","inetutils","intltool","iproute2","iptables","itstool","json-glib","kbd","kmod","krb5",
                  "kubernetes","less","libaio","libassuan","libcap","libdnet","libffi","libgpg-error","libgsystem","libhif","libmspack","libpcap","libpipeline",
                  "librepo","libselinux","libsepol","libsigc++","libsolv","libtool","libxml2","libxslt","libyaml","linux","linux-api-headers","Linux-PAM","lua",
                  "lvm2","lzo","m4","make","man-db","man-pages","mercurial","mpc","mpfr","nano","ncurses","nspr","nss","ntp","openldap","openssh","openssl",
                  "open-vm-tools","ostree","parted","patch","pcre","perl","perl-common-sense","perl-Config-IniFiles","perl-DBD-SQLite","perl-DBI","perl-DBIx-Simple",
                  "perl-Exporter-Tiny","perl-JSON-XS","perl-libintl","perl-List-MoreUtils","perl-Module-Install","perl-Module-ScanDeps","perl-Types-Serialiser",
                  "perl-WWW-Curl","perl-YAML","perl-YAML-Tiny","photon-release","pkg-config","popt","procps-ng","psmisc","pycurl","pygobject","python2",
                  "python-configobj","python-iniparse","python-jsonpatch","python-jsonpointer","python-prettytable","python-requests","python-setuptools",
                  "python-six","PyYAML","readline","rocket","rpm","rpm-ostree","rpm-ostree-toolbox","ruby","sed","shadow","sqlite-autoconf","strace","sudo",
                  "swig","systemd","tar","tcpdump","tcsh","tdnf","texinfo","thin-provisioning-tools","tzdata","unzip","urlgrabber","util-linux","vim","wget",
                  "which","xerces-c","XML-Parser","xml-security-c","xz","yum","yum-metadata-parser","zlib"]
    '''
    try:
        constants.initialize(options)
        if package == "packages_list":
            buildPackagesList(options.specPath, options.buildRootPath+"/../packages_list.csv")
        elif package == "sources_list":
            buildSourcesList(options.specPath, options.buildRootPath+"/../")
        elif options.toolChainStage == "stage1":
            pkgManager = PackageManager()
            pkgManager.buildToolChain()
        elif options.toolChainStage == "stage2":
            pkgManager = PackageManager()
            pkgManager.buildToolChainPackages(options.buildThreads)
        elif options.installPackage:
            buildAPackage(package, options.buildThreads)
        else:
            buildPackagesFromGivenJSONFile(options.inputJSONFile, options.buildOption,logger, options.buildThreads)
    except Exception as e:
        logger.error("Caught an exception")
        logger.error(str(e))
        # print stacktrace
        traceback.print_exc()
        sys.exit(1)
    
    sys.exit(0)
Example #28
0
def buildAPackage(package, buildThreads):
    listPackages=[]
    listPackages.append(package)
    pkgManager = PackageManager()
    pkgManager.buildPackages(listPackages, buildThreads)