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

Integrate GitHub Actions #19

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

commonquail
Copy link

Define a GitHub Actions CI pipeline that builds for Linux on MSRV,
stable, and next, and makes a half-arsed attempt at verifying MSRV on
Windows.

Because several dependencies rely on wildcards the de facto MSRVs are a
fair bit higher than advertised:

  • getopts unceremoniously abandoned MSRV pretence in 0.2.20 and raised
    MSRV from 1.18 to 1.27, then again to 1.31 in 0.2.21.
  • libloading 0.6.0 for "unix" uses MaybeUninit, which requires 1.36.
  • libloading 0.6.0 for "windows" uses pointer::cast(), which requires
    1.38, and the non_exhaustive feature, which requires 1.40.

Of course, the original MSRVs can be restored by fixing dependencies.

I've retained the Linux/Windows MSRV split out of precedence. It makes
some sense given the build dependency difference, though I'd argue for
simplifying communication by maintaining only one MSRV.

Define a GitHub Actions CI pipeline that builds for Linux on MSRV,
stable, and next, and makes a half-arsed attempt at verifying MSRV on
Windows.

Because several dependencies rely on wildcards the de facto MSRVs are a
fair bit higher than advertised:

- getopts unceremoniously abandoned MSRV pretence in 0.2.20 and raised
  MSRV from 1.18 to 1.27, then again to 1.31 in 0.2.21.
- libloading 0.6.0 for "unix" uses MaybeUninit, which requires 1.36.
- libloading 0.6.0 for "windows" uses pointer::cast(), which requires
  1.38, and the non_exhaustive feature, which requires 1.40.

Of course, the original MSRVs can be restored by fixing dependencies.

I've retained the Linux/Windows MSRV split out of precedence. It makes
some sense given the build dependency difference, though I'd argue for
simplifying communication by maintaining only one MSRV.
@commonquail
Copy link
Author

I guess pull_request only triggers for incoming pull requests, not outgoing, so this won't run until the master branch push happens. You can see my own build history at https://github.com/commonquail/nvfancontrol/actions. It last built for commonquail@d535e8e, whose parent is commonquail@15b8588.

@commonquail
Copy link
Author

... but I screwed up the message for 15b8588 -_-.

See commit bcfd45d ("Integrate GitHub Actions", 2020-04-14) for details
about this bump.
@commonquail
Copy link
Author

commonquail commented Apr 14, 2020

Well, 15b8588 is now 669dc3e, both of which point to bcfd45d. Sorry for the mess.

@foucault
Copy link
Owner

Thanks for your contribution, although you may have realised that the floating versions on master make this kind of harder that it should be with regards to the minimum rust version we support. At this point I'm wondering what's the proper course of action: (a) pin the versions on master; (b) constantly increase the minimum rust version or (c) do CI only on release branches where dependencies are always pinned anyway. I tend towards (c) although it probably defeats the purpose of the "C" in CI ! Given that I'd rather keep master flexible wrt dependencies the only realistic solution is (b) although I'll admit that don't really know what's the "standard" course of action here.

@commonquail
Copy link
Author

commonquail commented Apr 14, 2020

the floating versions on master make this kind of harder that it should be

Effectively impossible. I was going to submit another change to pin the remaining dependency versions for precisely that reason but hadn't gotten to it yet. Why do you want to avoid that?

I'm not personally inconvenienced by the minimum Rust version here (except for tracing it through a few misleading dependencies to determine it...). You could, for instance, just say "stable and nightly only", and get complete freedom from core Rust. That wouldn't prevent breakage by API changes in dependencies, though. It's quite trivial to make different build steps for master and release-*, too, for instance.

And at the end of the day you can always just reject this. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants