def _do_install_dependency(logger, project, dependency, upgrade, force_reinstall, target_dir, log_file): batch = isinstance(dependency, collections.Iterable) pip_command_line = list() pip_command_line.extend(PIP_EXEC_STANZA) pip_command_line.append("install") pip_command_line.extend(build_pip_install_options(project.get_property("install_dependencies_index_url"), project.get_property("install_dependencies_extra_index_url"), upgrade, project.get_property( "install_dependencies_insecure_installation"), force_reinstall, target_dir, project.get_property("verbose"), project.get_property("install_dependencies_trusted_host") )) pip_command_line.extend(as_pip_install_target(dependency)) logger.debug("Invoking pip: %s", pip_command_line) exit_code = execute_command(pip_command_line, log_file, env=os.environ, shell=False) if exit_code != 0: if batch: dependency_name = " batch dependencies." else: dependency_name = " dependency '%s'." % dependency.name if project.get_property("verbose"): print_file_content(log_file) raise BuildFailedException("Unable to install%s" % dependency_name) else: raise BuildFailedException("Unable to install%s See %s for details.", dependency_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 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 _do_install_dependency(logger, project, dependency, upgrade, force_reinstall, target_dir, log_file): batch = isinstance(dependency, collections.Iterable) pip_command_line = list() pip_command_line.extend(PIP_EXEC_STANZA) pip_command_line.append("install") pip_command_line.extend( build_pip_install_options( project.get_property("install_dependencies_index_url"), project.get_property("install_dependencies_extra_index_url"), upgrade, project.get_property("install_dependencies_insecure_installation"), force_reinstall, target_dir, project.get_property("verbose"), project.get_property("install_dependencies_trusted_host"))) pip_command_line.extend(as_pip_install_target(dependency)) logger.debug("Invoking pip: %s", pip_command_line) exit_code = execute_command(pip_command_line, log_file, env=os.environ, shell=False) if exit_code != 0: if batch: dependency_name = " batch dependencies." else: dependency_name = " dependency '%s'." % dependency.name if project.get_property("verbose"): print_file_content(log_file) raise BuildFailedException("Unable to install%s" % dependency_name) else: raise BuildFailedException( "Unable to install%s See %s for details.", dependency_name, log_file)
def list_dependencies(project): print( "\n".join( map( lambda d: "{0}".format(" ".join(as_pip_install_target(d))), project.build_dependencies + project.dependencies, ) ) )
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)
def install_dependency(logger, project, dependency): url = getattr(dependency, "url", None) logger.info("Installing dependency '%s'%s", dependency.name, " from %s" % url if url else "") log_file = project.expand_path("$dir_install_logs", dependency.name) log_file = re.sub(r'<|>|=', '_', log_file) target_dir = None try: target_dir = project.get_property( "install_dependencies_local_mapping")[dependency.name] except KeyError: pass pip_command_line = list() pip_command_line.append(PIP_EXECUTABLE) pip_command_line.append("install") pip_command_line.extend( build_pip_install_options( project.get_property("install_dependencies_index_url"), project.get_property("install_dependencies_extra_index_url"), project.get_property("install_dependencies_upgrade"), project.get_property("install_dependencies_insecure_installation"), True if url else False, target_dir, project.get_property("verbose"))) pip_command_line.extend(as_pip_install_target(dependency)) logger.debug("Invoking pip: %s", pip_command_line) exit_code = execute_command(pip_command_line, log_file, env=os.environ, shell=False) if exit_code != 0: if project.get_property("verbose"): print_file_content(log_file) raise BuildFailedException("Unable to install dependency '%s'.", dependency.name) else: raise BuildFailedException( "Unable to install dependency '%s'. See %s for details.", getattr(dependency, "name", dependency), log_file)
def install_dependency(logger, project, dependency): url = getattr(dependency, "url", None) logger.info("Installing dependency '%s'%s", dependency.name, " from {0!s}".format(url) if url else "") log_file = project.expand_path("$dir_install_logs", dependency.name) log_file = re.sub(r'<|>|=', '_', log_file) target_dir = None try: target_dir = project.get_property("install_dependencies_local_mapping")[dependency.name] except KeyError: pass pip_command_line = list() pip_command_line.extend(PIP_EXEC_STANZA) pip_command_line.append("install") pip_command_line.extend(build_pip_install_options(project.get_property("install_dependencies_index_url"), project.get_property("install_dependencies_extra_index_url"), project.get_property("install_dependencies_upgrade"), project.get_property( "install_dependencies_insecure_installation"), True if url else False, target_dir, project.get_property("verbose"), project.get_property("install_dependencies_trusted_host") )) pip_command_line.extend(as_pip_install_target(dependency)) logger.debug("Invoking pip: %s", pip_command_line) exit_code = execute_command(pip_command_line, log_file, env=os.environ, shell=False) if exit_code != 0: if project.get_property("verbose"): print_file_content(log_file) raise BuildFailedException("Unable to install dependency '%s'.", dependency.name) else: raise BuildFailedException("Unable to install dependency '%s'. See %s for details.", getattr(dependency, "name", dependency), log_file)
def install_dependencies(logger, project, dependencies, python_env, log_file_name, local_mapping=None, constraints_file_name=None, log_file_mode="ab", package_type="dependency", target_dir=None, ignore_installed=False, ): entry_paths = target_dir or python_env.site_paths dependencies_to_install, orig_installed_pkgs, dependency_constraints = _filter_dependencies(logger, project, dependencies, entry_paths, ignore_installed) constraints_file = None if constraints_file_name: constraints_file = np(jp(python_env.env_dir, constraints_file_name)) create_constraint_file(constraints_file, dependency_constraints) if not local_mapping: local_mapping = {} install_batch = [] for dependency in dependencies_to_install: url = getattr(dependency, "url", None) install_options = {} if should_update_package(dependency.version) and not getattr(dependency, "version_not_a_spec", False): install_options["upgrade"] = True if dependency.name in local_mapping or url: install_options["force_reinstall"] = bool(url) if not target_dir and dependency.name in local_mapping: install_options["target_dir"] = local_mapping[dependency.name] install_batch.append((as_pip_install_target(dependency), install_options)) logger.info("Processing %s packages '%s%s'%s to be installed with %s", package_type, dependency.name, dependency.version if dependency.version else "", " from %s" % url if url else "", install_options) if install_batch: pip_env = {"PIP_NO_INPUT": "1"} if project.offline: pip_env["PIP_NO_INDEX"] = "1" logger.warn("PIP will be operating in the offline mode") with open(np(log_file_name), log_file_mode) as log_file: results = pip_install_batches(install_batch, python_env, index_url=project.get_property("install_dependencies_index_url"), extra_index_url=project.get_property("install_dependencies_extra_index_url"), trusted_host=project.get_property("install_dependencies_trusted_host"), insecure_installs=project.get_property( "install_dependencies_insecure_installation"), verbose=project.get_property("pip_verbose"), constraint_file=constraints_file, logger=logger, outfile_name=log_file, error_file_name=log_file, target_dir=target_dir, ignore_installed=ignore_installed) for result in results: if result: raise BuildFailedException("Unable to install %s packages into %s. " "Please see '%s' for full details:\n%s", package_type, python_env.env_dir, log_file_name, tail_log(log_file_name)) return dependencies_to_install
def list_dependencies(project): print("\n".join( map(lambda d: "{0}".format(" ".join(pip_utils.as_pip_install_target(d))), project.build_dependencies + project.dependencies)))