Skip to content

Conversation

@appleparan
Copy link
Contributor

@appleparan appleparan commented Jan 3, 2026

Summary

  • Fix Launchpad PPA build failures by ensuring Rust 1.85 compatibility
  • Add CI workflow to test Launchpad build environment before uploading
  • Pin dependencies to versions compatible with Rust 1.85 (Launchpad's toolchain)

Problem

Launchpad PPA builds were failing due to:

  1. Dependency incompatibility: Several crates require Rust versions newer than 1.85
    • sysinfo@0.37.2 requires Rust 1.88
    • libloading@0.9 requires Rust 1.88
    • libamdgpu_top@0.11 uses Rust 2024 edition (requires Rust 1.88+)
  2. Unstable feature usage: Code used is_multiple_of() which is unstable until Rust 1.88+ (rust-lang/rust#128101)
  3. No pre-upload testing: No way to verify builds would succeed on Launchpad before uploading

Solution

  1. Pin dependencies to Rust 1.85-compatible versions:
    • sysinfo: 0.37 → 0.33 (MSRV 1.69)
    • libloading: 0.9 → 0.8 (MSRV 1.71)
    • libamdgpu_top: 0.11 → 0.10 (uses Rust 2021 edition)
  2. Replace unstable feature: Use cycle % FULL_REFRESH_INTERVAL == 0 instead of cycle.is_multiple_of()
  3. Add clippy lint allowances for cross-version compatibility:
    • manual_is_multiple_of = "allow" in Cargo.toml (for latest Rust)
    • #[allow(clippy::needless_lifetimes)] on 9 impl blocks (for Rust 1.85)
  4. Add Launchpad build test CI (launchpad_build_test.yml):
    • Tests offline build with --network none (simulates Launchpad)
    • Tests with Rust 1.85 toolchain
    • Runs on push/PR to catch issues early

Test Plan

* `cargo build --release` passes with latest Rust
* `cargo build --release` passes with Rust 1.85
* `cargo clippy --release -- -D` warnings passes with latest Rust
* `cargo clippy --release -- -D` warnings passes with Rust 1.85
* `cargo test` passes
* Launchpad PPA build succeeds after merge

Closes #112

appleparan and others added 4 commits January 3, 2026 17:15
Simulates the Launchpad PPA build environment to catch issues before
uploading to the actual PPA. Tests include:

- Ubuntu jammy/noble base images
- Rust 1.85 (same as rust-1.85-all package)
- Network-disabled offline build (--network none)
- Vendored dependencies with cargo --frozen

Also fixes .gitignore to not exclude .github/ directory.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Pin the following dependencies to versions compatible with Rust 1.85
for Launchpad PPA builds:

- sysinfo: 0.33 (0.37 requires Rust 1.88)
- libloading: 0.8 (0.9 requires Rust 1.88)
- libamdgpu_top: 0.10 (0.11 uses Rust 2024 edition)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace `is_multiple_of()` method with equivalent `% == 0` expression
for Rust 1.85 compatibility. The `is_multiple_of` method is still an
unstable feature (rust-lang/rust#128101) not available in stable Rust.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add #[allow(clippy::needless_lifetimes)] to MetricExporter impls and
Visitor impl to suppress false positives in Rust 1.85's clippy.

Add manual_is_multiple_of = "allow" to Cargo.toml lints section to
allow using modulo operator instead of unstable is_multiple_of() method
(rust-lang/rust#128101).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@inureyes inureyes self-assigned this Jan 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Build error on PPA: MSRV check failed (rustc 1.85 < 1.88)

2 participants