From 69b978ae489b6135c2f01b658564dc715ddb878f Mon Sep 17 00:00:00 2001
From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
Date: Tue, 20 Oct 2026 10:43:24 +0200
Subject: [PATCH 1/8] chore(spark): Update versions for SDP 26.11
---
CHANGELOG.md | 2 +
spark-connect-client/boil-config.toml | 7 ++++
spark-k8s/boil-config.toml | 17 +++++++++
.../4.2.0/0001-Update-CycloneDX-plugin.patch | 38 +++++++++++++++++++
.../stackable/patches/4.2.0/patchable.toml | 2 +
5 files changed, 66 insertions(+)
create mode 100644 spark-k8s/stackable/patches/4.2.0/0001-Update-CycloneDX-plugin.patch
create mode 100644 spark-k8s/stackable/patches/4.2.0/patchable.toml
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 95ac84357..00d0975df 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -32,6 +32,7 @@ All notable changes to this project will be documented in this file.
the interpolation of environment variables in the Vector configuration files ([#1693]).
- opa: Add 1.20.2 ([#1697]).
- patchable: Use long hashes, and myers diff algorithm for portability ([#1705]).
+- spark: Add 4.2.0 ([#1710]).
### Changed
@@ -159,6 +160,7 @@ All notable changes to this project will be documented in this file.
[#1706]: https://github.com/stackabletech/docker-images/pull/1706
[#1707]: https://github.com/stackabletech/docker-images/pull/1707
[#1709]: https://github.com/stackabletech/docker-images/pull/1709
+[#1710]: https://github.com/stackabletech/docker-images/pull/1710
## [26.7.0] - 2026-07-21
diff --git a/spark-connect-client/boil-config.toml b/spark-connect-client/boil-config.toml
index 52212b880..0bf8e18be 100644
--- a/spark-connect-client/boil-config.toml
+++ b/spark-connect-client/boil-config.toml
@@ -21,3 +21,10 @@ java-base = "21"
[versions."4.1.2".build-arguments]
python-version = "3.12"
+
+[versions."4.2.0".local-images]
+spark-k8s = "4.2.0"
+java-base = "21"
+
+[versions."4.2.0".build-arguments]
+python-version = "3.12"
diff --git a/spark-k8s/boil-config.toml b/spark-k8s/boil-config.toml
index 321841bf0..a944b9c2b 100644
--- a/spark-k8s/boil-config.toml
+++ b/spark-k8s/boil-config.toml
@@ -57,3 +57,20 @@ woodstox-core-version = "7.1.1" # Needs to match https://mvnrepository
jmx-exporter-version = "1.3.0"
tini-version = "0.19.0"
openlineage-spark-version = "1.51.0" # Scala 2.13 build for Spark 4.1.x; see https://mvnrepository.com/artifact/io.openlineage/openlineage-spark_2.13
+
+[versions."4.2.0"]
+containerfile = "Dockerfile.4"
+
+[versions."4.2.0".local-images]
+"hadoop/hadoop" = "3.5.0"
+java-base = "21"
+java-devel = "21"
+
+[versions."4.2.0".build-arguments]
+python-version = "3.12"
+jackson-dataformat-xml-version = "2.21.2" # Needs to match https://mvnrepository.com/artifact/org.apache.spark/spark-parent_2.13/4.2.0
+stax2-api-version = "4.2.2" # Needs to match https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.21.2
+woodstox-core-version = "7.1.1" # Needs to match https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.21.2
+jmx-exporter-version = "1.3.0"
+tini-version = "0.19.0"
+openlineage-spark-version = "1.54.0" # Scala 2.13 build for Spark 4.x; see https://mvnrepository.com/artifact/io.openlineage/openlineage-spark_2.13
diff --git a/spark-k8s/stackable/patches/4.2.0/0001-Update-CycloneDX-plugin.patch b/spark-k8s/stackable/patches/4.2.0/0001-Update-CycloneDX-plugin.patch
new file mode 100644
index 000000000..b0ec1072f
--- /dev/null
+++ b/spark-k8s/stackable/patches/4.2.0/0001-Update-CycloneDX-plugin.patch
@@ -0,0 +1,38 @@
+From 324c7f01e42472e6cad6dc539da63dcff6662245 Mon Sep 17 00:00:00 2001
+From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
+Date: Thu, 15 Jan 2026 14:27:23 +0100
+Subject: Update CycloneDX plugin
+
+---
+ dev/make-distribution.sh | 1 -
+ pom.xml | 5 +++++
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/dev/make-distribution.sh b/dev/make-distribution.sh
+index b9792530f440293961cf0199942119bb8b839ea4..cfa3551daf71f06ec86ab10d39b78c8041edefbc 100755
+--- a/dev/make-distribution.sh
++++ b/dev/make-distribution.sh
+@@ -199,7 +199,6 @@ else
+ -Dmaven.javadoc.skip=true \
+ -Dmaven.scaladoc.skip=true \
+ -Dmaven.source.skip \
+- -Dcyclonedx.skip=true \
+ $@)
+ fi
+
+diff --git a/pom.xml b/pom.xml
+index 46558134f4177e1f60e7efc9cf9250f41b721367..77325b351b1f13220234a9bf86d84721d7e47ae2 100644
+--- a/pom.xml
++++ b/pom.xml
+@@ -3384,6 +3384,11 @@
+ org.cyclonedx
+ cyclonedx-maven-plugin
+ 2.9.1
++
++ application
++ 1.5
++ false
++
+
+
+ package
diff --git a/spark-k8s/stackable/patches/4.2.0/patchable.toml b/spark-k8s/stackable/patches/4.2.0/patchable.toml
new file mode 100644
index 000000000..1508865f7
--- /dev/null
+++ b/spark-k8s/stackable/patches/4.2.0/patchable.toml
@@ -0,0 +1,2 @@
+mirror = "https://github.com/stackabletech/spark.git"
+base = "32f7299601108917fb01920a54e084595b7b3bf8"
From 57a0de02021b628ddf0119407efc1760ac9a26e6 Mon Sep 17 00:00:00 2001
From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
Date: Tue, 20 Oct 2026 13:19:49 +0200
Subject: [PATCH 2/8] Add Spark 4.2.0 vendored-js manifest
Also install zip in the spark-builder stage because the
make-distribution.sh script needs it now.
---
spark-k8s/Dockerfile.4 | 2 +-
spark-k8s/stackable/vendored-js/4.2.0.json | 111 +++++++++++++++++++++
2 files changed, 112 insertions(+), 1 deletion(-)
create mode 100644 spark-k8s/stackable/vendored-js/4.2.0.json
diff --git a/spark-k8s/Dockerfile.4 b/spark-k8s/Dockerfile.4
index ad1263ae0..eef490381 100644
--- a/spark-k8s/Dockerfile.4
+++ b/spark-k8s/Dockerfile.4
@@ -60,7 +60,7 @@ COPY --from=hadoop-builder --chown=${STACKABLE_USER_UID}:0 /stackable/patched-li
# package manifest and no lockfile, so cdxgen cannot see them either.
RUN <
Date: Tue, 20 Oct 2026 15:06:32 +0200
Subject: [PATCH 3/8] Add Spark 4.1.3 image configuration
---
CHANGELOG.md | 2 +-
spark-connect-client/boil-config.toml | 7 +
spark-k8s/boil-config.toml | 18 +++
.../4.1.3/0001-Update-CycloneDX-plugin.patch | 38 +++++
.../stackable/patches/4.1.3/patchable.toml | 2 +
spark-k8s/stackable/vendored-js/4.1.3.json | 132 ++++++++++++++++++
6 files changed, 198 insertions(+), 1 deletion(-)
create mode 100644 spark-k8s/stackable/patches/4.1.3/0001-Update-CycloneDX-plugin.patch
create mode 100644 spark-k8s/stackable/patches/4.1.3/patchable.toml
create mode 100644 spark-k8s/stackable/vendored-js/4.1.3.json
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 00d0975df..703937bdb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -32,7 +32,7 @@ All notable changes to this project will be documented in this file.
the interpolation of environment variables in the Vector configuration files ([#1693]).
- opa: Add 1.20.2 ([#1697]).
- patchable: Use long hashes, and myers diff algorithm for portability ([#1705]).
-- spark: Add 4.2.0 ([#1710]).
+- spark: Add 4.1.3 and 4.2.0 ([#1710]).
### Changed
diff --git a/spark-connect-client/boil-config.toml b/spark-connect-client/boil-config.toml
index 0bf8e18be..810cf860b 100644
--- a/spark-connect-client/boil-config.toml
+++ b/spark-connect-client/boil-config.toml
@@ -22,6 +22,13 @@ java-base = "21"
[versions."4.1.2".build-arguments]
python-version = "3.12"
+[versions."4.1.3".local-images]
+spark-k8s = "4.1.3"
+java-base = "21"
+
+[versions."4.1.3".build-arguments]
+python-version = "3.12"
+
[versions."4.2.0".local-images]
spark-k8s = "4.2.0"
java-base = "21"
diff --git a/spark-k8s/boil-config.toml b/spark-k8s/boil-config.toml
index a944b9c2b..49ac529dc 100644
--- a/spark-k8s/boil-config.toml
+++ b/spark-k8s/boil-config.toml
@@ -58,6 +58,24 @@ jmx-exporter-version = "1.3.0"
tini-version = "0.19.0"
openlineage-spark-version = "1.51.0" # Scala 2.13 build for Spark 4.1.x; see https://mvnrepository.com/artifact/io.openlineage/openlineage-spark_2.13
+# LTS since 26.11.0
+[versions."4.1.3"]
+containerfile = "Dockerfile.4"
+
+[versions."4.1.3".local-images]
+"hadoop/hadoop" = "3.4.3"
+java-base = "21"
+java-devel = "21"
+
+[versions."4.1.3".build-arguments]
+python-version = "3.12"
+jackson-dataformat-xml-version = "2.21.2" # Needs to match https://mvnrepository.com/artifact/org.apache.spark/spark-parent_2.13/4.1.3
+stax2-api-version = "4.2.2" # Needs to match https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.21.2
+woodstox-core-version = "7.1.1" # Needs to match https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.21.2
+jmx-exporter-version = "1.3.0"
+tini-version = "0.19.0"
+openlineage-spark-version = "1.51.0" # Scala 2.13 build for Spark 4.1.x; see https://mvnrepository.com/artifact/io.openlineage/openlineage-spark_2.13
+
[versions."4.2.0"]
containerfile = "Dockerfile.4"
diff --git a/spark-k8s/stackable/patches/4.1.3/0001-Update-CycloneDX-plugin.patch b/spark-k8s/stackable/patches/4.1.3/0001-Update-CycloneDX-plugin.patch
new file mode 100644
index 000000000..4e6b1b850
--- /dev/null
+++ b/spark-k8s/stackable/patches/4.1.3/0001-Update-CycloneDX-plugin.patch
@@ -0,0 +1,38 @@
+From dcbb026bab5bc79e0e143d9aeb5ad8f7a0f30ffc Mon Sep 17 00:00:00 2001
+From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
+Date: Thu, 15 Jan 2026 14:27:23 +0100
+Subject: Update CycloneDX plugin
+
+---
+ dev/make-distribution.sh | 1 -
+ pom.xml | 5 +++++
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/dev/make-distribution.sh b/dev/make-distribution.sh
+index 21179a768d607ef90239edd3cf6f00a5140f4083..297aefd2a036f0f6bb495bbc34cf19fd01791e8d 100755
+--- a/dev/make-distribution.sh
++++ b/dev/make-distribution.sh
+@@ -200,7 +200,6 @@ else
+ -Dmaven.javadoc.skip=true \
+ -Dmaven.scaladoc.skip=true \
+ -Dmaven.source.skip \
+- -Dcyclonedx.skip=true \
+ $@)
+ fi
+
+diff --git a/pom.xml b/pom.xml
+index 370bfa4397ff58eeffeb9aea092c59cdac26239f..0d2e1413cec34995555a1b04fd752e9e564f6cbf 100644
+--- a/pom.xml
++++ b/pom.xml
+@@ -3333,6 +3333,11 @@
+ org.cyclonedx
+ cyclonedx-maven-plugin
+ 2.9.1
++
++ application
++ 1.5
++ false
++
+
+
+ package
diff --git a/spark-k8s/stackable/patches/4.1.3/patchable.toml b/spark-k8s/stackable/patches/4.1.3/patchable.toml
new file mode 100644
index 000000000..b194559e0
--- /dev/null
+++ b/spark-k8s/stackable/patches/4.1.3/patchable.toml
@@ -0,0 +1,2 @@
+mirror = "https://github.com/stackabletech/spark.git"
+base = "77bbf77e86ad48f58b5dfbc6ac882b3e70cf1989"
diff --git a/spark-k8s/stackable/vendored-js/4.1.3.json b/spark-k8s/stackable/vendored-js/4.1.3.json
new file mode 100644
index 000000000..0b6113dd7
--- /dev/null
+++ b/spark-k8s/stackable/vendored-js/4.1.3.json
@@ -0,0 +1,132 @@
+{
+ "name": "spark-web-ui",
+ "scan-dirs": [
+ "core/src/main/resources/org/apache/spark/ui/static"
+ ],
+ "libraries": [
+ {
+ "file": "core/src/main/resources/org/apache/spark/ui/static/bootstrap.bundle.min.js",
+ "purl": "pkg:npm/bootstrap@4.4.1",
+ "license": "MIT",
+ "sha256": "4d371899aba195b1f0cba3a70de300fb5b327a322cfbe3a30d77af8456d8494e",
+ "note": "The file is dist/js/bootstrap.bundle.min.js of the 4.4.1 release without the trailing source-map link, so the code is that release unchanged."
+ },
+ {
+ "file": "core/src/main/resources/org/apache/spark/ui/static/dataTables.rowsGroup.js",
+ "purl": null,
+ "name": "dataTables.rowsGroup",
+ "version": "1.0.0",
+ "license": "MIT",
+ "note": "RowsGroup for DataTables, a plugin that was never published to npm. Version taken from the file header.",
+ "sha256": "5856c937e4fe8a921364a14de58f406788db336ed9066b3aed897c0ced755c42"
+ },
+ {
+ "file": "core/src/main/resources/org/apache/spark/ui/static/jquery-3.5.1.min.js",
+ "purl": "pkg:npm/jquery@3.5.1",
+ "license": "MIT",
+ "sha256": "f7f6a5894f1d19ddad6fa392b2ece2c5e578cbf7da4ea805b6885eb6985b6e3d"
+ },
+ {
+ "file": "core/src/main/resources/org/apache/spark/ui/static/jquery.mustache.js",
+ "purl": "pkg:npm/mustache@3.0.1",
+ "license": "MIT",
+ "note": "Despite the file name this is mustache.js itself, not a jQuery plugin. The file is mustache.js of the 3.0.1 release minus its trailing newline, so the code is that release unchanged.",
+ "sha256": "520f7bf7d54c8dde783aaf6f0dac66c9edc55da01716ccabca6888686822e7d6"
+ },
+ {
+ "file": "core/src/main/resources/org/apache/spark/ui/static/jquery.blockUI.min.js",
+ "purl": null,
+ "name": "jquery.blockUI",
+ "version": "20141123",
+ "note": "jQuery BlockUI. Version taken from the file header, which reads \"v20141123\", a date rather than a release, so there is no matching npm version to point a purl at. The header says \"Dual licensed: MIT/GPL\" without naming a GPL version, so no license is recorded.",
+ "sha256": "806aedff52ac822f2adc5797073e1e5c5cec32eb9f15f2319cb32a347dcd232b"
+ },
+ {
+ "file": "core/src/main/resources/org/apache/spark/ui/static/jquery.cookies.2.2.0.min.js",
+ "purl": null,
+ "name": "jquery.cookies",
+ "version": "2.2.0",
+ "note": "Version taken from the file name. Never published to npm under this name. The header says \"Licensed under the BSD, MIT, and GPL (your choice!)\", so no license is recorded.",
+ "sha256": "10fdbfbb18a947e7024457f52fd2dfe94ebddd612156c886731474b02aa45d23"
+ },
+ {
+ "file": "core/src/main/resources/org/apache/spark/ui/static/sorttable.js",
+ "purl": null,
+ "name": "sorttable",
+ "version": "2",
+ "note": "Stuart Langridge's sorttable, \"version 2, 7th April 2007\" per the header. Unrelated to the npm package of the same name and never published there.",
+ "sha256": "718fc917df5cc75d545ddcc1465c2af7f4b70332abb2a3a592b1a36fda3f309a"
+ },
+ {
+ "file": "core/src/main/resources/org/apache/spark/ui/static/d3.min.js",
+ "purl": "pkg:npm/d3@7.8.5",
+ "license": "ISC",
+ "sha256": "d6b03aefc9f6c44c7bc78713679c78c295028fa914319119e5cc4b4954855b1c"
+ },
+ {
+ "file": "core/src/main/resources/org/apache/spark/ui/static/d3-flamegraph.min.js",
+ "purl": "pkg:npm/d3-flame-graph@4.1.3",
+ "license": "Apache-2.0",
+ "note": "Version taken from the file header, which is the jsDelivr URL it was downloaded from. Ignoring that banner the file is identical in 4.1.2 and 4.1.3, so the banner is the only thing that dates it.",
+ "sha256": "10c2ac45bb9ad73e12fdebf434fbb29aa05b85b7bab660c2751e885c51bd5356"
+ },
+ {
+ "file": "core/src/main/resources/org/apache/spark/ui/static/dagre-d3.min.js",
+ "purl": "pkg:npm/dagre-d3@0.6.4",
+ "license": "MIT",
+ "note": "The file is dist/dagre-d3.min.js of the 0.6.4 release with a banner added that names the Git tag it was taken from, so the code is that release unchanged.",
+ "sha256": "b1e946243fc2aa7ba500f7b8fd68c6c8a6fcbbb0329e00389b6a05e20e39130e"
+ },
+ {
+ "file": "core/src/main/resources/org/apache/spark/ui/static/graphlib-dot.min.js",
+ "purl": "pkg:npm/graphlib-dot@1.0.2",
+ "license": "MIT",
+ "note": "The banner names https://github.com/dagrejs/graphlib-dot/blob/v1.0.2/dist/graphlib-dot.min.js. npm stops at 0.6.4, so 1.0.2 exists only as a Git tag and there is no published tarball to compare with.",
+ "sha256": "ae68701d5a547f47eb65ea79a4e2f3179d23c1b8280b2856e16e68555231a409"
+ },
+ {
+ "file": "core/src/main/resources/org/apache/spark/ui/static/jquery.dataTables.min.js",
+ "purl": "pkg:npm/datatables.net@1.13.11",
+ "license": "MIT",
+ "sha256": "a33146fad8c7228dc4dc90043e3e50d51cead8b2267aeac32b0a8f3be8a52b86"
+ },
+ {
+ "file": "core/src/main/resources/org/apache/spark/ui/static/dataTables.bootstrap4.min.js",
+ "purl": "pkg:npm/datatables.net-bs4@1.13.7",
+ "license": "MIT",
+ "note": "The file is byte-identical in 1.13.7, 1.13.8, 1.13.10 and 1.13.11, so the release it was taken from cannot be determined by hashing. The lowest one is recorded.",
+ "sha256": "e8dd8ff4b7568aa33170d6750c480e8cac29999da8a3a3e78dea13a4dfd8c8ef"
+ },
+ {
+ "file": "core/src/main/resources/org/apache/spark/ui/static/vis-timeline-graph2d.min.js",
+ "purl": "pkg:npm/vis-timeline@7.7.2",
+ "license": "(Apache-2.0 OR MIT)",
+ "note": "The file is standalone/umd/vis-timeline-graph2d.min.js of the 7.7.2 release without the trailing source-map link, so the code is that release unchanged.",
+ "bundles": [
+ {
+ "purl": "pkg:npm/moment@2.29.4",
+ "license": "MIT"
+ }
+ ],
+ "sha256": "dedba3ff9bc4b36da23310a8aef217a036cc530e94e9331b507cda93ba04ad0f"
+ }
+ ],
+ "own": [
+ "core/src/main/resources/org/apache/spark/ui/static/environmentpage.js",
+ "core/src/main/resources/org/apache/spark/ui/static/executorspage.js",
+ "core/src/main/resources/org/apache/spark/ui/static/flamegraph.js",
+ "core/src/main/resources/org/apache/spark/ui/static/historypage-common.js",
+ "core/src/main/resources/org/apache/spark/ui/static/historypage.js",
+ "core/src/main/resources/org/apache/spark/ui/static/initialize-tooltips.js",
+ "core/src/main/resources/org/apache/spark/ui/static/log-view.js",
+ "core/src/main/resources/org/apache/spark/ui/static/scroll-button.js",
+ "core/src/main/resources/org/apache/spark/ui/static/spark-dag-viz.js",
+ "core/src/main/resources/org/apache/spark/ui/static/stagepage.js",
+ "core/src/main/resources/org/apache/spark/ui/static/streaming-page.js",
+ "core/src/main/resources/org/apache/spark/ui/static/structured-streaming-page.js",
+ "core/src/main/resources/org/apache/spark/ui/static/table.js",
+ "core/src/main/resources/org/apache/spark/ui/static/timeline-view.js",
+ "core/src/main/resources/org/apache/spark/ui/static/utils.js",
+ "core/src/main/resources/org/apache/spark/ui/static/webui.js"
+ ]
+}
From 6d3bc9a2f2b74d4e4c985a98be2c23319e354b70 Mon Sep 17 00:00:00 2001
From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
Date: Tue, 20 Oct 2026 16:07:29 +0200
Subject: [PATCH 4/8] Remove Spark 3.5.8 and 4.1.1
---
CHANGELOG.md | 1 +
spark-connect-client/boil-config.toml | 14 -
spark-k8s/Dockerfile.3 | 309 ------------------
spark-k8s/boil-config.toml | 40 ---
.../3.5.7/0001-Update-CycloneDX-plugin.patch | 40 ---
...1311-BUILD-Promote-bcprov-jdk18on-to.patch | 83 -----
.../stackable/patches/3.5.7/patchable.toml | 2 -
.../3.5.8/0001-Update-CycloneDX-plugin.patch | 40 ---
...1311-BUILD-Promote-bcprov-jdk18on-to.patch | 83 -----
.../stackable/patches/3.5.8/patchable.toml | 2 -
.../4.0.1/0001-Update-CycloneDX-plugin.patch | 38 ---
.../stackable/patches/4.0.1/patchable.toml | 2 -
.../4.1.1/0001-Update-CycloneDX-plugin.patch | 38 ---
.../stackable/patches/4.1.1/patchable.toml | 1 -
spark-k8s/stackable/vendored-js/3.5.8.json | 122 -------
spark-k8s/stackable/vendored-js/4.1.1.json | 132 --------
16 files changed, 1 insertion(+), 946 deletions(-)
delete mode 100644 spark-k8s/Dockerfile.3
delete mode 100644 spark-k8s/stackable/patches/3.5.7/0001-Update-CycloneDX-plugin.patch
delete mode 100644 spark-k8s/stackable/patches/3.5.7/0002-Backport-SPARK-51311-BUILD-Promote-bcprov-jdk18on-to.patch
delete mode 100644 spark-k8s/stackable/patches/3.5.7/patchable.toml
delete mode 100644 spark-k8s/stackable/patches/3.5.8/0001-Update-CycloneDX-plugin.patch
delete mode 100644 spark-k8s/stackable/patches/3.5.8/0002-Backport-SPARK-51311-BUILD-Promote-bcprov-jdk18on-to.patch
delete mode 100644 spark-k8s/stackable/patches/3.5.8/patchable.toml
delete mode 100644 spark-k8s/stackable/patches/4.0.1/0001-Update-CycloneDX-plugin.patch
delete mode 100644 spark-k8s/stackable/patches/4.0.1/patchable.toml
delete mode 100644 spark-k8s/stackable/patches/4.1.1/0001-Update-CycloneDX-plugin.patch
delete mode 100644 spark-k8s/stackable/patches/4.1.1/patchable.toml
delete mode 100644 spark-k8s/stackable/vendored-js/3.5.8.json
delete mode 100644 spark-k8s/stackable/vendored-js/4.1.1.json
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 703937bdb..ee15df2b3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -115,6 +115,7 @@ All notable changes to this project will be documented in this file.
- trino: Remove `479` ([#1690]).
- trino-cli: Remove `481` ([#1690]).
- opa: Remove 1.12.3 ([#1697]).
+- spark: Remove 3.5.8 and 4.1.1 ([#1710]).
[#1593]: https://github.com/stackabletech/docker-images/pull/1593
[#1595]: https://github.com/stackabletech/docker-images/pull/1595
diff --git a/spark-connect-client/boil-config.toml b/spark-connect-client/boil-config.toml
index 810cf860b..3577b28d9 100644
--- a/spark-connect-client/boil-config.toml
+++ b/spark-connect-client/boil-config.toml
@@ -1,20 +1,6 @@
[metadata.registries]
"oci.stackable.tech" = { namespace = "stackable" }
-[versions."3.5.8".local-images]
-spark-k8s = "3.5.8"
-java-base = "17"
-
-[versions."3.5.8".build-arguments]
-python-version = "3.11"
-
-[versions."4.1.1".local-images]
-spark-k8s = "4.1.1"
-java-base = "21"
-
-[versions."4.1.1".build-arguments]
-python-version = "3.12"
-
[versions."4.1.2".local-images]
spark-k8s = "4.1.2"
java-base = "21"
diff --git a/spark-k8s/Dockerfile.3 b/spark-k8s/Dockerfile.3
deleted file mode 100644
index 5d9a00993..000000000
--- a/spark-k8s/Dockerfile.3
+++ /dev/null
@@ -1,309 +0,0 @@
-# syntax=docker/dockerfile:1.16.0@sha256:e2dd261f92e4b763d789984f6eab84be66ab4f5f08052316d8eb8f173593acf7
-# check=error=true
-
-# hadoop-builder: Provides Hadoop libraries
-FROM local-image/hadoop/hadoop AS hadoop-builder
-
-# hbase-builder: Provides HBase libraries
-FROM local-image/hbase AS hbase-builder
-
-# spark-source-builder: Clone the Spark source code and apply patches
-FROM local-image/java-devel AS spark-source-builder
-
-ARG PRODUCT_VERSION
-ARG RELEASE_VERSION
-ARG STACKABLE_USER_UID
-
-WORKDIR /stackable
-
-COPY --chown=${STACKABLE_USER_UID}:0 spark-k8s/stackable/patches/patchable.toml /stackable/src/spark-k8s/stackable/patches/patchable.toml
-COPY --chown=${STACKABLE_USER_UID}:0 spark-k8s/stackable/patches/${PRODUCT_VERSION} /stackable/src/spark-k8s/stackable/patches/${PRODUCT_VERSION}
-
-RUN <>> Build spark
-RUN <]' '{print $3}')
-
- mkdir -p dist/connect
- cd dist/connect
-
- cp "/stackable/spark-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}/connector/connect/server/target/spark-connect_${SCALA_BINARY_VERSION}-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}.jar" .
- cp "/stackable/spark-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}/connector/connect/common/target/spark-connect-common_${SCALA_BINARY_VERSION}-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}.jar" .
- cp "/stackable/spark-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}/connector/connect/client/jvm/target/spark-connect-client-jvm_${SCALA_BINARY_VERSION}-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}.jar" .
-
- # This link is needed by the operator and is kept for backwards compatibility.
- # TODO: remove it at some time in the future.
- ln -s "spark-connect_${SCALA_BINARY_VERSION}-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}.jar" "spark-connect_${SCALA_BINARY_VERSION}-${PRODUCT_VERSION}.jar"
- # Link to the spark-connect jar without the stackable suffix and scala version.
- # This link supersedes the previous link.
- ln -s "spark-connect_${SCALA_BINARY_VERSION}-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}.jar" "spark-connect-${PRODUCT_VERSION}.jar"
-EOF
-
-# <<< Build spark
-
-WORKDIR /stackable/spark-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}/dist/jars
-
-# Copy cloud libraries for s3a:// and abfs:// support
-COPY --chown=${STACKABLE_USER_UID}:0 --from=hadoop-builder /stackable/hadoop-cloud-libraries/*.jar ./
-
-# Copy the HBase connector including required modules
-COPY --from=hbase-connectors-builder --chown=${STACKABLE_USER_UID}:0 \
- /stackable/spark/jars/* \
- ./
-
-# Copy modules required to access HBase
-COPY --from=hbase-builder --chown=${STACKABLE_USER_UID}:0 \
- /stackable/hbase/lib/shaded-clients/hbase-shaded-client-byo-hadoop-${HBASE_VERSION}-stackable${RELEASE_VERSION}.jar \
- /stackable/hbase/lib/shaded-clients/hbase-shaded-mapreduce-${HBASE_VERSION}-stackable${RELEASE_VERSION}.jar \
- ./
-# Copy modules required to access HBase if $HBASE_VERSION == 2.4.x
-COPY --from=hbase-builder --chown=${STACKABLE_USER_UID}:0 \
- /stackable/hbase/lib/client-facing-thirdparty/htrace-core4-*-incubating.jar \
- /stackable/hbase/lib/client-facing-thirdparty/slf4j-reload4j-*.jar \
- ./
-# Copy modules required to access HBase if $HBASE_VERSION == 2.6.x
-COPY --from=hbase-builder --chown=${STACKABLE_USER_UID}:0 \
- /stackable/hbase/lib/client-facing-thirdparty/opentelemetry-api-*.jar \
- /stackable/hbase/lib/client-facing-thirdparty/opentelemetry-context-*.jar \
- /stackable/hbase/lib/client-facing-thirdparty/opentelemetry-semconv-*-alpha.jar \
- ./
-
-COPY spark-k8s/stackable/jmx /stackable/jmx
-
-WORKDIR /stackable/spark-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}/dist/extra-jars
-
-RUN <]' '{print $3}')
-
-# Download the OpenLineage Spark listener jar into a DEDICATED directory (dist/openlineage),
-# NOT dist/extra-jars. The operator references it via `--jars local:///stackable/spark/openlineage/...`
-# so it loads on Spark's child/user classloader, sharing it with connectors delivered via `--packages`
-# (e.g. Iceberg). If it landed on extra-jars it would be added to the system classloader via
-# extraClassPath, OpenLineage's connector probe would fail, and no datasets would be emitted.
-mkdir -p /stackable/spark-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}/dist/openlineage
-mvn "org.apache.maven.plugins:maven-dependency-plugin:${DEPENDENCY_MAVEN_PLUGIN_VERSION}:get" -Dartifact="io.openlineage:openlineage-spark_${SCALA_BINARY_VERSION}:${OPENLINEAGE_SPARK_VERSION}"
-cp "/root/.m2/repository/io/openlineage/openlineage-spark_${SCALA_BINARY_VERSION}/${OPENLINEAGE_SPARK_VERSION}/openlineage-spark_${SCALA_BINARY_VERSION}-${OPENLINEAGE_SPARK_VERSION}.jar" \
- "/stackable/spark-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}/dist/openlineage/openlineage-spark_${SCALA_BINARY_VERSION}-${OPENLINEAGE_SPARK_VERSION}.jar"
-# Symlink to a stable, version- and Scala-independent name (mirroring the jmx_prometheus_javaagent.jar
-# pattern) so the operator can reference the jar without knowing the version or Scala build baked here.
-ln -s "openlineage-spark_${SCALA_BINARY_VERSION}-${OPENLINEAGE_SPARK_VERSION}.jar" \
- "/stackable/spark-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}/dist/openlineage/openlineage-spark.jar"
-
-# Get the correct `tini` binary for our architecture.
-curl --fail "https://repo.stackable.tech/repository/packages/tini/tini-${TINI_VERSION}-${TARGETARCH}" \
- -o /usr/bin/tini
-chmod +x /usr/bin/tini
-
-# JMX Exporter
-curl --fail "https://repo.stackable.tech/repository/packages/jmx-exporter/jmx_prometheus_javaagent-${JMX_EXPORTER_VERSION}.jar" \
- -o "/stackable/jmx/jmx_prometheus_javaagent-${JMX_EXPORTER_VERSION}.jar"
-ln -s "/stackable/jmx/jmx_prometheus_javaagent-${JMX_EXPORTER_VERSION}.jar" /stackable/jmx/jmx_prometheus_javaagent.jar
-
-chmod -R g=u /stackable/spark-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}/dist
-chmod -R g=u /stackable/spark-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}/assembly/target/bom.json
-chmod -R g=u /stackable/jmx
-EOF
-
-FROM local-image/java-base AS final
-
-ARG PRODUCT_VERSION
-ARG PYTHON_VERSION
-ARG RELEASE_VERSION
-ARG JMX_EXPORTER_VERSION
-ARG HBASE_CONNECTOR_VERSION
-ARG STACKABLE_USER_UID
-
-LABEL name="Apache Spark" \
- maintainer="info@stackable.tech" \
- vendor="Stackable GmbH" \
- version="${PRODUCT_VERSION}" \
- release="${RELEASE_VERSION}" \
- summary="The Stackable image for Apache Spark with PySpark support." \
- description="This image is deployed by the Stackable Operator for Apache Spark on Kubernetes."
-
-
-ENV HOME=/stackable
-ENV SPARK_HOME=/stackable/spark
-# Override the java-base version of JAVA_HOME to point to the jdk.
-ENV JAVA_HOME="/usr/lib/jvm/temurin-${JAVA_VERSION}-jdk"
-ENV PATH=$SPARK_HOME/bin:$JAVA_HOME/bin:$PATH
-ENV PYSPARK_PYTHON=/usr/bin/python
-ENV PYTHONPATH=$SPARK_HOME/python
-
-
-COPY --chown=${STACKABLE_USER_UID}:0 --from=spark-builder /stackable/spark-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}/dist /stackable/spark
-COPY --chown=${STACKABLE_USER_UID}:0 --from=spark-source-builder /stackable/spark-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}-src.tar.gz /stackable
-COPY --chown=${STACKABLE_USER_UID}:0 --from=hbase-connectors-builder /stackable/hbase-connector-${HBASE_CONNECTOR_VERSION}-stackable${RELEASE_VERSION}-src.tar.gz /stackable
-COPY --chown=${STACKABLE_USER_UID}:0 --from=spark-builder /stackable/spark-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}/assembly/target/bom.json /stackable/spark/spark-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}.cdx.json
-COPY --chown=${STACKABLE_USER_UID}:0 --from=spark-builder /stackable/spark-web-ui-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}.cdx.json /stackable/spark/spark-web-ui-${PRODUCT_VERSION}-stackable${RELEASE_VERSION}.cdx.json
-COPY --chown=${STACKABLE_USER_UID}:0 --from=spark-builder /stackable/jmx /stackable/jmx
-COPY --from=spark-builder /usr/bin/tini /usr/bin/tini
-
-COPY --chown=${STACKABLE_USER_UID}:0 spark-k8s/stackable/run-spark.sh /stackable/run-spark.sh
-COPY --chown=${STACKABLE_USER_UID}:0 spark-k8s/licenses /licenses
-
-RUN <
-Date: Tue, 11 Mar 2025 17:29:39 +0200
-Subject: Update CycloneDX plugin
-
----
- dev/make-distribution.sh | 1 -
- pom.xml | 7 ++++++-
- 2 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/dev/make-distribution.sh b/dev/make-distribution.sh
-index ef7c010e930a18915ac421afe8d366299971587a..0f4c1c74e4074f227b628be65f4309192f22c969 100755
---- a/dev/make-distribution.sh
-+++ b/dev/make-distribution.sh
-@@ -171,7 +171,6 @@ BUILD_COMMAND=("$MVN" clean package \
- -Dmaven.javadoc.skip=true \
- -Dmaven.scaladoc.skip=true \
- -Dmaven.source.skip \
-- -Dcyclonedx.skip=true \
- $@)
-
- # Actually build the jar
-diff --git a/pom.xml b/pom.xml
-index a0e25ce4d8d5dd396cea1e35367312bd745a6d9a..b3755a04e7f103a18bf9cd4313314cb4fcef25e4 100644
---- a/pom.xml
-+++ b/pom.xml
-@@ -3534,7 +3534,12 @@
-
- org.cyclonedx
- cyclonedx-maven-plugin
-- 2.7.9
-+ 2.8.0
-+
-+ application
-+ 1.5
-+ false
-+
-
-
- package
diff --git a/spark-k8s/stackable/patches/3.5.7/0002-Backport-SPARK-51311-BUILD-Promote-bcprov-jdk18on-to.patch b/spark-k8s/stackable/patches/3.5.7/0002-Backport-SPARK-51311-BUILD-Promote-bcprov-jdk18on-to.patch
deleted file mode 100644
index d793d943e..000000000
--- a/spark-k8s/stackable/patches/3.5.7/0002-Backport-SPARK-51311-BUILD-Promote-bcprov-jdk18on-to.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 0cfb1d6b733579ea91df842e685df9db5512ece8 Mon Sep 17 00:00:00 2001
-From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
-Date: Tue, 22 Jul 2025 17:34:03 +0200
-Subject: Backport [SPARK-51311][BUILD] Promote bcprov-jdk18on to compile scope
-
----
- LICENSE-binary | 1 +
- assembly/pom.xml | 14 ++++++++++++++
- dev/deps/spark-deps-hadoop-3-hive-2.3 | 1 +
- licenses-binary/LICENSE-bouncycastle.txt | 13 +++++++++++++
- 4 files changed, 29 insertions(+)
- create mode 100644 licenses-binary/LICENSE-bouncycastle.txt
-
-diff --git a/LICENSE-binary b/LICENSE-binary
-index 05645977a0ba54832ad134ac26f46b6d7206fddf..9834cf333f7d4478d795961752a9ae19f714eb40 100644
---- a/LICENSE-binary
-+++ b/LICENSE-binary
-@@ -480,6 +480,7 @@ org.typelevel:algebra_2.12:jar
- org.typelevel:cats-kernel_2.12
- org.typelevel:machinist_2.12
- net.razorvine:pickle
-+org.bouncycastle:bcprov-jdk18on
- org.slf4j:jcl-over-slf4j
- org.slf4j:jul-to-slf4j
- org.slf4j:slf4j-api
-diff --git a/assembly/pom.xml b/assembly/pom.xml
-index ffa6a0e2b06af2ad773e6fd306403513a642ef4a..19032d60541acb26818435fbcee0bb2e50736853 100644
---- a/assembly/pom.xml
-+++ b/assembly/pom.xml
-@@ -85,8 +85,22 @@
- guava
- ${hadoop.deps.scope}
-
-+
-+
-+
-+ org.bouncycastle
-+ bcprov-jdk18on
-+ ${hadoop.deps.scope}
-+
-+
-
-
-+
-
-
-
-diff --git a/dev/deps/spark-deps-hadoop-3-hive-2.3 b/dev/deps/spark-deps-hadoop-3-hive-2.3
-index f110a1988fbf506a8fd96116906925ffabf6c01f..88324d3e2735aafe5d66c6662e8ff92a05dc8f62 100644
---- a/dev/deps/spark-deps-hadoop-3-hive-2.3
-+++ b/dev/deps/spark-deps-hadoop-3-hive-2.3
-@@ -28,6 +28,7 @@ aws-java-sdk-bundle/1.12.262//aws-java-sdk-bundle-1.12.262.jar
- azure-data-lake-store-sdk/2.3.9//azure-data-lake-store-sdk-2.3.9.jar
- azure-keyvault-core/1.0.0//azure-keyvault-core-1.0.0.jar
- azure-storage/7.0.1//azure-storage-7.0.1.jar
-+bcprov-jdk18on/1.77//bcprov-jdk18on-1.77.jar
- blas/3.0.3//blas-3.0.3.jar
- bonecp/0.8.0.RELEASE//bonecp-0.8.0.RELEASE.jar
- breeze-macros_2.12/2.1.0//breeze-macros_2.12-2.1.0.jar
-diff --git a/licenses-binary/LICENSE-bouncycastle.txt b/licenses-binary/LICENSE-bouncycastle.txt
-new file mode 100644
-index 0000000000000000000000000000000000000000..277dcd1ebbb8a5b9a6087ce66338eb61351161ff
---- /dev/null
-+++ b/licenses-binary/LICENSE-bouncycastle.txt
-@@ -0,0 +1,13 @@
-+Copyright (c) 2000-2024 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org).
-+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
-+associated documentation files (the "Software"), to deal in the Software without restriction,
-+including without limitation the rights to use, copy, modify, merge, publish, distribute,
-+sub license, and/or sell copies of the Software, and to permit persons to whom the Software is
-+furnished to do so, subject to the following conditions: The above copyright notice and this
-+permission notice shall be included in all copies or substantial portions of the Software.
-+
-+**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.**
diff --git a/spark-k8s/stackable/patches/3.5.7/patchable.toml b/spark-k8s/stackable/patches/3.5.7/patchable.toml
deleted file mode 100644
index 49202d309..000000000
--- a/spark-k8s/stackable/patches/3.5.7/patchable.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-base = "ed00d046951a7ecda6429accd3b9c5b2dc792b65"
-mirror = "https://github.com/stackabletech/spark.git"
diff --git a/spark-k8s/stackable/patches/3.5.8/0001-Update-CycloneDX-plugin.patch b/spark-k8s/stackable/patches/3.5.8/0001-Update-CycloneDX-plugin.patch
deleted file mode 100644
index a899e438c..000000000
--- a/spark-k8s/stackable/patches/3.5.8/0001-Update-CycloneDX-plugin.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 4a1e0b6cb70add10e83c071b6402b76bab1ac380 Mon Sep 17 00:00:00 2001
-From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
-Date: Tue, 11 Mar 2025 17:29:39 +0200
-Subject: Update CycloneDX plugin
-
----
- dev/make-distribution.sh | 1 -
- pom.xml | 7 ++++++-
- 2 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/dev/make-distribution.sh b/dev/make-distribution.sh
-index ef7c010e930a18915ac421afe8d366299971587a..0f4c1c74e4074f227b628be65f4309192f22c969 100755
---- a/dev/make-distribution.sh
-+++ b/dev/make-distribution.sh
-@@ -171,7 +171,6 @@ BUILD_COMMAND=("$MVN" clean package \
- -Dmaven.javadoc.skip=true \
- -Dmaven.scaladoc.skip=true \
- -Dmaven.source.skip \
-- -Dcyclonedx.skip=true \
- $@)
-
- # Actually build the jar
-diff --git a/pom.xml b/pom.xml
-index edd2ad57880ae1f5c26d075925006c757d4da372..667f6f8cbfb7f2b829fef22f61c92fc7842df1cc 100644
---- a/pom.xml
-+++ b/pom.xml
-@@ -3534,7 +3534,12 @@
-
- org.cyclonedx
- cyclonedx-maven-plugin
-- 2.7.9
-+ 2.8.0
-+
-+ application
-+ 1.5
-+ false
-+
-
-
- package
diff --git a/spark-k8s/stackable/patches/3.5.8/0002-Backport-SPARK-51311-BUILD-Promote-bcprov-jdk18on-to.patch b/spark-k8s/stackable/patches/3.5.8/0002-Backport-SPARK-51311-BUILD-Promote-bcprov-jdk18on-to.patch
deleted file mode 100644
index baeb39861..000000000
--- a/spark-k8s/stackable/patches/3.5.8/0002-Backport-SPARK-51311-BUILD-Promote-bcprov-jdk18on-to.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 49abdb63abc57d1b905dbd333d4b0ac487d42ae7 Mon Sep 17 00:00:00 2001
-From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
-Date: Tue, 22 Jul 2025 17:34:03 +0200
-Subject: Backport [SPARK-51311][BUILD] Promote bcprov-jdk18on to compile scope
-
----
- LICENSE-binary | 1 +
- assembly/pom.xml | 14 ++++++++++++++
- dev/deps/spark-deps-hadoop-3-hive-2.3 | 1 +
- licenses-binary/LICENSE-bouncycastle.txt | 13 +++++++++++++
- 4 files changed, 29 insertions(+)
- create mode 100644 licenses-binary/LICENSE-bouncycastle.txt
-
-diff --git a/LICENSE-binary b/LICENSE-binary
-index 05645977a0ba54832ad134ac26f46b6d7206fddf..9834cf333f7d4478d795961752a9ae19f714eb40 100644
---- a/LICENSE-binary
-+++ b/LICENSE-binary
-@@ -480,6 +480,7 @@ org.typelevel:algebra_2.12:jar
- org.typelevel:cats-kernel_2.12
- org.typelevel:machinist_2.12
- net.razorvine:pickle
-+org.bouncycastle:bcprov-jdk18on
- org.slf4j:jcl-over-slf4j
- org.slf4j:jul-to-slf4j
- org.slf4j:slf4j-api
-diff --git a/assembly/pom.xml b/assembly/pom.xml
-index 1533c2f0c2d58142617959ed1f985b8453e23d59..d75faf079007a3e72c08d0b25aa81bee14df802e 100644
---- a/assembly/pom.xml
-+++ b/assembly/pom.xml
-@@ -85,8 +85,22 @@
- guava
- ${hadoop.deps.scope}
-
-+
-+
-+
-+ org.bouncycastle
-+ bcprov-jdk18on
-+ ${hadoop.deps.scope}
-+
-+
-
-
-+
-
-
-
-diff --git a/dev/deps/spark-deps-hadoop-3-hive-2.3 b/dev/deps/spark-deps-hadoop-3-hive-2.3
-index b4d91a1b161c17850d76650e7a16f9b63100aa78..b7409dd53fa12c66035e84b366daae001ae8ee30 100644
---- a/dev/deps/spark-deps-hadoop-3-hive-2.3
-+++ b/dev/deps/spark-deps-hadoop-3-hive-2.3
-@@ -28,6 +28,7 @@ aws-java-sdk-bundle/1.12.262//aws-java-sdk-bundle-1.12.262.jar
- azure-data-lake-store-sdk/2.3.9//azure-data-lake-store-sdk-2.3.9.jar
- azure-keyvault-core/1.0.0//azure-keyvault-core-1.0.0.jar
- azure-storage/7.0.1//azure-storage-7.0.1.jar
-+bcprov-jdk18on/1.77//bcprov-jdk18on-1.77.jar
- blas/3.0.3//blas-3.0.3.jar
- bonecp/0.8.0.RELEASE//bonecp-0.8.0.RELEASE.jar
- breeze-macros_2.12/2.1.0//breeze-macros_2.12-2.1.0.jar
-diff --git a/licenses-binary/LICENSE-bouncycastle.txt b/licenses-binary/LICENSE-bouncycastle.txt
-new file mode 100644
-index 0000000000000000000000000000000000000000..277dcd1ebbb8a5b9a6087ce66338eb61351161ff
---- /dev/null
-+++ b/licenses-binary/LICENSE-bouncycastle.txt
-@@ -0,0 +1,13 @@
-+Copyright (c) 2000-2024 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org).
-+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
-+associated documentation files (the "Software"), to deal in the Software without restriction,
-+including without limitation the rights to use, copy, modify, merge, publish, distribute,
-+sub license, and/or sell copies of the Software, and to permit persons to whom the Software is
-+furnished to do so, subject to the following conditions: The above copyright notice and this
-+permission notice shall be included in all copies or substantial portions of the Software.
-+
-+**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-+NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
-+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.**
diff --git a/spark-k8s/stackable/patches/3.5.8/patchable.toml b/spark-k8s/stackable/patches/3.5.8/patchable.toml
deleted file mode 100644
index 0bf043048..000000000
--- a/spark-k8s/stackable/patches/3.5.8/patchable.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-base = "5a48a37b2dbd7b51e3640cd1d947438459556cc6"
-mirror = "https://github.com/stackabletech/spark.git"
diff --git a/spark-k8s/stackable/patches/4.0.1/0001-Update-CycloneDX-plugin.patch b/spark-k8s/stackable/patches/4.0.1/0001-Update-CycloneDX-plugin.patch
deleted file mode 100644
index 0370581ae..000000000
--- a/spark-k8s/stackable/patches/4.0.1/0001-Update-CycloneDX-plugin.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From b5de94e20aff25a394c6095c0649b4fcbaa941aa Mon Sep 17 00:00:00 2001
-From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
-Date: Fri, 4 Jul 2025 15:54:55 +0200
-Subject: Update CycloneDX plugin
-
----
- dev/make-distribution.sh | 1 -
- pom.xml | 5 +++++
- 2 files changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/dev/make-distribution.sh b/dev/make-distribution.sh
-index 16607e45ae6563506477554b57841da014c74959..44e345a245d85237e6b4621dc67f906b397888d8 100755
---- a/dev/make-distribution.sh
-+++ b/dev/make-distribution.sh
-@@ -176,7 +176,6 @@ BUILD_COMMAND=("$MVN" clean package \
- -Dmaven.javadoc.skip=true \
- -Dmaven.scaladoc.skip=true \
- -Dmaven.source.skip \
-- -Dcyclonedx.skip=true \
- $@)
-
- # Actually build the jar
-diff --git a/pom.xml b/pom.xml
-index 22922143fc342549e9af76886ce0f74e54a28bc5..59c3747c625f9bf63e481e99ff92f1bc333ebb3e 100644
---- a/pom.xml
-+++ b/pom.xml
-@@ -3327,6 +3327,11 @@
- org.cyclonedx
- cyclonedx-maven-plugin
- 2.8.0
-+
-+ application
-+ 1.5
-+ false
-+
-
-
- package
diff --git a/spark-k8s/stackable/patches/4.0.1/patchable.toml b/spark-k8s/stackable/patches/4.0.1/patchable.toml
deleted file mode 100644
index bd074097c..000000000
--- a/spark-k8s/stackable/patches/4.0.1/patchable.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-base = "29434ea766b0fc3c3bf6eaadb43a8f931133649e"
-mirror = "https://github.com/stackabletech/spark.git"
diff --git a/spark-k8s/stackable/patches/4.1.1/0001-Update-CycloneDX-plugin.patch b/spark-k8s/stackable/patches/4.1.1/0001-Update-CycloneDX-plugin.patch
deleted file mode 100644
index 0669c3670..000000000
--- a/spark-k8s/stackable/patches/4.1.1/0001-Update-CycloneDX-plugin.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 81b0e112da483402a453c22b672608779eeb8187 Mon Sep 17 00:00:00 2001
-From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
-Date: Thu, 15 Jan 2026 14:27:23 +0100
-Subject: Update CycloneDX plugin
-
----
- dev/make-distribution.sh | 1 -
- pom.xml | 5 +++++
- 2 files changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/dev/make-distribution.sh b/dev/make-distribution.sh
-index 16598bda87339bcbb1b15e318dc9e100f18f5296..327fa7631442e1f99e46022df9165515166819f1 100755
---- a/dev/make-distribution.sh
-+++ b/dev/make-distribution.sh
-@@ -185,7 +185,6 @@ else
- -Dmaven.javadoc.skip=true \
- -Dmaven.scaladoc.skip=true \
- -Dmaven.source.skip \
-- -Dcyclonedx.skip=true \
- $@)
- fi
-
-diff --git a/pom.xml b/pom.xml
-index dc757d788121c69f371e740f9b6a78c65f13216c..05f1af034f3a73e380504430992784c939f4d68d 100644
---- a/pom.xml
-+++ b/pom.xml
-@@ -3333,6 +3333,11 @@
- org.cyclonedx
- cyclonedx-maven-plugin
- 2.9.1
-+
-+ application
-+ 1.5
-+ false
-+
-
-
- package
diff --git a/spark-k8s/stackable/patches/4.1.1/patchable.toml b/spark-k8s/stackable/patches/4.1.1/patchable.toml
deleted file mode 100644
index 15b658491..000000000
--- a/spark-k8s/stackable/patches/4.1.1/patchable.toml
+++ /dev/null
@@ -1 +0,0 @@
-base = "c0690c763bafabd08e7079d1137fa0a769a05bae"
diff --git a/spark-k8s/stackable/vendored-js/3.5.8.json b/spark-k8s/stackable/vendored-js/3.5.8.json
deleted file mode 100644
index 1e1cb2925..000000000
--- a/spark-k8s/stackable/vendored-js/3.5.8.json
+++ /dev/null
@@ -1,122 +0,0 @@
-{
- "name": "spark-web-ui",
- "scan-dirs": [
- "core/src/main/resources/org/apache/spark/ui/static"
- ],
- "libraries": [
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/bootstrap.bundle.min.js",
- "purl": "pkg:npm/bootstrap@4.4.1",
- "license": "MIT",
- "sha256": "394156ee114ed3faf968419340ecfd17f69740eb7e4f0a88d59e1f6d5bf0c34e"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/dataTables.rowsGroup.js",
- "purl": null,
- "name": "dataTables.rowsGroup",
- "version": "1.0.0",
- "license": "MIT",
- "note": "RowsGroup for DataTables, a plugin that was never published to npm. Version taken from the file header.",
- "sha256": "5856c937e4fe8a921364a14de58f406788db336ed9066b3aed897c0ced755c42"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/jquery-3.5.1.min.js",
- "purl": "pkg:npm/jquery@3.5.1",
- "license": "MIT",
- "sha256": "f7f6a5894f1d19ddad6fa392b2ece2c5e578cbf7da4ea805b6885eb6985b6e3d"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/jquery.mustache.js",
- "purl": "pkg:npm/mustache@3.0.1",
- "license": "MIT",
- "note": "Despite the file name this is mustache.js itself, not a jQuery plugin. The file is mustache.js of the 3.0.1 release minus its trailing newline, so the code is that release unchanged.",
- "sha256": "520f7bf7d54c8dde783aaf6f0dac66c9edc55da01716ccabca6888686822e7d6"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/jquery.blockUI.min.js",
- "purl": null,
- "name": "jquery.blockUI",
- "version": "20141123",
- "note": "jQuery BlockUI. Version taken from the file header, which reads \"v20141123\", a date rather than a release, so there is no matching npm version to point a purl at. The header says \"Dual licensed: MIT/GPL\" without naming a GPL version, so no license is recorded.",
- "sha256": "806aedff52ac822f2adc5797073e1e5c5cec32eb9f15f2319cb32a347dcd232b"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/jquery.cookies.2.2.0.min.js",
- "purl": null,
- "name": "jquery.cookies",
- "version": "2.2.0",
- "note": "Version taken from the file name. Never published to npm under this name. The header says \"Licensed under the BSD, MIT, and GPL (your choice!)\", so no license is recorded.",
- "sha256": "10fdbfbb18a947e7024457f52fd2dfe94ebddd612156c886731474b02aa45d23"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/sorttable.js",
- "purl": null,
- "name": "sorttable",
- "version": "2",
- "note": "Stuart Langridge's sorttable, \"version 2, 7th April 2007\" per the header. Unrelated to the npm package of the same name and never published there.",
- "sha256": "718fc917df5cc75d545ddcc1465c2af7f4b70332abb2a3a592b1a36fda3f309a"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/d3.min.js",
- "purl": "pkg:npm/d3@3.5.5",
- "license": "BSD-3-Clause",
- "note": "The 3.5.5 release declares no license field, its bundled LICENSE file is BSD-3-Clause. The file is d3.min.js of that release with a \"/*v3.5.5*/\" banner added and a trailing newline appended, so the code is that release unchanged.",
- "sha256": "3d4c7c277efd3bb019ed0aba5d2dfbe575ded9b9055b842997774bee02f2b76a"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/dagre-d3.min.js",
- "purl": "pkg:npm/dagre-d3@0.4.3",
- "license": "MIT",
- "note": "The header says \"a custom version of dagre-d3 on top of v0.4.3\" from http://github.com/andrewor14/dagre-d3, so this is a fork and the purl only identifies the version it is based on.",
- "sha256": "f38a54a35b59d44f359e1ecdbccc457ebae3f37c5448fc007107081d518144a3"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/graphlib-dot.min.js",
- "purl": "pkg:npm/graphlib-dot@0.5.2",
- "license": "MIT",
- "note": "Version taken from the file header. The npm release ships only the CommonJS sources under lib/, not the browser bundle vendored here, so there is no published file to compare it with.",
- "sha256": "668584b1ed5fe082dc65c895d7cf4b4b3f0868758b1bdbaf056905418594a556"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/jquery.dataTables.1.13.5.min.js",
- "purl": "pkg:npm/datatables.net@1.13.5",
- "license": "MIT",
- "note": "Version taken from the file header, which the npm build carries as well. The npm release ships a jquery.dataTables.min.js of the same version, but minified with different settings (extra parentheses, assignments ordered differently), so the two are not byte-identical.",
- "sha256": "4a20199d45c7b3b9180461baa8f93a383e0438ac921a8bbcef0c3ab5c986c1c3"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/dataTables.bootstrap4.1.13.5.min.js",
- "purl": "pkg:npm/datatables.net-bs4@1.13.5",
- "license": "MIT",
- "note": "The file is byte-identical in 1.13.5 and 1.13.6, so the release it was taken from cannot be determined by hashing. The lowest one is recorded.",
- "sha256": "d8ed32494c027847edd9607ccbfc074202fe460939b7037f03e1f83ccdea6266"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/vis-timeline-graph2d.min.js",
- "purl": "pkg:npm/vis-timeline@7.7.2",
- "license": "(Apache-2.0 OR MIT)",
- "bundles": [
- {
- "purl": "pkg:npm/moment@2.29.4",
- "license": "MIT"
- }
- ],
- "sha256": "272dbe50eeeb6760e08a4e74cf75ebacda67739fb63c0c7d3212f60a272874c1"
- }
- ],
- "own": [
- "core/src/main/resources/org/apache/spark/ui/static/executorspage.js",
- "core/src/main/resources/org/apache/spark/ui/static/historypage-common.js",
- "core/src/main/resources/org/apache/spark/ui/static/historypage.js",
- "core/src/main/resources/org/apache/spark/ui/static/initialize-tooltips.js",
- "core/src/main/resources/org/apache/spark/ui/static/log-view.js",
- "core/src/main/resources/org/apache/spark/ui/static/spark-dag-viz.js",
- "core/src/main/resources/org/apache/spark/ui/static/stagepage.js",
- "core/src/main/resources/org/apache/spark/ui/static/streaming-page.js",
- "core/src/main/resources/org/apache/spark/ui/static/structured-streaming-page.js",
- "core/src/main/resources/org/apache/spark/ui/static/table.js",
- "core/src/main/resources/org/apache/spark/ui/static/timeline-view.js",
- "core/src/main/resources/org/apache/spark/ui/static/utils.js",
- "core/src/main/resources/org/apache/spark/ui/static/webui.js"
- ]
-}
diff --git a/spark-k8s/stackable/vendored-js/4.1.1.json b/spark-k8s/stackable/vendored-js/4.1.1.json
deleted file mode 100644
index 0b6113dd7..000000000
--- a/spark-k8s/stackable/vendored-js/4.1.1.json
+++ /dev/null
@@ -1,132 +0,0 @@
-{
- "name": "spark-web-ui",
- "scan-dirs": [
- "core/src/main/resources/org/apache/spark/ui/static"
- ],
- "libraries": [
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/bootstrap.bundle.min.js",
- "purl": "pkg:npm/bootstrap@4.4.1",
- "license": "MIT",
- "sha256": "4d371899aba195b1f0cba3a70de300fb5b327a322cfbe3a30d77af8456d8494e",
- "note": "The file is dist/js/bootstrap.bundle.min.js of the 4.4.1 release without the trailing source-map link, so the code is that release unchanged."
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/dataTables.rowsGroup.js",
- "purl": null,
- "name": "dataTables.rowsGroup",
- "version": "1.0.0",
- "license": "MIT",
- "note": "RowsGroup for DataTables, a plugin that was never published to npm. Version taken from the file header.",
- "sha256": "5856c937e4fe8a921364a14de58f406788db336ed9066b3aed897c0ced755c42"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/jquery-3.5.1.min.js",
- "purl": "pkg:npm/jquery@3.5.1",
- "license": "MIT",
- "sha256": "f7f6a5894f1d19ddad6fa392b2ece2c5e578cbf7da4ea805b6885eb6985b6e3d"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/jquery.mustache.js",
- "purl": "pkg:npm/mustache@3.0.1",
- "license": "MIT",
- "note": "Despite the file name this is mustache.js itself, not a jQuery plugin. The file is mustache.js of the 3.0.1 release minus its trailing newline, so the code is that release unchanged.",
- "sha256": "520f7bf7d54c8dde783aaf6f0dac66c9edc55da01716ccabca6888686822e7d6"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/jquery.blockUI.min.js",
- "purl": null,
- "name": "jquery.blockUI",
- "version": "20141123",
- "note": "jQuery BlockUI. Version taken from the file header, which reads \"v20141123\", a date rather than a release, so there is no matching npm version to point a purl at. The header says \"Dual licensed: MIT/GPL\" without naming a GPL version, so no license is recorded.",
- "sha256": "806aedff52ac822f2adc5797073e1e5c5cec32eb9f15f2319cb32a347dcd232b"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/jquery.cookies.2.2.0.min.js",
- "purl": null,
- "name": "jquery.cookies",
- "version": "2.2.0",
- "note": "Version taken from the file name. Never published to npm under this name. The header says \"Licensed under the BSD, MIT, and GPL (your choice!)\", so no license is recorded.",
- "sha256": "10fdbfbb18a947e7024457f52fd2dfe94ebddd612156c886731474b02aa45d23"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/sorttable.js",
- "purl": null,
- "name": "sorttable",
- "version": "2",
- "note": "Stuart Langridge's sorttable, \"version 2, 7th April 2007\" per the header. Unrelated to the npm package of the same name and never published there.",
- "sha256": "718fc917df5cc75d545ddcc1465c2af7f4b70332abb2a3a592b1a36fda3f309a"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/d3.min.js",
- "purl": "pkg:npm/d3@7.8.5",
- "license": "ISC",
- "sha256": "d6b03aefc9f6c44c7bc78713679c78c295028fa914319119e5cc4b4954855b1c"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/d3-flamegraph.min.js",
- "purl": "pkg:npm/d3-flame-graph@4.1.3",
- "license": "Apache-2.0",
- "note": "Version taken from the file header, which is the jsDelivr URL it was downloaded from. Ignoring that banner the file is identical in 4.1.2 and 4.1.3, so the banner is the only thing that dates it.",
- "sha256": "10c2ac45bb9ad73e12fdebf434fbb29aa05b85b7bab660c2751e885c51bd5356"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/dagre-d3.min.js",
- "purl": "pkg:npm/dagre-d3@0.6.4",
- "license": "MIT",
- "note": "The file is dist/dagre-d3.min.js of the 0.6.4 release with a banner added that names the Git tag it was taken from, so the code is that release unchanged.",
- "sha256": "b1e946243fc2aa7ba500f7b8fd68c6c8a6fcbbb0329e00389b6a05e20e39130e"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/graphlib-dot.min.js",
- "purl": "pkg:npm/graphlib-dot@1.0.2",
- "license": "MIT",
- "note": "The banner names https://github.com/dagrejs/graphlib-dot/blob/v1.0.2/dist/graphlib-dot.min.js. npm stops at 0.6.4, so 1.0.2 exists only as a Git tag and there is no published tarball to compare with.",
- "sha256": "ae68701d5a547f47eb65ea79a4e2f3179d23c1b8280b2856e16e68555231a409"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/jquery.dataTables.min.js",
- "purl": "pkg:npm/datatables.net@1.13.11",
- "license": "MIT",
- "sha256": "a33146fad8c7228dc4dc90043e3e50d51cead8b2267aeac32b0a8f3be8a52b86"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/dataTables.bootstrap4.min.js",
- "purl": "pkg:npm/datatables.net-bs4@1.13.7",
- "license": "MIT",
- "note": "The file is byte-identical in 1.13.7, 1.13.8, 1.13.10 and 1.13.11, so the release it was taken from cannot be determined by hashing. The lowest one is recorded.",
- "sha256": "e8dd8ff4b7568aa33170d6750c480e8cac29999da8a3a3e78dea13a4dfd8c8ef"
- },
- {
- "file": "core/src/main/resources/org/apache/spark/ui/static/vis-timeline-graph2d.min.js",
- "purl": "pkg:npm/vis-timeline@7.7.2",
- "license": "(Apache-2.0 OR MIT)",
- "note": "The file is standalone/umd/vis-timeline-graph2d.min.js of the 7.7.2 release without the trailing source-map link, so the code is that release unchanged.",
- "bundles": [
- {
- "purl": "pkg:npm/moment@2.29.4",
- "license": "MIT"
- }
- ],
- "sha256": "dedba3ff9bc4b36da23310a8aef217a036cc530e94e9331b507cda93ba04ad0f"
- }
- ],
- "own": [
- "core/src/main/resources/org/apache/spark/ui/static/environmentpage.js",
- "core/src/main/resources/org/apache/spark/ui/static/executorspage.js",
- "core/src/main/resources/org/apache/spark/ui/static/flamegraph.js",
- "core/src/main/resources/org/apache/spark/ui/static/historypage-common.js",
- "core/src/main/resources/org/apache/spark/ui/static/historypage.js",
- "core/src/main/resources/org/apache/spark/ui/static/initialize-tooltips.js",
- "core/src/main/resources/org/apache/spark/ui/static/log-view.js",
- "core/src/main/resources/org/apache/spark/ui/static/scroll-button.js",
- "core/src/main/resources/org/apache/spark/ui/static/spark-dag-viz.js",
- "core/src/main/resources/org/apache/spark/ui/static/stagepage.js",
- "core/src/main/resources/org/apache/spark/ui/static/streaming-page.js",
- "core/src/main/resources/org/apache/spark/ui/static/structured-streaming-page.js",
- "core/src/main/resources/org/apache/spark/ui/static/table.js",
- "core/src/main/resources/org/apache/spark/ui/static/timeline-view.js",
- "core/src/main/resources/org/apache/spark/ui/static/utils.js",
- "core/src/main/resources/org/apache/spark/ui/static/webui.js"
- ]
-}
From 1a2893bdb94c5f7a4d55f5540eab26b4129567e0 Mon Sep 17 00:00:00 2001
From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
Date: Tue, 20 Oct 2026 16:18:05 +0200
Subject: [PATCH 5/8] Comment on zip requirement
---
spark-k8s/Dockerfile.4 | 1 +
1 file changed, 1 insertion(+)
diff --git a/spark-k8s/Dockerfile.4 b/spark-k8s/Dockerfile.4
index eef490381..5bde63646 100644
--- a/spark-k8s/Dockerfile.4
+++ b/spark-k8s/Dockerfile.4
@@ -60,6 +60,7 @@ COPY --from=hadoop-builder --chown=${STACKABLE_USER_UID}:0 /stackable/patched-li
# package manifest and no lockfile, so cdxgen cannot see them either.
RUN <
Date: Tue, 20 Oct 2026 16:57:28 +0200
Subject: [PATCH 6/8] Use the same openlineage version across all Spark images
---
spark-k8s/boil-config.toml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/spark-k8s/boil-config.toml b/spark-k8s/boil-config.toml
index d5a0bfb7b..c73881536 100644
--- a/spark-k8s/boil-config.toml
+++ b/spark-k8s/boil-config.toml
@@ -16,7 +16,7 @@ stax2-api-version = "4.2.2" # Needs to match https://mvnrepository
woodstox-core-version = "7.1.1" # Needs to match https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.21.2
jmx-exporter-version = "1.3.0"
tini-version = "0.19.0"
-openlineage-spark-version = "1.51.0" # Scala 2.13 build for Spark 4.1.x; see https://mvnrepository.com/artifact/io.openlineage/openlineage-spark_2.13
+openlineage-spark-version = "1.54.0" # Scala 2.13 build for Spark 4.x; see https://mvnrepository.com/artifact/io.openlineage/openlineage-spark_2.13
# LTS since 26.11.0
[versions."4.1.3"]
@@ -34,7 +34,7 @@ stax2-api-version = "4.2.2" # Needs to match https://mvnrepository
woodstox-core-version = "7.1.1" # Needs to match https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.21.2
jmx-exporter-version = "1.3.0"
tini-version = "0.19.0"
-openlineage-spark-version = "1.51.0" # Scala 2.13 build for Spark 4.1.x; see https://mvnrepository.com/artifact/io.openlineage/openlineage-spark_2.13
+openlineage-spark-version = "1.54.0" # Scala 2.13 build for Spark 4.x; see https://mvnrepository.com/artifact/io.openlineage/openlineage-spark_2.13
[versions."4.2.0"]
containerfile = "Dockerfile.4"
From 394f0b586595ee34dc7464e02a761b721dcea270 Mon Sep 17 00:00:00 2001
From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
Date: Tue, 20 Oct 2026 20:55:20 +0200
Subject: [PATCH 7/8] Revire feedback: bump Python version for 4.2.0
---
spark-k8s/boil-config.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/spark-k8s/boil-config.toml b/spark-k8s/boil-config.toml
index c73881536..e5590cb1d 100644
--- a/spark-k8s/boil-config.toml
+++ b/spark-k8s/boil-config.toml
@@ -45,7 +45,7 @@ java-base = "21"
java-devel = "21"
[versions."4.2.0".build-arguments]
-python-version = "3.12"
+python-version = "3.14"
jackson-dataformat-xml-version = "2.21.2" # Needs to match https://mvnrepository.com/artifact/org.apache.spark/spark-parent_2.13/4.2.0
stax2-api-version = "4.2.2" # Needs to match https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.21.2
woodstox-core-version = "7.1.1" # Needs to match https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.21.2
From a636b64397150eac824ae77b182ac72910dc4a2d Mon Sep 17 00:00:00 2001
From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com>
Date: Wed, 21 Oct 2026 08:58:25 +0200
Subject: [PATCH 8/8] Bump java version for 4.2.0
---
spark-k8s/boil-config.toml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/spark-k8s/boil-config.toml b/spark-k8s/boil-config.toml
index e5590cb1d..8de6613b1 100644
--- a/spark-k8s/boil-config.toml
+++ b/spark-k8s/boil-config.toml
@@ -41,8 +41,8 @@ containerfile = "Dockerfile.4"
[versions."4.2.0".local-images]
"hadoop/hadoop" = "3.5.0"
-java-base = "21"
-java-devel = "21"
+java-base = "25"
+java-devel = "25"
[versions."4.2.0".build-arguments]
python-version = "3.14"