Skip to content

Commit 5efbcc6

Browse files
committed
Update PPA packaging for Rust 1.92
1 parent f2bb328 commit 5efbcc6

13 files changed

Lines changed: 70 additions & 52 deletions

.github/workflows/launchpad_ppa.yml

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,16 @@ jobs:
2323
strategy:
2424
fail-fast: false
2525
matrix:
26-
distro: [jammy, noble, resolute]
26+
include:
27+
- distro: jammy
28+
vendor_rust: "1.92.0"
29+
toolchain_source: "Requires backend-ai PPA dependency on ~lablup/+archive/ubuntu/rustc-release"
30+
- distro: noble
31+
vendor_rust: "1.92.0"
32+
toolchain_source: "Requires backend-ai PPA dependency on ~lablup/+archive/ubuntu/rustc-release"
33+
- distro: resolute
34+
vendor_rust: "1.92.0"
35+
toolchain_source: "Uses the official Ubuntu 26.04 archive Rust 1.92+ toolchain"
2736

2837
steps:
2938
- name: Checkout code
@@ -75,6 +84,13 @@ jobs:
7584
rm -rf debian
7685
cp -a /tmp/bssh-packaging/debian debian
7786
87+
- name: Describe Rust toolchain source
88+
if: steps.check_distro.outputs.should_run == 'true'
89+
run: |
90+
echo "Target distro: ${{ matrix.distro }}"
91+
echo "Vendoring toolchain: Rust ${{ matrix.vendor_rust }}"
92+
echo "Launchpad build toolchain: ${{ matrix.toolchain_source }}"
93+
7894
- name: Update debian/changelog from release
7995
if: steps.check_distro.outputs.should_run == 'true'
8096
run: |
@@ -101,11 +117,13 @@ jobs:
101117
dpkg-dev \
102118
build-essential
103119
104-
- name: Install Rust 1.85 for vendoring
120+
- name: Install Rust ${{ matrix.vendor_rust }} for vendoring
105121
if: steps.check_distro.outputs.should_run == 'true'
106-
uses: dtolnay/rust-toolchain@1.85.1
122+
uses: dtolnay/rust-toolchain@master
123+
with:
124+
toolchain: ${{ matrix.vendor_rust }}
107125

108-
- name: Validate lockfile with Rust 1.85
126+
- name: Validate lockfile with Rust ${{ matrix.vendor_rust }}
109127
if: steps.check_distro.outputs.should_run == 'true'
110128
run: |
111129
cargo --version

debian/README.packaging

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,24 @@ Launchpad build environments do NOT have internet access. This means:
1010

1111
### Build Dependencies
1212
The following packages are required and must be available to Launchpad through the Ubuntu archive or a configured dependency PPA:
13-
- `rustc-1.85` or `rustc (>= 1.85)` - Rust compiler (Rust edition 2024 requires Rust 1.85+)
14-
- `cargo-1.85` or `cargo (>= 1.85)` - Rust package manager
13+
- `rustc-1.92` or `rustc (>= 1.92)` - Rust compiler
14+
- `cargo-1.92` or `cargo (>= 1.92)` - Rust package manager
1515
- `pkg-config` - For finding system libraries
1616
- `cmake` - Build system
1717

1818
### Rust Version Requirements
19-
This project requires Rust 1.85 or newer because it uses Rust edition 2024. This means:
20-
- Ubuntu 22.04 (Jammy): requires a versioned Rust 1.85 toolchain from the PPA itself or a dependent PPA
21-
- Ubuntu 24.04 (Noble): requires a versioned Rust 1.85 toolchain from the PPA itself or a dependent PPA
22-
- Ubuntu 26.04 (Resolute): can use the archive's default Rust toolchain
19+
This project currently requires Rust 1.92 or newer because the vendored dependency set no longer builds with Rust 1.85. This means:
20+
- Ubuntu 22.04 (Jammy): requires a versioned Rust 1.92 toolchain from the dependent PPA `~lablup/+archive/ubuntu/rustc-release`
21+
- Ubuntu 24.04 (Noble): requires a versioned Rust 1.92 toolchain from the dependent PPA `~lablup/+archive/ubuntu/rustc-release`
22+
- Ubuntu 26.04 (Resolute): can use the archive's Rust 1.92+ toolchain without the extra dependency PPA
2323

2424
If building for older Ubuntu versions, you may need to:
25-
1. Add a Launchpad PPA dependency that provides `rustc-1.85` and `cargo-1.85`
26-
2. Limit support to distributions with Rust 1.85+
25+
1. Add a Launchpad PPA dependency on `~lablup/+archive/ubuntu/rustc-release` so Jammy and Noble can see `rustc-1.92` and `cargo-1.92`
26+
2. Limit support to distributions with Rust 1.92+
2727

2828
### Build Process
2929
1. GitHub Actions vendors crates into `vendor/` and generates `.cargo/config.toml`
30-
2. The `debian/rules` file requires Rust/Cargo 1.85+ and enables offline cargo mode
30+
2. The `debian/rules` file requires Rust/Cargo 1.92+ and enables offline cargo mode
3131
3. Launchpad builds the project with `cargo build --release --frozen --workspace`
3232
4. The binary is installed to `/usr/bin/bssh`
3333

@@ -36,8 +36,8 @@ If the build fails on Launchpad:
3636
1. Check the build log for the exact error
3737
2. Common issues:
3838
- Missing build dependencies: Add them to debian/control
39-
- Rust version incompatibility: Ensure Rust 1.85+ is available
40-
- Missing PPA dependency: Jammy/Noble need access to `rustc-1.85` and `cargo-1.85`
39+
- Rust version incompatibility: Ensure Rust 1.92+ is available
40+
- Missing PPA dependency: Jammy/Noble need access to `rustc-1.92` and `cargo-1.92`
4141
- Missing vendored crates: Ensure `vendor/` and `.cargo/config.toml` are included in the source package
4242
- Cargo registry access: The build will fail if it tries to download crates
4343

debian/control

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
Source: bssh
22
Section: utils
33
Priority: optional
4-
Maintainer: Jeongkyu Shin <inureyes@gmail.com>
4+
Maintainer: Jeongkyu Shin <jshin@lablup.com>
55
Build-Depends: debhelper-compat (= 13),
66
build-essential,
7-
rustc-1.85 | rustc (>= 1.85),
8-
cargo-1.85 | cargo (>= 1.85),
7+
rustc-1.92 | rustc (>= 1.92),
8+
cargo-1.92 | cargo (>= 1.92),
99
pkg-config,
1010
cmake
1111
Standards-Version: 4.6.2

debian/control.binary

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Source: bssh
22
Section: utils
33
Priority: optional
4-
Maintainer: Jeongkyu Shin <inureyes@gmail.com>
4+
Maintainer: Jeongkyu Shin <jshin@lablup.com>
55
Build-Depends: debhelper-compat (= 13), build-essential
66
Standards-Version: 4.6.2
77
Homepage: https://github.com/lablup/bssh
@@ -30,4 +30,4 @@ Description: Broadcast SSH - Parallel command execution across cluster nodes
3030
* Real-time progress tracking and output streaming
3131
* XDG Base Directory specification compliance
3232
.
33-
Developed and maintained as part of the Backend.AI project.
33+
Developed and maintained as part of the Backend.AI project.

debian/control.bssh-keygen.binary

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Source: bssh
22
Section: utils
33
Priority: optional
4-
Maintainer: Jeongkyu Shin <inureyes@gmail.com>
4+
Maintainer: Jeongkyu Shin <jshin@lablup.com>
55
Build-Depends: debhelper-compat (= 13), build-essential
66
Standards-Version: 4.6.2
77
Homepage: https://github.com/lablup/bssh

debian/control.bssh-server.binary

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Source: bssh
22
Section: utils
33
Priority: optional
4-
Maintainer: Jeongkyu Shin <inureyes@gmail.com>
4+
Maintainer: Jeongkyu Shin <jshin@lablup.com>
55
Build-Depends: debhelper-compat (= 13), build-essential
66
Standards-Version: 4.6.2
77
Homepage: https://github.com/lablup/bssh

debian/control.source

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
Source: bssh
22
Section: utils
33
Priority: optional
4-
Maintainer: Jeongkyu Shin <inureyes@gmail.com>
4+
Maintainer: Jeongkyu Shin <jshin@lablup.com>
55
Build-Depends: debhelper-compat (= 13),
6-
rustc-1.85 | rustc (>= 1.85),
7-
cargo-1.85 | cargo (>= 1.85),
6+
rustc-1.92 | rustc (>= 1.92),
7+
cargo-1.92 | cargo (>= 1.92),
88
pkg-config,
99
cmake,
1010
build-essential

debian/copyright

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
22
Upstream-Name: bssh
3-
Upstream-Contact: Jeongkyu Shin <inureyes@gmail.com>
3+
Upstream-Contact: Jeongkyu Shin <jshin@lablup.com>
44
Source: https://github.com/lablup/bssh
55

66
Files: *
@@ -21,4 +21,4 @@ License: Apache-2.0
2121
limitations under the License.
2222
.
2323
On Debian systems, the complete text of the Apache version 2.0 license
24-
can be found in "/usr/share/common-licenses/Apache-2.0".
24+
can be found in "/usr/share/common-licenses/Apache-2.0".

debian/rules

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ export CARGO_HOME = $(HOME)/.cargo
99
export CARGO_TARGET_DIR = $(CURDIR)/target
1010
export CARGO_NET_OFFLINE = true
1111

12-
RUSTC := $(shell if command -v rustc-1.85 >/dev/null 2>&1; then printf '%s' rustc-1.85; else printf '%s' rustc; fi)
13-
CARGO := $(shell if command -v cargo-1.85 >/dev/null 2>&1; then printf '%s' cargo-1.85; else printf '%s' cargo; fi)
12+
RUSTC := $(shell if command -v rustc-1.92 >/dev/null 2>&1; then printf '%s' rustc-1.92; else printf '%s' rustc; fi)
13+
CARGO := $(shell if command -v cargo-1.92 >/dev/null 2>&1; then printf '%s' cargo-1.92; else printf '%s' cargo; fi)
1414

1515
%:
1616
dh $@
@@ -23,12 +23,12 @@ override_dh_auto_configure:
2323
$(CARGO) --version
2424
rustc_version=$$($(RUSTC) --version | awk '{print $$2}'); \
2525
cargo_version=$$($(CARGO) --version | awk '{print $$2}'); \
26-
dpkg --compare-versions "$$rustc_version" ge 1.85 || { \
27-
echo "rustc 1.85+ is required for Rust edition 2024 (found $$rustc_version)"; \
26+
dpkg --compare-versions "$$rustc_version" ge 1.92 || { \
27+
echo "rustc 1.92+ is required for the current dependency set (found $$rustc_version)"; \
2828
exit 1; \
2929
}; \
30-
dpkg --compare-versions "$$cargo_version" ge 1.85 || { \
31-
echo "cargo 1.85+ is required for Rust edition 2024 (found $$cargo_version)"; \
30+
dpkg --compare-versions "$$cargo_version" ge 1.92 || { \
31+
echo "cargo 1.92+ is required for the current dependency set (found $$cargo_version)"; \
3232
exit 1; \
3333
}
3434

debian/rules.launchpad

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ export CARGO_HOME = $(HOME)/.cargo
99
export CARGO_TARGET_DIR = $(CURDIR)/target
1010
export CARGO_NET_OFFLINE = true
1111

12-
RUSTC := $(shell if command -v rustc-1.85 >/dev/null 2>&1; then printf '%s' rustc-1.85; else printf '%s' rustc; fi)
13-
CARGO := $(shell if command -v cargo-1.85 >/dev/null 2>&1; then printf '%s' cargo-1.85; else printf '%s' cargo; fi)
12+
RUSTC := $(shell if command -v rustc-1.92 >/dev/null 2>&1; then printf '%s' rustc-1.92; else printf '%s' rustc; fi)
13+
CARGO := $(shell if command -v cargo-1.92 >/dev/null 2>&1; then printf '%s' cargo-1.92; else printf '%s' cargo; fi)
1414

1515
%:
1616
dh $@
@@ -23,12 +23,12 @@ override_dh_auto_configure:
2323
$(CARGO) --version
2424
rustc_version=$$($(RUSTC) --version | awk '{print $$2}'); \
2525
cargo_version=$$($(CARGO) --version | awk '{print $$2}'); \
26-
dpkg --compare-versions "$$rustc_version" ge 1.85 || { \
27-
echo "rustc 1.85+ is required for Rust edition 2024 (found $$rustc_version)"; \
26+
dpkg --compare-versions "$$rustc_version" ge 1.92 || { \
27+
echo "rustc 1.92+ is required for the current dependency set (found $$rustc_version)"; \
2828
exit 1; \
2929
}; \
30-
dpkg --compare-versions "$$cargo_version" ge 1.85 || { \
31-
echo "cargo 1.85+ is required for Rust edition 2024 (found $$cargo_version)"; \
30+
dpkg --compare-versions "$$cargo_version" ge 1.92 || { \
31+
echo "cargo 1.92+ is required for the current dependency set (found $$cargo_version)"; \
3232
exit 1; \
3333
}
3434

0 commit comments

Comments
 (0)