Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 0 additions & 11 deletions .devcontainer/Dockerfile

This file was deleted.

27 changes: 0 additions & 27 deletions .devcontainer/devcontainer.json

This file was deleted.

19 changes: 19 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Docker
on:
push:
tags: ["*"]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: olafurpg/setup-scala@v13
- uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- run: sbt cli/dockerBuildAndPush
7 changes: 0 additions & 7 deletions auto-indexing/Dockerfile

This file was deleted.

25 changes: 25 additions & 0 deletions bin/lsif-java-docker-script.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/usr/bin/env bash
# Wrapper script for `lsif-java`, which automatically picks up the correct JVM
# version. It assumes that `coursier` is available on the `$PATH` and that the
# `lsif-java` binary is already installed at `/app/lsif-java/bin/lsif-java`.
set -eux
JVM_VERSION="8"
FILE="$PWD/lsif-java.json"
if test -f "$FILE"; then
FROM_CONFIG=$(jq -r '.jvm' "$FILE")
if [ "$FROM_CONFIG" != "null" ]; then
JVM_VERSION="$FROM_CONFIG"
fi
fi
if [ "$JVM_VERSION" = "17" ]; then
JVM_VERSION="temurin:17"
fi

echo "Using JVM version '$JVM_VERSION'"
eval "$(coursier java --jvm "$JVM_VERSION" --env --jvm-index https://github.com/coursier/jvm-index/blob/master/index.json)"

if [ "$JVM_VERSION" = "17" ]; then
export JAVA_OPTS="--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED"
fi

/app/lsif-java/bin/lsif-java "$@"
76 changes: 58 additions & 18 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ lazy val cli = project
version,
sbtVersion,
scalaVersion,
"javacModuleOptions" -> javacModuleOptions,
"semanticdbScalacVersions" ->
com
.sourcegraph
Expand Down Expand Up @@ -210,14 +211,50 @@ lazy val cli = project
propsFile :: copiedJars.toList
}
.taskValue,
nativeImageOptions ++=
docker / imageNames :=
List(
"-H:IncludeResources=^semanticdb-.*jar$",
s"-H:ReflectionConfigurationFiles=${target.value / "native-image-configs" / "reflect-config.json"}"
ImageName("sourcegraph/lsif-java:latest"),
ImageName(s"sourcegraph/lsif-java:${version.value}")
),
nativeImageOutput := (NativeImage / target).value / "lsif-java"
docker / dockerfile := {
val binaryDistribution = pack.value
val script = (ThisBuild / baseDirectory).value / "bin" /
"lsif-java-docker-script.sh"
new Dockerfile {
from("gradle:7.2.0-jdk8")

// Setup system dependencies.
run("apt-get", "update")
run("apt-get", "install", "--yes", "maven", "jq")

// Install Coursier.
run(
"curl",
"-fLo",
"/usr/local/bin/coursier",
"https://git.io/coursier-cli"
)
run("chmod", "+x", "/usr/local/bin/coursier")

// Pre-download Java 8, 11 and 17.
run("coursier", "java-home", "--jvm", "8")
run("coursier", "java-home", "--jvm", "11")
run(
"coursier",
"java-home",
"--jvm",
"temurin:17",
"--jvm-index",
"https://github.com/coursier/jvm-index/blob/master/index.json"
)

// Install `lsif-java` binary.
add(script, "/usr/local/bin/lsif-java")
add(binaryDistribution, "/app/lsif-java")
}
}
)
.enablePlugins(NativeImagePlugin, BuildInfoPlugin)
.enablePlugins(PackPlugin, DockerPlugin, BuildInfoPlugin)
.dependsOn(lsif)

def commitAll(): Unit = {
Expand Down Expand Up @@ -276,26 +313,28 @@ lazy val minimized8 = project
.dependsOn(agent, plugin)
.disablePlugins(JavaFormatterPlugin)

def javacModuleOptions =
List(
"-J--add-exports",
"-Jjdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
"-J--add-exports",
"-Jjdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
"-J--add-exports",
"-Jjdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED",
"-J--add-exports",
"-Jjdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
"-J--add-exports",
"-Jjdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED"
)

lazy val minimized17 = project
.in(file("tests/minimized/.j17"))
.settings(
minimizedSettings,
javaToolchainJvmIndex :=
Some("https://github.com/coursier/jvm-index/blob/master/index.json"),
javaToolchainVersion := "temurin:17",
javacOptions ++=
List(
"-J--add-exports",
"-Jjdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
"-J--add-exports",
"-Jjdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
"-J--add-exports",
"-Jjdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED",
"-J--add-exports",
"-Jjdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
"-J--add-exports",
"-Jjdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED"
)
javacOptions ++= javacModuleOptions
)
.dependsOn(agent, plugin)
.disablePlugins(JavaFormatterPlugin)
Expand Down Expand Up @@ -373,6 +412,7 @@ lazy val bench = project
lazy val docs = project
.in(file("lsif-java-docs"))
.settings(
moduleName := "lsif-java-docs",
mdocOut :=
(ThisBuild / baseDirectory).value / "website" / "target" / "docs",
fork := false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -494,16 +494,28 @@ class LsifBuildTool(index: IndexCommand) extends BuildTool("LSIF", index) {
index.app.reporter.info(line)
})
val javac = Paths.get(
os.proc(coursier.toString, "java-home", "--jvm", config.jvm)
os.proc(
coursier.toString,
"java-home",
"--jvm",
config.jvm,
"--jvm-index",
"https://github.com/coursier/jvm-index/blob/master/index.json"
)
.call()
.out
.trim(),
"bin",
"javac"
)
index.app.reporter.info(s"$$ $javac @$argsfile")
val javacModuleOptions: Seq[String] =
if (config.jvm != "8")
BuildInfo.javacModuleOptions
else
Nil
val result = os
.proc(javac.toString, s"@$argsfile")
.proc(javac.toString, s"@$argsfile", javacModuleOptions)
.call(
stdout = pipe,
stderr = pipe,
Expand Down
3 changes: 2 additions & 1 deletion project/plugins.sbt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
addSbtPlugin("org.scalameta" % "sbt-native-image" % "0.3.2")
addSbtPlugin("org.xerial.sbt" % "sbt-pack" % "0.14")
addSbtPlugin("se.marcuslonnberg" % "sbt-docker" % "1.8.2")
addSbtPlugin("com.geirsson" % "sbt-ci-release" % "1.5.7")
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.10.0")
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.3")
Expand Down