-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
[CI] mingw-w64 workflow testing a fresh compiler #15516
Comments
Sounds good.
Agreed. CI should only build shards during a release. |
In I suppose in both workflows we can split the build into two jobs.
|
Seems like the MinGW-W64 workflow is even more fundamentally broken. It sets Removing these explicit env var assignments breaks even more things because now the environment can't find |
Oh that's wild.
But that location is still unexpected for a locally-built compiler and unknown to the wrapper script. EDIT: All right, I was missing something: We're prepending In general, In a regular development environment there should be no need to set |
Though at this rate maybe we should just encode the Windows-specific defaults in the spec helpers directly? |
The spec runner sets But yes, we should fix this fallback to work on Windows. |
Primitive specs test the behaviour of the compiler build. They need a fresh
.build/crystal
to succeed.This doesn't work as expected in the
x86_64-mingw-w64-test-compiler
job because we never build the compiler there. If we change the compiler's behaviour, it'll fail (see #15186 (comment)).The command in the workflow suggests that we incorrectly assume
a)and b) thatmake primitives_spec
to have.build/crystal.exe
as a prerequisite.build/crystal.exe
exists.UPDATE:
.build/crystal.exe
is actually a prerequisite ofprimitives_spec
. The-o
flag just disabled building it (but the specs still run with the system compiler).crystal/.github/workflows/mingw-w64.yml
Line 140 in 62c92a0
I believe we probably should make both premises true:
primitives_spec
should require.build/crystal
to exist as a very primitive measure to detect incorrect use (UPDATE: Maybe this is already fine. We used explicitly used the-o
flag incorrectly).For primitive specs it's essential that they run on a fresh compiler. But we usually run other tests on the fresh compiler as well to ensure it behaves correctly.
In other workflows (which typically use the
bin/ci
tool) the process is usually something like this:We should probably have a similar setup for mingw64 as well. For organizational purposes it would be nice to keep the split into separate jobs, but have the compiler test job depend on the build job.
I'm also wondering if we need to build
shards
everytime in the build job. We added that because the artifact is used for releases, but that should really only be necessary for release builds.The text was updated successfully, but these errors were encountered: