From a0802acf17e6ff079b81be2616c06a64b3ea8d3d Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Thu, 31 Jul 2025 18:12:34 +0200 Subject: [PATCH 1/3] chore(cross): Install python 3.13.5 --- rust/cubestore/cross/README.md | 6 +- ...arch64-unknown-linux-gnu-python.Dockerfile | 5 +- .../aarch64-unknown-linux-gnu.Dockerfile | 2 +- rust/cubestore/cross/docker-bake.hcl | 81 ++++++++++--------- ...x86_64-unknown-linux-gnu-python.Dockerfile | 5 +- .../cross/x86_64-unknown-linux-gnu.Dockerfile | 2 +- 6 files changed, 54 insertions(+), 47 deletions(-) diff --git a/rust/cubestore/cross/README.md b/rust/cubestore/cross/README.md index f348abb69f240..421ade2343892 100644 --- a/rust/cubestore/cross/README.md +++ b/rust/cubestore/cross/README.md @@ -15,15 +15,15 @@ Keep in mind: - Don't use modern unix*, which ship newest `libc` (current used 2.31) - Better to use one clang/gcc version across images (`clang-14`) - Try to use one OS for all images (`debian`) for unix* -- Install 3 last versions for Python (`3.9`, `3.10`, `3.11`) ```sh -# dmY +export DOCKER_BUILDKIT_MAX_PARALLELISM=2 docker buildx bake x86_64-unknown-linux-gnu-python --push docker buildx bake aarch64-unknown-linux-gnu-python --push docker buildx bake x86_64-unknown-linux-musl-python --push -export CROSS_VERSION=01082024 +# dmY +export CROSS_VERSION=31072025 # Verify versions docker run --platform linux/amd64 --rm -it cubejs/rust-cross:x86_64-unknown-linux-gnu-$CROSS_VERSION cc --version diff --git a/rust/cubestore/cross/aarch64-unknown-linux-gnu-python.Dockerfile b/rust/cubestore/cross/aarch64-unknown-linux-gnu-python.Dockerfile index 71817a2bc8faa..bf9d2466776e0 100644 --- a/rust/cubestore/cross/aarch64-unknown-linux-gnu-python.Dockerfile +++ b/rust/cubestore/cross/aarch64-unknown-linux-gnu-python.Dockerfile @@ -1,14 +1,15 @@ FROM base ARG PYTHON_VERSION +ARG PYTHON_VERSION_SUFFIX ARG PYTHON_RELEASE # python is required for cross compiling python :D RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y python${PYTHON_RELEASE} \ && rm -rf /var/lib/apt/lists/*; -RUN wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz -O - | tar -xz \ - && cd Python-${PYTHON_VERSION} \ +RUN wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}${PYTHON_VERSION_SUFFIX}.tgz -O - | tar -xz \ + && cd Python-${PYTHON_VERSION}${PYTHON_VERSION_SUFFIX} \ && touch config.site-aarch64 \ && echo "ac_cv_buggy_getaddrinfo=no" >> config.site-aarch64 \ && echo "ac_cv_file__dev_ptmx=no" >> config.site-aarch64 \ diff --git a/rust/cubestore/cross/aarch64-unknown-linux-gnu.Dockerfile b/rust/cubestore/cross/aarch64-unknown-linux-gnu.Dockerfile index b8d1609370527..b5ab79e431a6b 100644 --- a/rust/cubestore/cross/aarch64-unknown-linux-gnu.Dockerfile +++ b/rust/cubestore/cross/aarch64-unknown-linux-gnu.Dockerfile @@ -45,7 +45,7 @@ RUN wget https://zlib.net/zlib-${ZLIB_VERSION}.tar.gz -O - | tar -xz && \ make install && \ cd .. && rm -rf zlib-${ZLIB_VERSION}; -# https://www.openssl.org/source/old/1.1.1/ +# https://openssl-library.org/source/old/1.1.1/ ENV OPENSSL_VERSION=1.1.1w RUN wget https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz -O - | tar -xz \ && cd openssl-${OPENSSL_VERSION} \ diff --git a/rust/cubestore/cross/docker-bake.hcl b/rust/cubestore/cross/docker-bake.hcl index f4c9f313f3d95..696b4ad3f82e1 100644 --- a/rust/cubestore/cross/docker-bake.hcl +++ b/rust/cubestore/cross/docker-bake.hcl @@ -1,11 +1,48 @@ variable "CROSS_VERSION" { - default = "01082024" + // dmY + default = "31072025" } variable "LLVM_VERSION" { default = "18" } +variable "PYTHON_VERSIONS" { + default = [ + # TODO: Enable after release. + # { + # python_version = "3.14.0" + # python_version_sufix = "rc1" + # python_release = "3.14" + # }, + { + python_version = "3.13.5" + python_version_sufix = "" + python_release = "3.13" + }, + { + python_version = "3.12.4" + python_version_sufix = "" + python_release = "3.12" + }, + { + python_version = "3.11.3" + python_version_sufix = "" + python_release = "3.11" + }, + { + python_version = "3.10.11" + python_version_sufix = "" + python_release = "3.10" + }, + { + python_version = "3.9.18" + python_version_sufix = "" + python_release = "3.9" + } + ] +} + target "aarch64-unknown-linux-gnu" { context = "." dockerfile = "aarch64-unknown-linux-gnu.Dockerfile" @@ -24,29 +61,13 @@ target "aarch64-unknown-linux-gnu-python" { dockerfile = "aarch64-unknown-linux-gnu-python.Dockerfile" name = "aarch64-unknown-linux-gnu-python-${replace(item.python_release, ".", "-")}" matrix = { - item = [ - { - python_version = "3.12.4" - python_release = "3.12" - }, - { - python_version = "3.11.3" - python_release = "3.11" - }, - { - python_version = "3.10.11" - python_release = "3.10" - }, - { - python_version = "3.9.18" - python_release = "3.9" - } - ] + item = PYTHON_VERSIONS } args = { CROSS_VERSION = CROSS_VERSION PYTHON_VERSION = item.python_version - PYTHON_RELEASE = item.python_release + PYTHON_RELEASE = item.python_release, + PYTHON_VERSION_SUFFIX = item.python_version_sufix } tags = ["cubejs/rust-cross:aarch64-unknown-linux-gnu-${CROSS_VERSION}-python-${item.python_release}"] platforms = ["linux/amd64"] @@ -80,29 +101,13 @@ target "x86_64-unknown-linux-gnu-python" { dockerfile = "x86_64-unknown-linux-gnu-python.Dockerfile" name = "x86_64-unknown-linux-gnu-python-${replace(item.python_release, ".", "-")}" matrix = { - item = [ - { - python_version = "3.12.4" - python_release = "3.12" - }, - { - python_version = "3.11.3" - python_release = "3.11" - }, - { - python_version = "3.10.11" - python_release = "3.10" - }, - { - python_version = "3.9.18" - python_release = "3.9" - } - ] + item = PYTHON_VERSIONS } args = { CROSS_VERSION = CROSS_VERSION PYTHON_VERSION = item.python_version PYTHON_RELEASE = item.python_release + PYTHON_VERSION_SUFFIX = item.python_version_sufix } tags = ["cubejs/rust-cross:x86_64-unknown-linux-gnu-${CROSS_VERSION}-python-${item.python_release}"] platforms = ["linux/amd64"] diff --git a/rust/cubestore/cross/x86_64-unknown-linux-gnu-python.Dockerfile b/rust/cubestore/cross/x86_64-unknown-linux-gnu-python.Dockerfile index d0a804339fea4..cae7244b9e1ca 100644 --- a/rust/cubestore/cross/x86_64-unknown-linux-gnu-python.Dockerfile +++ b/rust/cubestore/cross/x86_64-unknown-linux-gnu-python.Dockerfile @@ -1,10 +1,11 @@ FROM base ARG PYTHON_VERSION +ARG PYTHON_VERSION_SUFFIX ARG PYTHON_RELEASE -RUN cd tmp && wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz -O - | tar -xz \ - && cd Python-${PYTHON_VERSION} \ +RUN cd tmp && wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}${PYTHON_VERSION_SUFFIX}.tgz -O - | tar -xz \ + && cd Python-${PYTHON_VERSION}${PYTHON_VERSION_SUFFIX} \ && ./configure \ --enable-shared \ --with-openssl=/openssl \ diff --git a/rust/cubestore/cross/x86_64-unknown-linux-gnu.Dockerfile b/rust/cubestore/cross/x86_64-unknown-linux-gnu.Dockerfile index 8259d542af0df..c3fb508901755 100644 --- a/rust/cubestore/cross/x86_64-unknown-linux-gnu.Dockerfile +++ b/rust/cubestore/cross/x86_64-unknown-linux-gnu.Dockerfile @@ -19,7 +19,7 @@ RUN update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-$LLV && update-alternatives --install /usr/bin/cc cc /usr/bin/clang-$LLVM_VERSION 100 \ && update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-$LLVM_VERSION 100; -# https://www.openssl.org/source/old/1.1.1/ +# https://openssl-library.org/source/old/1.1.1/ ARG OPENSSL_VERSION=1.1.1w RUN cd tmp && wget https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz -O - | tar -xz \ && cd openssl-${OPENSSL_VERSION} \ From b5a25d04ec46b32715937390508ba03786c6c1bf Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Fri, 1 Aug 2025 15:05:03 +0200 Subject: [PATCH 2/3] chore: disable pgo for aarch64, because it's not supported with cross --- .../cross/aarch64-unknown-linux-gnu-python.Dockerfile | 2 +- .../cross/aarch64-unknown-linux-gnu.Dockerfile | 3 ++- rust/cubestore/cross/docker-bake.hcl | 11 +++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/rust/cubestore/cross/aarch64-unknown-linux-gnu-python.Dockerfile b/rust/cubestore/cross/aarch64-unknown-linux-gnu-python.Dockerfile index bf9d2466776e0..0e392e68be1db 100644 --- a/rust/cubestore/cross/aarch64-unknown-linux-gnu-python.Dockerfile +++ b/rust/cubestore/cross/aarch64-unknown-linux-gnu-python.Dockerfile @@ -8,6 +8,7 @@ ARG PYTHON_RELEASE RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y python${PYTHON_RELEASE} \ && rm -rf /var/lib/apt/lists/*; +# --enable-optimizations is disabled, because it's not supported with CROSS RUN wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}${PYTHON_VERSION_SUFFIX}.tgz -O - | tar -xz \ && cd Python-${PYTHON_VERSION}${PYTHON_VERSION_SUFFIX} \ && touch config.site-aarch64 \ @@ -16,7 +17,6 @@ RUN wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VER && echo "ac_cv_file__dev_ptc=no" >> config.site-aarch64 \ && CONFIG_SITE=config.site-aarch64 ./configure \ --enable-shared \ - --enable-optimizations \ --disable-ipv6 \ --prefix=/usr/aarch64-linux-gnu \ --build=aarch64-unknown-linux-gnu \ diff --git a/rust/cubestore/cross/aarch64-unknown-linux-gnu.Dockerfile b/rust/cubestore/cross/aarch64-unknown-linux-gnu.Dockerfile index b5ab79e431a6b..295d79da63e75 100644 --- a/rust/cubestore/cross/aarch64-unknown-linux-gnu.Dockerfile +++ b/rust/cubestore/cross/aarch64-unknown-linux-gnu.Dockerfile @@ -35,7 +35,8 @@ ENV ARCH=arm \ CC=aarch64-linux-gnu-gcc \ CXX=aarch64-linux-gnu-g++ \ CPP=aarch64-linux-gnu-cpp \ - LD=aarch64-linux-gnu-ld + LD=aarch64-linux-gnu-ld \ + RUNLIB=aarch64-linux-gnu-ranlib ENV ZLIB_VERSION=1.3.1 RUN wget https://zlib.net/zlib-${ZLIB_VERSION}.tar.gz -O - | tar -xz && \ diff --git a/rust/cubestore/cross/docker-bake.hcl b/rust/cubestore/cross/docker-bake.hcl index 696b4ad3f82e1..dcdcd32f1af48 100644 --- a/rust/cubestore/cross/docker-bake.hcl +++ b/rust/cubestore/cross/docker-bake.hcl @@ -9,12 +9,11 @@ variable "LLVM_VERSION" { variable "PYTHON_VERSIONS" { default = [ - # TODO: Enable after release. - # { - # python_version = "3.14.0" - # python_version_sufix = "rc1" - # python_release = "3.14" - # }, + { + python_version = "3.14.0" + python_version_sufix = "rc1" + python_release = "3.14" + }, { python_version = "3.13.5" python_version_sufix = "" From 68cd7ab5900ce6451648c94f598edb65cb86904e Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Fri, 1 Aug 2025 15:14:53 +0200 Subject: [PATCH 3/3] chore: disable pgo for aarch64, because it's not supported with cross --- rust/cubestore/cross/docker-bake.hcl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/rust/cubestore/cross/docker-bake.hcl b/rust/cubestore/cross/docker-bake.hcl index dcdcd32f1af48..696b4ad3f82e1 100644 --- a/rust/cubestore/cross/docker-bake.hcl +++ b/rust/cubestore/cross/docker-bake.hcl @@ -9,11 +9,12 @@ variable "LLVM_VERSION" { variable "PYTHON_VERSIONS" { default = [ - { - python_version = "3.14.0" - python_version_sufix = "rc1" - python_release = "3.14" - }, + # TODO: Enable after release. + # { + # python_version = "3.14.0" + # python_version_sufix = "rc1" + # python_release = "3.14" + # }, { python_version = "3.13.5" python_version_sufix = ""