def execute_twine(project, logger, command_args, register): reports_dir = _prepare_reports_dir(project) dist_artifact_dir = project.expand_path("$dir_dist", "dist") if register: command = "register" else: command = "upload" artifacts = [ os.path.join(dist_artifact_dir, artifact) for artifact in list(os.walk(dist_artifact_dir))[0][2] ] if register: for artifact in artifacts: out_file = os.path.join( reports_dir, safe_log_file_name("twine_%s_%s.log" % (command, os.path.basename(artifact)))) _execute_twine(project, logger, [command] + command_args + [artifact], dist_artifact_dir, out_file) else: out_file = os.path.join(reports_dir, safe_log_file_name("twine_%s.log" % command)) _execute_twine(project, logger, [command] + command_args + artifacts, dist_artifact_dir, out_file)
def execute_distutils(project, logger, distutils_commands, clean=False): reports_dir = _prepare_reports_dir(project) setup_script = project.expand_path("$dir_dist", "setup.py") for command in distutils_commands: logger.debug("Executing distutils command %s", command) if is_string(command): out_file = os.path.join(reports_dir, safe_log_file_name(command)) else: out_file = os.path.join(reports_dir, safe_log_file_name("__".join(command))) with open(out_file, "w") as out_f: commands = [sys.executable, setup_script] if project.get_property("verbose"): commands.append("-v") if clean: commands.extend(["clean", "--all"]) if is_string(command): commands.extend(command.split()) else: commands.extend(command) return_code = _run_process_and_wait(commands, project.expand_path("$dir_dist"), out_f) if return_code != 0: raise BuildFailedException( "Error while executing setup command %s. See %s for full details:\n%s", command, out_file, tail_log(out_file))
def execute_twine(project, logger, python_env, command_args, command): reports_dir = _prepare_reports_dir(project) dist_artifact_dir, artifacts = _get_generated_artifacts(project, logger) if command == "register": for artifact in artifacts: out_file = os.path.join(reports_dir, safe_log_file_name("twine_%s_%s.log" % (command, os.path.basename(artifact)))) _execute_twine(project, logger, python_env, [command] + command_args + [artifact], dist_artifact_dir, out_file) else: out_file = os.path.join(reports_dir, safe_log_file_name("twine_%s.log" % command)) _execute_twine(project, logger, python_env, [command] + command_args + artifacts, dist_artifact_dir, out_file)
def install_dependency(logger, project, dependencies): dependencies_to_install, orig_installed_pkgs = _filter_dependencies(logger, project, dependencies) batch_dependencies = [] standalone_dependencies = [] local_mapping = project.get_property("install_dependencies_local_mapping") for dependency in dependencies_to_install: url = getattr(dependency, "url", None) if dependency.name in local_mapping or url: install_type = "standalone" logger.debug("Dependency '%s' has to be installed standalone" % dependency) standalone_dependencies.append(dependency) else: install_type = "batch" logger.debug("Dependency '%s' will be included in batch install" % dependency) batch_dependencies.append(dependency) logger.info("Processing %s dependency '%s%s'%s", install_type, dependency.name, dependency.version if dependency.version else "", " from %s" % url if url else "") for standalone_dependency in standalone_dependencies: url = getattr(standalone_dependency, "url", None) log_file = project.expand_path("$dir_install_logs", safe_log_file_name(dependency.name)) _do_install_dependency(logger, project, standalone_dependency, True, url, local_mapping.get(dependency.name), log_file) if len(batch_dependencies): log_file = project.expand_path("$dir_install_logs", "install_batch") _do_install_dependency(logger, project, batch_dependencies, True, False, None, log_file) __reload_pip_if_updated(logger, dependencies_to_install)
def prepare(project, logger): target_directory = project.expand_path("$dir_target") if not os.path.exists(target_directory): logger.debug("Creating target directory %s", target_directory) os.mkdir(target_directory) reports_directory = project.expand_path("$dir_reports") if not os.path.exists(reports_directory): logger.debug("Creating reports directory %s", reports_directory) os.mkdir(reports_directory) plugin_dependency_versions = get_package_version(project.plugin_dependencies, logger) for plugin_dependency in project.plugin_dependencies: logger.debug("Processing plugin dependency %s" % plugin_dependency) if plugin_dependency.name.lower() not in plugin_dependency_versions or not \ version_satisfies_spec(plugin_dependency.version, plugin_dependency_versions[plugin_dependency.name.lower()]): logger.info("Installing plugin dependency %s" % plugin_dependency) log_file = project.expand_path("$dir_reports", safe_log_file_name("dependency_%s_install.log" % plugin_dependency)) pip_install(as_pip_install_target(plugin_dependency), index_url=project.get_property("install_dependencies_index_url"), extra_index_url=project.get_property("install_dependencies_extra_index_url"), verbose=project.get_property("verbose"), logger=logger, force_reinstall=plugin_dependency.url is not None, outfile_name=log_file, error_file_name=log_file)
def prepare(project, logger): target_directory = project.expand_path("$dir_target") if not os.path.exists(target_directory): logger.debug("Creating target directory %s", target_directory) os.mkdir(target_directory) reports_directory = project.expand_path("$dir_reports") if not os.path.exists(reports_directory): logger.debug("Creating reports directory %s", reports_directory) os.mkdir(reports_directory) plugin_dependency_versions = get_package_version( project.plugin_dependencies, logger) for plugin_dependency in project.plugin_dependencies: logger.debug("Processing plugin dependency %s" % plugin_dependency) if plugin_dependency.name.lower() not in plugin_dependency_versions or not \ version_satisfies_spec(plugin_dependency.version, plugin_dependency_versions[plugin_dependency.name.lower()]): logger.info("Installing plugin dependency %s" % plugin_dependency) log_file = project.expand_path( "$dir_reports", safe_log_file_name("dependency_%s_install.log" % plugin_dependency)) pip_install(as_pip_install_target(plugin_dependency), index_url=project.get_property( "install_dependencies_index_url"), extra_index_url=project.get_property( "install_dependencies_extra_index_url"), verbose=project.get_property("verbose"), logger=logger, force_reinstall=plugin_dependency.url is not None, outfile_name=log_file, error_file_name=log_file)
def execute_twine(project, logger, command_args, register): reports_dir = _prepare_reports_dir(project) dist_artifact_dir = project.expand_path("$dir_dist", "dist") if register: command = "register" else: command = "upload" artifacts = [os.path.join(dist_artifact_dir, artifact) for artifact in list(os.walk(dist_artifact_dir))[0][2]] if register: for artifact in artifacts: out_file = os.path.join(reports_dir, safe_log_file_name("twine_%s_%s.log" % (command, os.path.basename(artifact)))) _execute_twine(project, logger, [command] + command_args + [artifact], dist_artifact_dir, out_file) else: out_file = os.path.join(reports_dir, safe_log_file_name("twine_%s.log" % command)) _execute_twine(project, logger, [command] + command_args + artifacts, dist_artifact_dir, out_file)
def install_dependency(logger, project, dependencies): dependencies_to_install, orig_installed_pkgs, dependency_constraints = _filter_dependencies( logger, project, dependencies) batch_dependencies = [] standalone_dependencies = [] local_mapping = project.get_property("install_dependencies_local_mapping") constraints_file = project.expand_path("$dir_target", "install_dependencies_constraints") pip_utils.create_constraint_file(constraints_file, dependency_constraints) for dependency in dependencies_to_install: url = getattr(dependency, "url", None) if dependency.name in local_mapping or url: install_type = "standalone" logger.debug("Dependency '%s' has to be installed standalone" % dependency) standalone_dependencies.append(dependency) else: install_type = "batch" logger.debug("Dependency '%s' will be included in batch install" % dependency) batch_dependencies.append(dependency) logger.info("Processing %s dependency '%s%s'%s", install_type, dependency.name, dependency.version if dependency.version else "", " from %s" % url if url else "") for standalone_dependency in standalone_dependencies: url = getattr(standalone_dependency, "url", None) log_file = project.expand_path("$dir_install_logs", safe_log_file_name(dependency.name)) _do_install_dependency(logger=logger, project=project, dependency=standalone_dependency, upgrade=True, eager_upgrade=False, force_reinstall=url, constraint_file=constraints_file, target_dir=local_mapping.get(dependency.name), log_file=log_file) if len(batch_dependencies): log_file = project.expand_path("$dir_install_logs", "install_batch") _do_install_dependency(logger=logger, project=project, dependency=batch_dependencies, upgrade=True, eager_upgrade=False, force_reinstall=False, constraint_file=constraints_file, target_dir=None, log_file=log_file) __reload_pip_if_updated(logger, dependencies_to_install)
def install_dependency(logger, project, dependencies): dependencies_to_install, orig_installed_pkgs, dependency_constraints = _filter_dependencies(logger, project, dependencies) batch_dependencies = [] standalone_dependencies = [] local_mapping = project.get_property("install_dependencies_local_mapping") constraints_file = project.expand_path("$dir_target", "install_dependencies_constraints") pip_utils.create_constraint_file(constraints_file, dependency_constraints) for dependency in dependencies_to_install: url = getattr(dependency, "url", None) if dependency.name in local_mapping or url: install_type = "standalone" logger.debug("Dependency '%s' has to be installed standalone" % dependency) standalone_dependencies.append(dependency) else: install_type = "batch" logger.debug("Dependency '%s' will be included in batch install" % dependency) batch_dependencies.append(dependency) logger.info("Processing %s dependency '%s%s'%s", install_type, dependency.name, dependency.version if dependency.version else "", " from %s" % url if url else "") for standalone_dependency in standalone_dependencies: url = getattr(standalone_dependency, "url", None) log_file = project.expand_path("$dir_install_logs", safe_log_file_name(dependency.name)) _do_install_dependency(logger=logger, project=project, dependency=standalone_dependency, upgrade=True, eager_upgrade=False, force_reinstall=url, constraint_file=constraints_file, target_dir=local_mapping.get(dependency.name), log_file=log_file) if len(batch_dependencies): log_file = project.expand_path("$dir_install_logs", "install_batch") _do_install_dependency(logger=logger, project=project, dependency=batch_dependencies, upgrade=True, eager_upgrade=False, force_reinstall=False, constraint_file=constraints_file, target_dir=None, log_file=log_file) __reload_pip_if_updated(logger, dependencies_to_install)
def prepare(project, logger): target_directory = project.expand_path("$dir_target") if not os.path.exists(target_directory): logger.debug("Creating target directory %s", target_directory) os.mkdir(target_directory) reports_directory = project.expand_path("$dir_reports") if not os.path.exists(reports_directory): logger.debug("Creating reports directory %s", reports_directory) os.mkdir(reports_directory) plugin_dependency_versions = pip_utils.get_package_version( project.plugin_dependencies, logger) for plugin_dependency in project.plugin_dependencies: logger.debug("Processing plugin dependency %s" % plugin_dependency) dependency_name = plugin_dependency.name.lower() no_version_installed = dependency_name not in plugin_dependency_versions if not no_version_installed: version_satisfies = pip_utils.version_satisfies_spec( plugin_dependency.version, plugin_dependency_versions[dependency_name]) if no_version_installed or not version_satisfies: logger.info("Installing plugin dependency %s" % plugin_dependency) log_file = project.expand_path( "$dir_reports", safe_log_file_name("dependency_%s_install.log" % plugin_dependency)) install_targets = pip_utils.as_pip_install_target( plugin_dependency) result = pip_utils.pip_install( install_targets=install_targets, index_url=project.get_property( "install_dependencies_index_url"), extra_index_url=project.get_property( "install_dependencies_extra_index_url"), verbose=project.get_property("verbose"), logger=logger, force_reinstall=plugin_dependency.url is not None, outfile_name=log_file, error_file_name=log_file) if result: log_lines = list(tail(log_file)) log = log_lines[-1] if not project.get_property( "debug") else "\n".join(log_lines) if no_version_installed: raise MissingPluginDependencyException( ",".join(install_targets), log) else: logger.error("Failed to install '%s':\n%s", plugin_dependency, log)