This is an automated email from the ASF dual-hosted git repository.

raulcd pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/main by this push:
     new f3f1eb0f1f GH-49341: [Packaging] Add support for Ubuntu 26.04 (#49345)
f3f1eb0f1f is described below

commit f3f1eb0f1fd5436c2936cdf33982bf50e5ec4d88
Author: Sutou Kouhei <[email protected]>
AuthorDate: Wed Feb 25 02:09:36 2026 +0900

    GH-49341: [Packaging] Add support for Ubuntu 26.04 (#49345)
    
    ### Rationale for this change
    
    Ubuntu 26.04 will be the next LTS for Ubuntu. It'll be released on 2026-04.
    
    ### What changes are included in this PR?
    
    * Add `Dockerfile`s for Ubuntu 26.04
    * Add Ubuntu 26.04 entries
    * Add a labeler configuration for Linux packages
    
    ### Are these changes tested?
    
    Yes.
    
    ### Are there any user-facing changes?
    
    Yes.
    * GitHub Issue: #49341
    
    Authored-by: Sutou Kouhei <[email protected]>
    Signed-off-by: Raúl Cumplido <[email protected]>
---
 .github/workflows/dev_pr/labeler.yml               |  9 +++
 .github/workflows/package_linux.yml                |  2 +
 dev/release/binary-task.rb                         |  3 +
 dev/release/verify-release-candidate.sh            |  6 +-
 .../apt/ubuntu-resolute/Dockerfile                 | 41 +++++++++++
 .../apache-arrow/apt/ubuntu-resolute-arm64/from    | 18 +++++
 .../apache-arrow/apt/ubuntu-resolute/Dockerfile    | 85 ++++++++++++++++++++++
 dev/tasks/linux-packages/apache-arrow/debian/rules | 19 ++++-
 dev/tasks/linux-packages/package-task.rb           |  2 +
 9 files changed, 179 insertions(+), 6 deletions(-)

diff --git a/.github/workflows/dev_pr/labeler.yml 
b/.github/workflows/dev_pr/labeler.yml
index e13287856e..057a1f954f 100644
--- a/.github/workflows/dev_pr/labeler.yml
+++ b/.github/workflows/dev_pr/labeler.yml
@@ -79,3 +79,12 @@
   - any-glob-to-any-file:
     - .github/workflows/cpp_extra.yml
     - cpp/src/arrow/flight/sql/odbc/**/*
+
+"CI: Extra: Package: Linux":
+- changed-files:
+  - any-glob-to-any-file:
+    - .github/workflows/package_linux.yml
+    - dev/release/binary-task.rb
+    - dev/release/verify-apt.sh
+    - dev/release/verify-yum.sh
+    - dev/tasks/linux-packages/**/*
diff --git a/.github/workflows/package_linux.yml 
b/.github/workflows/package_linux.yml
index e300251e16..b3f422746d 100644
--- a/.github/workflows/package_linux.yml
+++ b/.github/workflows/package_linux.yml
@@ -109,6 +109,8 @@ jobs:
           - ubuntu-jammy-arm64
           - ubuntu-noble-amd64
           - ubuntu-noble-arm64
+          - ubuntu-resolute-amd64
+          - ubuntu-resolute-arm64
     env:
       DOCKER_VOLUME_PREFIX: ".docker/"
     steps:
diff --git a/dev/release/binary-task.rb b/dev/release/binary-task.rb
index 79d4903755..11feb4fa43 100644
--- a/dev/release/binary-task.rb
+++ b/dev/release/binary-task.rb
@@ -1433,6 +1433,7 @@ class BinaryTask
       ["debian", "forky", "main"],
       ["ubuntu", "jammy", "main"],
       ["ubuntu", "noble", "main"],
+      ["ubuntu", "resolute", "main"],
     ]
   end
 
@@ -2333,6 +2334,8 @@ class LocalBinaryTask < BinaryTask
       # "ubuntu-jammy-arm64",
       "ubuntu-noble",
       # "ubuntu-noble-arm64",
+      "ubuntu-resolute",
+      # "ubuntu-resolute-arm64",
     ]
   end
 
diff --git a/dev/release/verify-release-candidate.sh 
b/dev/release/verify-release-candidate.sh
index e6def2ca19..325c4342e6 100755
--- a/dev/release/verify-release-candidate.sh
+++ b/dev/release/verify-release-candidate.sh
@@ -218,7 +218,8 @@ test_apt() {
                     "debian:trixie" \
                     "debian:forky" \
                     "ubuntu:jammy" \
-                    "ubuntu:noble"; do \
+                    "ubuntu:noble" \
+                    "ubuntu:resolute"; do \
         if ! docker run \
                --platform=linux/x86_64 \
                --rm \
@@ -238,7 +239,8 @@ test_apt() {
                     "arm64v8/debian:trixie" \
                     "arm64v8/debian:forky" \
                     "arm64v8/ubuntu:jammy" \
-                    "arm64v8/ubuntu:noble"; do \
+                    "arm64v8/ubuntu:noble" \
+                    "arm64v8/ubuntu:resolute"; do \
         if ! docker run \
                --platform=linux/arm64 \
                --rm \
diff --git 
a/dev/tasks/linux-packages/apache-arrow-apt-source/apt/ubuntu-resolute/Dockerfile
 
b/dev/tasks/linux-packages/apache-arrow-apt-source/apt/ubuntu-resolute/Dockerfile
new file mode 100644
index 0000000000..3420047ee2
--- /dev/null
+++ 
b/dev/tasks/linux-packages/apache-arrow-apt-source/apt/ubuntu-resolute/Dockerfile
@@ -0,0 +1,41 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+FROM ubuntu:resolute
+
+RUN \
+  echo "debconf debconf/frontend select Noninteractive" | \
+    debconf-set-selections
+
+RUN \
+  echo 'APT::Install-Recommends "false";' > \
+    /etc/apt/apt.conf.d/disable-install-recommends
+
+ARG DEBUG
+
+RUN \
+  quiet=$([ "${DEBUG}" = "yes" ] || echo "-qq") && \
+  apt update ${quiet} && \
+  apt install -y -V ${quiet} \
+    build-essential \
+    debhelper \
+    devscripts \
+    fakeroot \
+    gnupg \
+    lsb-release && \
+  apt clean && \
+  rm -rf /var/lib/apt/lists/*
diff --git 
a/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-resolute-arm64/from 
b/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-resolute-arm64/from
new file mode 100644
index 0000000000..4974160241
--- /dev/null
+++ b/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-resolute-arm64/from
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+arm64v8/ubuntu:resolute
diff --git 
a/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-resolute/Dockerfile 
b/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-resolute/Dockerfile
new file mode 100644
index 0000000000..4df30814f7
--- /dev/null
+++ b/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-resolute/Dockerfile
@@ -0,0 +1,85 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+ARG FROM=ubuntu:resolute
+FROM ${FROM}
+
+RUN \
+  echo "debconf debconf/frontend select Noninteractive" | \
+    debconf-set-selections
+
+RUN \
+  echo 'APT::Install-Recommends "false";' > \
+    /etc/apt/apt.conf.d/disable-install-recommends
+
+ARG DEBUG
+RUN \
+  quiet=$([ "${DEBUG}" = "yes" ] || echo "-qq") && \
+  apt update ${quiet} && \
+  apt install -y -V ${quiet} \
+    build-essential \
+    clang \
+    clang-tools \
+    cmake \
+    debhelper \
+    devscripts \
+    gi-docgen \
+    git \
+    libboost-filesystem-dev \
+    libboost-system-dev \
+    libbrotli-dev \
+    libbz2-dev \
+    libc-ares-dev \
+    libcurl4-openssl-dev \
+    libgirepository1.0-dev \
+    libglib2.0-doc \
+    libgmock-dev \
+    libgoogle-glog-dev \
+    libgrpc++-dev \
+    libgtest-dev \
+    liblz4-dev \
+    libprotobuf-dev \
+    libprotoc-dev \
+    libre2-dev \
+    libsnappy-dev \
+    libssl-dev \
+    libthrift-dev \
+    libutf8proc-dev \
+    libxxhash-dev \
+    libzstd-dev \
+    llvm-dev \
+    lsb-release \
+    meson \
+    mold \
+    ninja-build \
+    nlohmann-json3-dev \
+    pkg-config \
+    protobuf-compiler-grpc \
+    python3-dev \
+    python3-pip \
+    python3-setuptools \
+    rapidjson-dev \
+    tzdata \
+    valac \
+    zlib1g-dev && \
+  if apt list | grep -q '^libcuda'; then \
+    apt install -y -V ${quiet} nvidia-cuda-toolkit; \
+  else \
+    :; \
+  fi && \
+  apt clean && \
+  rm -rf /var/lib/apt/lists/*
diff --git a/dev/tasks/linux-packages/apache-arrow/debian/rules 
b/dev/tasks/linux-packages/apache-arrow/debian/rules
index 08aa1c8384..28cc121764 100755
--- a/dev/tasks/linux-packages/apache-arrow/debian/rules
+++ b/dev/tasks/linux-packages/apache-arrow/debian/rules
@@ -6,7 +6,13 @@
 # This has to be exported to make some magic below work.
 export DH_OPTIONS
 
+# lto1 (GCC 15) on Ubuntu 26.04 crashes with LTO.
+include /etc/os-release
+ifeq ($(VERSION_CODENAME),resolute)
+export DEB_BUILD_MAINT_OPTIONS=optimize=-lto,reproducible=-timeless
+else
 export DEB_BUILD_MAINT_OPTIONS=reproducible=-timeless
+endif
 
 BUILD_TYPE=relwithdebinfo
 
@@ -14,9 +20,7 @@ BUILD_TYPE=relwithdebinfo
        dh $@ --with gir
 
 override_dh_auto_configure:
-       code_name="$$(. /etc/os-release &&                      \
-                        echo $${VERSION_CODENAME})";           \
-       if [ "$${code_name}" = "focal" ]; then                  \
+       if [ "$(VERSION_CODENAME)" = "focal" ]; then            \
          ARROW_AZURE=OFF;                                      \
        else                                                    \
          ARROW_AZURE=ON;                                       \
@@ -26,6 +30,12 @@ override_dh_auto_configure:
        else                                                    \
          ARROW_CUDA=OFF;                                       \
        fi;                                                     \
+       if [ "$(VERSION_CODENAME)" = "resolute" ]; then         \
+         : "RE2 is not built for C++17 or later";              \
+         re2_SOURCE=BUNDLED;                                   \
+       else                                                    \
+         re2_SOURCE=SYSTEM;                                    \
+       fi;                                                     \
        dh_auto_configure                                       \
          --sourcedirectory=cpp                                 \
          --builddirectory=cpp_build                            \
@@ -61,7 +71,8 @@ override_dh_auto_configure:
          -DCUDAToolkit_ROOT=/usr                               \
          -DFETCHCONTENT_FULLY_DISCONNECTED=OFF                 \
          -DPARQUET_BUILD_EXECUTABLES=ON                        \
-         -DPARQUET_REQUIRE_ENCRYPTION=ON
+         -DPARQUET_REQUIRE_ENCRYPTION=ON                       \
+         -Dre2_SOURCE=$${re2_SOURCE}
 
 override_dh_auto_build:
        dh_auto_build                           \
diff --git a/dev/tasks/linux-packages/package-task.rb 
b/dev/tasks/linux-packages/package-task.rb
index caaea708e7..404f0d8c78 100644
--- a/dev/tasks/linux-packages/package-task.rb
+++ b/dev/tasks/linux-packages/package-task.rb
@@ -278,6 +278,8 @@ class PackageTask
       # "ubuntu-jammy-arm64",
       "ubuntu-noble",
       # "ubuntu-noble-arm64",
+      "ubuntu-resolute",
+      # "ubuntu-resolute-arm64",
     ]
   end
 

Reply via email to