diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fc5a8d3..5af2492 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,10 +14,10 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v2 - - name: set up JDK 1.16 + - name: set up JDK 1.17 uses: actions/setup-java@v1 with: - java-version: 1.16 + java-version: 1.17 - name: Build with CI build script run: bash "ci_build_arch_${{matrix.arch}}.sh" - name: Upload JDK build output diff --git a/buildjdk.sh b/buildjdk.sh index 3945e5a..d12df01 100755 --- a/buildjdk.sh +++ b/buildjdk.sh @@ -71,6 +71,7 @@ bash ./configure \ --enable-headless-only=yes \ --with-toolchain-type=gcc \ --with-jvm-variants=$JVM_VARIANTS \ + --with-jvm-features=-dtrace,-zero,-vm-structs,-epsilongc \ --with-cups-include=$CUPS_DIR \ --with-devkit=$TOOLCHAIN \ --with-debug-level=$JDK_DEBUG_LEVEL \ diff --git a/removejdkdebuginfo.sh b/removejdkdebuginfo.sh index d46cf18..525fa2f 100755 --- a/removejdkdebuginfo.sh +++ b/removejdkdebuginfo.sh @@ -20,10 +20,21 @@ cp freetype-$BUILD_FREETYPE_VERSION/build_android-$TARGET_SHORT/lib/libfreetype. cp -r $imagespath/jdk jdkout # JDK no longer create separate JRE image, so we have to create one manually. -mkdir -p jreout/bin -cp jdkout/bin/{java,jfr,keytool,rmiregistry} jreout/bin/ -cp -r jdkout/{conf,legal,lib,man,release} jreout/ -rm jreout/lib/src.zip +#mkdir -p jreout/bin +#cp jdkout/bin/{java,jfr,keytool,rmiregistry} jreout/bin/ +#cp -r jdkout/{conf,legal,lib,man,release} jreout/ +#rm jreout/lib/src.zip + +# Produce the jre equivalent from the jdk (https://blog.adoptium.net/2021/10/jlink-to-produce-own-runtime/) +jlink \ +--module-path=jdkout/jmods \ +--add-modules java.base,java.compiler,java.datatransfer,java.desktop,java.instrument,java.logging,java.management,java.management.rmi,java.naming,java.net.http,java.prefs,java.rmi,java.scripting,java.se,java.security.jgss,java.security.sasl,java.sql,java.sql.rowset,java.transaction.xa,java.xml,java.xml.crypto,jdk.accessibility,jdk.charsets,jdk.crypto.cryptoki,jdk.crypto.ec,jdk.dynalink,jdk.httpserver,jdk.jdwp.agent,jdk.jfr,jdk.jsobject,jdk.localedata,jdk.management,jdk.management.agent,jdk.management.jfr,jdk.naming.dns,jdk.naming.rmi,jdk.net,jdk.nio.mapmode,jdk.sctp,jdk.security.auth,jdk.security.jgss,jdk.unsupported,jdk.xml.dom,jdk.zipfs \ +--output jreout \ +--strip-debug \ +--no-man-pages \ +--no-header-files \ +--release-info=jdkout/release \ +--compress=0 # mv jreout/lib/${TARGET_JDK}/libfontmanager.diz jreout/lib/${TARGET_JDK}/libfontmanager.diz.keep # find jreout -name "*.debuginfo" | xargs -- rm diff --git a/repackjre.sh b/repackjre.sh index 7fc58f6..fabf602 100755 --- a/repackjre.sh +++ b/repackjre.sh @@ -16,10 +16,46 @@ mkdir -p "$out" # here comes a not-so-complicated functions to easily make desired arch ## Usage: makearch [jre_libs_dir_name] [name_in_tarball] -makearch () { echo "Making $2..."; cd "$work"; tar xf $(find "$in" -name jre8-$2-*release.tar.xz) > /dev/null 2>&1; mv bin "$work1"/; mkdir -p "$work1"/lib; mv lib/$1 "$work1"/lib/; mv lib/jexec "$work1"/lib/; tar cJf bin-$2.tar.xz -C "$work1" . > /dev/null 2>&1; mv bin-$2.tar.xz "$out"/; rm -rf "$work"/*; rm -rf "$work1"/*; } +makearch () { + echo "Making $2..."; + cd "$work"; + tar xf $(find "$in" -name jre17-$2-*release.tar.xz) > /dev/null 2>&1; + mv bin "$work1"/; + mkdir -p "$work1"/lib; + + #mv lib/$1 "$work1"/lib/; + mv lib/jexec "$work1"/lib/; + + # server contains the libjvm.so + mv lib/server "$work1"/lib/; + + # All the other .so files are at the root of the lib folder + find ./ -name '*.so' -execdir mv {} "$work1"/lib/{} \; + + mv release "$work1"/release + + tar cJf bin-$2.tar.xz -C "$work1" . > /dev/null 2>&1; + mv bin-$2.tar.xz "$out"/; + rm -rf "$work"/*; + rm -rf "$work1"/*; + } # this one's static -makeuni () { echo "Making universal..."; cd "$work"; tar xf $(find "$in" -name jre8-arm64-*release.tar.xz) > /dev/null 2>&1; rm -rf bin; rm -rf lib/aarch64; rm lib/jexec; tar cJf universal.tar.xz * > /dev/null 2>&1; mv universal.tar.xz "$out"/; rm -rf "$work"/*; } +makeuni () { + echo "Making universal..."; + cd "$work"; + tar xf $(find "$in" -name jre17-arm64-*release.tar.xz) > /dev/null 2>&1; + + rm -rf bin; + rm -rf lib/server; + rm lib/jexec; + find ./ -name '*.so' -execdir rm {} \; # Remove arch specific shared objects + rm release + + tar cJf universal.tar.xz * > /dev/null 2>&1; + mv universal.tar.xz "$out"/; + rm -rf "$work"/*; + } # now time to use them! makeuni