From f782ef96f2d33f77673a1702d17e2e4bd729d5ec Mon Sep 17 00:00:00 2001 From: Cheng-Yang Chou Date: Mon, 21 Jul 2025 23:44:35 +0800 Subject: [PATCH 01/10] chore: Add rust-toolchain.toml to ensure consistent toolchain version This file ensures that contributors and CI use the same Rust toolchain, preventing version mismatch issues and improving reproducibility. Signed-off-by: Cheng-Yang Chou --- rust-toolchain.toml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 rust-toolchain.toml diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 000000000000..47a09143c39c --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,20 @@ +# 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. + +[toolchain] +channel = "1.88" +components = ["rustfmt", "clippy"] From ed838ad869cd4e94173b7805ddfe294a985d9665 Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Thu, 7 Aug 2025 10:24:04 -0400 Subject: [PATCH 02/10] Update toolchain setup --- .github/actions/setup-builder/action.yaml | 6 ------ .github/workflows/arrow.yml | 8 ++++---- .github/workflows/docs.yml | 10 +++------- .github/workflows/parquet.yml | 6 ++++-- 4 files changed, 11 insertions(+), 19 deletions(-) diff --git a/.github/actions/setup-builder/action.yaml b/.github/actions/setup-builder/action.yaml index 20da777ec0e5..1bb3792effc7 100644 --- a/.github/actions/setup-builder/action.yaml +++ b/.github/actions/setup-builder/action.yaml @@ -51,12 +51,6 @@ runs: run: | apt-get update apt-get install -y protobuf-compiler - - name: Setup Rust toolchain - shell: bash - run: | - echo "Installing ${{ inputs.rust-version }}" - rustup toolchain install ${{ inputs.rust-version }} --target ${{ inputs.target }} - rustup default ${{ inputs.rust-version }} - name: Disable debuginfo generation # Disable full debug symbol generation to speed up CI build and keep memory down # "1" means line tables only, which is useful for panic tracebacks. diff --git a/.github/workflows/arrow.yml b/.github/workflows/arrow.yml index 9d2d7761725b..67a213e2ac29 100644 --- a/.github/workflows/arrow.yml +++ b/.github/workflows/arrow.yml @@ -146,10 +146,10 @@ jobs: - uses: actions/checkout@v4 with: submodules: true - - name: Setup Rust toolchain - uses: ./.github/actions/setup-builder - with: - target: wasm32-unknown-unknown,wasm32-wasip1 + - name: Install wasm32 targets + run: | + rustup target add wasm32-unknown-unknown + rustup target add wasm32-wasip1 - name: Build wasm32-unknown-unknown run: cargo build -p arrow --no-default-features --features=json,csv,ipc,ffi --target wasm32-unknown-unknown - name: Build wasm32-wasip1 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index d6ec0622f6ed..36db68ee481e 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -34,10 +34,6 @@ jobs: docs: name: Rustdocs are clean runs-on: ubuntu-latest - strategy: - matrix: - arch: [ amd64 ] - rust: [ nightly ] container: image: ${{ matrix.arch }}/rust env: @@ -52,10 +48,10 @@ jobs: apt install -y libpython3.11-dev - name: Setup Rust toolchain uses: ./.github/actions/setup-builder - with: - rust-version: ${{ matrix.rust }} + - name: Install nightly toolchain + run: rustup install nightly - name: Run cargo doc - run: cargo doc --document-private-items --no-deps --workspace --all-features + run: cargo +nightly doc --document-private-items --no-deps --workspace --all-features - name: Fix file permissions shell: sh run: | diff --git a/.github/workflows/parquet.yml b/.github/workflows/parquet.yml index 946aef75db19..f3d98ca043db 100644 --- a/.github/workflows/parquet.yml +++ b/.github/workflows/parquet.yml @@ -133,8 +133,10 @@ jobs: submodules: true - name: Setup Rust toolchain uses: ./.github/actions/setup-builder - with: - target: wasm32-unknown-unknown,wasm32-wasip1 + - name: Install wasm32 targets + run: | + rustup target add wasm32-unknown-unknown + rustup target add wasm32-wasip1 - name: Install clang # Needed for zlib compilation run: apt-get update && apt-get install -y clang gcc-multilib - name: Build wasm32-unknown-unknown From 5a772bf0668a79d54ffae2f8c17601c069e7367e Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Thu, 7 Aug 2025 10:24:55 -0400 Subject: [PATCH 03/10] fix --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 36db68ee481e..2d51dc75d2e0 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -35,7 +35,7 @@ jobs: name: Rustdocs are clean runs-on: ubuntu-latest container: - image: ${{ matrix.arch }}/rust + image: amd64/rust env: RUSTDOCFLAGS: "-Dwarnings --enable-index-page -Zunstable-options" steps: From e04bb8a9d774daea74be825546ca0fe0b7b95bd5 Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Thu, 7 Aug 2025 10:29:12 -0400 Subject: [PATCH 04/10] try 3 --- .github/actions/setup-builder/action.yaml | 7 ++++++- .github/workflows/arrow.yml | 8 ++++---- .github/workflows/docs.yml | 12 ++++++++---- .github/workflows/parquet.yml | 6 ++---- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/.github/actions/setup-builder/action.yaml b/.github/actions/setup-builder/action.yaml index 1bb3792effc7..448601a4726e 100644 --- a/.github/actions/setup-builder/action.yaml +++ b/.github/actions/setup-builder/action.yaml @@ -21,7 +21,8 @@ inputs: rust-version: description: 'version of rust to install (e.g. stable)' required: false - default: 'stable' + # default to the version specified in rust-toolchain.toml + default: '' target: description: 'target architecture(s)' required: false @@ -51,6 +52,10 @@ runs: run: | apt-get update apt-get install -y protobuf-compiler + - name: Install default Rust toolchain + shell: bash + run: | + rustup install - name: Disable debuginfo generation # Disable full debug symbol generation to speed up CI build and keep memory down # "1" means line tables only, which is useful for panic tracebacks. diff --git a/.github/workflows/arrow.yml b/.github/workflows/arrow.yml index 67a213e2ac29..9d2d7761725b 100644 --- a/.github/workflows/arrow.yml +++ b/.github/workflows/arrow.yml @@ -146,10 +146,10 @@ jobs: - uses: actions/checkout@v4 with: submodules: true - - name: Install wasm32 targets - run: | - rustup target add wasm32-unknown-unknown - rustup target add wasm32-wasip1 + - name: Setup Rust toolchain + uses: ./.github/actions/setup-builder + with: + target: wasm32-unknown-unknown,wasm32-wasip1 - name: Build wasm32-unknown-unknown run: cargo build -p arrow --no-default-features --features=json,csv,ipc,ffi --target wasm32-unknown-unknown - name: Build wasm32-wasip1 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 2d51dc75d2e0..d6ec0622f6ed 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -34,8 +34,12 @@ jobs: docs: name: Rustdocs are clean runs-on: ubuntu-latest + strategy: + matrix: + arch: [ amd64 ] + rust: [ nightly ] container: - image: amd64/rust + image: ${{ matrix.arch }}/rust env: RUSTDOCFLAGS: "-Dwarnings --enable-index-page -Zunstable-options" steps: @@ -48,10 +52,10 @@ jobs: apt install -y libpython3.11-dev - name: Setup Rust toolchain uses: ./.github/actions/setup-builder - - name: Install nightly toolchain - run: rustup install nightly + with: + rust-version: ${{ matrix.rust }} - name: Run cargo doc - run: cargo +nightly doc --document-private-items --no-deps --workspace --all-features + run: cargo doc --document-private-items --no-deps --workspace --all-features - name: Fix file permissions shell: sh run: | diff --git a/.github/workflows/parquet.yml b/.github/workflows/parquet.yml index f3d98ca043db..946aef75db19 100644 --- a/.github/workflows/parquet.yml +++ b/.github/workflows/parquet.yml @@ -133,10 +133,8 @@ jobs: submodules: true - name: Setup Rust toolchain uses: ./.github/actions/setup-builder - - name: Install wasm32 targets - run: | - rustup target add wasm32-unknown-unknown - rustup target add wasm32-wasip1 + with: + target: wasm32-unknown-unknown,wasm32-wasip1 - name: Install clang # Needed for zlib compilation run: apt-get update && apt-get install -y clang gcc-multilib - name: Build wasm32-unknown-unknown From 892c5a08993f9d2633c17003c3ce5f1f95c9ac83 Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Thu, 7 Aug 2025 10:29:56 -0400 Subject: [PATCH 05/10] revert --- .github/actions/setup-builder/action.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/actions/setup-builder/action.yaml b/.github/actions/setup-builder/action.yaml index 448601a4726e..067b9e43f484 100644 --- a/.github/actions/setup-builder/action.yaml +++ b/.github/actions/setup-builder/action.yaml @@ -52,10 +52,12 @@ runs: run: | apt-get update apt-get install -y protobuf-compiler - - name: Install default Rust toolchain + - name: Setup Rust toolchain shell: bash run: | - rustup install + echo "Installing ${{ inputs.rust-version }}" + rustup toolchain install ${{ inputs.rust-version }} --target ${{ inputs.target }} + rustup default ${{ inputs.rust-version }} - name: Disable debuginfo generation # Disable full debug symbol generation to speed up CI build and keep memory down # "1" means line tables only, which is useful for panic tracebacks. From ac2b6ef3c58ac2dcf5847f053912a62dd72ee098 Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Thu, 7 Aug 2025 10:45:16 -0400 Subject: [PATCH 06/10] install --- .github/actions/setup-builder/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/setup-builder/action.yaml b/.github/actions/setup-builder/action.yaml index 067b9e43f484..1c6097ce263f 100644 --- a/.github/actions/setup-builder/action.yaml +++ b/.github/actions/setup-builder/action.yaml @@ -56,7 +56,7 @@ runs: shell: bash run: | echo "Installing ${{ inputs.rust-version }}" - rustup toolchain install ${{ inputs.rust-version }} --target ${{ inputs.target }} + rustup install ${{ inputs.rust-version }} --target ${{ inputs.target }} rustup default ${{ inputs.rust-version }} - name: Disable debuginfo generation # Disable full debug symbol generation to speed up CI build and keep memory down From 3a7decb02a34b8b327d0f6e6b453895f48791edb Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Thu, 7 Aug 2025 11:03:23 -0400 Subject: [PATCH 07/10] move --- .github/actions/setup-builder/action.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/actions/setup-builder/action.yaml b/.github/actions/setup-builder/action.yaml index 1c6097ce263f..a3346f099f0f 100644 --- a/.github/actions/setup-builder/action.yaml +++ b/.github/actions/setup-builder/action.yaml @@ -44,6 +44,12 @@ runs: /usr/local/cargo/git/db/ key: cargo-cache3-${{ hashFiles('**/Cargo.toml') }} restore-keys: cargo-cache3- + - name: Setup Rust toolchain + shell: bash + run: | + echo "Installing ${{ inputs.rust-version }}" + rustup install ${{ inputs.rust-version }} --target ${{ inputs.target }} + rustup default ${{ inputs.rust-version }} - name: Generate lockfile shell: bash run: cargo fetch @@ -52,12 +58,6 @@ runs: run: | apt-get update apt-get install -y protobuf-compiler - - name: Setup Rust toolchain - shell: bash - run: | - echo "Installing ${{ inputs.rust-version }}" - rustup install ${{ inputs.rust-version }} --target ${{ inputs.target }} - rustup default ${{ inputs.rust-version }} - name: Disable debuginfo generation # Disable full debug symbol generation to speed up CI build and keep memory down # "1" means line tables only, which is useful for panic tracebacks. From 1dd7e786a0c771d526ccb38a539d913ea1dcdd5d Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Thu, 7 Aug 2025 11:06:36 -0400 Subject: [PATCH 08/10] cleaup --- .github/actions/setup-builder/action.yaml | 9 ++------- .github/workflows/docs.yml | 12 ++++-------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/.github/actions/setup-builder/action.yaml b/.github/actions/setup-builder/action.yaml index a3346f099f0f..5e8b0291a11a 100644 --- a/.github/actions/setup-builder/action.yaml +++ b/.github/actions/setup-builder/action.yaml @@ -18,11 +18,6 @@ name: Prepare Rust Builder description: 'Prepare Rust Build Environment' inputs: - rust-version: - description: 'version of rust to install (e.g. stable)' - required: false - # default to the version specified in rust-toolchain.toml - default: '' target: description: 'target architecture(s)' required: false @@ -48,8 +43,8 @@ runs: shell: bash run: | echo "Installing ${{ inputs.rust-version }}" - rustup install ${{ inputs.rust-version }} --target ${{ inputs.target }} - rustup default ${{ inputs.rust-version }} + rustup install --target ${{ inputs.target }} + rustup default - name: Generate lockfile shell: bash run: cargo fetch diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index d6ec0622f6ed..60f0334b4c37 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -34,12 +34,8 @@ jobs: docs: name: Rustdocs are clean runs-on: ubuntu-latest - strategy: - matrix: - arch: [ amd64 ] - rust: [ nightly ] container: - image: ${{ matrix.arch }}/rust + image: amd64/rust env: RUSTDOCFLAGS: "-Dwarnings --enable-index-page -Zunstable-options" steps: @@ -52,10 +48,10 @@ jobs: apt install -y libpython3.11-dev - name: Setup Rust toolchain uses: ./.github/actions/setup-builder - with: - rust-version: ${{ matrix.rust }} + - name: Install Nightly Rust + run: rustup install nightly - name: Run cargo doc - run: cargo doc --document-private-items --no-deps --workspace --all-features + run: cargo +nightly doc --document-private-items --no-deps --workspace --all-features - name: Fix file permissions shell: sh run: | From 5b94123b08a288edcefc2f63cd8ba2eaf00879ba Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Thu, 7 Aug 2025 11:14:53 -0400 Subject: [PATCH 09/10] install targets --- .github/actions/setup-builder/action.yaml | 10 +--------- .github/workflows/arrow.yml | 6 ++++-- .github/workflows/parquet.yml | 6 ++++-- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/.github/actions/setup-builder/action.yaml b/.github/actions/setup-builder/action.yaml index 5e8b0291a11a..f73f7abf9b82 100644 --- a/.github/actions/setup-builder/action.yaml +++ b/.github/actions/setup-builder/action.yaml @@ -17,11 +17,6 @@ name: Prepare Rust Builder description: 'Prepare Rust Build Environment' -inputs: - target: - description: 'target architecture(s)' - required: false - default: 'x86_64-unknown-linux-gnu' runs: using: "composite" steps: @@ -41,10 +36,7 @@ runs: restore-keys: cargo-cache3- - name: Setup Rust toolchain shell: bash - run: | - echo "Installing ${{ inputs.rust-version }}" - rustup install --target ${{ inputs.target }} - rustup default + run: rustup install - name: Generate lockfile shell: bash run: cargo fetch diff --git a/.github/workflows/arrow.yml b/.github/workflows/arrow.yml index 9d2d7761725b..894111420238 100644 --- a/.github/workflows/arrow.yml +++ b/.github/workflows/arrow.yml @@ -148,8 +148,10 @@ jobs: submodules: true - name: Setup Rust toolchain uses: ./.github/actions/setup-builder - with: - target: wasm32-unknown-unknown,wasm32-wasip1 + - name: Install wasm32 targets + run: | + rustup target add wasm32-unknown-unknown + rustup target add wasm32-wasip1 - name: Build wasm32-unknown-unknown run: cargo build -p arrow --no-default-features --features=json,csv,ipc,ffi --target wasm32-unknown-unknown - name: Build wasm32-wasip1 diff --git a/.github/workflows/parquet.yml b/.github/workflows/parquet.yml index 946aef75db19..9d4f4e444cb7 100644 --- a/.github/workflows/parquet.yml +++ b/.github/workflows/parquet.yml @@ -133,8 +133,10 @@ jobs: submodules: true - name: Setup Rust toolchain uses: ./.github/actions/setup-builder - with: - target: wasm32-unknown-unknown,wasm32-wasip1 + - name: Install wasm32 targets + run: | + rustup target add wasm32-unknown-unknown + rustup target add wasm32-wasip1 - name: Install clang # Needed for zlib compilation run: apt-get update && apt-get install -y clang gcc-multilib - name: Build wasm32-unknown-unknown From 19b28adeff1b6703496363442986ac8aba6562f7 Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Thu, 7 Aug 2025 11:26:57 -0400 Subject: [PATCH 10/10] Update to 1.89 --- rust-toolchain.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 47a09143c39c..4ac629d201c5 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -16,5 +16,5 @@ # under the License. [toolchain] -channel = "1.88" +channel = "1.89" components = ["rustfmt", "clippy"]