def test_build_pip_install_options(self): self.assertEquals(pip_utils.build_pip_install_options(), []) self.assertEquals(pip_utils.build_pip_install_options(index_url="foo"), ["--index-url", "foo"]) self.assertEquals( pip_utils.build_pip_install_options(extra_index_url="foo"), []) self.assertEquals( pip_utils.build_pip_install_options(index_url="foo", extra_index_url="bar"), ["--index-url", "foo", "--extra-index-url", "bar"]) self.assertEquals(pip_utils.build_pip_install_options(upgrade=True), ["--upgrade"]) self.assertEquals(pip_utils.build_pip_install_options(verbose=True), ["--verbose"]) self.assertEquals( pip_utils.build_pip_install_options(force_reinstall=True), ["--force-reinstall"]) self.assertEquals( pip_utils.build_pip_install_options(target_dir="target dir"), ["-t", "target dir"]) self.assertEquals( pip_utils.build_pip_install_options(target_dir="target dir"), ["-t", "target dir"]) self.assertEquals( pip_utils.build_pip_install_options( insecure_installs=["foo", "bar"]), [ "--allow-unverified", "foo", "--allow-external", "foo", "--allow-unverified", "bar", "--allow-external", "bar" ])
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 render_docker_buildfile(project, build_image): # type: (Project, str) -> str dist_file = get_dist_file(project) install_options = pip_utils.build_pip_install_options( extra_index_url=project.get_property( "install_dependencies_extra_index_url")) default_package_cmd = "pip install " + " ".join( install_options) + " {} ".format(dist_file) template_values = { "build_image": build_image, "dist_file": dist_file, "maintainer_name": project.get_property("docker_package_image_maintainer", "anonymous"), "prepare_env_cmd": project.get_property( "docker_package_prepare_env_cmd", "echo 'empty prepare_env_cmd installing into python'"), "package_cmd": project.get_property("docker_package_package_cmd", default_package_cmd) } return DOCKER_IMAGE_TEMPLATE.substitute(template_values)
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 test_build_pip_install_options(self): self.assertEquals(pip_utils.build_pip_install_options(), []) self.assertEquals(pip_utils.build_pip_install_options(index_url="foo"), ["--index-url", "foo"]) self.assertEquals(pip_utils.build_pip_install_options(extra_index_url="foo"), []) self.assertEquals(pip_utils.build_pip_install_options(index_url="foo", extra_index_url="bar"), ["--index-url", "foo", "--extra-index-url", "bar"]) self.assertEquals(pip_utils.build_pip_install_options(upgrade=True), ["--upgrade"]) self.assertEquals(pip_utils.build_pip_install_options(verbose=True), ["--verbose"]) self.assertEquals(pip_utils.build_pip_install_options(force_reinstall=True), ["--force-reinstall"]) self.assertEquals(pip_utils.build_pip_install_options(target_dir="target dir"), ["-t", "target dir"]) self.assertEquals(pip_utils.build_pip_install_options(target_dir="target dir"), ["-t", "target dir"]) self.assertEquals(pip_utils.build_pip_install_options(insecure_installs=["foo", "bar"]), [ "--allow-unverified", "foo", "--allow-external", "foo", "--allow-unverified", "bar", "--allow-external", "bar" ])
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 test_build_pip_install_options(self): self.assertEqual(pip_utils.build_pip_install_options(), []) self.assertEqual(pip_utils.build_pip_install_options(index_url="foo"), ["--index-url", "foo"]) self.assertEqual(pip_utils.build_pip_install_options(extra_index_url="foo"), ["--extra-index-url", "foo"]) self.assertEqual(pip_utils.build_pip_install_options(index_url="foo", extra_index_url="bar"), ["--index-url", "foo", "--extra-index-url", "bar"]) self.assertEqual(pip_utils.build_pip_install_options(extra_index_url=("foo", "bar")), ["--extra-index-url", "foo", "--extra-index-url", "bar"]) self.assertEqual(pip_utils.build_pip_install_options(trusted_host="foo"), ["--trusted-host", "foo"]) self.assertEqual(pip_utils.build_pip_install_options(trusted_host=("foo", "bar")), ["--trusted-host", "foo", "--trusted-host", "bar"]) self.assertEqual(pip_utils.build_pip_install_options(upgrade=True), ["--upgrade"] if pip_version < "9.0" else ["--upgrade", "--upgrade-strategy", "only-if-needed"]) self.assertEqual(pip_utils.build_pip_install_options(upgrade=True, eager_upgrade=True), ["--upgrade"] if pip_version < "9.0" else ["--upgrade", "--upgrade-strategy", "eager"]) self.assertEqual(pip_utils.build_pip_install_options(verbose=True), ["--verbose"]) self.assertEqual(pip_utils.build_pip_install_options(force_reinstall=True), ["--force-reinstall"]) self.assertEqual(pip_utils.build_pip_install_options(target_dir="target dir"), ["-t", "target dir"]) self.assertEqual(pip_utils.build_pip_install_options(target_dir="target dir"), ["-t", "target dir"]) self.assertEqual(pip_utils.build_pip_install_options(constraint_file="constraint file"), ["-c", "constraint file"]) self.assertEqual(pip_utils.build_pip_install_options(insecure_installs=["foo", "bar"]), [ "--allow-unverified", "foo", "--allow-external", "foo", "--allow-unverified", "bar", "--allow-external", "bar" ])
def test_build_pip_install_options(self): self.assertEqual(pip_utils.build_pip_install_options(), []) self.assertEqual(pip_utils.build_pip_install_options(index_url="foo"), ["--index-url", "foo"]) self.assertEqual( pip_utils.build_pip_install_options(extra_index_url="foo"), ["--extra-index-url", "foo"]) self.assertEqual( pip_utils.build_pip_install_options(index_url="foo", extra_index_url="bar"), ["--index-url", "foo", "--extra-index-url", "bar"]) self.assertEqual( pip_utils.build_pip_install_options(extra_index_url=("foo", "bar")), ["--extra-index-url", "foo", "--extra-index-url", "bar"]) self.assertEqual( pip_utils.build_pip_install_options(trusted_host="foo"), ["--trusted-host", "foo"]) self.assertEqual( pip_utils.build_pip_install_options(trusted_host=("foo", "bar")), ["--trusted-host", "foo", "--trusted-host", "bar"]) self.assertEqual(pip_utils.build_pip_install_options(upgrade=True), ["--upgrade"] if pip_version < "9.0" else ["--upgrade", "--upgrade-strategy", "only-if-needed"]) self.assertEqual( pip_utils.build_pip_install_options(upgrade=True, eager_upgrade=True), ["--upgrade"] if pip_version < "9.0" else ["--upgrade", "--upgrade-strategy", "eager"]) self.assertEqual(pip_utils.build_pip_install_options(verbose=True), ["--verbose"]) self.assertEqual( pip_utils.build_pip_install_options(force_reinstall=True), ["--force-reinstall"]) self.assertEqual( pip_utils.build_pip_install_options(target_dir="target dir"), ["-t", "target dir"]) self.assertEqual( pip_utils.build_pip_install_options(target_dir="target dir"), ["-t", "target dir"]) self.assertEqual( pip_utils.build_pip_install_options( constraint_file="constraint file"), ["-c", "constraint file"]) self.assertEqual( pip_utils.build_pip_install_options( insecure_installs=["foo", "bar"]), [ "--allow-unverified", "foo", "--allow-external", "foo", "--allow-unverified", "bar", "--allow-external", "bar" ])