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

riotdocker-base: bump to 2022.04 (Jammy Jellyfish) #189

Merged
merged 6 commits into from
Sep 26, 2022

Conversation

kaspar030
Copy link
Contributor

Trying to just bump. (/me crossing fingers)

@kaspar030
Copy link
Contributor Author

@chrysn I think we need a newer c2rust build (based on jammy):

#12 53.26 The following packages have unmet dependencies:
#12 53.36  c2rust : Depends: libllvm10 (>= 1:9~svn298832-1~) but it is not installable
#12 53.36 E: Unable to correct problems, you have held broken packages.

Maybe tag it differently so the old one stays until this PR is merged?

@chrysn
Copy link
Member

chrysn commented Apr 22, 2022

IIUC it should suffice if I build c2rust-built on the current branch (with the right riotdocker); I'll publish it as :jammy (probably tomorrow morning after this has run through) and then this branch can switch over to :jammy (and maybe we should stick with Ubuntu version names rather than :latest anyway).

@chrysn
Copy link
Member

chrysn commented Apr 22, 2022

Hm, it's not tha trivial due to OpenSSL version mismatches, investigating tomorrow.

@chrysn
Copy link
Member

chrysn commented Apr 23, 2022

I don't see a trivial route for fixing this right now -- C2Rust depends on OpenSSL 1.x (which is also the default libssl-dev in Debian even now), but Ubuntu switched to OpenSSL 3 while Debian still has that only marked as "experimental".

I'm running some tests with selectively updated C2Rust dependencies, maybe that gets us somewhere; in parallel, I'm looking into whether we can unpin the C2Rust version altogether (looks like they're preparing a new major release, so I'm careful there to just update master).

@chrysn
Copy link
Member

chrysn commented Apr 23, 2022

The new upstream release of c2rust looks like the most promising route; I hoped to let it mature a bit more, but it appears to solve the issue of not accepting the new OpenSSL version (judging by other openssl-sys dependent packages building on jammy).

Looks right now like it'll need one or two bug fixes, and a riot-sys update to get the generalized workarounds where they depended on properties of the old version, but generally that update would simplify things a lot anyway, as it allows building c2rust without downloading an ancient nightly.

@benpicco
Copy link
Contributor

Is there a chance we can then also use #116?
I'd really like to use a more up to date picolibc, but I don't want to maintain it myself.

@chrysn
Copy link
Member

chrysn commented May 3, 2022

The Rust situation is largely resolved with RIOT-OS/RIOT#18048 that pulls in a riot-sys with support for the latest C2Rust.

I do have working builds locally with a branch of C2Rust (mainly branches that upstream is about to merge, plus a change to be able to tell which C2Rust version we're actually using). If you want to press this fast, I can get these ship-shape, but I'd prefer to wait for their release (immunant/c2rust#388), as that'd allow simplifying things further (cargo install c2rust --version 0.1.6 rather than building from git).

@kaspar030
Copy link
Contributor Author

I don't think there's any rush. No need to press this.

@kaspar030
Copy link
Contributor Author

@chrysn
Copy link
Member

chrysn commented May 13, 2022

Other than on the Rust side, how far along is this? (Options for the C2Rust update are to do it in here, or to do it on a separate update still on focal, as using the new C2Rust version is now also a blocker for RIOT-OS/RIOT#18056)

[edit:] Never mind, started it on focal as it's cleaner that way anyway; see #195

@chrysn chrysn mentioned this pull request May 13, 2022
bors bot added a commit that referenced this pull request May 13, 2022
195: Update C2Rust to 0.16 r=kaspar030 a=chrysn

Things got a lot easier since upstream did awesome work leading up to immunant/c2rust#365.

This release allows riot-sys to do away with a quite a few workarounds, and resolves a blocker for RIOT-OS/RIOT#18056 in passing.

This is a prerequisite for #189 (in the course of which C2Rust can then be simplified further, as we can just use Rust from Ubuntu to build it, or even simply let this become a Debian package over time).

Co-authored-by: chrysn <chrysn@fsfe.org>
bors bot added a commit that referenced this pull request May 13, 2022
195: Update C2Rust to 0.16 r=kaspar030 a=chrysn

Things got a lot easier since upstream did awesome work leading up to immunant/c2rust#365.

This release allows riot-sys to do away with a quite a few workarounds, and resolves a blocker for RIOT-OS/RIOT#18056 in passing.

This is a prerequisite for #189 (in the course of which C2Rust can then be simplified further, as we can just use Rust from Ubuntu to build it, or even simply let this become a Debian package over time).

Co-authored-by: chrysn <chrysn@fsfe.org>
@chrysn
Copy link
Member

chrysn commented May 13, 2022

If you rebase that onto master after #195 is in, you can switch the riotbuild/Dockerfile COPY --from chrysn/c2rust-built:for-riot to chrysn/c2rust-built:jammy that is being uploaded (which takes a while given it's based on a local build of riotdocker-base).

(The more I think of it, the more I want to get rid of the docker tag switcharoo, and just start doing a cargo install c2rust directly in riotbuild, now that that's possible)

@kaspar030
Copy link
Contributor Author

Other than on the Rust side, how far along is this?

let's see. :)

@chrysn
Copy link
Member

chrysn commented Jun 14, 2022

I can't make it a suggestion from the GitHub GUI as it's outside the range, but seeing that LLVM version is parameterized, s/libclang-dev/libclang-${LLVM_VERSION}-dev/ and s/llvm-dev/llvm-${LLVM_VERSION}-dev/ in the 'Installing C2Rust (build) dependencies' section should enhance version cohesion.

@kaspar030
Copy link
Contributor Author

I've bumped numpy to 1.22.4. It's marked as emlearn dependency, and emlearn specifies ">=1.14.0". Where is this used? @aabadie do you know?

@benpicco
Copy link
Contributor

benpicco commented Aug 3, 2022

@chrysn
Copy link
Member

chrysn commented Sep 7, 2022

This is making RIOT-OS/RIOT#18565 harder than it needs to be.

Is there anything left that's keeping us from continuing with this? Let's ask one expert:

bors try

@kaspar030
Copy link
Contributor Author

hm, it seems like this passed.

@chrysn
Copy link
Member

chrysn commented Sep 26, 2022

Not ACKing yet because there's a fixup left in this (and we don't have CI checks that prevent merging them). I think this is good for a squash and then prime time. (We're still well on time to have this for 2022.10).

@kaspar030
Copy link
Contributor Author

IMO we should maybe merge this on a tuesday morning with a bunch of motivated sprinters ready to fix the fallout.

@chrysn
Copy link
Member

chrysn commented Sep 26, 2022

Or a Monday afternoon (like, in 8 hours), so that if there is breakage, CI would have gathered failure reports from a few runs that the sprinters can work on.

@benpicco
Copy link
Contributor

bors try

bors bot added a commit that referenced this pull request Sep 26, 2022
@bors
Copy link
Contributor

bors bot commented Sep 26, 2022

try

Build succeeded:

  • Build and Test

@kaspar030
Copy link
Contributor Author

so, should we do it? (needs an ACK)

btw, the actions already do a "try".

@kaspar030
Copy link
Contributor Author

bors merge

@bors
Copy link
Contributor

bors bot commented Sep 26, 2022

Build succeeded:

@bors bors bot merged commit a145873 into RIOT-OS:master Sep 26, 2022
@kaspar030 kaspar030 deleted the bump_to_jammy branch September 27, 2022 06:23
chrysn added a commit to chrysn-pull-requests/riotdocker that referenced this pull request Sep 27, 2022
Build failures after RIOT-OS#189 show
that the test coverage is insufficient to catch C2Rust breakage; this
mitigates it by building an example that pulls in much more code.
@chrysn chrysn mentioned this pull request Sep 27, 2022
bors bot added a commit that referenced this pull request Sep 27, 2022
209: CI: Test Rust both with hello-world and gcoap example r=kaspar030 a=chrysn

Build failures after #189 show that the test coverage is insufficient to catch C2Rust breakage; this mitigates it by building an example that pulls in much more code.

[edit: Also, this is a good base to look into whether this needs / can be fixed on the image rather than on the Rust side, and it keeps pressure off Murdock by testing it here].

Co-authored-by: chrysn <chrysn@fsfe.org>
bors bot added a commit that referenced this pull request Sep 27, 2022
210: C2Rust updates / fixes r=kaspar030 a=chrysn

This branch is used for investigating failures encountered after merging #189, in which C2Rust errs internally. Upstream might already have solved it.

This builds on #209.

Co-authored-by: chrysn <chrysn@fsfe.org>
@miri64
Copy link
Member

miri64 commented Oct 1, 2022

Seems like with this update libasan is now missing from the Docker container. All release tests for native failed tonight: https://github.com/RIOT-OS/RIOT/actions/runs/3163069653/jobs/5150275711

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.

4 participants