This is an automated email from the ASF dual-hosted git repository.

mpochatkin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new 08e7cf084f7 IGNITE-26771 Specify classpath in linux distributions 
(#6814)
08e7cf084f7 is described below

commit 08e7cf084f7d7b6e06ecc5ce5eca83d1c144c48b
Author: Vadim Pakhnushev <[email protected]>
AuthorDate: Fri Oct 24 15:57:11 2025 +0300

    IGNITE-26771 Specify classpath in linux distributions (#6814)
---
 packaging/build.gradle                             |  3 ++-
 packaging/common/linux/bootstrap-functions.sh      | 26 +++++++++++++++++-----
 packaging/db/build.gradle                          | 17 ++++++++++++--
 packaging/db/zip/linux/ignite3db                   |  3 ---
 .../linux => docker}/bootstrap-functions.sh        | 15 ++++++++-----
 5 files changed, 46 insertions(+), 18 deletions(-)

diff --git a/packaging/build.gradle b/packaging/build.gradle
index b02674c18f5..46b111ade92 100644
--- a/packaging/build.gradle
+++ b/packaging/build.gradle
@@ -83,7 +83,8 @@ def tokens = [
 ]
 
 def replaceVars = tasks.register('replaceVars', Copy) {
-    from "$rootDir/packaging/common/linux"
+    from "$rootDir/packaging/common/linux/$tokens.SETUP_JAVA_FILE_NAME"
+    from "$rootDir/packaging/docker/$tokens.BOOTSTRAP_FILE_NAME"
     from "$rootDir/packaging/docker/docker-entrypoint.sh"
     filter(ReplaceTokens, tokens: tokens)
     into "$buildDir/docker"
diff --git a/packaging/common/linux/bootstrap-functions.sh 
b/packaging/common/linux/bootstrap-functions.sh
index f9c342947cb..31630875365 100644
--- a/packaging/common/linux/bootstrap-functions.sh
+++ b/packaging/common/linux/bootstrap-functions.sh
@@ -20,23 +20,36 @@
 . ${LIBS_DIR}/@SETUP_JAVA_FILE_NAME@
 
 # used by rpm, deb, zip and docker distributions
-export COMMON_JAVA_OPTS="
+COMMON_JAVA_OPTS="
     @ADD_OPENS@ \
     -Dio.netty.tryReflectionSetAccessible=true \
     -Dfile.encoding=UTF-8 \
     -XX:+HeapDumpOnOutOfMemoryError \
     -XX:+ExitOnOutOfMemoryError"
 
-export LOGGING_JAVA_OPTS="
+LOGGING_JAVA_OPTS="
     
-Djava.util.logging.config.file=${CONF_DIR}/ignite.java.util.logging.properties 
\
     -XX:HeapDumpPath=${LOG_DIR} \
     
-Xlog:gc=info:file=${LOG_DIR}/${JVM_GC_LOG_NAME}::filecount=${JVM_GC_NUM_LOGS},filesize=${JVM_GC_LOG_SIZE}"
 
-export CLASSPATH="-classpath ${LIBS_DIR}/@APP_JAR@:${LIBS_DIR}/* @MAIN_CLASS@"
+JAVA_MEMORY_OPTIONS="-Xmx${JVM_MAX_MEM} -Xms${JVM_MIN_MEM}"
 
-export JAVA_MEMORY_OPTIONS="-Xmx${JVM_MAX_MEM} -Xms${JVM_MIN_MEM}"
+JAVA_GC_OPTIONS="-XX:+Use${JVM_GC} 
-XX:G1HeapRegionSize=${JVM_G1HeapRegionSize}"
 
-export JAVA_GC_OPTIONS="-XX:+Use${JVM_GC} 
-XX:G1HeapRegionSize=${JVM_G1HeapRegionSize}"
+while IFS= read -r JAR || [ -n "${JAR}" ]; do
+    if [ -z "${CLASSPATH+x}" ]; then
+        CLASSPATH="-classpath ${LIBS_DIR}/${JAR}"
+    else
+        CLASSPATH="$CLASSPATH:${LIBS_DIR}/${JAR}"
+    fi
+done < "${LIBS_DIR}/@CLASS_PATH_FILE@"
+
+if [ -z "${CLASSPATH+x}" ]; then
+  echo "CLASSPATH could not be built from ${LIBS_DIR}/@CLASS_PATH_FILE@ file"
+  exit 1
+fi
+
+MAIN_CLASS="@MAIN_CLASS@"
 
 export JAVA_CMD_WITH_ARGS="${JAVACMD} \
   ${COMMON_JAVA_OPTS} \
@@ -44,7 +57,8 @@ export JAVA_CMD_WITH_ARGS="${JAVACMD} \
   ${JAVA_MEMORY_OPTIONS} \
   ${JAVA_GC_OPTIONS} \
   ${IGNITE3_EXTRA_JVM_ARGS} \
-  ${CLASSPATH}"
+  ${CLASSPATH} \
+  ${MAIN_CLASS}"
 
 export APPLICATION_ARGS="\
   --config-path ${CONFIG_FILE} \
diff --git a/packaging/db/build.gradle b/packaging/db/build.gradle
index a3e8eb1ea3c..391182f3495 100644
--- a/packaging/db/build.gradle
+++ b/packaging/db/build.gradle
@@ -65,7 +65,6 @@ def tokens = [
         PRODUCT_NAME        : 'ignite3db',
         PACKAGE_NAME        : 'ignite3-db',
         PRODUCT_DISPLAY_NAME: 'Apache Ignite',
-        APP_JAR             : 
"${project(':ignite-runner').name}-${project(':ignite-runner').version}.jar".toString(),
         MAIN_CLASS          : 'org.apache.ignite.internal.app.IgniteRunner',
         ADD_OPENS           : project.addOpens.join(' '),
         CONF_FILE           : 'ignite-config.conf',
@@ -74,7 +73,8 @@ def tokens = [
 def tokensLin = tokens + [
         VARS_FILE_NAME      : 'vars.env',
         BOOTSTRAP_FILE_NAME : 'bootstrap-functions.sh',
-        SETUP_JAVA_FILE_NAME: 'setup-java.sh'
+        SETUP_JAVA_FILE_NAME: 'setup-java.sh',
+        CLASS_PATH_FILE: 'classpath',
 ]
 
 def tokensWin = tokens + [
@@ -149,6 +149,17 @@ def generateConfigDefaults = 
tasks.register('generateConfigDefaults', JavaExec)
     outputs.file layout.buildDirectory.file("config/ignite-config.conf")
 }
 
+def generateClasspathFile = tasks.register('generateClasspathFile') {
+    def outputFile = layout.buildDirectory.file("${tokensLin.CLASS_PATH_FILE}")
+    outputs.file(outputFile)
+
+    doLast {
+        outputFile.get().asFile.withPrintWriter {writer  ->
+            configurations.dbArtifacts.forEach {writer.println it.name }
+        }
+    }
+}
+
 distributions {
     main {
         distributionBaseName = 'ignite3-db'
@@ -181,6 +192,7 @@ distributions {
             }
             into('lib') {
                 from configurations.dbArtifacts
+                from generateClasspathFile
                 from 
"$buildDir/zip/${zipStartScriptTokensLin.BOOTSTRAP_FILE_NAME}"
                 from 
"$buildDir/zip/${zipStartScriptTokensLin.SETUP_JAVA_FILE_NAME}"
                 from 
"$buildDir/zip/${zipStartScriptTokensWin.BOOTSTRAP_FILE_NAME}"
@@ -306,6 +318,7 @@ ospackage {
 
         into('lib') {
             from configurations.dbArtifacts
+            from generateClasspathFile
             from "$buildDir/linux/${tokensLin.BOOTSTRAP_FILE_NAME}"
             from "$buildDir/linux/${tokensLin.SETUP_JAVA_FILE_NAME}"
         }
diff --git a/packaging/db/zip/linux/ignite3db b/packaging/db/zip/linux/ignite3db
index 2d820e89285..9b54f8c38e8 100644
--- a/packaging/db/zip/linux/ignite3db
+++ b/packaging/db/zip/linux/ignite3db
@@ -34,6 +34,3 @@ cd ${IGNITE_HOME} || exit
 
 CMD="${JAVA_CMD_WITH_ARGS} ${APPLICATION_ARGS}"
 $CMD
-
-
-
diff --git a/packaging/common/linux/bootstrap-functions.sh 
b/packaging/docker/bootstrap-functions.sh
similarity index 83%
copy from packaging/common/linux/bootstrap-functions.sh
copy to packaging/docker/bootstrap-functions.sh
index f9c342947cb..77d94516a1d 100644
--- a/packaging/common/linux/bootstrap-functions.sh
+++ b/packaging/docker/bootstrap-functions.sh
@@ -20,23 +20,25 @@
 . ${LIBS_DIR}/@SETUP_JAVA_FILE_NAME@
 
 # used by rpm, deb, zip and docker distributions
-export COMMON_JAVA_OPTS="
+COMMON_JAVA_OPTS="
     @ADD_OPENS@ \
     -Dio.netty.tryReflectionSetAccessible=true \
     -Dfile.encoding=UTF-8 \
     -XX:+HeapDumpOnOutOfMemoryError \
     -XX:+ExitOnOutOfMemoryError"
 
-export LOGGING_JAVA_OPTS="
+LOGGING_JAVA_OPTS="
     
-Djava.util.logging.config.file=${CONF_DIR}/ignite.java.util.logging.properties 
\
     -XX:HeapDumpPath=${LOG_DIR} \
     
-Xlog:gc=info:file=${LOG_DIR}/${JVM_GC_LOG_NAME}::filecount=${JVM_GC_NUM_LOGS},filesize=${JVM_GC_LOG_SIZE}"
 
-export CLASSPATH="-classpath ${LIBS_DIR}/@APP_JAR@:${LIBS_DIR}/* @MAIN_CLASS@"
+JAVA_MEMORY_OPTIONS="-Xmx${JVM_MAX_MEM} -Xms${JVM_MIN_MEM}"
 
-export JAVA_MEMORY_OPTIONS="-Xmx${JVM_MAX_MEM} -Xms${JVM_MIN_MEM}"
+JAVA_GC_OPTIONS="-XX:+Use${JVM_GC} 
-XX:G1HeapRegionSize=${JVM_G1HeapRegionSize}"
 
-export JAVA_GC_OPTIONS="-XX:+Use${JVM_GC} 
-XX:G1HeapRegionSize=${JVM_G1HeapRegionSize}"
+CLASSPATH="-classpath ${LIBS_DIR}/@APP_JAR@:${LIBS_DIR}/* @MAIN_CLASS@"
+
+MAIN_CLASS="@MAIN_CLASS@"
 
 export JAVA_CMD_WITH_ARGS="${JAVACMD} \
   ${COMMON_JAVA_OPTS} \
@@ -44,7 +46,8 @@ export JAVA_CMD_WITH_ARGS="${JAVACMD} \
   ${JAVA_MEMORY_OPTIONS} \
   ${JAVA_GC_OPTIONS} \
   ${IGNITE3_EXTRA_JVM_ARGS} \
-  ${CLASSPATH}"
+  ${CLASSPATH} \
+  ${MAIN_CLASS}"
 
 export APPLICATION_ARGS="\
   --config-path ${CONFIG_FILE} \

Reply via email to