Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do something about the sparc CI job #4061

Closed
tgross35 opened this issue Nov 16, 2024 · 7 comments · Fixed by #4133
Closed

Do something about the sparc CI job #4061

tgross35 opened this issue Nov 16, 2024 · 7 comments · Fixed by #4133
Labels
A-CI Area: CI-related items E-help-wanted Call for participation: Help is requested to fix this issue. E-medium E-medium Call for participation: Medium difficulty. Experience needed to fix: Intermediate.

Comments

@tgross35
Copy link
Contributor

Most CI jobs take about 5 minutes but sparc64-unknown-linux-gnu takes about 25 minutes. I think this is because it is the only job that uses qemu-system vs qemu-user.

It would be nice to somehow get this job's runtime closer to the other jobs. It might be possible to replace qemu-system somehow, or even just do something like only run the job once the PR is in the merge queue (i.e. don't require sparc to complete in PR CI).

@tgross35 tgross35 added A-CI Area: CI-related items E-medium E-medium Call for participation: Medium difficulty. Experience needed to fix: Intermediate. E-help-wanted Call for participation: Help is requested to fix this issue. labels Nov 16, 2024
@folkertdev
Copy link
Contributor

to try to debug this, it would be really useful if the script could be run locally, but I'm running into compile failures

>  sudo sh ci/run-docker.sh sparc64-unknown-linux-gnu
... stuff ...
+ docker run --rm --user 0:0 --env LIBC_CI --env LIBC_CI_ZBUILD_STD --env CARGO_HOME=/cargo --env CARGO_TARGET_DIR=/checkout/target --volume .:/cargo --volume /home/folkertdev/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu:/rust:ro --volume /home/folkertdev/rust/libc:/checkout:ro --volume /home/folkertdev/rust/libc/target:/checkout/target --init --workdir /checkout libc-sparc64-unknown-linux-gnu sh -c HOME=/tmp PATH=$PATH:/rust/bin exec ci/run.sh sparc64-unknown-linux-gnu
+ mirrors_url=https://ci-mirrors.rust-lang.org/libc
+ target=sparc64-unknown-linux-gnu
+ [ -n  ]
+ [ sparc64-unknown-linux-gnu = s390x-unknown-linux-gnu ]
+ cargo test --no-default-features --manifest-path libc-test/Cargo.toml --target sparc64-unknown-linux-gnu
   Compiling quote v1.0.21
   Compiling dirs-sys v0.3.7
   Compiling rustc_version v0.4.0
   Compiling cc v1.0.83
   Compiling libc v1.0.0-alpha.1 (/checkout)
   Compiling dirs v2.0.2
   Compiling term v0.6.1
   Compiling syn v1.0.99
   Compiling serde_derive v1.0.143
   Compiling serde v1.0.143
   Compiling garando_pos v0.1.0
   Compiling serde_json v1.0.83
   Compiling garando_errors v0.1.0
   Compiling garando_syntax v0.1.0
   Compiling ctest2 v0.4.8
error[E0061]: this function takes 3 arguments but 2 arguments were supplied
    --> /cargo/registry/src/index.crates.io-6f17d22bba15001f/ctest2-0.4.8/src/lib.rs:2525:25
     |
2525 |                 Rc::new(macro_rules::compile(self.parse_sess, item)),
     |                         ^^^^^^^^^^^^^^^^^^^^                  ---- argument #2 of type `&RefCell<Features>` is missing
     |
note: function defined here
    --> /cargo/registry/src/index.crates.io-6f17d22bba15001f/garando_syntax-0.1.0/src/ext/tt/macro_rules.rs:172:8
     |
172  | pub fn compile(sess: &ParseSess, features: &RefCell<Features>, def: &ast::Item) -> SyntaxExtension {
     |        ^^^^^^^
help: provide the argument
     |
2525 |                 Rc::new(macro_rules::compile(self.parse_sess, /* &RefCell<Features> */, item)),
     |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

For more information about this error, try `rustc --explain E0061`.
error: could not compile `ctest2` (lib) due to 1 previous error
warning: build failed, waiting for other jobs to finish...

for some reason the sysroot in this line --volume "$(rustc --print sysroot)":/rust:ro \ does not expand by itself (it's the empty string, even though when I run that rustc command in the terminal it does work). I've patched that, but then get this build failure.

So, I guess, how do I run the sparc CI job locally?

@tgross35
Copy link
Contributor Author

Which OS are you on? I can't check right now but I think some of these jobs use your local ~/.rustup which caused problems when I was on macos.

I'm not really sure, I haven't run these either. But I will try it out later

@folkertdev
Copy link
Contributor

Linux Mint 22 features a Linux kernel 6.8 and an Ubuntu 24.04 package base.

so effectively a fairly recent ubuntu

@tgross35
Copy link
Contributor Author

Comparing to what CI is saying:

+ docker run --rm --user 1001:118 --env LIBC_CI --env LIBC_CI_ZBUILD_STD --env CARGO_HOME=/cargo --env CARGO_TARGET_DIR=/checkout/target --volume /home/runner/.cargo:/cargo --volume /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu:/rust:ro --volume /home/runner/work/libc/libc:/checkout:ro --volume /home/runner/work/libc/libc/target:/checkout/target --init --workdir /checkout libc-sparc64-unknown-linux-gnu sh -c HOME=/tmp PATH=$PATH:/rust/bin exec ci/run.sh sparc64-unknown-linux-gnu

The script has default_cargo_home="$(dirname "$(dirname "$(command -v cargo)")")", looks like that might not be expanding on your system since it has --volume .:/cargo. Also looks like root shouldn't be needed based on uid

@tgross35
Copy link
Contributor Author

Also echo --volume "$(rustc --print sysroot)":/rust:ro works fine on my system and apparently CI, I'm not sure why it wouldn't on yours. #!/bin/sh isn't linked to something weirder than dash is it?

@folkertdev
Copy link
Contributor

it's a sudo thing, apparently? without sudo the paths are fine. so I'm fighting docker now so that I don't need to use sudo when invoking the script?!

@folkertdev
Copy link
Contributor

folkertdev commented Nov 21, 2024

just caved and ran the whole thing as root...

I suspect the real issue is the version of garando_syntax, on CI

   Compiling garando_syntax v0.1.1
   Compiling ctest2 v0.4.8
   Compiling libc-test v0.1.0 (/checkout/libc-test)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 20s

versus locally

   Compiling garando_syntax v0.1.0
   Compiling ctest2 v0.4.8
error[E0061]: this function takes 3 arguments but 2 arguments were supplied
    --> /cargo/registry/src/index.crates.io-6f17d22bba15001f/ctest2-0.4.8/src/lib.rs:2525:25
     |
2525 |                 Rc::new(macro_rules::compile(self.parse_sess, item)),
     |                         ^^^^^^^^^^^^^^^^^^^^                  ---- argument #2 of type `&RefCell<Features>` is missing

so, is there some sort of version/edition/solver difference that locally selects the older version of garando_syntax? I can't really think of anything. I'm not sure where/how to force that later version.

edit: running cargo update garando_syntax --precise 0.1.1 did the trick. The 0.1.0 version should be yanked really, it's just broken

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-CI Area: CI-related items E-help-wanted Call for participation: Help is requested to fix this issue. E-medium E-medium Call for participation: Medium difficulty. Experience needed to fix: Intermediate.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants