Skip to content

Broken builds on loongarch64 with libc 0.2.175 #1496

@tgross35

Description

@tgross35

There is a new failure on loongarch64 with the new release:

error[E0659]: `STATX_TYPE` is ambiguous
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rustix-1.0.8/src/fs/statx.rs:73:25
    |
 73 |         const TYPE = c::STATX_TYPE;
    |                         ^^^^^^^^^^ ambiguous name
    |
    = note: ambiguous because of multiple glob imports of a name in the same module
note: `STATX_TYPE` could refer to the constant imported here
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rustix-1.0.8/src/backend/libc/c.rs:7:16
    |
  7 | pub(crate) use libc::*;
    |                ^^^^^^^
    = help: consider adding an explicit import of `STATX_TYPE` to disambiguate
note: `STATX_TYPE` could also refer to the constant imported here
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rustix-1.0.8/src/backend/libc/c.rs:512:16
    |
512 | pub(crate) use statx_flags::*;
    |                ^^^^^^^^^^^^^^
    = help: consider adding an explicit import of `STATX_TYPE` to disambiguate

(stumbled across this in CI)

I think rustix is assuming that libc's musl version is stuck at a pre-1.2 version. This is a pretty safe assumption, but we have a config that enables 1.2+ API on targets that never supported anything less https://github.com/rust-lang/libc/blob/bbafd450b7b03f0a0248efbae99b563b04bdb10a/build.rs#L91-L97. loongarch is in that boat and the most recent release contained rust-lang/libc#3976, hence this issue.

Unfortunately I don't really have a better suggestion that to use the same logic as our build script to decide whether or not you need the polyfills, or to replace the glob imports.

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