diff --git a/.circleci/config.yml b/.circleci/config.yml index b2162b1f..81c4a8ee 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -249,10 +249,11 @@ workflows: - codacy/sbt: name: create_artifacts cmd: | - (cd graalvm; docker build -t graavlm:latest .) - sbt "assembly;graalvm-native-image:packageBin" + graalvm/build-deps.sh + export PATH=$HOME/.musl/x86_64-linux-musl-native/bin:$PATH + sbt "assembly;nativeImage" mkdir -p ~/workdir/tmp-artifacts - mv target/graalvm-native-image/codacy-coverage-reporter ~/workdir/tmp-artifacts/codacy-coverage-reporter-linux + mv target/native-image/codacy-coverage-reporter ~/workdir/tmp-artifacts/codacy-coverage-reporter-linux mv target/codacy-coverage-reporter-assembly-$(cat .version).jar ~/workdir/tmp-artifacts/codacy-coverage-reporter-assembly.jar persist_to_workspace: true requires: @@ -260,21 +261,9 @@ workflows: - codacy/sbt_osx: name: create_artifacts_for_osx cmd: | - # TODO GraalVM version should be in a single place - export GRAAL_VERSION=21.0.0 - export TARGET_GRAAL="./target/graalvm-$GRAAL_VERSION.tar.gz" - mkdir -p target - if [[ ! -e $TARGET_GRAAL ]]; then - curl -L "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-$GRAAL_VERSION/graalvm-ce-java8-darwin-amd64-$GRAAL_VERSION.tar.gz" -o "$TARGET_GRAAL" - fi - sudo tar -xf $TARGET_GRAAL -C /Library/Java/JavaVirtualMachines - /usr/libexec/java_home -V - export JAVA_HOME=/Library/Java/JavaVirtualMachines/graalvm-ce-java8-$GRAAL_VERSION/Contents/Home - export PATH="$PATH:$JAVA_HOME/bin" - sudo gu install native-image - sbt "set GraalVMNativeImage / containerBuildImage := None; set graalVMNativeImageOptions --= Seq(\"--static\", \"--libc=musl\"); graalvm-native-image:packageBin" + sbt nativeImage mkdir -p ~/workdir/tmp-artifacts - mv $HOME/workdir/target/graalvm-native-image/codacy-coverage-reporter $HOME/workdir/tmp-artifacts/codacy-coverage-reporter-darwin + mv $HOME/workdir/target/native-image/codacy-coverage-reporter $HOME/workdir/tmp-artifacts/codacy-coverage-reporter-darwin persist_to_workspace: true persist_to_workspace_path: "tmp-artifacts/codacy-coverage-reporter-darwin" requires: diff --git a/build.sbt b/build.sbt index ea7e6454..c38c63f6 100644 --- a/build.sbt +++ b/build.sbt @@ -59,10 +59,15 @@ Global / cancelable := true javacOptions ++= Seq("-source", "11", "-target", "11") -enablePlugins(GraalVMNativeImagePlugin) -GraalVMNativeImage / containerBuildImage := Some("graavlm:latest") +enablePlugins(NativeImagePlugin) -graalVMNativeImageOptions := Seq( +nativeImageVersion := "22.3.0" + +val osSpecificOptions = + if (sys.props("os.name") == "Mac OS X") Seq.empty[String] + else Seq("--static", "--libc=musl") + +nativeImageOptions := Seq( "--verbose", "--no-server", "--enable-http", @@ -73,11 +78,8 @@ graalVMNativeImageOptions := Seq( "-H:IncludeResourceBundles=com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", "-H:+ReportExceptionStackTraces", "--no-fallback", - "--initialize-at-build-time", - "--report-unsupported-elements-at-runtime", - "--static", - "--libc=musl" -) + "--report-unsupported-elements-at-runtime" +) ++ osSpecificOptions dependsOn(coverageParser) diff --git a/graalvm/Dockerfile b/graalvm/Dockerfile deleted file mode 100644 index df09ccbe..00000000 --- a/graalvm/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM ghcr.io/graalvm/graalvm-ce:21.0.0 - -RUN gu install native-image - -WORKDIR /opt/graalvm - -COPY build-deps.sh . - -RUN ./build-deps.sh - -ENTRYPOINT [ "native-image" ] diff --git a/graalvm/build-deps.sh b/graalvm/build-deps.sh index 3fe7bde9..2fbedf5c 100755 --- a/graalvm/build-deps.sh +++ b/graalvm/build-deps.sh @@ -2,18 +2,13 @@ set -e +o pipefail -musl='musl-1.2.2' -musltargz=$musl.tar.gz -curl https://musl.libc.org/releases/$musltargz --output $musltargz -tar -xf $musltargz -dest=/usr/local +mkdir -p $HOME/.musl +cd $HOME/.musl -( - cd $musl - ./configure --disable-shared --prefix=$dest - make -j "$(nproc)" - make install -) +curl http://more.musl.cc/10/x86_64-linux-musl/x86_64-linux-musl-native.tgz --output musl.tgz +tar -xf musl.tgz +TOOLCHAIN_DIR=$HOME/.musl/x86_64-linux-musl-native +export CC=$TOOLCHAIN_DIR/bin/gcc zlib='zlib-1.2.13' zlibtargz=$zlib.tar.gz @@ -22,8 +17,9 @@ tar -xf $zlibtargz ( cd $zlib - export CC=musl-gcc - ./configure --static --prefix=$dest + ./configure --prefix=$TOOLCHAIN_DIR --static make -j "$(nproc)" - make install + sudo make install ) + +echo "$TOOLCHAIN_DIR/bin" diff --git a/project/plugins.sbt b/project/plugins.sbt index 3e4a2fd8..c656a53c 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,4 +1,4 @@ -addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.9") +addSbtPlugin("org.scalameta" % "sbt-native-image" % "0.3.1") addSbtPlugin("com.codacy" % "codacy-sbt-plugin" % "22.0.1") // Publish