def get_enriched_environment(configuration): """ Return a dict containing an 'enriched' environment in which to run external commands under autobuild. configuration is the requested configuration (e.g. 'Release'), or None. This is used to provide abbreviations for certain variables set in AUTOBUILD_VARIABLES_FILE. os.environ['AUTOBUILD_VARIABLES_FILE'], if set, is the name of a local variables file as in https://bitbucket.org/lindenlab/build-variables/src/tip/variables. On Windows, os.environ['AUTOBUILD_VSVER'] indirectly indicates a Visual Studio vcvarsall.bat script from which to load variables. Its values are e.g. '100' for Visual Studio 2010 (VS 10), '120' for Visual Studio 2013 (VS 12) and so on. A correct value nnn for the running system will identify a corresponding VSnnnCOMNTOOLS environment variable. On Windows, if AUTOBUILD_VSVER isn't set, a value will be inferred from the available VSnnnCOMNTOOLS environment variables. """ result = common.get_autobuild_environment() exports, vars, vsvars = internal_source_environment( [configuration] if configuration else [], os.environ.get("AUTOBUILD_VARIABLES_FILE")) result.update(exports) result.update(vars) result.update(vsvars) return result
def _build_a_configuration(config, build_configuration, extra_arguments, dry_run=False): try: common_build_configuration = \ config.get_build_configuration(build_configuration.name, 'common') parent_build = common_build_configuration.build except: parent_build = None if build_configuration.build is not None: build_executable = copy.copy(build_configuration.build) build_executable.parent = parent_build elif parent_build is not None: logger.info('no build executable defined; falling back to parent') build_executable = parent_build else: logger.info('no build executable defined; doing nothing') return 0 logger.info('executing build command %s', build_executable.__str__(extra_arguments)) if not dry_run: return build_executable(extra_arguments, common.get_autobuild_environment()) else: return 0
commands be used. Build configurations defined in the common platform but not the working platform are not configured. """ build_configuration = config.get_build_configuration(build_configuration_name) return _configure_a_configuration(config, build_configuration, extra_arguments) def _configure_a_configuration(config, build_configuration, extra_arguments, dry_run=False): try: common_build_configuration = \ config.get_build_configuration(build_configuration.name, 'common') parent_configure = common_build_configuration.configure except Exception, e: if logger.getEffectiveLevel() <= logging.DEBUG: logger.exception(e) logger.debug('no common platform found') parent_configure = None if build_configuration.configure is not None: configure_executable = copy.copy(build_configuration.configure) configure_executable.parent = parent_configure elif parent_configure is not None: configure_executable = parent_configure else: logger.info('no configure executable defined; doing nothing') return 0 logger.info('executing configure command %s', configure_executable.__str__(extra_arguments)) if not dry_run: return configure_executable(extra_arguments, common.get_autobuild_environment()) else: return 0