From 4563d8e6070ca6bde44f565a0d5f0564f37eed3e Mon Sep 17 00:00:00 2001 From: jmatsuok Date: Tue, 4 Mar 2025 14:04:11 -0500 Subject: [PATCH 1/5] Create temporary jlink files under /tmp/jlink, clean up based on S2I_DELETE_SOURCE --- .../jboss/container/java/jlink/generatejdkdeps.sh | 8 ++++---- .../opt/jboss/container/java/jlink/mkdeps.sh | 6 +++--- .../opt/jboss/container/java/jlink/mkjreimage.sh | 2 +- .../opt/jboss/container/java/jlink/mkstrippeddeps.sh | 4 ++-- modules/jlink/module.yaml | 2 ++ modules/s2i/bash/artifacts/usr/local/s2i/assemble | 12 ++++++++++++ 6 files changed, 24 insertions(+), 10 deletions(-) diff --git a/modules/jlink/artifacts/opt/jboss/container/java/jlink/generatejdkdeps.sh b/modules/jlink/artifacts/opt/jboss/container/java/jlink/generatejdkdeps.sh index 8f59d56c..c7a1fe40 100755 --- a/modules/jlink/artifacts/opt/jboss/container/java/jlink/generatejdkdeps.sh +++ b/modules/jlink/artifacts/opt/jboss/container/java/jlink/generatejdkdeps.sh @@ -2,8 +2,8 @@ function generatejdkdeps() { echo "Generating JDK deps" - $JAVA_HOME/bin/java --list-modules > java-modules.txt - < java-modules.txt sed "s/\\@.*//" > modules.txt - grep -Fx -f stripped-deps.txt modules.txt | tr '\n' ',' | tr -d "[:space:]" > module-deps.txt - echo "jdk.zipfs" >> module-deps.txt + $JAVA_HOME/bin/java --list-modules > $S2I_JLINK_TEMP_PATH/java-modules.txt + < $S2I_JLINK_TEMP_PATH/java-modules.txt sed "s/\\@.*//" > $S2I_JLINK_TEMP_PATH/modules.txt + grep -Fx -f $S2I_JLINK_TEMP_PATH/stripped-deps.txt $S2I_JLINK_TEMP_PATH/modules.txt | tr '\n' ',' | tr -d "[:space:]" > $S2I_JLINK_TEMP_PATH/module-deps.txt + echo "jdk.zipfs" >> $S2I_JLINK_TEMP_PATH/module-deps.txt } \ No newline at end of file diff --git a/modules/jlink/artifacts/opt/jboss/container/java/jlink/mkdeps.sh b/modules/jlink/artifacts/opt/jboss/container/java/jlink/mkdeps.sh index 7a53e782..938e3db0 100755 --- a/modules/jlink/artifacts/opt/jboss/container/java/jlink/mkdeps.sh +++ b/modules/jlink/artifacts/opt/jboss/container/java/jlink/mkdeps.sh @@ -21,12 +21,12 @@ function generate_deps() { --module-path dependencies \ "$JAVA_APP_JAR" \ "$JAVA_LIB_DIR"/**/*.jar \ - > deps.txt + > $S2I_JLINK_TEMP_PATH/deps.txt else $JAVA_HOME/bin/jdeps --multi-release $JAVA_VERSION -R -s \ --module-path dependencies \ "$JAVA_APP_JAR" \ - > deps.txt - cat deps.txt + > $S2I_JLINK_TEMP_PATH/deps.txt + cat $S2I_JLINK_TEMP_PATH/deps.txt fi } diff --git a/modules/jlink/artifacts/opt/jboss/container/java/jlink/mkjreimage.sh b/modules/jlink/artifacts/opt/jboss/container/java/jlink/mkjreimage.sh index e2b5366f..7063e4e8 100755 --- a/modules/jlink/artifacts/opt/jboss/container/java/jlink/mkjreimage.sh +++ b/modules/jlink/artifacts/opt/jboss/container/java/jlink/mkjreimage.sh @@ -2,7 +2,7 @@ # TODO: Still Needed? set -euo pipefail -depsfile="module-deps.txt" +depsfile="$S2I_JLINK_TEMP_PATH/module-deps.txt" function generate_jre_image() { test -f $depsfile diff --git a/modules/jlink/artifacts/opt/jboss/container/java/jlink/mkstrippeddeps.sh b/modules/jlink/artifacts/opt/jboss/container/java/jlink/mkstrippeddeps.sh index 0b9e0742..000a860e 100755 --- a/modules/jlink/artifacts/opt/jboss/container/java/jlink/mkstrippeddeps.sh +++ b/modules/jlink/artifacts/opt/jboss/container/java/jlink/mkstrippeddeps.sh @@ -2,7 +2,7 @@ set -euo pipefail function mkstrippeddeps() { - if [ -f "deps.txt" ]; then + if [ -f "$S2I_JLINK_TEMP_PATH/deps.txt" ]; then echo "deps exists, filtering" /dev/null)" ]; then + log_info "Cleaning up temporary file directory /tmp/jlink" + rm -rf /tmp/jlink + fi +fi \ No newline at end of file From dd54f04a8260f187ad7f0e4eb73c1ed71502079b Mon Sep 17 00:00:00 2001 From: jmatsuok Date: Tue, 4 Mar 2025 14:32:32 -0500 Subject: [PATCH 2/5] Correct delete source check to use variable rather than hardcoded path --- modules/s2i/bash/artifacts/usr/local/s2i/assemble | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/s2i/bash/artifacts/usr/local/s2i/assemble b/modules/s2i/bash/artifacts/usr/local/s2i/assemble index 088ce675..4fbb6e1e 100644 --- a/modules/s2i/bash/artifacts/usr/local/s2i/assemble +++ b/modules/s2i/bash/artifacts/usr/local/s2i/assemble @@ -29,7 +29,7 @@ if [ "$S2I_ENABLE_JLINK" = "true" ]; then log_info "S2I_JLINK_TEMP_PATH does not exist, creating ${S2I_JLINK_TEMP_PATH}" mkdir -pm 775 "${S2I_JLINK_TEMP_PATH}" fi - + source "${JBOSS_CONTAINER_JAVA_JLINK_MODULE}/mkdeps.sh" echo "Invoking mkdeps" generate_deps || { @@ -61,8 +61,8 @@ if [ "$S2I_ENABLE_JLINK" = "true" ]; then fi if [ "$S2I_DELETE_SOURCE" == "true" ]; then - if [ -n "$(find /tmp/jlink -maxdepth 0 -type d ! -empty 2> /dev/null)" ]; then - log_info "Cleaning up temporary file directory /tmp/jlink" - rm -rf /tmp/jlink + if [ -n "$(find $S2I_JLINK_TEMP_PATH -maxdepth 0 -type d ! -empty 2> /dev/null)" ]; then + log_info "Cleaning up temporary file directory $S2I_JLINK_TEMP_PATH" + rm -rf $S2I_JLINK_TEMP_PATH fi fi \ No newline at end of file From ccfa477aa00a3dbc540815856ebee9429a8d415a Mon Sep 17 00:00:00 2001 From: jmatsuok Date: Wed, 5 Mar 2025 12:48:42 -0500 Subject: [PATCH 3/5] Address review feedback --- .../opt/jboss/container/java/jlink/mkstrippeddeps.sh | 2 +- modules/s2i/bash/artifacts/usr/local/s2i/assemble | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/jlink/artifacts/opt/jboss/container/java/jlink/mkstrippeddeps.sh b/modules/jlink/artifacts/opt/jboss/container/java/jlink/mkstrippeddeps.sh index 000a860e..0f6c7e64 100755 --- a/modules/jlink/artifacts/opt/jboss/container/java/jlink/mkstrippeddeps.sh +++ b/modules/jlink/artifacts/opt/jboss/container/java/jlink/mkstrippeddeps.sh @@ -4,7 +4,7 @@ set -euo pipefail function mkstrippeddeps() { if [ -f "$S2I_JLINK_TEMP_PATH/deps.txt" ]; then echo "deps exists, filtering" - //" | # remove src of src -> dep diff --git a/modules/s2i/bash/artifacts/usr/local/s2i/assemble b/modules/s2i/bash/artifacts/usr/local/s2i/assemble index 4fbb6e1e..66190688 100644 --- a/modules/s2i/bash/artifacts/usr/local/s2i/assemble +++ b/modules/s2i/bash/artifacts/usr/local/s2i/assemble @@ -58,11 +58,11 @@ if [ "$S2I_ENABLE_JLINK" = "true" ]; then exit 1 } + if [ "$S2I_DELETE_SOURCE" == "true" ]; then + if [ -n "$(find $S2I_JLINK_TEMP_PATH -maxdepth 0 -type d ! -empty 2> /dev/null)" ]; then + log_info "Cleaning up temporary file directory $S2I_JLINK_TEMP_PATH" + rm -rf $S2I_JLINK_TEMP_PATH + fi + fi fi -if [ "$S2I_DELETE_SOURCE" == "true" ]; then - if [ -n "$(find $S2I_JLINK_TEMP_PATH -maxdepth 0 -type d ! -empty 2> /dev/null)" ]; then - log_info "Cleaning up temporary file directory $S2I_JLINK_TEMP_PATH" - rm -rf $S2I_JLINK_TEMP_PATH - fi -fi \ No newline at end of file From 4ddcde6aabfb94c5fdd6902a19fc51095011773a Mon Sep 17 00:00:00 2001 From: jmatsuok Date: Wed, 5 Mar 2025 13:04:08 -0500 Subject: [PATCH 4/5] Add behave test --- modules/jlink/tests/features/jlink.feature | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/jlink/tests/features/jlink.feature b/modules/jlink/tests/features/jlink.feature index ebeb5c4d..e5610939 100644 --- a/modules/jlink/tests/features/jlink.feature +++ b/modules/jlink/tests/features/jlink.feature @@ -18,3 +18,11 @@ Scenario: Check that /tmp/jre/bin/java and /tmp/jre/lib/modules exist post s2i b | S2I_ENABLE_JLINK | true | Then file /tmp/jre/bin/java should exist and be a file And file /tmp/jre/lib/modules should exist and be a file + +Scenario: Check that /tmp/jlink is deleted when S2I_DELETE_SOURCE is set + Given s2i build https://github.com/rh-openjdk/openjdk-container-test-applications from quarkus-quickstarts/getting-started-3.9.2-uberjar + | variable | value | + | S2I_ENABLE_JLINK | true | + | S2I_DELETE_SOURCE | true | + Then s2i build log should contain Cleaning up temporary file directory /tmp/jlink + And file /tmp/jlink should not exist \ No newline at end of file From ec538a02df8f2c6b2b9e4fb0c68ac2798d0b74a3 Mon Sep 17 00:00:00 2001 From: jmatsuok Date: Thu, 6 Mar 2025 12:32:58 -0500 Subject: [PATCH 5/5] Add second behave test --- modules/jlink/tests/features/jlink.feature | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/jlink/tests/features/jlink.feature b/modules/jlink/tests/features/jlink.feature index e5610939..1a60593e 100644 --- a/modules/jlink/tests/features/jlink.feature +++ b/modules/jlink/tests/features/jlink.feature @@ -25,4 +25,12 @@ Scenario: Check that /tmp/jlink is deleted when S2I_DELETE_SOURCE is set | S2I_ENABLE_JLINK | true | | S2I_DELETE_SOURCE | true | Then s2i build log should contain Cleaning up temporary file directory /tmp/jlink - And file /tmp/jlink should not exist \ No newline at end of file + And file /tmp/jlink should not exist + +Scenario: Check that /tmp/jlink is not deleted when S2I_DELETE_SOURCE is set to false + Given s2i build https://github.com/rh-openjdk/openjdk-container-test-applications from quarkus-quickstarts/getting-started-3.9.2-uberjar + | variable | value | + | S2I_ENABLE_JLINK | true | + | S2I_DELETE_SOURCE | false | + Then s2i build log should not contain Cleaning up temporary file directory /tmp/jlink + And file /tmp/jlink should exist \ No newline at end of file