Esempio n. 1
0
)
from pants.option.global_options import GlobalOptions
from pants.util.frozendict import FrozenDict
from pants.util.logging import LogLevel
from pants.util.ordered_set import FrozenOrderedSet

logger = logging.getLogger(__name__)

PARSER_SCALA_VERSION = "2.13.7"
SCALAMETA_VERSION = "4.4.30"
CIRCE_VERSION = "0.14.1"

PARSER_SCALA_VERSION_MAJOR_MINOR = ".".join(PARSER_SCALA_VERSION.split(".")[0:2])

SCALAMETA_DEPENDENCIES = [
    Coordinate.from_coord_str(s)
    for s in [
        "org.scalameta:scalameta_2.13:4.4.30",
        "org.scala-lang:scala-library:2.13.7",
        "com.thesamet.scalapb:scalapb-runtime_2.13:0.11.4",
        "org.scalameta:parsers_2.13:4.4.30",
        "org.scala-lang:scala-compiler:2.13.7",
        "net.java.dev.jna:jna:5.8.0",
        "org.scalameta:trees_2.13:4.4.30",
        "org.scalameta:common_2.13:4.4.30",
        "com.lihaoyi:sourcecode_2.13:0.2.7",
        "org.jline:jline:3.20.0",
        "org.scalameta:fastparse-v2_2.13:2.3.1",
        "org.scala-lang.modules:scala-collection-compat_2.13:2.4.4",
        "org.scala-lang:scalap:2.13.7",
        "org.scala-lang:scala-reflect:2.13.7",
Esempio n. 2
0
async def setup_jdk(coursier: Coursier, javac: JavacSubsystem,
                    bash: BashBinary) -> JdkSetup:
    nailgun = await Get(
        ResolvedClasspathEntry,
        CoursierLockfileEntry(
            coord=Coordinate.from_coord_str(
                "com.martiansoftware:nailgun-server:0.9.1"),
            file_name="nailgun-server-0.9.1.jar",
            direct_dependencies=Coordinates(),
            dependencies=Coordinates(),
            file_digest=FileDigest(
                fingerprint=
                "4518faa6bf4bd26fccdc4d85e1625dc679381a08d56872d8ad12151dda9cef25",
                serialized_bytes_length=32927,
            ),
        ),
    )

    if javac.options.jdk == "system":
        coursier_jdk_option = "--system-jvm"
    else:
        coursier_jdk_option = f"--jvm={javac.options.jdk}"
    java_home_command = f"{coursier.coursier.exe} java-home {coursier_jdk_option}"

    java_version_result = await Get(
        FallibleProcessResult,
        Process(
            argv=(
                bash.path,
                "-c",
                f"$({java_home_command})/bin/java -version",
            ),
            input_digest=coursier.digest,
            description=f"Ensure download of JDK {coursier_jdk_option}.",
            cache_scope=ProcessCacheScope.PER_RESTART_SUCCESSFUL,
        ),
    )

    if java_version_result.exit_code != 0:
        raise ValueError(
            f"Failed to locate Java for JDK `{javac.options.jdk}`:\n"
            f"{java_version_result.stderr.decode('utf-8')}")

    java_version = java_version_result.stdout.decode("utf-8").strip()

    # TODO: Locate `ln`.
    jdk_preparation_script = textwrap.dedent(f"""\
        # pants javac script using Coursier {coursier_jdk_option}. `java -version`: {java_version}"
        set -eu

        /bin/ln -s "$({java_home_command})" "{JdkSetup.java_home}"
        exec "$@"
        """)
    jdk_preparation_script_digest = await Get(
        Digest,
        CreateDigest([
            FileContent(
                JdkSetup.jdk_preparation_script,
                jdk_preparation_script.encode("utf-8"),
                is_executable=True,
            ),
        ]),
    )
    return JdkSetup(
        digest=await Get(
            Digest,
            MergeDigests([
                coursier.digest,
                jdk_preparation_script_digest,
                nailgun.digest,
            ]),
        ),
        nailgun_jar=nailgun.file_name,
    )