def evalConfigurationFiles( self, toolName = None ): folders = [ self.getGlobalFolder( toolName ), self.getUserFolder( toolName ) ] hostConfigFile = '{0}.py'.format( getNodeName() ) files = [ 'config.py', hostConfigFile ] additionalConfigFile = mApp().getParameters().getConfigFile() if additionalConfigFile: if os.path.exists( additionalConfigFile ): files.append( additionalConfigFile ) else: mApp().debug( self, "Warning: Not loading invalid config file: {0}".format( additionalConfigFile ) ) for folder in folders: for fileName in files: configFile = os.path.join( folder, fileName ) if not os.path.isfile( configFile ): mApp().debugN( self, 3, 'Configuration file "{0}" does not exist, continuing.'.format( configFile ) ) continue mApp().debugN( self, 2, 'Loading configuration file "{0}"'.format( configFile ) ) try: currentGlobals = { '__file__' : configFile, 'application' : mApp() } execfile( configFile, currentGlobals ) mApp().debug( self, 'Configuration file "{0}" loaded successfully'.format( configFile ) ) except SyntaxError as e: mApp().debug( self, traceback.format_exc() ) raise ConfigurationError( 'The configuration file "{0}" contains a syntax error: "{1}"'.format( configFile, str( e ) ) ) except Exception as e: # we need to catch all exceptions, since we are calling user code mApp().debug( self, traceback.format_exc() ) raise ConfigurationError( 'The configuration file "{0}" contains an error: "{1}"'.format( configFile, str( e ) ) ) except: # we need to catch all exceptions, since we are calling user code mApp().debug( self, traceback.format_exc() ) raise ConfigurationError( 'The configuration file "{0}" contains an unknown error!'.format( configFile ) )
def getDefaultSettings( self ): home = os.path.expanduser( "~" ) defaultSettings = {} # ----- store the make-o-matic version these scripts use: defaultSettings[ Defaults.MomVersionNumber ] = '0.5.0' # ----- script settings: defaultSettings[ Defaults.ScriptLogLevel ] = 0 defaultSettings[ Defaults.ScriptEnableLogEnvironment ] = True defaultSettings[ Defaults.ScriptClientName ] = getNodeName() defaultSettings[ Defaults.ScriptRunMode ] = Defaults.RunMode_Build defaultSettings[ Defaults.ScriptIgnoreCommitMessageCommands ] = False defaultSettings[ Defaults.ScriptEnableNotifications ] = True # ----- internal settings defaultSettings[ Defaults.MomDebugIndentVariable ] = 'MOM_INTERNAL_DEBUG_INDENT' # ----- project settings: defaultSettings[ Defaults.ProjectExecutomatLogfileName ] = 'execution.log' defaultSettings[ Defaults.ProjectBuildType ] = 'm' defaultSettings[ Defaults.ProjectBuildSequence] = [ # name, modes, execute-on-failure [ 'create-folders', 'mcgdhpsf', False ], [ 'checkout', 'mcgdhpsf', False ], [ 'export-sources', 'mcgdhpsf', False ], [ 'configure', 'mcgdhpsf', False ], [ 'build', 'mcgdhpsf', False ], [ 'test', 'mcgdhpsf', False ], [ 'install', 'mcgdhpsf', False ], [ 'create-packages', 'dsfp', False ], [ 'create-docs', 'mcgdhpsf', False ], [ 'upload-packages', 'dsf', True ], [ 'cleanup-packages', 'cdsf', True ], [ 'cleanup', 'mcdsf', True ] ] defaultSettings[ Defaults.ProjectBuildTypeDescriptions ] = { # build type to descriptive text 'e' : 'Empty build. All build steps are disabled. Useful for debugging build scripts.', 'm' : 'Manual build. Does not modify environment variables. Deletes temporary folders.', 'c' : 'Continuous build. Builds configurations against the best scoring matching environment. Deletes temporary folders.', 'd' : 'Daily build. Builds configurations against every matching environment. Deletes temporary folders.', 'g' : 'Continuous build, with cleanup steps disabled.', 'h' : 'Hacker build. Similar to manual builds. Does not delete temporary folders.', 'p' : '1337 coder build. Similar to daily builds. Does not delete temporary folders.', 's' : 'Snapshot build. Similar to daily builds. Creates and uploads packages and documentation.', 'f' : 'Full build. All build steps are enabled. Useful for debugging build scripts.' } defaultSettings[ Defaults.ProjectSourceDir ] = 'src' defaultSettings[ Defaults.ProjectPackagesDir ] = 'packages' defaultSettings[ Defaults.ProjectDocsDir ] = 'docs' defaultSettings[ Defaults.ProjectTempDir ] = 'tmp' defaultSettings[ Defaults.ProjectLogDir ] = 'log' # ----- configuration settings: defaultSettings[ Defaults.ConfigurationBuildDir ] = 'build' defaultSettings[ Defaults.ConfigurationTargetDir ] = 'install' defaultSettings[ Defaults.MakeBuilderInstallTarget ] = 'install' defaultSettings[ Defaults.MakeBuilderJobsCount ] = None # ----- environments settings: defaultSettings[ Defaults.EnvironmentsBaseDir ] = os.path.join( home, 'MomEnvironments' ) defaultSettings[ Defaults.EnvironmentsExpansionModeMapping ] = { 'c' : Defaults.EnvironmentExpansionMode_BuildHighestScoring, 'g' : Defaults.EnvironmentExpansionMode_BuildHighestScoring, 'd' : Defaults.EnvironmentExpansionMode_BuildAll, 's' : Defaults.EnvironmentExpansionMode_BuildAll, 'p' : Defaults.EnvironmentExpansionMode_BuildAll, 'f' : Defaults.EnvironmentExpansionMode_BuildAll } defaultSettings[ Defaults.EnvironmentsApplicableBuildTypes ] = 'cdpsf' # ----- System path settings: defaultSettings[ Defaults.SystemExtraPaths ] = [] defaultSettings[ Defaults.SystemShortName ] = None # ----- Build settings: defaultSettings[ Defaults.BuildMoveOldDirectories ] = True # ----- Publisher settings: defaultSettings[ Defaults.PublisherPackageBaseHttpURL ] = None defaultSettings[ Defaults.PublisherReportsBaseHttpURL ] = None # ----- EmailReporter settings: defaultSettings[ Defaults.EmailReporterMomErrorRecipients] = None defaultSettings[ Defaults.EmailReporterNotifyCommitterOnFailure ] = True defaultSettings[ Defaults.EmailReporterUseCompressionForAttachments ] = False # ----- Publisher settings: defaultSettings[ Defaults.PublisherSubdirectoryTemplate] = "${0}/${1}/${2}/${3}/${4}".format( Defaults.ScriptBuildName, Defaults.SourceCodeProviderBranchPrefix, Defaults.SourceCodeProviderVersionName, Defaults.ProjectRevisionWithTime, Defaults.ScriptClientName ) defaultSettings[ Defaults.RSyncPublisherPackageCleanup ] = True defaultSettings[ Defaults.RSyncPublisherReportsCleanup ] = True defaultSettings[ Defaults.FileSystemPublisherPackageCleanup ] = True defaultSettings[ Defaults.FileSystemPublisherReportsCleanup ] = True # ----- simple_ci settings: defaultSettings[ Defaults.SimpleCIBuildJobCap ] = 8 defaultSettings[ Defaults.SimpleCIScriptDebugLevel ] = 0 defaultSettings[ Defaults.SimpleCIBuildDirectory ] = None # ----- SourceCodeProvider Settings: # These settings are saved by the source code provider during the prepare phase: defaultSettings[ Defaults.SourceCodeProviderVersionName ] = None defaultSettings[ Defaults.SourceCodeProviderBranchPrefix ] = None # ----- Subversion Defaults defaultSettings[ Defaults.SCMSvnLocationBuildTypeMap ] = [ # location under project root, branch type, build type [ '/trunk', Defaults.BranchType_Master, 'C' ], [ '/branches/work', Defaults.BranchType_Branch, 'C' ], [ '/branches/release', Defaults.BranchType_Branch, 'S' ], [ '/branches', Defaults.BranchType_Branch, 'C' ], ['/tags', Defaults.BranchType_Tag, 'S' ] ] defaultSettings[ Defaults.SCMSvnBranchNameBuildTypeMap ] = [ # branch type, name regular expression, build type [ Defaults.BranchType_Branch, '.+-release$', 'S' ], [ Defaults.BranchType_Branch, '.+-work$', 'C' ] ] defaultSettings[ Defaults.SCMSvnBranchPrefix ] = '/branches' defaultSettings[ Defaults.SCMSvnTagPrefix ] = '/tags' defaultSettings[ Defaults.SCMSvnTrunkPrefix ] = '/trunk' # ----- done return defaultSettings