def setLevel(self, levelName): """ Performs the check using a particular pre-defined quality set. This overrides the (optional) setting 'sqLevel' in the pkgInfo.py of the package to test. """ Any.requireIsTextNonEmpty(levelName) Any.requireIsIn(levelName, sqLevelNames) self.sqLevelToRun = levelName
def __init__( self, packagePath, isFirstInstall, msgType, message ): """ Creates a new global install log entry instance. """ Any.requireIsTextNonEmpty( packagePath ) Any.requireIsBool( isFirstInstall ) Any.requireIsTextNonEmpty( msgType ) Any.requireIsIn( msgType, ( 'NEW', 'FIX', 'DOC', 'IMP' ) ) self._date = datetime.now().strftime( "%Y-%m-%d %H:%M:%S" ) self._installRoot = '' self._packageCategory = '' self._packageName = '' self._packageVersion = '' self._maintainer = getuser() self._isFirstInstall = False self._msgType = 'NEW' self._message = '' self._fileName = None self._fileExt = 'xml' ( self._packageCategory, self._packageName, self._packageVersion ) = \ splitPath( packagePath ) Any.requireIsTextNonEmpty( self._packageCategory ) Any.requireIsTextNonEmpty( self._packageName ) Any.requireIsTextNonEmpty( self._packageVersion ) self.setIsFirstInstall( isFirstInstall ) self.setMsgType( msgType ) self.setMessage( message ) sitRootPath = getRootPath() timestamp = int( time() ) getFileName = lambda t: os.path.join( sitRootPath, 'Temporary', 'GlobalInstallLogfiles', 'GlobalInstall_%d.%s' % \ ( timestamp, self._fileExt ) ) fileName = getFileName( timestamp ) while os.path.exists( fileName ): logging.debug( 'global log entry %d exists, increasing to %d', timestamp, timestamp + 1 ) # if a logfile of this name already exists, try increasing the # timestamp timestamp += 1 fileName = getFileName( timestamp ) self.setFileName( fileName )
def setRules(self, ruleIDs): """ Run only the given list of rules, instead of all. This overrides the (optional) settings 'sqOptIn' and/or 'sqOptOut' in the pkgInfo.py of the package to test. """ Any.requireIsListNonEmpty(ruleIDs) for ruleID in ruleIDs: Any.requireIsIn(ruleID, self.ruleIDs) self.rulesToRun = ruleIDs self.useOptFlags = False
def _populateRules(self, forceRules=None): """ Discovers available / not implemented / opted-in / opted-out checkers. 'forceRules' is supposed to be an ordered list of rule IDs to get executed this time. In case of 'None' all rules will get checked. """ checkersAvailable = Rules.getRules() Any.requireIsListNonEmpty(checkersAvailable) for elem in checkersAvailable: Any.requireIsTuple(elem) (ruleID, rule) = elem Any.requireIsTextNonEmpty(ruleID) Any.requireIsInstance(rule, Rules.AbstractRule) self.ruleIDs.add(ruleID) self.rules[ruleID] = rule self.rulesOrdered.append(ruleID) if hasattr(rule, 'run'): self.rulesImplemented.add(ruleID) # will get overwritten below if 'forceRules' provided self.rulesToRun.append(ruleID) elif rule.removed: self.rulesRemoved.add(ruleID) # else: rule not implemented, yet if forceRules is not None: Any.requireIsListNonEmpty(forceRules) for ruleID in forceRules: Any.requireIsTextNonEmpty(ruleID) Any.requireIsIn(ruleID, self.ruleIDs) self.rulesToRun = forceRules
def getFullPlatformString( platformName ): """ Returns a human-readable string for the given platform name, e.g.: getFullPlatformString( 'trusty64' ) will return: 'Ubuntu 12.04 LTS (64 bit)' """ Any.requireIsTextNonEmpty( platformName ) Any.requireIsIn( platformName, getPlatformNames() ) for platform in getPlatformList(): if platform[0] == platformName: return platform[4] raise KeyError( 'invalid platform name: %s' % platformName )
def requireValidFormat(formatName): Any.requireIsTextNonEmpty(formatName) Any.requireIsIn(formatName, formatsAvailable)
def includeRule(self, ruleID): Any.requireIsTextNonEmpty(ruleID) Any.requireIsIn(ruleID, self.ruleIDs) if ruleID not in self.rulesToRun: self.rulesToRun.append(ruleID)
def _parsePkgInfo(self): try: if not self.pkgInfoContent: self.pkgInfoContent = getPkgInfoContent( dirName=self.topLevelDir) except (AssertionError, IOError, OSError): # Many packages lack a pkgInfo.py file within the source tree, # f.i they have no customizations. However in the SIT # installation such file exists if installed with our # Install Procedure. Handcrafted "LTS"-package might not have it. return except (NameError, SyntaxError): raise def getValue(key, default=None): try: result = self.pkgInfoContent[key] # logging.debug( '%s=%s', key, result ) except KeyError: result = default # no such setting, fall back to default return result # 2019-02-13 Legacy, can be dropped later on self.gitBranch = getValue('branch', self.gitBranch) self.gitCommitIdLong = getValue('commitID', self.gitCommitIdLong) self.gitOrigin = getValue('origin', self.gitOrigin) self.gitRelPath = getValue('repoRelPath', self.gitRelPath) self.packageName = getValue('package', self.packageName) # legacy 2018-09-26 self.sqCheckExe = getValue('SQ_12', self.sqCheckExe) # legacy 2019-10-08 # supposed to be used: self.userSrcAlias = getValue('aliases', self.userSrcAlias) self.useClang = getValue('BST_useClang', self.useClang) self.buildDependencies = getValue('buildDepends', self.buildDependencies) self.buildDependsArch = getValue('buildDependsArch', self.buildDependsArch) self.packageCategory = getValue('category', self.packageCategory) self.dependencies = getValue('depends', self.dependencies) self.dependsArch = getValue('dependsArch', self.dependsArch) self.userSrcEnv = getValue('envVars', self.userSrcEnv) self.userSrcBashCode = getValue('bashCode', self.userSrcBashCode) self.userSrcCmdCode = getValue('cmdCode', self.userSrcCmdCode) self.gitBranch = getValue('gitBranch', self.gitBranch) self.gitBranchForCIA = getValue('gitBranchForCIA', self.gitBranchForCIA) self.gitCommitIdLong = getValue('gitCommitID', self.gitCommitIdLong) self.gitOrigin = getValue('gitOrigin', self.gitOrigin) self.gitOriginForCIA = getValue('gitOriginForCIA', self.gitOriginForCIA) self.gitRelPath = getValue('gitRelPath', self.gitRelPath) self.docTool = getValue('docTool', self.docTool) self.install = getValue('install', self.install) for name in ('Install_onStartupStage1', 'Install_onStartupStage2', 'Install_onStartupStage3', 'Install_onStartupStage4', 'Install_onStartupStage5', 'Install_onExitStage1', 'Install_onExitStage2', 'Install_onExitStage3', 'Install_onExitStage4', 'Install_onExitStage5'): self.installHooks[name] = getValue(name) self.installGroup = getValue('installGroup', self.installGroup) self.installMatching = getValue('installMatching', self.installMatching) self.installMode = getValue('installMode', self.installMode) self.installSymlinks = getValue('installSymlinks', self.installSymlinks) self.installUmask = getValue('installUmask', self.installUmask) self.linkAllLibraries = getValue('linkAllLibraries', self.linkAllLibraries) self.packageName = getValue('name', self.packageName) self.patchlevel = getValue('patchlevel', self.patchlevel) self.recommendations = getValue('recommends', self.recommendations) self.svnRepositoryRoot = getValue('repositoryRoot', self.svnRepositoryRoot) self.svnRepositoryURL = getValue('repositoryUrl', self.svnRepositoryURL) self.svnRevision = getValue('revision', self.svnRevision) self.svnRevisionForCIA = getValue('revisionForCIA', self.svnRevisionForCIA) self.sqComments = getValue('sqComments', self.sqComments) self.sqCheckExe = getValue('sqCheckExe', self.sqCheckExe) self.sqLevel = getValue('sqLevel', self.sqLevel) self.sqOptInRules = getValue('sqOptInRules', self.sqOptInRules) self.sqOptOutRules = getValue('sqOptOutRules', self.sqOptOutRules) self.sqOptInDirs = getValue('sqOptInDirs', self.sqOptInDirs) self.sqOptOutDirs = getValue('sqOptOutDirs', self.sqOptOutDirs) self.sqOptInFiles = getValue('sqOptInFiles', self.sqOptInFiles) self.sqOptOutFiles = getValue('sqOptOutFiles', self.sqOptOutFiles) self.suggestions = getValue('suggests', self.suggestions) self.usePatchlevels = getValue('usePatchlevels', self.usePatchlevels) self.packageVersion = getValue('version', self.packageVersion) # both the same self.packageVersionRaw = getValue('version', self.packageVersionRaw) # - " - if self.packageCategory and self.packageName and self.packageVersion: self.canonicalPath = os.path.join(self.packageCategory, self.packageName, self.packageVersion) self.userSrcEnv = self._expandListOfTuples(self.userSrcEnv) self.userSrcAlias = self._expandListOfTuples(self.userSrcAlias) self.userSrcBashCode = self._expandListOfStrings(self.userSrcBashCode) self.userSrcCmdCode = self._expandListOfStrings(self.userSrcCmdCode) Any.requireIsIn(self.installMode, ('clean', 'incremental'), 'invalid value of "installMode" in pkgInfo.py')