Skip to content

rustix fails to build with features mm, use-libc against riscv64gc-linux-unknown-musl target #1462

Open
@mnissler-rivos

Description

@mnissler-rivos

To reproduce:

$ cargo new riscv_musl_madv_softoffline
    Creating binary (application) `riscv_musl_madv_softoffline` package
note: see more `Cargo.toml` keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
$ cd riscv_musl_madv_softoffline/
$ cargo add -F mm,use-libc rustix
    Updating crates.io index
      Adding rustix v1.0.7 to dependencies
             Features:
             + alloc
             + libc
             + libc_errno
             + mm
             + std
             + use-libc
             29 deactivated features
    Updating crates.io index
     Locking 15 packages to latest Rust 1.86.0 compatible versions
$ cargo build --target riscv64gc-unknown-linux-musl
   Compiling libc v0.2.172
   Compiling bitflags v2.9.0
   Compiling linux-raw-sys v0.9.4
   Compiling rustix v1.0.7
   Compiling errno v0.3.11
error[E0425]: cannot find value `MADV_SOFT_OFFLINE` in module `c`
   --> /home/mnissler/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rustix-1.0.7/src/backend/libc/mm/types.rs:408:36
    |
408 |     LinuxSoftOffline = bitcast!(c::MADV_SOFT_OFFLINE),
    |                                    ^^^^^^^^^^^^^^^^^ not found in `c`
    |
help: consider importing this constant
    |
1   + use linux_raw_sys::general::MADV_SOFT_OFFLINE;
    |
help: if you import `MADV_SOFT_OFFLINE`, refer to it directly
    |
408 -     LinuxSoftOffline = bitcast!(c::MADV_SOFT_OFFLINE),
408 +     LinuxSoftOffline = bitcast!(MADV_SOFT_OFFLINE),
    |

For more information about this error, try `rustc --explain E0425`.

The reason is that the libc crate is missing a MADV_SOFT_OFFLINE definition for the RISC-V / musl targets. I intend to send a libc pull request to fix that. rustix may or may not want to add a temporary local workaround, i.e. extending the existing cfg guard to omit LinuxSoftOffline in RISC-V / musl builds.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions