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} \