diff --git a/.scripts/upload_new_nvm_version.sh b/.scripts/upload_new_nvm_version.sh new file mode 100755 index 000000000..871618857 --- /dev/null +++ b/.scripts/upload_new_nvm_version.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +set -euo pipefail + +VERSION=${1:?"Missing version number argument (arg 1)"} +NEXUS_USER=${2:?"Missing Nexus username argument (arg 2)"} + +read -r -s -p "Nexus Password: " NEXUS_PASSWORD +echo "" + +# https://stackoverflow.com/questions/4632028/how-to-create-a-temporary-directory +# Find the directory name of the script +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# the temp directory used, within $DIR +WORK_DIR=$(mktemp -d -p "$DIR") + +# check if tmp dir was created +if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then + echo "Could not create temp dir" + exit 1 +fi + +# deletes the temp directory +function cleanup { + rm -rf "$WORK_DIR" +} + +# register the cleanup function to be called on the EXIT signal +trap cleanup EXIT + +cd "$WORK_DIR" || exit + +echo "Downloading nvm.sh @ $VERSION from github.com" +curl --fail -L --progress-bar -o "nvm-$VERSION.sh" "https://raw.githubusercontent.com/nvm-sh/nvm/refs/tags/${VERSION}/nvm.sh" + +echo "Uploading nvm-$VERSION.sh to Nexus" +curl --fail -o /dev/null --progress-bar -u "$NEXUS_USER:$NEXUS_PASSWORD" \ + --upload-file "nvm-$VERSION.sh" \ + 'https://repo.stackable.tech/repository/packages/nvm/' + +echo "Successfully uploaded new version $VERSION to Nexus" +echo "https://repo.stackable.tech/service/rest/repository/browse/packages/nvm/" diff --git a/superset/Dockerfile b/superset/Dockerfile index 2c6f6e5c3..99c72e425 100644 --- a/superset/Dockerfile +++ b/superset/Dockerfile @@ -43,10 +43,10 @@ ARG TARGETOS ARG CYCLONEDX_BOM_VERSION ARG UV_VERSION ARG NODEJS_VERSION +ARG NVM_VERSION ARG STACKABLE_USER_UID -RUN microdnf module enable -y nodejs:${NODEJS_VERSION} && \ - microdnf update \ +RUN microdnf update \ && microdnf install \ cyrus-sasl-devel \ # Needed by ./configure to work out SQLite compilation flags, see snippet [1] at the end of file @@ -66,9 +66,6 @@ RUN microdnf module enable -y nodejs:${NODEJS_VERSION} && \ python${PYTHON_VERSION}-pip \ python${PYTHON_VERSION}-wheel \ libpq-devel \ - # Needed to build Superset UI assets - npm \ - nodejs \ # Needed to create the source code snapshot tar \ # Needed by `npm run build`: @@ -86,12 +83,27 @@ COPY --chown=${STACKABLE_USER_UID}:0 superset/stackable/patches/${PRODUCT_VERSIO WORKDIR /stackable +RUN < +Date: Tue, 7 Apr 2026 08:56:30 +0200 +Subject: Pin @types/offscreencanvas to 2019.7.0 + +This is again a similar issue like #1363. +--- + superset-frontend/package.json | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/superset-frontend/package.json b/superset-frontend/package.json +index 0f59fff60..bc2746107 100644 +--- a/superset-frontend/package.json ++++ b/superset-frontend/package.json +@@ -365,6 +365,7 @@ + "ansi-regex": "^4.1.1" + }, + "puppeteer": "^22.4.1", ++ "@types/offscreencanvas": "2019.7.0", + "@types/react": "^16.9.53", + "sax": "1.2.4" + }, diff --git a/superset/stackable/patches/4.1.4/0004-Re-generate-package-lock.json-file.patch b/superset/stackable/patches/4.1.4/0004-Re-generate-package-lock.json-file.patch new file mode 100644 index 000000000..b6a8aa5b6 --- /dev/null +++ b/superset/stackable/patches/4.1.4/0004-Re-generate-package-lock.json-file.patch @@ -0,0 +1,130 @@ +From 9df113e76d522299762d4e9a3dcea4b5a54a732f Mon Sep 17 00:00:00 2001 +From: Techassi +Date: Wed, 8 Apr 2026 13:11:03 +0200 +Subject: Re-generate package-lock.json file + +This file was re-generated using npm 10.8.2 and Node 20.20.2. +--- + superset-frontend/package-lock.json | 56 +++++++++++++++++++++++++---- + 1 file changed, 49 insertions(+), 7 deletions(-) + +diff --git a/superset-frontend/package-lock.json b/superset-frontend/package-lock.json +index a137adab3..9329cb321 100644 +--- a/superset-frontend/package-lock.json ++++ b/superset-frontend/package-lock.json +@@ -1,12 +1,12 @@ + { + "name": "superset", +- "version": "4.1.3", ++ "version": "4.1.4", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "superset", +- "version": "4.1.3", ++ "version": "4.1.4", + "license": "Apache-2.0", + "workspaces": [ + "packages/*", +@@ -83,7 +83,7 @@ + "json-bigint": "^1.0.0", + "json-stringify-pretty-compact": "^2.0.0", + "lodash": "^4.17.21", +- "luxon": "^3.5.0", ++ "luxon": "3.6.1", + "mapbox-gl": "^2.10.0", + "markdown-to-jsx": "^7.4.7", + "match-sorter": "^6.3.4", +@@ -14922,6 +14922,27 @@ + "optional": true, + "peer": true + }, ++ "node_modules/@swc/helpers": { ++ "version": "0.5.21", ++ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.21.tgz", ++ "integrity": "sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==", ++ "dev": true, ++ "license": "Apache-2.0", ++ "optional": true, ++ "peer": true, ++ "dependencies": { ++ "tslib": "^2.8.0" ++ } ++ }, ++ "node_modules/@swc/helpers/node_modules/tslib": { ++ "version": "2.8.1", ++ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", ++ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", ++ "dev": true, ++ "license": "0BSD", ++ "optional": true, ++ "peer": true ++ }, + "node_modules/@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", +@@ -73002,7 +73023,7 @@ + "@math.gl/core": "^3.5.0", + "@probe.gl/env": "^3.5.0", + "@probe.gl/stats": "^3.5.0", +- "@types/offscreencanvas": "^2019.7.0" ++ "@types/offscreencanvas": "2019.7.0" + } + }, + "@luma.gl/experimental": { +@@ -73024,7 +73045,7 @@ + "@luma.gl/constants": "8.5.20", + "@probe.gl/env": "^3.5.0", + "@probe.gl/log": "^3.5.0", +- "@types/offscreencanvas": "^2019.7.0" ++ "@types/offscreencanvas": "2019.7.0" + } + }, + "@luma.gl/shadertools": { +@@ -79374,6 +79395,27 @@ + "optional": true, + "peer": true + }, ++ "@swc/helpers": { ++ "version": "0.5.21", ++ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.21.tgz", ++ "integrity": "sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==", ++ "dev": true, ++ "optional": true, ++ "peer": true, ++ "requires": { ++ "tslib": "^2.8.0" ++ }, ++ "dependencies": { ++ "tslib": { ++ "version": "2.8.1", ++ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", ++ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", ++ "dev": true, ++ "optional": true, ++ "peer": true ++ } ++ } ++ }, + "@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", +@@ -95463,7 +95505,7 @@ + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", +- "sax": "^1.2.4", ++ "sax": "1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", +@@ -103564,7 +103606,7 @@ + "optional": true, + "requires": { + "iconv-lite": "^0.6.3", +- "sax": "^1.2.4" ++ "sax": "1.2.4" + }, + "dependencies": { + "iconv-lite": {