From c7230001ade60edc484b7d2d43635fedf3661d4c Mon Sep 17 00:00:00 2001 From: Jeongkyu Shin Date: Thu, 22 Oct 2026 19:32:41 +0900 Subject: [PATCH] build: bump Launchpad PPA toolchain and MSRV to Rust 1.97 The lablup rustc-release dependency PPA now publishes rustc-1.97 and cargo-1.97 for jammy, noble, and resolute, so move the declared MSRV and the Debian/Launchpad toolchain from 1.96 to 1.97, following #231. The CI msrv job reads rust-version and now checks on 1.97. The Cargo.toml note now says resolute also builds with the rustc-release PPA toolchain; the resolute archive only carries Rust 1.93. Validation: cargo +1.97.1 check --workspace --locked passes, and an offline dpkg-buildpackage -b using the PPA's cargo-1.97 with vendored, sanitized dependencies succeeds in clean jammy, noble, and resolute containers. --- .github/workflows/launchpad_ppa.yml | 6 +++--- Cargo.toml | 6 +++--- debian/README.packaging | 22 +++++++++++----------- debian/control | 4 ++-- debian/control.source | 4 ++-- debian/rules | 12 ++++++------ debian/rules.launchpad | 12 ++++++------ debian/rules.launchpad-simple | 12 ++++++------ debian/rules.source | 12 ++++++------ 9 files changed, 45 insertions(+), 45 deletions(-) diff --git a/.github/workflows/launchpad_ppa.yml b/.github/workflows/launchpad_ppa.yml index c9e66b06f..938f25e7f 100644 --- a/.github/workflows/launchpad_ppa.yml +++ b/.github/workflows/launchpad_ppa.yml @@ -25,13 +25,13 @@ jobs: matrix: include: - distro: jammy - vendor_rust: "1.96.0" + vendor_rust: "1.97.1" toolchain_source: "Requires backend-ai PPA dependency on ~lablup/+archive/ubuntu/rustc-release" - distro: noble - vendor_rust: "1.96.0" + vendor_rust: "1.97.1" toolchain_source: "Requires backend-ai PPA dependency on ~lablup/+archive/ubuntu/rustc-release" - distro: resolute - vendor_rust: "1.96.0" + vendor_rust: "1.97.1" toolchain_source: "Requires backend-ai PPA dependency on ~lablup/+archive/ubuntu/rustc-release" steps: diff --git a/Cargo.toml b/Cargo.toml index 789cdd036..982a3045d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,12 +15,12 @@ readme = "README.md" keywords = ["cli", "rust"] categories = ["command-line-utilities"] edition = "2024" -# MSRV 1.96: aligned with the Launchpad PPA build toolchain (rustc-1.96 on -# jammy/noble, Ubuntu 26.04 archive on resolute). Hard floor is 1.89 +# MSRV 1.97: aligned with the Launchpad PPA build toolchain (rustc-1.97 from +# ~lablup/+archive/ubuntu/rustc-release on jammy/noble/resolute). Hard floor is 1.89 # (`rustyline` 18 uses `File::lock`, stabilized in 1.89); `time` 0.3.47 # (RUSTSEC-2026-0009) requires >= 1.88. The declared value tracks the PPA # build toolchain, not the hard floor. -rust-version = "1.96" +rust-version = "1.97" [dependencies] bytes = "1.11.1" diff --git a/debian/README.packaging b/debian/README.packaging index 86e459ddf..642d9c720 100644 --- a/debian/README.packaging +++ b/debian/README.packaging @@ -10,24 +10,24 @@ Launchpad build environments do NOT have internet access. This means: ### Build Dependencies The following packages are required and must be available to Launchpad through the Ubuntu archive or a configured dependency PPA: -- `rustc-1.96` or `rustc (>= 1.96)` - Rust compiler -- `cargo-1.96` or `cargo (>= 1.96)` - Rust package manager +- `rustc-1.97` or `rustc (>= 1.97)` - Rust compiler +- `cargo-1.97` or `cargo (>= 1.97)` - Rust package manager - `pkg-config` - For finding system libraries - `cmake` - Build system ### Rust Version Requirements -This project currently requires Rust 1.96 or newer because the vendored dependency set no longer builds with Rust 1.85. This means: -- Ubuntu 22.04 (Jammy): requires a versioned Rust 1.96 toolchain from the dependent PPA `~lablup/+archive/ubuntu/rustc-release` -- Ubuntu 24.04 (Noble): requires a versioned Rust 1.96 toolchain from the dependent PPA `~lablup/+archive/ubuntu/rustc-release` -- Ubuntu 26.04 (Resolute): requires a versioned Rust 1.96 toolchain from the dependent PPA `~lablup/+archive/ubuntu/rustc-release` +This project currently requires Rust 1.97 or newer because the vendored dependency set no longer builds with Rust 1.85. This means: +- Ubuntu 22.04 (Jammy): requires a versioned Rust 1.97 toolchain from the dependent PPA `~lablup/+archive/ubuntu/rustc-release` +- Ubuntu 24.04 (Noble): requires a versioned Rust 1.97 toolchain from the dependent PPA `~lablup/+archive/ubuntu/rustc-release` +- Ubuntu 26.04 (Resolute): requires a versioned Rust 1.97 toolchain from the dependent PPA `~lablup/+archive/ubuntu/rustc-release` If building for older Ubuntu versions, you may need to: -1. Add a Launchpad PPA dependency on `~lablup/+archive/ubuntu/rustc-release` so Jammy, Noble, and Resolute can see `rustc-1.96` and `cargo-1.96` -2. Limit support to distributions with Rust 1.96+ +1. Add a Launchpad PPA dependency on `~lablup/+archive/ubuntu/rustc-release` so Jammy, Noble, and Resolute can see `rustc-1.97` and `cargo-1.97` +2. Limit support to distributions with Rust 1.97+ ### Build Process 1. GitHub Actions vendors crates into `vendor/` and generates `.cargo/config.toml` -2. The `debian/rules` file requires Rust/Cargo 1.96+ and enables offline cargo mode +2. The `debian/rules` file requires Rust/Cargo 1.97+ and enables offline cargo mode 3. Launchpad builds the project with `cargo build --release --frozen --workspace` 4. The binary is installed to `/usr/bin/bssh` @@ -36,8 +36,8 @@ If the build fails on Launchpad: 1. Check the build log for the exact error 2. Common issues: - Missing build dependencies: Add them to debian/control - - Rust version incompatibility: Ensure Rust 1.96+ is available - - Missing PPA dependency: Jammy/Noble/Resolute need access to `rustc-1.96` and `cargo-1.96` + - Rust version incompatibility: Ensure Rust 1.97+ is available + - Missing PPA dependency: Jammy/Noble/Resolute need access to `rustc-1.97` and `cargo-1.97` - Missing vendored crates: Ensure `vendor/` and `.cargo/config.toml` are included in the source package - Cargo registry access: The build will fail if it tries to download crates diff --git a/debian/control b/debian/control index 8387f2bdc..e066976bf 100644 --- a/debian/control +++ b/debian/control @@ -4,8 +4,8 @@ Priority: optional Maintainer: Jeongkyu Shin Build-Depends: debhelper-compat (= 13), build-essential, - rustc-1.96 | rustc (>= 1.96), - cargo-1.96 | cargo (>= 1.96), + rustc-1.97 | rustc (>= 1.97), + cargo-1.97 | cargo (>= 1.97), pkg-config, cmake Standards-Version: 4.6.2 diff --git a/debian/control.source b/debian/control.source index 7b8bb6807..f98c21e3f 100644 --- a/debian/control.source +++ b/debian/control.source @@ -3,8 +3,8 @@ Section: utils Priority: optional Maintainer: Jeongkyu Shin Build-Depends: debhelper-compat (= 13), - rustc-1.96 | rustc (>= 1.96), - cargo-1.96 | cargo (>= 1.96), + rustc-1.97 | rustc (>= 1.97), + cargo-1.97 | cargo (>= 1.97), pkg-config, cmake, build-essential diff --git a/debian/rules b/debian/rules index 269089b4f..5d04519f6 100755 --- a/debian/rules +++ b/debian/rules @@ -9,8 +9,8 @@ export CARGO_HOME = $(HOME)/.cargo export CARGO_TARGET_DIR = $(CURDIR)/target export CARGO_NET_OFFLINE = true -RUSTC := $(shell if command -v rustc-1.96 >/dev/null 2>&1; then printf '%s' rustc-1.96; else printf '%s' rustc; fi) -CARGO := $(shell if command -v cargo-1.96 >/dev/null 2>&1; then printf '%s' cargo-1.96; else printf '%s' cargo; fi) +RUSTC := $(shell if command -v rustc-1.97 >/dev/null 2>&1; then printf '%s' rustc-1.97; else printf '%s' rustc; fi) +CARGO := $(shell if command -v cargo-1.97 >/dev/null 2>&1; then printf '%s' cargo-1.97; else printf '%s' cargo; fi) %: dh $@ @@ -23,12 +23,12 @@ override_dh_auto_configure: $(CARGO) --version rustc_version=$$($(RUSTC) --version | awk '{print $$2}'); \ cargo_version=$$($(CARGO) --version | awk '{print $$2}'); \ - dpkg --compare-versions "$$rustc_version" ge 1.96 || { \ - echo "rustc 1.96+ is required for the current dependency set (found $$rustc_version)"; \ + dpkg --compare-versions "$$rustc_version" ge 1.97 || { \ + echo "rustc 1.97+ is required for the current dependency set (found $$rustc_version)"; \ exit 1; \ }; \ - dpkg --compare-versions "$$cargo_version" ge 1.96 || { \ - echo "cargo 1.96+ is required for the current dependency set (found $$cargo_version)"; \ + dpkg --compare-versions "$$cargo_version" ge 1.97 || { \ + echo "cargo 1.97+ is required for the current dependency set (found $$cargo_version)"; \ exit 1; \ } diff --git a/debian/rules.launchpad b/debian/rules.launchpad index 269089b4f..5d04519f6 100644 --- a/debian/rules.launchpad +++ b/debian/rules.launchpad @@ -9,8 +9,8 @@ export CARGO_HOME = $(HOME)/.cargo export CARGO_TARGET_DIR = $(CURDIR)/target export CARGO_NET_OFFLINE = true -RUSTC := $(shell if command -v rustc-1.96 >/dev/null 2>&1; then printf '%s' rustc-1.96; else printf '%s' rustc; fi) -CARGO := $(shell if command -v cargo-1.96 >/dev/null 2>&1; then printf '%s' cargo-1.96; else printf '%s' cargo; fi) +RUSTC := $(shell if command -v rustc-1.97 >/dev/null 2>&1; then printf '%s' rustc-1.97; else printf '%s' rustc; fi) +CARGO := $(shell if command -v cargo-1.97 >/dev/null 2>&1; then printf '%s' cargo-1.97; else printf '%s' cargo; fi) %: dh $@ @@ -23,12 +23,12 @@ override_dh_auto_configure: $(CARGO) --version rustc_version=$$($(RUSTC) --version | awk '{print $$2}'); \ cargo_version=$$($(CARGO) --version | awk '{print $$2}'); \ - dpkg --compare-versions "$$rustc_version" ge 1.96 || { \ - echo "rustc 1.96+ is required for the current dependency set (found $$rustc_version)"; \ + dpkg --compare-versions "$$rustc_version" ge 1.97 || { \ + echo "rustc 1.97+ is required for the current dependency set (found $$rustc_version)"; \ exit 1; \ }; \ - dpkg --compare-versions "$$cargo_version" ge 1.96 || { \ - echo "cargo 1.96+ is required for the current dependency set (found $$cargo_version)"; \ + dpkg --compare-versions "$$cargo_version" ge 1.97 || { \ + echo "cargo 1.97+ is required for the current dependency set (found $$cargo_version)"; \ exit 1; \ } diff --git a/debian/rules.launchpad-simple b/debian/rules.launchpad-simple index 269089b4f..5d04519f6 100644 --- a/debian/rules.launchpad-simple +++ b/debian/rules.launchpad-simple @@ -9,8 +9,8 @@ export CARGO_HOME = $(HOME)/.cargo export CARGO_TARGET_DIR = $(CURDIR)/target export CARGO_NET_OFFLINE = true -RUSTC := $(shell if command -v rustc-1.96 >/dev/null 2>&1; then printf '%s' rustc-1.96; else printf '%s' rustc; fi) -CARGO := $(shell if command -v cargo-1.96 >/dev/null 2>&1; then printf '%s' cargo-1.96; else printf '%s' cargo; fi) +RUSTC := $(shell if command -v rustc-1.97 >/dev/null 2>&1; then printf '%s' rustc-1.97; else printf '%s' rustc; fi) +CARGO := $(shell if command -v cargo-1.97 >/dev/null 2>&1; then printf '%s' cargo-1.97; else printf '%s' cargo; fi) %: dh $@ @@ -23,12 +23,12 @@ override_dh_auto_configure: $(CARGO) --version rustc_version=$$($(RUSTC) --version | awk '{print $$2}'); \ cargo_version=$$($(CARGO) --version | awk '{print $$2}'); \ - dpkg --compare-versions "$$rustc_version" ge 1.96 || { \ - echo "rustc 1.96+ is required for the current dependency set (found $$rustc_version)"; \ + dpkg --compare-versions "$$rustc_version" ge 1.97 || { \ + echo "rustc 1.97+ is required for the current dependency set (found $$rustc_version)"; \ exit 1; \ }; \ - dpkg --compare-versions "$$cargo_version" ge 1.96 || { \ - echo "cargo 1.96+ is required for the current dependency set (found $$cargo_version)"; \ + dpkg --compare-versions "$$cargo_version" ge 1.97 || { \ + echo "cargo 1.97+ is required for the current dependency set (found $$cargo_version)"; \ exit 1; \ } diff --git a/debian/rules.source b/debian/rules.source index 788323ea5..c3c1d114c 100644 --- a/debian/rules.source +++ b/debian/rules.source @@ -9,8 +9,8 @@ export CARGO_HOME = $(HOME)/.cargo export CARGO_TARGET_DIR = $(CURDIR)/target export CARGO_NET_OFFLINE = true -RUSTC := $(shell if command -v rustc-1.96 >/dev/null 2>&1; then printf '%s' rustc-1.96; else printf '%s' rustc; fi) -CARGO := $(shell if command -v cargo-1.96 >/dev/null 2>&1; then printf '%s' cargo-1.96; else printf '%s' cargo; fi) +RUSTC := $(shell if command -v rustc-1.97 >/dev/null 2>&1; then printf '%s' rustc-1.97; else printf '%s' rustc; fi) +CARGO := $(shell if command -v cargo-1.97 >/dev/null 2>&1; then printf '%s' cargo-1.97; else printf '%s' cargo; fi) %: dh $@ @@ -23,12 +23,12 @@ override_dh_auto_configure: $(CARGO) --version rustc_version=$$($(RUSTC) --version | awk '{print $$2}'); \ cargo_version=$$($(CARGO) --version | awk '{print $$2}'); \ - dpkg --compare-versions "$$rustc_version" ge 1.96 || { \ - echo "rustc 1.96+ is required for the current dependency set (found $$rustc_version)"; \ + dpkg --compare-versions "$$rustc_version" ge 1.97 || { \ + echo "rustc 1.97+ is required for the current dependency set (found $$rustc_version)"; \ exit 1; \ }; \ - dpkg --compare-versions "$$cargo_version" ge 1.96 || { \ - echo "cargo 1.96+ is required for the current dependency set (found $$cargo_version)"; \ + dpkg --compare-versions "$$cargo_version" ge 1.97 || { \ + echo "cargo 1.97+ is required for the current dependency set (found $$cargo_version)"; \ exit 1; \ }