Beispiel #1
0
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)
Beispiel #2
0
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))
Beispiel #3
0
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))
Beispiel #4
0
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)
Beispiel #6
0
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)
Beispiel #7
0
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)
Beispiel #8
0
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)