From d47adec9a23c236974e8810e490aac2bbc6845dc Mon Sep 17 00:00:00 2001 From: puneetsharma21 Date: Mon, 21 Jul 2025 00:21:14 -0400 Subject: [PATCH 1/5] Update Dockerfile.konflux with Power support changes --- .../tools/docker_server/Dockerfile.konflux | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/ml_metadata/tools/docker_server/Dockerfile.konflux b/ml_metadata/tools/docker_server/Dockerfile.konflux index 667d16685..214e37ba0 100644 --- a/ml_metadata/tools/docker_server/Dockerfile.konflux +++ b/ml_metadata/tools/docker_server/Dockerfile.konflux @@ -15,11 +15,31 @@ RUN dnf install -y -q \ git \ findutils \ python3 + +RUN arch=$(uname -m) && \ + if [ "$arch" = "ppc64le" ]; then \ + echo "Setting up for ppc64le..." && \ + dnf install -y -q java-11-openjdk-devel wget; \ + fi -# Set up Bazel 5.3.0 -ENV BAZEL_VERSION 5.3.0 -WORKDIR / -RUN mkdir /bazel && \ + +# Set environment for Bazel and Java +ENV JAVA_HOME=/usr/lib/jvm/java-11 +ENV PATH=$JAVA_HOME/bin:$PATH +ENV BAZEL_VERSION=5.3.0 +ENV BAZEL_JOBS=8 + +RUN arch=$(uname -m) && \ + if [ "$arch" = "ppc64le" ]; then \ + echo "Setting up for ppc64le..." && \ + wget https://ftp2.osuosl.org/pub/ppc64el/bazel/el8/bazel-${BAZEL_VERSION} && \ + chmod +x bazel-${BAZEL_VERSION} && \ + mv bazel-${BAZEL_VERSION} /usr/local/bin/bazel && \ + ln -s /usr/local/bin/bazel /usr/bin/bazel && \ + bazel --version; \ + else \ + echo "Setting up for non-ppc64le..." && \ + mkdir /bazel && \ cd /bazel && \ curl -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36" -fSsL -O https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh && \ curl -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36" -fSsL -o /bazel/LICENSE.txt https://raw.githubusercontent.com/bazelbuild/bazel/master/LICENSE && \ @@ -27,6 +47,8 @@ RUN mkdir /bazel && \ ./bazel-$BAZEL_VERSION-installer-linux-x86_64.sh && \ cd / && \ rm -f /bazel/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh + fi + COPY . /mlmd-src WORKDIR /mlmd-src @@ -34,11 +56,11 @@ WORKDIR /mlmd-src # "-std=c++17" is needed in order to build with ZetaSQL. RUN bazel build -c opt --action_env=PATH \ --define=grpc_no_ares=true \ + --jobs=${BAZEL_JOBS} \ //ml_metadata/metadata_store:metadata_store_server \ --cxxopt="-std=c++17" --host_cxxopt="-std=c++17" \ --verbose_failures - # copying libmysqlclient source onto THIRD_PARTY folder. RUN mkdir -p /mlmd-src/third_party RUN cp -RL /mlmd-src/bazel-mlmd-src/external/libmysqlclient /mlmd-src/third_party/mariadb-connector-c From 29d1049d2fdd302a4356252191e7544cb3f55239 Mon Sep 17 00:00:00 2001 From: puneetsharma21 Date: Mon, 21 Jul 2025 00:39:07 -0400 Subject: [PATCH 2/5] Update Dockerfile.konflux --- ml_metadata/tools/docker_server/Dockerfile.konflux | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ml_metadata/tools/docker_server/Dockerfile.konflux b/ml_metadata/tools/docker_server/Dockerfile.konflux index 214e37ba0..fcddc099a 100644 --- a/ml_metadata/tools/docker_server/Dockerfile.konflux +++ b/ml_metadata/tools/docker_server/Dockerfile.konflux @@ -29,6 +29,8 @@ ENV PATH=$JAVA_HOME/bin:$PATH ENV BAZEL_VERSION=5.3.0 ENV BAZEL_JOBS=8 +WORKDIR / + RUN arch=$(uname -m) && \ if [ "$arch" = "ppc64le" ]; then \ echo "Setting up for ppc64le..." && \ @@ -46,7 +48,7 @@ RUN arch=$(uname -m) && \ chmod +x bazel-*.sh && \ ./bazel-$BAZEL_VERSION-installer-linux-x86_64.sh && \ cd / && \ - rm -f /bazel/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh + rm -f /bazel/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh; \ fi From 8c0fa9494cab663954c134429cc67cc5bae2df33 Mon Sep 17 00:00:00 2001 From: puneetsharma21 Date: Tue, 22 Jul 2025 06:04:43 -0400 Subject: [PATCH 3/5] Add arch check for Bazel install and conditional deps for ppc64le --- ml_metadata/tools/docker_server/Dockerfile.konflux | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ml_metadata/tools/docker_server/Dockerfile.konflux b/ml_metadata/tools/docker_server/Dockerfile.konflux index fcddc099a..5607c760c 100644 --- a/ml_metadata/tools/docker_server/Dockerfile.konflux +++ b/ml_metadata/tools/docker_server/Dockerfile.konflux @@ -17,6 +17,7 @@ RUN dnf install -y -q \ python3 RUN arch=$(uname -m) && \ + echo "Detected architecture: $arch" && \ if [ "$arch" = "ppc64le" ]; then \ echo "Setting up for ppc64le..." && \ dnf install -y -q java-11-openjdk-devel wget; \ @@ -39,8 +40,8 @@ RUN arch=$(uname -m) && \ mv bazel-${BAZEL_VERSION} /usr/local/bin/bazel && \ ln -s /usr/local/bin/bazel /usr/bin/bazel && \ bazel --version; \ - else \ - echo "Setting up for non-ppc64le..." && \ + elif [ "$arch" = "x86_64" ]; then \ + echo "Setting up for x86_64..." && \ mkdir /bazel && \ cd /bazel && \ curl -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36" -fSsL -O https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh && \ @@ -49,6 +50,9 @@ RUN arch=$(uname -m) && \ ./bazel-$BAZEL_VERSION-installer-linux-x86_64.sh && \ cd / && \ rm -f /bazel/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh; \ + else \ + echo "Unsupported architecture: $arch" >&2 && \ + exit 1; \ fi @@ -58,6 +62,7 @@ WORKDIR /mlmd-src # "-std=c++17" is needed in order to build with ZetaSQL. RUN bazel build -c opt --action_env=PATH \ --define=grpc_no_ares=true \ + --copt="-Wno-maybe-uninitialized" \ --jobs=${BAZEL_JOBS} \ //ml_metadata/metadata_store:metadata_store_server \ --cxxopt="-std=c++17" --host_cxxopt="-std=c++17" \ From eb1ea7400ed4ce6d78dc71606490fe1296932776 Mon Sep 17 00:00:00 2001 From: Gerard Ryan Date: Wed, 6 Aug 2025 00:16:00 +0100 Subject: [PATCH 4/5] Use bazel5 RPM for all arches This is a manual cherry-pick of the changes from the following PR in ODH, to the Dockerfile.konflux: https://github.com/opendatahub-io/ml-metadata/pull/21 --- .../tools/docker_server/Dockerfile.konflux | 78 ++++++------------- 1 file changed, 23 insertions(+), 55 deletions(-) diff --git a/ml_metadata/tools/docker_server/Dockerfile.konflux b/ml_metadata/tools/docker_server/Dockerfile.konflux index 5607c760c..00e8cf5e7 100644 --- a/ml_metadata/tools/docker_server/Dockerfile.konflux +++ b/ml_metadata/tools/docker_server/Dockerfile.konflux @@ -2,63 +2,29 @@ FROM registry.access.redhat.com/ubi9/ubi:latest@sha256:8851294389a8641bd6efcd60f USER root -RUN dnf install -y -q \ - which \ - patch \ - gcc \ - clang \ - cmake \ - make \ - openssl \ - ca-certificates \ - unzip \ - git \ - findutils \ - python3 - -RUN arch=$(uname -m) && \ - echo "Detected architecture: $arch" && \ - if [ "$arch" = "ppc64le" ]; then \ - echo "Setting up for ppc64le..." && \ - dnf install -y -q java-11-openjdk-devel wget; \ - fi - - -# Set environment for Bazel and Java -ENV JAVA_HOME=/usr/lib/jvm/java-11 -ENV PATH=$JAVA_HOME/bin:$PATH -ENV BAZEL_VERSION=5.3.0 -ENV BAZEL_JOBS=8 - -WORKDIR / - -RUN arch=$(uname -m) && \ - if [ "$arch" = "ppc64le" ]; then \ - echo "Setting up for ppc64le..." && \ - wget https://ftp2.osuosl.org/pub/ppc64el/bazel/el8/bazel-${BAZEL_VERSION} && \ - chmod +x bazel-${BAZEL_VERSION} && \ - mv bazel-${BAZEL_VERSION} /usr/local/bin/bazel && \ - ln -s /usr/local/bin/bazel /usr/bin/bazel && \ - bazel --version; \ - elif [ "$arch" = "x86_64" ]; then \ - echo "Setting up for x86_64..." && \ - mkdir /bazel && \ - cd /bazel && \ - curl -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36" -fSsL -O https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh && \ - curl -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36" -fSsL -o /bazel/LICENSE.txt https://raw.githubusercontent.com/bazelbuild/bazel/master/LICENSE && \ - chmod +x bazel-*.sh && \ - ./bazel-$BAZEL_VERSION-installer-linux-x86_64.sh && \ - cd / && \ - rm -f /bazel/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh; \ - else \ - echo "Unsupported architecture: $arch" >&2 && \ - exit 1; \ - fi - +RUN curl -o /etc/yum.repos.d/copr-galileo-bazel.repo \ + https://copr.fedorainfracloud.org/coprs/galileo/bazel/repo/epel-9/galileo-bazel-epel-9.repo && \ + dnf install -y \ + which \ + patch \ + gcc \ + clang \ + cmake \ + make \ + openssl-devel \ + libcurl-devel \ + ca-certificates \ + unzip \ + git \ + findutils \ + python3 \ + bazel5 COPY . /mlmd-src WORKDIR /mlmd-src +ENV BAZEL_JOBS=8 + # "-std=c++17" is needed in order to build with ZetaSQL. RUN bazel build -c opt --action_env=PATH \ --define=grpc_no_ares=true \ @@ -82,8 +48,10 @@ ENV METADATA_STORE_SERVER_CONFIG_FILE "" # Introduces tzdata package here to avoid LoadTimeZone check failed error in the metadata store server. # https://access.redhat.com/solutions/5616681 -RUN microdnf update tzdata -y && \ - microdnf reinstall tzdata -y +RUN microdnf reinstall tzdata -y && \ + microdnf clean all + +USER 65534:65534 ENTRYPOINT \ "/bin/metadata_store_server" \ From 7e420631b075eef6bb88aee3074ce6e75211ba15 Mon Sep 17 00:00:00 2001 From: Gerard Ryan Date: Fri, 8 Aug 2025 00:46:33 +0100 Subject: [PATCH 5/5] Enable ppc64le and arm64 in konflux pipelinerun --- .tekton/odh-mlmd-grpc-server-pull-request.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.tekton/odh-mlmd-grpc-server-pull-request.yaml b/.tekton/odh-mlmd-grpc-server-pull-request.yaml index 3c9506f2b..af18f4a41 100644 --- a/.tekton/odh-mlmd-grpc-server-pull-request.yaml +++ b/.tekton/odh-mlmd-grpc-server-pull-request.yaml @@ -51,7 +51,9 @@ spec: value: true - name: build-platforms value: - - linux/x86_64 + - linux-mxlarge/amd64 + - linux-mxlarge/arm64 + - linux/ppc64le - name: image-expires-after value: 5d taskRunSpecs: