Exemplo n.º 1
0
	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 ) )
Exemplo n.º 2
0
	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