[-- Attachment #1: Type: text/plain, Size: 1034 bytes --] New issue by cinerea0 on void-packages repository https://github.com/void-linux/void-packages/issues/34889 Description: Some rust packages are currently failing to cross-build because they depend on indexmap. A default hash builder only exits for std builds; this is checked in indexmap's build.rs file, and that test is currently failing for us. We don't want to fix it with the environment variable because the autocfg tests should be working. Packages that have been merged: * delta (https://github.com/void-linux/void-packages/commit/a57464b5b5fb3d7629c8f70ca4125d390629c9c4) * mdcat (https://github.com/void-linux/void-packages/commit/6f50eb3dae70699544b87edfe7eda0fe981b967b) * tree-sitter (https://github.com/void-linux/void-packages/commit/6660537f754ddb0ca97c3b174425998bd796ca57) Packages with open PRs: * broot (https://github.com/void-linux/void-packages/pull/34854) * rust-analyzer (https://github.com/void-linux/void-packages/pull/34856) * starship (https://github.com/void-linux/void-packages/pull/34850)
[-- Attachment #1: Type: text/plain, Size: 244 bytes --] New comment by abenson on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1006217952 Comment: `indexmap` is the first thing most things fail on, but there are more all centered around `autocfg`.
[-- Attachment #1: Type: text/plain, Size: 163 bytes --] New comment by ericonr on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1006220196 Comment: :upside_down_face:
[-- Attachment #1: Type: text/plain, Size: 323 bytes --] New comment by cinerea0 on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1006265617 Comment: I'm going to start a separate comment to list packages that have the error but haven't been merged or don't have open PRs since they're not as high priority. The list: * fselect
[-- Attachment #1: Type: text/plain, Size: 522 bytes --] New comment by ericonr on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1006280845 Comment: I came across this while investigating, might have something to do with it https://github.com/LibreELEC/LibreELEC.tv/pull/5446 https://github.com/rust-lang/cargo/pull/9322 got merged right after the release we were using. Should be unstable and not affect anything, but who knows for sure. https://github.com/cuviper/autocfg/issues/15 might be the relevant one? but unsure
[-- Attachment #1: Type: text/plain, Size: 350 bytes --] New comment by jcgruenhage on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1037926284 Comment: Considering this affects quite a few packages by now, and I haven't seen a big push to solve this yet, does it maybe make sense to mark these as nocross for now, with a reference to this tracking issue?
[-- Attachment #1: Type: text/plain, Size: 172 bytes --] New comment by paper42 on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1038820794 Comment: gitui is another one: #35490
[-- Attachment #1: Type: text/plain, Size: 558 bytes --] New comment by tranzystorek-io on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1046095433 Comment: From https://github.com/google/cargo-raze/issues/114#issuecomment-547080315: > (Nitty gritty aside: It seem the way this works is the autocfg library tries to run rustc over a file containing the single "extern $some_crate", and identifies whether or not that compiles) Maybe building a file like: ```rust extern crate std; ``` on the failing targets could point to the cause of this problem?
[-- Attachment #1: Type: text/plain, Size: 565 bytes --] New comment by tranzystorek-io on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1046095433 Comment: From https://github.com/google/cargo-raze/issues/114#issuecomment-547080315: > (Nitty gritty aside: It seem the way this works is the autocfg library tries to run rustc over a file containing the single "extern $some_crate", and identifies whether or not that compiles) Maybe trying to build a file like: ```rust extern crate std; ``` on the failing targets could point to the cause of this problem?
[-- Attachment #1: Type: text/plain, Size: 864 bytes --] New comment by tranzystorek-io on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1046310587 Comment: Did a bit of analysis on a test repo where I added some debug printouts to `autocfg`, and I seem to have found the problem. When autocfg probes for the std crate, it runs a custom `rustc` command with arguments that try to mimic the settings of the crate that is being built. In our case, that should include a custom `--sysroot=<XBPS_CROSS_BASE>/usr` argument, pointing to the rust-std install for the cross target. Unfortunately, we pass this as the RUSTFLAGS environment variable, and the build.rs script run, being a subprocess in a new shell context, doesn't see any RUSTFLAGS in its environment. In the end the `rustc` probe is run with almost all the needed arguments, except for the `--sysroot`.
[-- Attachment #1: Type: text/plain, Size: 1190 bytes --] New comment by tranzystorek-io on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1046310587 Comment: Did a bit of analysis on a test repo where I added some debug printouts to `autocfg`, and I seem to have found the problem. When autocfg probes for the std crate, it runs a custom `rustc` command with arguments that try to mimic the settings of the crate that is being built. In our case, that should include a custom `--sysroot=<XBPS_CROSS_BASE>/usr` argument, pointing to the rust-std install for the cross target. Unfortunately, we pass this as the RUSTFLAGS environment variable, and the build.rs script run, being a subprocess in a new shell context, doesn't see any RUSTFLAGS in its environment. In the end the `rustc` probe is run with almost all the needed arguments, except for the `--sysroot`. EDIT 1: There also seems to be a general issue with passing RUSTFLAGS to build scripts: https://github.com/rust-lang/cargo/issues/4423 EDIT 2: The issue seems to be mitigated in `autocfg` 1.1.0, where it also tries to read `CARGO_ENCODED_RUSTFLAGS`, which as I checked is set by cargo in general when crossing in xbps-src
[-- Attachment #1: Type: text/plain, Size: 353 bytes --] New comment by tranzystorek-io on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1046320224 Comment: It's probably unreasonable to skip the affected packages' versions, but I'm not sure if we can somehow make patches that force just the autocfg bump, similar to running `cargo update --package autocfg`
[-- Attachment #1: Type: text/plain, Size: 633 bytes --] New comment by jcgruenhage on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1046325116 Comment: If it's just updating autocfg to 1.1.0 in the deps, `cargo update --package autocfg --precise 1.1.0` should do it, no need to actually write patches for that. https://github.com/void-linux/void-packages/pull/35490/files#diff-6e15b2c2a57581f8262281a6d3343049c12e4de3c59ec1455fc8bb8027846d15R16-R18 is running that line in `post_patch`, which locally made cross compiling to aarch64 work for gitui locally. Let's see how that does for the other packages and other architectures in CI.
[-- Attachment #1: Type: text/plain, Size: 207 bytes --] New comment by jcgruenhage on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1046326436 Comment: So yeah, seems like gitui and cargo-deny now pass their CI!
[-- Attachment #1: Type: text/plain, Size: 203 bytes --] New comment by tranzystorek-io on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1046332138 Comment: zellij also seems to build locally for aarch64 😄
[-- Attachment #1: Type: text/plain, Size: 305 bytes --] New comment by tranzystorek-io on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1047704789 Comment: Another problem with this issue in #35768. Probably cannot update autocfg to 1.1.0 there easily since the num-bigint-dig dependency selects autocfg 0.1.5
[-- Attachment #1: Type: text/plain, Size: 306 bytes --] New comment by tranzystorek-io on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1047704789 Comment: Another problem with this issue in #35768. Probably cannot update autocfg to 1.1.0 there easily since the num-bigint-dig dependency selects autocfg ^0.1.5
[-- Attachment #1: Type: text/plain, Size: 253 bytes --] New comment by tranzystorek-io on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1048463307 Comment: As per https://github.com/cuviper/autocfg/issues/40, autocfg 0.1 versions need to be updated to 0.1.8
[-- Attachment #1: Type: text/plain, Size: 370 bytes --] New comment by cinerea0 on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1062431423 Comment: Adding the following lines will likely fix any unfixed packages (credit to @tranzystorek-io) : ```sh post_patch() { # fixes an indexmap error when cross compiling cargo update --package autocfg --precise 1.1.0 } ```
[-- Attachment #1: Type: text/plain, Size: 293 bytes --] New comment by github-actions[bot] on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1161108231 Comment: Issues become stale 90 days after last activity and are closed 14 days after that. If this issue is still relevant bump it or assign it.
[-- Attachment #1: Type: text/plain, Size: 296 bytes --] New comment by classabbyamp on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1161127561 Comment: @cinerea0 can this be closed? It looks like there's a solution that can be applied if future issues appear, and every package listed has been fixed
[-- Attachment #1: Type: text/plain, Size: 446 bytes --] New comment by jcgruenhage on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1161385266 Comment: Probably can be closed. One thing that might still be worth mentioning is that xlint requires specific versions by now, so the solution suggested here has to be adapted slightly: ``` cargo update --package autocfg:1.0.1 --precise 1.1.0 cargo update --package autocfg:0.1.7 --precise 0.1.8 ```
[-- Attachment #1: Type: text/plain, Size: 676 bytes --] New comment by jcgruenhage on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1161385266 Comment: Probably can be closed. One thing that might still be worth mentioning is that xlint requires specific versions by now, so the solution suggested here has to be adapted slightly: ``` cargo update --package autocfg:1.0.1 --precise 1.1.0 cargo update --package autocfg:0.1.7 --precise 0.1.8 ``` The advantage here is that the specific version to update from and to ensures that cargo loudly complains if we update the package and the fix isn't required anymore, to not drag those fixes along for any longer than necessary
[-- Attachment #1: Type: text/plain, Size: 216 bytes --] New comment by cinerea0 on void-packages repository https://github.com/void-linux/void-packages/issues/34889#issuecomment-1162478223 Comment: Yeah, this should be fine to close now that there's a general solution.
[-- Attachment #1: Type: text/plain, Size: 1535 bytes --] Closed issue by cinerea0 on void-packages repository https://github.com/void-linux/void-packages/issues/34889 Description: Some rust packages are currently failing to cross-build because they depend on indexmap. A default hash builder only exits for std builds; this is checked in indexmap's build.rs file, and that test is currently failing for us. We don't want to fix it with the environment variable because the autocfg tests should be working. Packages that have been merged: - [ ] alacritty (https://github.com/void-linux/void-packages/commit/bb096521bab955c4bc72fd312ae25a53ee91bc68) Packages with open PRs: - [ ] sequoia-sq (https://github.com/void-linux/void-packages/pull/32480) Fixed packages: - [x] bat (https://github.com/void-linux/void-packages/pull/34966) - [x] delta (https://github.com/void-linux/void-packages/commit/48fa12c7177122900f275446a043a8b839e77dcf) - [x] git-cliff (https://github.com/void-linux/void-packages/pull/35489) - [x] gitui (https://github.com/void-linux/void-packages/pull/35490) - [x] mdcat (https://github.com/void-linux/void-packages/commit/66eaeca1072cbc8a98c00f552648a4101108657c) - [x] rust-analyzer (https://github.com/void-linux/void-packages/pull/34856) - [x] starship (https://github.com/void-linux/void-packages/pull/34850) (Fixed on its own) - [x] texlab (https://github.com/void-linux/void-packages/commit/9f22215912441436bd9314a438838b6a89972f6d) - [x] tree-sitter (https://github.com/void-linux/void-packages/commit/a93c5322d34603901cf0ab5be9014ea39b2e2cf4)