Skip to content

test: Set version-dependent skips based on header defines#5188

Open
tgross35 wants to merge 2 commits into
rust-lang:mainfrom
tgross35:version-skips
Open

test: Set version-dependent skips based on header defines#5188
tgross35 wants to merge 2 commits into
rust-lang:mainfrom
tgross35:version-skips

Conversation

@tgross35

@tgross35 tgross35 commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

When there are additions or updates that are only available with newer
platform versions, we don't have a great way to handle testing. The only
thing we can really do is unconditionally skip anything that doesn't
pass on the oldest versions we have on CI.

Improve this by adding a preprocess-only compiler invocation that
collects versions from the headers we are building against. These are
then used to skip

This initial patch only uses the versions for skips on Linux and
replacing the NetBSD uname invocation.

Also included is an IO number fix that showed up in the new tests.

@tgross35 tgross35 force-pushed the version-skips branch 7 times, most recently from 76aae41 to 0636284 Compare June 22, 2026 09:30
@rustbot rustbot added the A-CI Area: CI-related items label Jun 22, 2026
@tgross35 tgross35 force-pushed the version-skips branch 9 times, most recently from 8af7d0a to 69fa8db Compare June 23, 2026 07:12
@tgross35 tgross35 changed the title test: Only skip new additions on older kernels test: Set version-dependent skips based on header defines Jun 23, 2026
tgross35 added 2 commits June 23, 2026 03:30
When there are additions or updates that are only available with newer
platform versions, we don't have a great way to handle testing. The only
thing we can really do is unconditionally skip anything that doesn't
pass on the oldest versions we have on CI.

Improve this by adding a preprocess-only compiler invocation that
collects versions from the headers we are building against. These are
then used to skip 

This initial patch only uses the versions for skips on Linux and
replacing the NetBSD `uname` invocation.
PowerPC, Sparc, and MIPS (32- and 64-bit for all) have different `_IOC`
numbers, meaning the constants were inaccurate. Example error on
PowerPC64:

    bad `EPIOCSPARAMS` value at byte 4: rust: 64 (0x40) != c 128 (0x80)
        rust bytes: 00 00 00 00 40 08 8a 01
        c bytes:    00 00 00 00 80 08 8a 01
    bad `EPIOCGPARAMS` value at byte 4: rust: 128 (0x80) != c 64 (0x40)
        rust bytes: 00 00 00 00 80 08 8a 02
        c bytes:    00 00 00 00 40 08 8a 02

Resolve this by using `_IOW` and `_IOR`.

Source: https://github.com/torvalds/linux/blob/502d801f0ab03e4f32f9a33d203154ce84887921/include/uapi/linux/eventpoll.h#L97-L99
Fixes: fb58c01 ("epoll: add busy polling parameters")
@tgross35 tgross35 marked this pull request as ready for review June 23, 2026 07:35
@tgross35 tgross35 requested a review from JohnTitor June 23, 2026 07:35
@tgross35

Copy link
Copy Markdown
Contributor Author

I think this is pretty reasonable, and probably the easiest way to make sure anyone on a different kernel version than CI doesn't get a handful of errors, but could use a second set of eyes.

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 S-waiting-on-review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants