From 26f08422eafe8901785ca7de009e5f613eb70e73 Mon Sep 17 00:00:00 2001 From: Harsha Vardhan Date: Mon, 27 Jul 2026 20:47:35 +0530 Subject: [PATCH 1/3] GH-50657: [C++][Dev] Implement BinaryView support in gdb_arrow.py --- cpp/gdb_arrow.py | 9 ++++++++- python/pyarrow/src/arrow/python/gdb.cc | 8 ++++++++ python/pyarrow/tests/test_gdb.py | 16 ++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/cpp/gdb_arrow.py b/cpp/gdb_arrow.py index c3f5ab62981e..8872d34478ca 100644 --- a/cpp/gdb_arrow.py +++ b/cpp/gdb_arrow.py @@ -47,8 +47,11 @@ 'EXTENSION', 'FIXED_SIZE_LIST', 'DURATION', 'LARGE_STRING', 'LARGE_BINARY', 'LARGE_LIST', 'INTERVAL_MONTH_DAY_NANO'] +_type_id_tuples = [(name, i) for i, name in enumerate(_type_ids)] +_type_id_tuples.extend([('STRING_VIEW', 39), ('BINARY_VIEW', 40)]) + # Mirror the C++ Type::type enum -Type = enum.IntEnum('Type', _type_ids, start=0) +Type = enum.IntEnum('Type', _type_id_tuples) # Mirror the C++ TimeUnit::type enum TimeUnit = enum.IntEnum('TimeUnit', ['SECOND', 'MILLI', 'MICRO', 'NANO'], @@ -1041,8 +1044,10 @@ def num_rows(self): 'Decimal256Type': 'decimal256', 'StringType': 'utf8', 'LargeStringType': 'large_utf8', + 'StringViewType': 'utf8_view', 'BinaryType': 'binary', 'LargeBinaryType': 'large_binary', + 'BinaryViewType': 'binary_view', 'FixedSizeBinaryType': 'fixed_size_binary', 'ListType': 'list', 'LargeListType': 'large_list', @@ -2042,6 +2047,8 @@ class ExtensionTypeClass(DataTypeClass): Type.BINARY: DataTypeTraits(BaseBinaryTypeClass, 'BinaryType'), Type.LARGE_STRING: DataTypeTraits(BaseBinaryTypeClass, 'LargeStringType'), Type.LARGE_BINARY: DataTypeTraits(BaseBinaryTypeClass, 'LargeBinaryType'), + Type.STRING_VIEW: DataTypeTraits(BaseBinaryTypeClass, 'StringViewType'), + Type.BINARY_VIEW: DataTypeTraits(BaseBinaryTypeClass, 'BinaryViewType'), Type.FIXED_SIZE_BINARY: DataTypeTraits(FixedSizeBinaryTypeClass, 'FixedSizeBinaryType'), diff --git a/python/pyarrow/src/arrow/python/gdb.cc b/python/pyarrow/src/arrow/python/gdb.cc index 2a7d2eda4bf2..6ff6bfd9745d 100644 --- a/python/pyarrow/src/arrow/python/gdb.cc +++ b/python/pyarrow/src/arrow/python/gdb.cc @@ -165,6 +165,10 @@ void TestSession() { StringType string_type; LargeBinaryType large_binary_type; LargeStringType large_string_type; + BinaryViewType binary_view_type; + StringViewType string_view_type; + auto heap_binary_view_type = binary_view(); + auto heap_string_view_type = utf8_view(); FixedSizeBinaryType fixed_size_binary_type(10); auto heap_fixed_size_binary_type = fixed_size_binary(10); @@ -313,6 +317,10 @@ void TestSession() { LargeBinaryScalar large_binary_scalar_abc{Buffer::FromString("abc")}; LargeStringScalar large_string_scalar_hehe{Buffer::FromString("héhé")}; + BinaryViewScalar binary_view_scalar_null{binary_view()}; + BinaryViewScalar binary_view_scalar_abc{Buffer::FromString("abc")}; + StringViewScalar string_view_scalar_null{utf8_view()}; + StringViewScalar string_view_scalar_hehe{Buffer::FromString("héhé")}; FixedSizeBinaryScalar fixed_size_binary_scalar{Buffer::FromString("abc"), fixed_size_binary(3)}; diff --git a/python/pyarrow/tests/test_gdb.py b/python/pyarrow/tests/test_gdb.py index 912953ae60d2..133dd7504879 100644 --- a/python/pyarrow/tests/test_gdb.py +++ b/python/pyarrow/tests/test_gdb.py @@ -368,6 +368,8 @@ def test_types_stack(gdb_arrow): check_stack_repr(gdb_arrow, "string_type", "arrow::utf8()") check_stack_repr(gdb_arrow, "large_binary_type", "arrow::large_binary()") check_stack_repr(gdb_arrow, "large_string_type", "arrow::large_utf8()") + check_stack_repr(gdb_arrow, "binary_view_type", "arrow::binary_view()") + check_stack_repr(gdb_arrow, "string_view_type", "arrow::utf8_view()") check_stack_repr(gdb_arrow, "fixed_size_binary_type", "arrow::fixed_size_binary(10)") @@ -427,6 +429,8 @@ def test_types_heap(gdb_arrow): check_heap_repr(gdb_arrow, "heap_decimal128_type", "arrow::decimal128(16, 5)") + check_heap_repr(gdb_arrow, "heap_binary_view_type", "arrow::binary_view()") + check_heap_repr(gdb_arrow, "heap_string_view_type", "arrow::utf8_view()") check_heap_repr(gdb_arrow, "heap_list_type", "arrow::list(arrow::uint8())") @@ -625,6 +629,12 @@ def test_scalars_stack(gdb_arrow): check_stack_repr( gdb_arrow, "large_binary_scalar_abc", 'arrow::LargeBinaryScalar of size 3, value "abc"') + check_stack_repr( + gdb_arrow, "binary_view_scalar_null", + "arrow::BinaryViewScalar of null value") + check_stack_repr( + gdb_arrow, "binary_view_scalar_abc", + 'arrow::BinaryViewScalar of size 3, value "abc"') check_stack_repr( gdb_arrow, "string_scalar_null", @@ -645,6 +655,12 @@ def test_scalars_stack(gdb_arrow): check_stack_repr( gdb_arrow, "large_string_scalar_hehe", 'arrow::LargeStringScalar of size 6, value "héhé"') + check_stack_repr( + gdb_arrow, "string_view_scalar_null", + "arrow::StringViewScalar of null value") + check_stack_repr( + gdb_arrow, "string_view_scalar_hehe", + 'arrow::StringViewScalar of size 6, value "héhé"') check_stack_repr( gdb_arrow, "fixed_size_binary_scalar", From f09a279df44c53f8b04399b60c12b76282b81895 Mon Sep 17 00:00:00 2001 From: Harsha Vardhan Date: Tue, 28 Jul 2026 12:18:43 +0530 Subject: [PATCH 2/3] GH-50666: Use Ubuntu 24.04 for release source verification jobs * Remove Ubuntu 22.04 from the release source verification task matrix. * Update the release verification GitHub Actions workflow to use Ubuntu 24.04. * Update the Linux wheel verification task to use Ubuntu 24.04. * Update the default Ubuntu version used by the release verification Docker environment. * Remove the obsolete Ubuntu 22.04 release verification Dockerfile. --- .env | 2 +- .github/workflows/verify_rc.yml | 1 - ci/docker/ubuntu-22.04-verify-rc.dockerfile | 31 --------------------- compose.yaml | 2 +- dev/tasks/python-wheels/github.linux.yml | 4 +-- dev/tasks/tasks.yml | 1 - 6 files changed, 4 insertions(+), 37 deletions(-) delete mode 100644 ci/docker/ubuntu-22.04-verify-rc.dockerfile diff --git a/.env b/.env index ca77b9441d7b..e07c3b5b9601 100644 --- a/.env +++ b/.env @@ -54,7 +54,7 @@ ALMALINUX=8 ALPINE_LINUX=3.22 DEBIAN=13 FEDORA=42 -UBUNTU=22.04 +UBUNTU=24.04 # Default versions for various dependencies CLANG_TOOLS=18 diff --git a/.github/workflows/verify_rc.yml b/.github/workflows/verify_rc.yml index df70e755642a..eddbf646b126 100644 --- a/.github/workflows/verify_rc.yml +++ b/.github/workflows/verify_rc.yml @@ -153,7 +153,6 @@ jobs: distro: - almalinux-8 - conda - - ubuntu-22.04 - ubuntu-24.04 env: RC: ${{ needs.target.outputs.rc }} diff --git a/ci/docker/ubuntu-22.04-verify-rc.dockerfile b/ci/docker/ubuntu-22.04-verify-rc.dockerfile deleted file mode 100644 index 596410a5390b..000000000000 --- a/ci/docker/ubuntu-22.04-verify-rc.dockerfile +++ /dev/null @@ -1,31 +0,0 @@ -# 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 arch=amd64 -ARG base=ubuntu:22.04 -FROM --platform=linux/${arch} ${base} - -ENV DEBIAN_FRONTEND=noninteractive -COPY dev/release/setup-ubuntu.sh / -RUN /setup-ubuntu.sh && \ - rm /setup-ubuntu.sh && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists* - -ARG cmake -COPY ci/scripts/install_cmake.sh /arrow/ci/scripts/ -RUN /arrow/ci/scripts/install_cmake.sh ${cmake} /usr/local/ diff --git a/compose.yaml b/compose.yaml index 6809d6994b6c..f913813b7afa 100644 --- a/compose.yaml +++ b/compose.yaml @@ -2084,7 +2084,7 @@ services: # docker compose build ubuntu-verify-rc # docker compose run -e VERIFY_VERSION=6.0.1 -e VERIFY_RC=1 ubuntu-verify-rc # Parameters: - # UBUNTU: 22.04, 24.04 + # UBUNTU: 24.04 image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-verify-rc build: context: . diff --git a/dev/tasks/python-wheels/github.linux.yml b/dev/tasks/python-wheels/github.linux.yml index e9e36566ba8d..074a6a85181c 100644 --- a/dev/tasks/python-wheels/github.linux.yml +++ b/dev/tasks/python-wheels/github.linux.yml @@ -104,12 +104,12 @@ jobs: -e TEST_WHEELS=1 \ almalinux-verify-rc - - name: Test wheel on Ubuntu 22.04 + - name: Test wheel on Ubuntu 24.04 shell: bash if: | '{{ python_version }}' == '3.11' && '{{ linux_wheel_kind }}' == 'manylinux' env: - UBUNTU: "22.04" + UBUNTU: "24.04" run: | archery docker run \ -e TEST_DEFAULT=0 \ diff --git a/dev/tasks/tasks.yml b/dev/tasks/tasks.yml index 89d239a0a266..6c16808ce7f9 100644 --- a/dev/tasks/tasks.yml +++ b/dev/tasks/tasks.yml @@ -272,7 +272,6 @@ tasks: {% for distribution, version in [("conda", "latest"), ("almalinux", "10"), - ("ubuntu", "22.04"), ("ubuntu", "24.04")] %} {% for target in ["cpp", "integration", From ebd2ed90996abd0d20aa9051d8cc0e938e26d97e Mon Sep 17 00:00:00 2001 From: Harsha Vardhan Date: Tue, 28 Jul 2026 12:28:10 +0530 Subject: [PATCH 3/3] GH-50674: [Release][Packaging] Add support for regenerating metadata of Yum repositories ### Rationale for this change In general, we don't need to use dev/release/binary-recover.sh. We need this when binary repository metadata on Artifactory gets broken or out of sync. PR #46277 added support for APT repositories recovery; this PR adds equivalent support for Yum repositories. ### What changes are included in this PR? 1. Add environment variables RECOVER_ALMALINUX, RECOVER_AMAZON_LINUX, RECOVER_CENTOS in binary-recover.sh and pass YUM_TARGETS to Docker runner. 2. Add yum:recover:download, yum:recover:update, yum:recover:upload, and yum:recover Rake tasks in binary-task.rb. 3. Update Downloader#download repodata path filtering so package (.rpm) downloads are not excluded during recovery downloads. ### Are these changes tested? Yes. Ruby syntax, bash syntax, and Rake task registration were verified locally. ### Are there any user-facing changes? No. * GitHub Issue: #50674 --- dev/release/binary-recover.sh | 20 ++++++++++ dev/release/binary-task.rb | 72 ++++++++++++++++++++++++++++++++++- 2 files changed, 91 insertions(+), 1 deletion(-) diff --git a/dev/release/binary-recover.sh b/dev/release/binary-recover.sh index 16804ebad913..0136c67bc43d 100755 --- a/dev/release/binary-recover.sh +++ b/dev/release/binary-recover.sh @@ -45,9 +45,13 @@ fi : "${RECOVER_DEFAULT:=1}" : "${RECOVER_DEBIAN:=${RECOVER_DEFAULT}}" : "${RECOVER_UBUNTU:=${RECOVER_DEFAULT}}" +: "${RECOVER_ALMALINUX:=${RECOVER_DEFAULT}}" +: "${RECOVER_AMAZON_LINUX:=${RECOVER_DEFAULT}}" +: "${RECOVER_CENTOS:=${RECOVER_DEFAULT}}" rake_tasks=() apt_targets=() +yum_targets=() if [ "${RECOVER_DEBIAN}" -gt 0 ]; then rake_tasks+=(apt:recover) apt_targets+=(debian) @@ -56,6 +60,18 @@ if [ "${RECOVER_UBUNTU}" -gt 0 ]; then rake_tasks+=(apt:recover) apt_targets+=(ubuntu) fi +if [ "${RECOVER_ALMALINUX}" -gt 0 ]; then + rake_tasks+=(yum:recover) + yum_targets+=(almalinux) +fi +if [ "${RECOVER_AMAZON_LINUX}" -gt 0 ]; then + rake_tasks+=(yum:recover) + yum_targets+=(amazon-linux) +fi +if [ "${RECOVER_CENTOS}" -gt 0 ]; then + rake_tasks+=(yum:recover) + yum_targets+=(centos) +fi tmp_dir=binary/tmp mkdir -p "${tmp_dir}" @@ -69,6 +85,10 @@ docker_run \ IFS=, echo "${apt_targets[*]}" )" \ + YUM_TARGETS="$( + IFS=, + echo "${yum_targets[*]}" + )" \ ARTIFACTORY_API_KEY="${ARTIFACTORY_API_KEY}" \ ARTIFACTS_DIR="${tmp_dir}/artifacts" \ RC="" \ diff --git a/dev/release/binary-task.rb b/dev/release/binary-task.rb index 254ca547fa0e..ea7663a81374 100644 --- a/dev/release/binary-task.rb +++ b/dev/release/binary-task.rb @@ -825,7 +825,7 @@ def download if @pattern next unless @pattern.match?(path) end - if dynamic_paths + if dynamic_paths and path.include?("/repodata/") next unless dynamic_paths.include?(path) end output_path = "#{@destination}/#{path}" @@ -1854,6 +1854,10 @@ def yum_release_repositories_dir "#{release_dir}/yum/repositories" end + def yum_recover_repositories_dir + "#{recover_dir}/yum/repositories" + end + def available_yum_targets [ ["almalinux", "10"], @@ -2189,10 +2193,76 @@ def define_yum_release_tasks end end + def define_yum_recover_tasks + namespace :yum do + namespace :recover do + desc "Download repositories" + task :download do + yum_targets.each do |distribution, distribution_version| + not_checksum_pattern = /.+(? yum_recover_tasks + end + end + def define_yum_tasks define_yum_staging_tasks define_yum_rc_tasks define_yum_release_tasks + define_yum_recover_tasks end def define_summary_tasks