diff --git a/.cargo/config.toml b/.cargo/config.toml deleted file mode 100644 index b7dd3e1..0000000 --- a/.cargo/config.toml +++ /dev/null @@ -1,7 +0,0 @@ -[target.x86_64-unknown-linux-gnu] -linker = "x86_64-unknown-linux-gnu-gcc" -[target.x86_64-unknown-linux-musl] -linker = "x86_64-linux-musl-gcc" -[target.x86_64-pc-windows-gnu] -linker = "x86_64-w64-mingw32-gcc" -ar = "x86_64-w64-mingw32-gcc-ar" \ No newline at end of file diff --git a/.github/workflows/prql-java-test.yaml b/.github/workflows/prql-java-test.yaml index 07a4f51..9e05b14 100644 --- a/.github/workflows/prql-java-test.yaml +++ b/.github/workflows/prql-java-test.yaml @@ -1,13 +1,16 @@ name: prql-java-test + on: + push: pull_request: types: [ opened, reopened, synchronize, labeled ] - push: - branches: - - main + jobs: - ubuntu-test: - runs-on: ubuntu-latest + junit-test: + strategy: + matrix: + os: [ ubuntu-latest, macOS-latest ] + runs-on: ${{matrix.os}} steps: - name: Checkout code uses: actions/checkout@v3 @@ -18,8 +21,4 @@ jobs: override: true default: true - name: Maven test - run: cd ./java-api && ./mvnw test -# macos-test: -# runs-on: macos-latest -# windows-test: -# runs-on: windows-latest + run: cd ./java/ && ./mvnw test diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..2b43593 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,24 @@ +name: release +on: + push: + release: + type: [published] + +jobs: + publish-to-maven: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Install Java and Maven + uses: actions/setup-java@v1 + with: + java-version: 8 + - name: Release Maven package + uses: samuelmeuli/action-maven-publish@v1 + with: + gpg_private_key: ${{ secrets.gpg_private_key }} + gpg_passphrase: ${{ secrets.gpg_passphrase }} + nexus_username: ${{ secrets.nexus_username }} + nexus_password: ${{ secrets.nexus_password }} + directory: java/ diff --git a/.gitignore b/.gitignore index 1c6f542..8979908 100644 --- a/.gitignore +++ b/.gitignore @@ -26,4 +26,4 @@ Cargo.lock target -java-api/src/main/resources/libprql4j* \ No newline at end of file +**/libprql4j* \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..2472486 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "cross-toolchains"] + path = cross-toolchains + url = https://github.com/cross-rs/cross-toolchains.git diff --git a/Cross.toml b/Cross.toml new file mode 100644 index 0000000..1972f84 --- /dev/null +++ b/Cross.toml @@ -0,0 +1,4 @@ +[target.x86_64-apple-darwin.dockerfile] +file = "./cross-toolchains/docker/Dockerfile.x86_64-apple-darwin-cross" +[target.aarch64-apple-darwin.dockerfile] +file = "./cross-toolchains/docker/Dockerfile.aarch64-apple-darwin-cross" \ No newline at end of file diff --git a/cross-toolchains b/cross-toolchains new file mode 160000 index 0000000..9685bc3 --- /dev/null +++ b/cross-toolchains @@ -0,0 +1 @@ +Subproject commit 9685bc36ade526d8a6db5a569929cc28e7121748 diff --git a/cross.sh b/cross.sh new file mode 100755 index 0000000..8ab28f0 --- /dev/null +++ b/cross.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +PROJECT_DIR=$1 +echo PROJECT_DIR="${PROJECT_DIR}" +CONTEXT_PATH=$(pwd) +echo CONTEXT_PATH="${CONTEXT_PATH}" +cd "${PROJECT_DIR}" || exit 1 + +# install cross +cargo install cross + +# x86_64-unknown-linux-gnu +echo "compiling for x86_64-unknown-linux-gnu" +rustup target add x86_64-unknown-linux-gnu +cross build --release --target x86_64-unknown-linux-gnu +ls -la target/x86_64-unknown-linux-gnu/release +cp -f target/x86_64-unknown-linux-gnu/release/libprql4j.so java/src/main/resources/libprql4j-linux64.so + +# x86_64-apple-darwin +echo "compiling for x86_64-apple-darwin" +rustup target add x86_64-apple-darwin +cross build --release --target x86_64-apple-darwin +ls -la target/x86_64-apple-darwin/release +cp target/x86_64-apple-darwin/release/libprql4j.dylib java/src/main/resources/libprql4j-osx-x86_64.dylib + +# x86_64-pc-windows-gnu +echo "compiling for x86_64-pc-windows-gnu" +rustup target add x86_64-pc-windows-gnu +cross build --release --target x86_64-pc-windows-gnu +ls -la target/x86_64-pc-windows-gnu/release +cp -f target/x86_64-pc-windows-gnu/release/prql4j.dll java/src/main/resources/libprql4j-win64.dll + +# aarch64-unknown-linux-gnu +echo "compiling for aarch64-unknown-linux-gnu" +rustup target add aarch64-unknown-linux-gnu +cross build --release --target aarch64-unknown-linux-gnu +ls -la target/x86_64-unknown-linux-gnu/release +cp -f target/x86_64-unknown-linux-gnu/release/libprql4j.so java/src/main/resources/libprql4j-linux-aarch64.so + +# aarch64-apple-darwin +echo "compiling for aarch64-apple-darwin" +rustup target add aarch64-apple-darwin +cross build --release --target aarch64-apple-darwin +ls -la target/x86_64-apple-darwin/release +cp -f target/x86_64-apple-darwin/release/libprql4j.dylib java/src/main/resources/libprql4j-osx-arm64.dylib + +# x86_64-unknown-linux-musl +echo "compiling for x86_64-unknown-linux-musl" +rustup target add x86_64-unknown-linux-musl +cross rustc --release --target x86_64-unknown-linux-musl -- --crate-type=dylib +ls -la target/x86_64-unknown-linux-musl/release +cp target/x86_64-unknown-linux-musl/release/libprql4j.so java/src/main/resources/libprql4j-linux64-musl.so + +# aarch64-unknown-linux-musl +echo "compiling for aarch64-unknown-linux-musl" +rustup target add aarch64-unknown-linux-musl +cross rustc --release --target aarch64-unknown-linux-musl -- --crate-type=dylib +ls -la target/aarch64-unknown-linux-musl/release +cp -f target/aarch64-unknown-linux-musl/release/libprql4j.so java/src/main/resources/libprql4j-linux-aarch64-musl.so + + +cd "${CONTEXT_PATH}" || exit 1 \ No newline at end of file diff --git a/java-api/native_lib_build.sh b/java-api/native_lib_build.sh deleted file mode 100755 index a3fb9bd..0000000 --- a/java-api/native_lib_build.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -set -e - -echo "start cross compilations" - -cd .. - -echo "compile target=x86_64-unknown-linux-gnu" -rustup target add x86_64-unknown-linux-gnu -cargo build --release --target=x86_64-unknown-linux-gnu -cp -f target/x86_64-unknown-linux-gnu/release/libprql4j.so java-api/src/main/resources/libprql4j-linux64.so - -echo "compile target=aarch64-unknown-linux-gnu" -rustup target add aarch64-unknown-linux-gnu -cargo build --release --target=aarch64-unknown-linux-gnu -cp -f target/aarch64-unknown-linux-gnu/release/libprql4j.so java-api/src/main/resources/libprql4j-linux-aarch64.so - -echo "compile target=x86_64-apple-darwin" -rustup target add x86_64-apple-darwin -cargo build --release --target=x86_64-apple-darwin -cp -f target/x86_64-apple-darwin/release/libprql4j.dylib java-api/src/main/resources/libprql4j-osx-x86_64.dylib - -echo "compile target=aarch64-apple-darwin" -rustup target add aarch64-apple-darwin -cargo build --release --target=aarch64-apple-darwin -cp -f target/aarch64-apple-darwin/release/libprql4j.dylib java-api/src/main/resources/libprql4j-osx-arm64.dylib - -echo "compile target=x86_64-pc-windows-gnu" -rustup target add x86_64-pc-windows-gnu -cargo build --release --target=x86_64-pc-windows-gnu -cp -f target/x86_64-pc-windows-gnu/release/prql4j.dll java-api/src/main/resources/libprql4j-win64.dll \ No newline at end of file diff --git a/java-api/pom.xml b/java-api/pom.xml deleted file mode 100644 index b464f74..0000000 --- a/java-api/pom.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - 4.0.0 - - org.doki23 - prql-java - 1.0-SNAPSHOT - - - 1.8 - 1.8 - - - - - junit - junit - 4.13.2 - test - - - - - - - exec-maven-plugin - org.codehaus.mojo - 1.6.0 - - - Run Script - initialize - - exec - - - native_lib_build.sh - - - - - - - - \ No newline at end of file diff --git a/java-api/.mvn/wrapper/maven-wrapper.jar b/java/.mvn/wrapper/maven-wrapper.jar similarity index 100% rename from java-api/.mvn/wrapper/maven-wrapper.jar rename to java/.mvn/wrapper/maven-wrapper.jar diff --git a/java-api/.mvn/wrapper/maven-wrapper.properties b/java/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from java-api/.mvn/wrapper/maven-wrapper.properties rename to java/.mvn/wrapper/maven-wrapper.properties diff --git a/java-api/mvnw b/java/mvnw similarity index 100% rename from java-api/mvnw rename to java/mvnw diff --git a/java-api/mvnw.cmd b/java/mvnw.cmd similarity index 100% rename from java-api/mvnw.cmd rename to java/mvnw.cmd diff --git a/java/pom.xml b/java/pom.xml new file mode 100644 index 0000000..ec8acc7 --- /dev/null +++ b/java/pom.xml @@ -0,0 +1,171 @@ + + + + + 4.0.0 + + io.github.doki23 + prql-java + 0.0.3 + + ${project.groupId}:${project.artifactId} + prql compiler api for java + https://github.com/doki23/prql-java + + + + The Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + + Jie Han + tunyum94@gmail.com + + + + + scm:git:git://github.com/doki23/prql-java.git + scm:git:ssh://github.com:doki23/prql-java.git + http://github.com/simpligility/ossrh-demo/tree/master + + + + 1.8 + 1.8 + + + + + junit + junit + 4.13.2 + test + + + + + + + exec-maven-plugin + org.codehaus.mojo + 1.6.0 + + + Build for release + generate-resources + + exec + + + ../cross.sh + + ${project.basedir}/../ + + + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.13 + true + + ossrh + https://s01.oss.sonatype.org/ + true + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.5 + + + sign-artifacts + verify + + sign + + + + --pinentry-mode + loopback + + + + + + + + maven-source-plugin + 3.1.0 + + + attach-source + compile + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.0.1 + + + attach-javadocs + + jar + + + + + + + + + + deploy-snapshot + + + sonatype-nexus-snapshots + Sonatype Nexus Snapshots + https://s01.oss.sonatype.org/content/repositories/snapshots + + + + + deploy + + + sonatype-nexus-staging + Nexus Release Repository + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2 + + + + + \ No newline at end of file diff --git a/java-api/src/main/java/org/doki23/prql4j/Environment.java b/java/src/main/java/org/doki23/prql4j/Environment.java similarity index 100% rename from java-api/src/main/java/org/doki23/prql4j/Environment.java rename to java/src/main/java/org/doki23/prql4j/Environment.java diff --git a/java-api/src/main/java/org/doki23/prql4j/NativeLibraryLoader.java b/java/src/main/java/org/doki23/prql4j/NativeLibraryLoader.java similarity index 96% rename from java-api/src/main/java/org/doki23/prql4j/NativeLibraryLoader.java rename to java/src/main/java/org/doki23/prql4j/NativeLibraryLoader.java index 7cbd9f9..d2f86ea 100644 --- a/java-api/src/main/java/org/doki23/prql4j/NativeLibraryLoader.java +++ b/java/src/main/java/org/doki23/prql4j/NativeLibraryLoader.java @@ -125,9 +125,4 @@ File loadLibraryFromJarToTemp(final String tmpDir) private NativeLibraryLoader() { } - - public static void main(String[] args) { - NativeLibraryLoader loader = NativeLibraryLoader.getInstance(); - System.out.println(loader); - } } diff --git a/java-api/src/main/java/org/doki23/prql4j/PrqlCompiler.java b/java/src/main/java/org/doki23/prql4j/PrqlCompiler.java similarity index 100% rename from java-api/src/main/java/org/doki23/prql4j/PrqlCompiler.java rename to java/src/main/java/org/doki23/prql4j/PrqlCompiler.java diff --git a/java/src/main/resources/.gitkeep b/java/src/main/resources/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/java-api/src/test/java/org/doki23/prql4j/PrqlCompilerTest.java b/java/src/test/java/org/doki23/prql4j/PrqlCompilerTest.java similarity index 100% rename from java-api/src/test/java/org/doki23/prql4j/PrqlCompilerTest.java rename to java/src/test/java/org/doki23/prql4j/PrqlCompilerTest.java