Skip to content

Conversation

@sauclovian-g
Copy link
Contributor

No description provided.

Copy link
Contributor

@RyanGlScott RyanGlScott left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be worth manually triggering a CI workflow that includes the saw and saw-remote-api Docker image builds to ensure that they still work after these changes.

FROM ubuntu:24.04

RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
RUN apt-get update && apt-get install -y clang-12 make
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ubuntu:24.04 includes clang-12 anymore, so we'll likely need to bump the Clang version here. Some investigation suggests clang-14 is supported in ubuntu:24.04, so that might work.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did that...

FROM ubuntu:20.04
FROM ubuntu:22.04

ARG heapster_commit=ca697c01ae9f3d2fbcae3169318d69f58e83efb2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GitHub won't let me highlight it, but there is a similar versioning problem below in this Dockerfile:

# Dependencies for installing Haskell and Coq, mainly
RUN apt-get update && apt-get install -y \
  curl gcc git m4 make libtinfo5 libgmp-dev locales locales-all opam xz-utils z3 zlib1g-dev 

I think this needs to be libtinfo6 in ubuntu:24.04.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops, missed this one, will bump it after the current builds finish

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also do you know why this ARG line is referencing a commit from 2020?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No idea. Truth be told, I'm not sure if anything in the CI is actually using this Dockerfile.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like not, so I'll revert all the changes to it as they're likely to break it (and I would expect the ubuntu 20.04 base docker image to hang around for some years yet, unlike GH Actions)

FROM ubuntu:22.04
FROM ubuntu:24.04
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
RUN apt-get update && apt-get install -y curl wget unzip git cmake golang python3-pip libncurses6 libncurses5 libtinfo-dev quilt file
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AFAICT, libncurses5 no longer exists in ubuntu:24.04. Oddly enough this Dockerfile is already installing both libncurses6 and libncurses5. libncurses6 appears to be the only version supported in ubuntu:24.04, so let's just go with that one.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and I think I got all of these.

FROM ubuntu:22.04
FROM ubuntu:24.04
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
RUN apt-get update && apt-get install -y curl wget unzip git cmake golang python3-pip libncurses6 libncurses5 libtinfo-dev quilt file
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar comments about libncurses here.

FROM ubuntu:24.04

RUN apt-get update -y -q && \
apt-get install -y software-properties-common && \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GitHub won't let me highlight it, but the use of libncurses5 below should be replaced with libncurses6.

@sauclovian-g sauclovian-g force-pushed the ubuntu-24.04 branch 2 times, most recently from 5ca988a to c1cd683 Compare March 27, 2025 20:00
@sauclovian-g
Copy link
Contributor Author

sauclovian-g commented Mar 27, 2025

Most of the s2n proofs are failing because they download https://s2n-public-test-dependencies.s3-us-west-2.amazonaws.com/saw-0.4.0.99-2020-03-31-Ubuntu14.04-64.tar.gz (which still exists) and then try to run saw from it (which requires ncurses 5).

I am guessing this needs to be suppressed upstream somewhere much as we did before with the other ancient binary downloads that had disappeared.

(update: appears to be possible to avoid that)

@sauclovian-g sauclovian-g force-pushed the ubuntu-24.04 branch 5 times, most recently from ae8399b to 9e1bfdf Compare March 28, 2025 21:02
@sauclovian-g sauclovian-g marked this pull request as ready for review March 28, 2025 22:35
@sauclovian-g
Copy link
Contributor Author

Ok, after all the assorted chaos and force-pushes I think this is now a reasonable set of changes that we could actually merge, and provided I didn't make some silly syntax blunder in the last commit it ought to actually run this way too.

@sauclovian-g
Copy link
Contributor Author

Manual run with docker images is here: https://github.com/GaloisInc/saw-script/actions/runs/14139605068

(don't the s2n tests now also build at least the saw docker image? we should probably find something that builds and uses the saw-remote-api docker image as a test case too)

Copy link
Contributor

@RyanGlScott RyanGlScott left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should note that the awslc tests do not currently work somewhere (perhaps in s2nTests/README.md and/or the awslc Dockerfile), pointing to #2273 in the process. Other than that, LGTM.

…e 22.04.

Update the what4-solvers snapshot to get Ubuntu 24.04 bins.

Note that GitHub Actions support for 20.04 is about to disappear.

Leave heapster.dockerfile alone as it isn't being used and will need
further attention to not break it.
clang-12 is no longer available on ubuntu 24.04.

also, rearrange the logic that symlinks clang -> clang-14
(and update it to 14)
ncurses 5 is no longer available in ubuntu 24.04. If there's an
ancient binary somewhere using it, we'll have to regen. We aren't
running a museum here...
This is apparently now required as a workaround to use pip (rather
than apt) to install system-wide packages.
v2 tries to install darcs, which is not available on the ubuntu 24.04
runners.

Changes are from #2153, which failed mysteriously when it was filed
but might work better now.
This prevents it from downloading and trying to run an ancient binary
that no longer runs on Ubuntu 24.04.

Downside of this is that this also turns off fetching yices and z3, so
instead copy in the yices and z3 we already have. This may or may not
work since they're probably quite a bit newer than the ones expected,
but if they do it's probably for the best.

The tls and hmac proofs apparently need yices-smt2, so add that to the
bits provided by docker-compose.

This also may not be the way we want to do this, but if it works it
avoids needing to change the s2n tree.
The binary distribution seems to be linked against ncurses 5, which is
no longer available in ubuntu 24.04.

Why a compiler needs to be linked against curses, IDK.

Applies to the awslc and blst containers, but not (yet?) the default
s2n container as that uses a different clang that might or might not
be runnable.

Provisional.
While passing through, note a couple of the other recent maintenance
concerns as well.
@sauclovian-g
Copy link
Contributor Author

Did that, last force push is to just rebase across merging #2274, which is doc changes only and can't interact with this branch.

@sauclovian-g sauclovian-g merged commit 2982c42 into master Mar 31, 2025
36 checks passed
@sauclovian-g sauclovian-g deleted the ubuntu-24.04 branch March 31, 2025 23:29
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.

3 participants