From 71375e844a17180aa4806c8ccf277b1ec8cdbb8a Mon Sep 17 00:00:00 2001 From: Maxi Wittich Date: Wed, 7 Oct 2026 10:29:10 +0200 Subject: [PATCH 1/2] Update to merged state in operator-templating --- .pre-commit-config.yaml | 10 +++++++++ typos.toml | 50 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 typos.toml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 02e0446b3..80e826e30 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,6 +6,16 @@ default_language_version: node: system repos: + - repo: https://github.com/crate-ci/typos + rev: 00f422f3b19c57bc6338715ebfe3316d38768461 # v1.50.3 + hooks: + - id: typos + # Drop the upstream default `--write-changes` so the hook only + # reports failures instead of writing changes. + # Keep `--force-exclude` so the excludes in typos.toml still + # apply to the paths prek passes in. + args: ["--force-exclude"] + - repo: https://github.com/pre-commit/pre-commit-hooks rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # 6.0.0 hooks: diff --git a/typos.toml b/typos.toml new file mode 100644 index 000000000..0719d9624 --- /dev/null +++ b/typos.toml @@ -0,0 +1,50 @@ +# Configuration for typos (https://github.com/crate-ci/typos), run via the prek +# hook in .pre-commit-config.yaml. + +[files] +# Bare `typos` skips hidden dirs by default, but prek passes explicit paths and +# so does check them. Turn it off so both agree. +ignore-hidden = false + +extend-exclude = [ + # Ignore `.git`, which the above `ignore-hidden = false` would otherwise pull in. + ".git/", + # Upstream patches, already skipped by the prek `exclude: \.patch$`. Listed here + # so a bare `typos` run agrees. + "*.patch", + # Verbatim third-party licence texts. Not ours to correct. + "**/licenses/**", + # Base64-encoded CA certificates. + "stackable-base/stackable/ca-cert-blocklist/**", + # pip constraint files taken from upstream Airflow. They are lists of + # package names, not prose. + "airflow/stackable/constraints/**", +] + +[default] +# typos has no native suppression directive +# (https://github.com/crate-ci/typos/issues/316), so these regexes provide one. +# A marker must sit in a comment: after `#`, `//` or `;` (free text may follow), +# or inside a closed ``, `/* */` or `{# #}` (free text may precede the +# closer). An unterminated `typos:ignore-block-start` suppresses nothing. +# +# Use one of the following when the word is correct at one place but would still be a typo elsewhere: +# +# # typos:ignore-line at the end of the line it applies to +# # typos:ignore-next-line on its own line, above the offending line +# # typos:ignore-block-start / typos:ignore-block-end around a block +extend-ignore-re = [ + '(?Rm)^.*?(?:(?:^|[^{])(?:#|//|;)[ \t]*typos:ignore-line\b.*|(?:|/\*[ \t]*typos:ignore-line\b.*?\*/|\{#[ \t]*typos:ignore-line\b.*?#\})[ \t]*)$', + '(?Rm)^[ \t]*(?:(?:#|//|;)[ \t]*typos:ignore-next-line\b.*|(?:|/\*[ \t]*typos:ignore-next-line\b.*?\*/|\{#[ \t]*typos:ignore-next-line\b.*?#\})[ \t]*)\r?\n.*$', + '(?ms)(?:(?:^|[^{])(?:#|//|;)[ \t]*typos:ignore-block-start\b||/\*[ \t]*typos:ignore-block-start\b[^\n]*?\*/|\{#[ \t]*typos:ignore-block-start\b[^\n]*?#\}).*?(?:(?:^|[^{])(?:#|//|;)[ \t]*typos:ignore-block-end\b||/\*[ \t]*typos:ignore-block-end\b[^\n]*?\*/|\{#[ \t]*typos:ignore-block-end\b[^\n]*?#\})', +] + +# Before adding an entry in here, consider an in-place marker instead. +# Every entry below gets a one-line comment saying what the word is. +[default.extend-words] +# Vertica, the database. `apache-airflow-providers-vertica` is a real package +# name in airflow/boil-config.toml, on lines too long to carry a marker. +vertica = "vertica" +# Maven profile activation flag, as in `mvn -Prelease` (hbase/hbase/Dockerfile). +# It sits inside a RUN continuation, where a trailing comment would break the line. +Prelease = "Prelease" From 2c53ff45c8d9141e6fcaa73dfbc258ab3d3b857f Mon Sep 17 00:00:00 2001 From: Maxi Wittich Date: Wed, 7 Oct 2026 10:30:50 +0200 Subject: [PATCH 2/2] Adding typo corrections --- .github/workflows/preflight.yaml | 2 +- .scripts/update_feature_tracker_db.sh | 4 ++-- .scripts/update_readme_badges.sh | 8 ++++---- CHANGELOG.md | 2 +- airflow/Dockerfile | 2 +- airflow/README.md | 2 +- .../airflow-2/opa_auth_manager/opa_fab_auth_manager.py | 2 +- .../airflow-3/opa_auth_manager/opa_fab_auth_manager.py | 2 +- airflow/stackable/utils/entrypoint.sh | 4 ++-- hbase/README.md | 2 +- hbase/hbase/stackable/bin/hbase-entrypoint.sh | 2 +- opa/Dockerfile | 2 +- rust/boil/src/core/bakefile.rs | 2 +- rust/boil/src/core/image.rs | 4 ++-- rust/boil/src/utils.rs | 2 +- rustfmt.toml | 2 +- shared/statsd-exporter/Dockerfile | 2 +- spark-k8s/stackable/jmx/config.yaml | 2 +- stackable-base/Dockerfile | 2 +- superset/Dockerfile | 8 ++++---- trino-cli/upload_new_trino_version.sh | 2 ++ trino/trino/Dockerfile | 4 ++-- 22 files changed, 33 insertions(+), 31 deletions(-) diff --git a/.github/workflows/preflight.yaml b/.github/workflows/preflight.yaml index 803c5f7ff..d455390a8 100644 --- a/.github/workflows/preflight.yaml +++ b/.github/workflows/preflight.yaml @@ -7,7 +7,7 @@ # The primary reason for this is that it made the release process unnecessary # chaotic. The RH tech portal is notoriously unstable, and in cases where it # failed to respond, a way to re-run the preflight checks was necessary. -# But the preflight checks were trigerred only after a successful release +# But the preflight checks were triggered only after a successful release # workflow, which it's self was only triggered by a new tag. # # As you can imagine, retagging this repository just to force a new round diff --git a/.scripts/update_feature_tracker_db.sh b/.scripts/update_feature_tracker_db.sh index 1fc52be4f..074714d4e 100755 --- a/.scripts/update_feature_tracker_db.sh +++ b/.scripts/update_feature_tracker_db.sh @@ -196,7 +196,7 @@ main() { IMAGES=$(crane ls "${REPOSITORY_NAME}" | grep "stackable${RELEASE_VERSION}" | xargs -I '{}' echo "${REPOSITORY_NAME}":'{}') - # Linter complains about usless echo in $(echo $IMAGES) + # Linter complains about useless echo in $(echo $IMAGES) # but the "echo" is necessary to split IMAGES into multiple lines. # Otherwise IMAGE_NAME contains a long string with all images separated by # newline. @@ -209,7 +209,7 @@ main() { PRODUCT_IMAGE_DIGEST=$(product_image_digest "${IMAGE_NAME}") - echo "Updating compnents for image $IMAGE_NAME" + echo "Updating components for image $IMAGE_NAME" update_release_components "${RELEASE_VERSION}" "${PRODUCT_VERSION_ID}" "${REPOSITORY_NAME}" "${PRODUCT_IMAGE_DIGEST}" done diff --git a/.scripts/update_readme_badges.sh b/.scripts/update_readme_badges.sh index 4020f13f5..85004156e 100755 --- a/.scripts/update_readme_badges.sh +++ b/.scripts/update_readme_badges.sh @@ -6,11 +6,11 @@ set -euo pipefail RELATIVE_PATH=$(realpath -s --relative-to "$PWD" "$0") -# START: Configurables +# START: Configurables # typos:ignore-line AUTO_GENERATED_COMMENT="autogenerated by $RELATIVE_PATH" GITHUB_ACTION_URL_PREFIX="https://github.com/stackabletech/docker-images/actions/workflows" COLS=4 -# END: Configurables +# END: Configurables # typos:ignore-line LINK_SHORTCUTS=() CURRENT_COLUMN=-1 @@ -74,8 +74,8 @@ echo "" >> "$LINKS_TMP" printf '%s\n' "${LINK_SHORTCUTS[@]}" >> "$LINKS_TMP" echo -n "" >> "$LINKS_TMP" -BADGES_CONTENT=$(sed ':a;N;$!ba;s/\n/\\n/g' "$BADGES_TMP") -LINKS_CONTENT=$(sed ':a;N;$!ba;s/\n/\\n/g' "$LINKS_TMP") +BADGES_CONTENT=$(sed ':a;N;$!ba;s/\n/\\n/g' "$BADGES_TMP") # typos:ignore-line +LINKS_CONTENT=$(sed ':a;N;$!ba;s/\n/\\n/g' "$LINKS_TMP") # typos:ignore-line README_TMP=$(mktemp) diff --git a/CHANGELOG.md b/CHANGELOG.md index d7951f862..029b6ec88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1034,7 +1034,7 @@ All notable changes to this project will be documented in this file. - trino: Remove unsupported version 428 ([#687]). - nifi: Remove unsupported version 1.23.2 ([#744]). - kafka: Remove unsupported version `3.5.2` ([#745]). -- airflow: Remove unsupprted version `2.7.2`, `2.7.3` and `2.8.3` ([#762]). +- airflow: Remove unsupported version `2.7.2`, `2.7.3` and `2.8.3` ([#762]). - superset: Remove version `2.1.1`, `3.0.1` and `3.0.3` ([#768]). - druid: Remove support for 27.0.0 ([#731]) - spark-k8s: Remove support for `3.4.1` and `3.5.0` ([#771]). diff --git a/airflow/Dockerfile b/airflow/Dockerfile index 87bb30dee..f692ba0b9 100644 --- a/airflow/Dockerfile +++ b/airflow/Dockerfile @@ -79,7 +79,7 @@ ARG CDXGEN_SPEC_VERSION # Requires implementation of https://github.com/apache/airflow/blob/main/scripts/docker/install_mysql.sh # The providers are split into separate lists to make it easier to manage # (and to compare to the online links). Default values are provided for -# backwards compatability. +# backwards compatibility. ARG AIRFLOW_EXTRAS_CORE="" ARG AIRFLOW_EXTRAS_META="" ARG AIRFLOW_EXTRAS_PROVIDER_APACHE="" diff --git a/airflow/README.md b/airflow/README.md index b7292c30e..e84181b5f 100644 --- a/airflow/README.md +++ b/airflow/README.md @@ -21,7 +21,7 @@ Successfully pulled new constraints file: constraints-3.3.1-python3.14.txt ## Airflow providers/extras The providers are released independently of Airflow. -The list of provider packages are listed in the build configuration file, matching the groups used in the online documentation to make them easier to compare and manage (these will be concatentated into a single list in the Dockerfile). +The list of provider packages are listed in the build configuration file, matching the groups used in the online documentation to make them easier to compare and manage (these will be concatenated into a single list in the Dockerfile). The expected versions are listed in the constraints files, but these can change over time. To keep the installation tightly coupled to the associated constraints it is best to only use providers listed in the relevant constraints file. diff --git a/airflow/opa-auth-manager/airflow-2/opa_auth_manager/opa_fab_auth_manager.py b/airflow/opa-auth-manager/airflow-2/opa_auth_manager/opa_fab_auth_manager.py index b043dccf5..feab01cf2 100644 --- a/airflow/opa-auth-manager/airflow-2/opa_auth_manager/opa_fab_auth_manager.py +++ b/airflow/opa-auth-manager/airflow-2/opa_auth_manager/opa_fab_auth_manager.py @@ -94,7 +94,7 @@ def call_opa(self, url: str, json: dict, timeout: int) -> requests.Response: """ Send a POST request to OPA. - This function can be overriden in tests. + This function can be overridden in tests. :param url: URL for the OPA rule :param json: json to send in the body diff --git a/airflow/opa-auth-manager/airflow-3/opa_auth_manager/opa_fab_auth_manager.py b/airflow/opa-auth-manager/airflow-3/opa_auth_manager/opa_fab_auth_manager.py index 9bf1dd924..d22723be9 100644 --- a/airflow/opa-auth-manager/airflow-3/opa_auth_manager/opa_fab_auth_manager.py +++ b/airflow/opa-auth-manager/airflow-3/opa_auth_manager/opa_fab_auth_manager.py @@ -133,7 +133,7 @@ def call_opa(self, url: str, json: dict, timeout: int) -> requests.Response: """ Send a POST request to OPA. - This function can be overriden in tests. + This function can be overridden in tests. :param url: URL for the OPA rule :param json: json to send in the body diff --git a/airflow/stackable/utils/entrypoint.sh b/airflow/stackable/utils/entrypoint.sh index e478d9601..fb0ce94a9 100644 --- a/airflow/stackable/utils/entrypoint.sh +++ b/airflow/stackable/utils/entrypoint.sh @@ -284,8 +284,8 @@ unset PIP_USER # check_uid_gid # STACKABLE PATCH END -# Set umask to 0002 to make all the directories created by the current user group-writeable -# This allows the same directories to be writeable for any arbitrary user the image will be +# Set umask to 0002 to make all the directories created by the current user group-writable +# This allows the same directories to be writable for any arbitrary user the image will be # run with, when the directory is created on a mounted volume and when that volume is later # reused with a different UID (but with GID=0) umask 0002 diff --git a/hbase/README.md b/hbase/README.md index 8ee6d1ad3..03f2afb88 100644 --- a/hbase/README.md +++ b/hbase/README.md @@ -5,7 +5,7 @@ As of SDP release 25.3, HBase 2.6.x is fully supported. ## Phoenix HBase 2.6 support [was added](https://github.com/apache/phoenix/pull/1793) with [PHOENIX-7172](https://issues.apache.org/jira/browse/PHOENIX-7172) and released with Phoenix 5.2.1, which is included since SDP 25.3. -SDP 24.7 included Phoenix built from the master branch from commit [4afe457](https://github.com/apache/phoenix/tree/4afe4579bb3ab01725e4939746d0b7b807b438ac). +SDP 24.7 included Phoenix built from the master branch from commit [4afe457](https://github.com/apache/phoenix/tree/4afe4579bb3ab01725e4939746d0b7b807b438ac). ## HBase operator tools diff --git a/hbase/hbase/stackable/bin/hbase-entrypoint.sh b/hbase/hbase/stackable/bin/hbase-entrypoint.sh index f21d95de6..44763c1e0 100755 --- a/hbase/hbase/stackable/bin/hbase-entrypoint.sh +++ b/hbase/hbase/stackable/bin/hbase-entrypoint.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Entrypoint for HBase that ensures services are shutdown gracefuly +# Entrypoint for HBase that ensures services are shutdown gracefully # # Expects the following env vars: # - RUN_REGION_MOVER: if set to true, the region mover will be run before region server shutdown diff --git a/opa/Dockerfile b/opa/Dockerfile index cb1f3bc85..ea19e06a0 100644 --- a/opa/Dockerfile +++ b/opa/Dockerfile @@ -88,7 +88,7 @@ tar -czf /stackable/opa-${NEW_VERSION}-src.tar.gz . rm .git git init git config user.email "fake.commiter@stackable.tech" -git config user.name "Fake commiter" +git config user.name "Fake committer" git commit --allow-empty --message "Fake commit, so that we can create a tag" git tag "v${NEW_VERSION}" go build -o opa -buildmode=exe diff --git a/rust/boil/src/core/bakefile.rs b/rust/boil/src/core/bakefile.rs index a47b59182..46b762146 100644 --- a/rust/boil/src/core/bakefile.rs +++ b/rust/boil/src/core/bakefile.rs @@ -285,7 +285,7 @@ impl Targets { } // Remove the last dependency as soon as we are done looking at that particular - // dependency (name+version combination). We do this because we are not decending + // dependency (name+version combination). We do this because we are not descending // down the chain for this particular dependency anymore, but instead move to the // next dependency at the same level of depth. Illustration: // diff --git a/rust/boil/src/core/image.rs b/rust/boil/src/core/image.rs index 37ec2bcbe..55775e4dc 100644 --- a/rust/boil/src/core/image.rs +++ b/rust/boil/src/core/image.rs @@ -37,13 +37,13 @@ impl FromStr for ImageSelector { type Err = ParseImageSelectorError; fn from_str(input: &str) -> Result { - // Get rid of any leading and traling whitespace + // Get rid of any leading and trailing whitespace let input = input.trim(); ensure!(!input.is_empty(), EmptyInputSnafu); let parts: Vec<_> = input.split('=').collect(); - // Ensure that the path/image name is not empty, doesn't contain '~', and is not abolute. + // Ensure that the path/image name is not empty, doesn't contain '~', and is not absolute. ensure!(!parts[0].is_empty(), InvalidFormatSnafu); ensure!(!parts[0].contains('~'), UnsupportedCharsSnafu); ensure!(!parts[0].starts_with('/'), AbsolutePathSnafu); diff --git a/rust/boil/src/utils.rs b/rust/boil/src/utils.rs index 4825c2b9a..a0dea971f 100644 --- a/rust/boil/src/utils.rs +++ b/rust/boil/src/utils.rs @@ -14,7 +14,7 @@ static SEMVER_PRERELEASE_FLOATING: LazyLock = LazyLock::new(|| { Regex::new("^dev(?:-.+)?$|^pr.+$").expect("static regular expression must compile") }); -// FIXME (@Techassi): We should pull this in from a central pice of code, like stackable-shared. +// FIXME (@Techassi): We should pull this in from a central piece of code, like stackable-shared. // stackable-shared needs to add a few features to be able to properly select _only_ what is needed // without pulling in too many unused deps. pub trait VersionExt { diff --git a/rustfmt.toml b/rustfmt.toml index 07217b21f..03d21a4f6 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -1,5 +1,5 @@ # This file includes unstable features, so you need to run "cargo +nightly fmt" to format your code. -# It's also ok to use the stable toolchain by simple running "cargo fmt", but using the nigthly formatter is prefered. +# It's also ok to use the stable toolchain by simple running "cargo fmt", but using the nightly formatter is preferred. # https://doc.rust-lang.org/nightly/edition-guide/rust-2024/rustfmt-style-edition.html style_edition = "2024" diff --git a/shared/statsd-exporter/Dockerfile b/shared/statsd-exporter/Dockerfile index 75f83092d..9771d88b7 100644 --- a/shared/statsd-exporter/Dockerfile +++ b/shared/statsd-exporter/Dockerfile @@ -53,7 +53,7 @@ go install "github.com/CycloneDX/cyclonedx-gomod/cmd/cyclonedx-gomod@v${CYCLONED rm .git git init git config user.email "fake.commiter@stackable.tech" - git config user.name "Fake commiter" + git config user.name "Fake committer" git commit --allow-empty --message "Fake commit, so that we can create a tag" git tag "v${PRODUCT_VERSION}" go build -o /statsd_exporter/statsd_exporter diff --git a/spark-k8s/stackable/jmx/config.yaml b/spark-k8s/stackable/jmx/config.yaml index 570da68b6..ad445d2c1 100644 --- a/spark-k8s/stackable/jmx/config.yaml +++ b/spark-k8s/stackable/jmx/config.yaml @@ -20,7 +20,7 @@ rules: app_id: "$1" # These come from the application driver - # Emulate timers for DAGScheduler like messagePRocessingTime + # Emulate timers for DAGScheduler like messageProcessingTime - pattern: "metrics<>Count" name: spark_driver_DAGScheduler_$2_total type: COUNTER diff --git a/stackable-base/Dockerfile b/stackable-base/Dockerfile index 497c290ac..c6e34598a 100644 --- a/stackable-base/Dockerfile +++ b/stackable-base/Dockerfile @@ -192,7 +192,7 @@ COPY --chown=${STACKABLE_USER_UID}:0 shared/checks/check-permissions-ownership.s ENV PATH="${PATH}:/stackable" -# These labels have mostly been superceded by the OpenContainer spec annotations below but it doesn't hurt to include them +# These labels have mostly been superseded by the OpenContainer spec annotations below but it doesn't hurt to include them # http://label-schema.org/rc1/ LABEL maintainer="info@stackable.tech" LABEL vendor="Stackable GmbH" diff --git a/superset/Dockerfile b/superset/Dockerfile index 862316ad3..727c1183e 100644 --- a/superset/Dockerfile +++ b/superset/Dockerfile @@ -55,9 +55,9 @@ RUN microdnf update \ # Needed by ./configure to work out SQLite compilation flags, see snippet [1] at the end of file diffutils \ # According to https://stackoverflow.com/q/19530974 normally sqlite3 should be shipped with the Python - # distribution. However, while addig ARM support we noticed that this does not seem to be the case for the + # distribution. However, while adding ARM support we noticed that this does not seem to be the case for the # Python installation shipped in the ARM image variant. So I guess Make is used to find out the sqlite - # compilation flags (and propably to not build sqlite from source(?)), see snippet [1] at the end of file + # compilation flags (and probably to not build sqlite from source(?)), see snippet [1] at the end of file make \ gcc \ gcc-c++ \ @@ -122,7 +122,7 @@ EOF # Upgrade pip to the latest version # Also install uv to get support for build constraints -# DL3042 false-positive, --no-chache-dir is specified a few lines below. +# DL3042 false-positive, --no-cache-dir is specified a few lines below. # See https://github.com/hadolint/hadolint/issues/1042. # hadolint ignore=DL3042 RUN <