GitHub CI build and testing#109
Conversation
|
The Windows build fails inside of C++ header <memory> with 24 MiB log with 221268 lines. |
|
GitHub's ubuntu-latest is Ubuntu 24.04 and uses LLVM v18 (from 2024) so it's basically useless. |
|
I hate Ubuntu for exactly that reason jobs:
build-and-test:
runs-on: ubuntu-latest
container:
image: fedora:latestI've been seeing something like this online but, I really have no clue about this CI stuff. Fedora at least has up to date tools |
|
Lots and lots of Er, why is it trying to compile c++98 compatible? |
|
I had a local AI yell at me about this
|
|
Apparently latest is not the latest. Thanks macrohard |
Looks like we could use |
I will look into that bit later. I was able to successfully build LCC locally on the fedora:latest image. |
This is so bad, are they """testing""" images or something before making them latest? How do you even do that, aren't these ubuntu images pulled straight from docker or something? |
|
I almost want to close this PR, this is so bad. On sourcehut the images for are always up to date, can't multi-billion dollar corporation achieve this? |
|
I say almost, because it will be useful for catching compiler (LLVM) stupidity. |
https://docs.github.com/en/actions/reference/runners/github-hosted-runners
|
You can run actions locally? |
|
No, I just use docker. |
|
It is close-enough to actions. |
I've seen people doing that, so we could do that. |
|
There are problems with shadowing In file included from /LensorCompilerCollection/lib/lcc/calling_convention.cc:7:
/LensorCompilerCollection/inc/lccbase/context.hh:50:9: error: declaration shadows a variable in namespace 'lcc' [-Werror,-Wshadow]
50 | PrintMIR = true,
| ^
/LensorCompilerCollection/inc/lcc/codegen/mir.hh:555:6: note: previous declaration is here
555 | auto PrintMIR(const std::vector<std::unique_ptr<GlobalVariable>>& vars, std::vector<MFunction>& mcode) -> std::string;
| ^ |
`OptionPrintMIR::[DoNot]PrintMIR` -> `OptionPrintMachineIR::[DoNot]PrintMachineIR`
|
GitHub is falling apart with this PR, because it required me to resolve some non-existent merge conflict and the resolve commit is empty lol. |
|
Lmao not windows passing and Linux failing now 💀 |
|
Also, clearly I fucked up the clang-cl build warnings config... These need to also apply to msvc-like clang |
|
The amount of projects this stupid choice has affected is, well, stupid |
|
I'm curious, what is the motivation behind the tests failing also failing the CI? I feel like, when developing a new language, it's quite common for the tests to outrun the implementation. Is the idea that the main LCC repository+branch only gets commits at official releases? Or, is the idea that CI failing isn't something to be looked at, it's more for later users to go back and see which commits contain "working" compiler? I guess I just don't understand our goal of CI, or how I'd go about using it 👀 Edit: I think the compiler not building on a platform we want to support (even secondarily like macrohard) should definitely be like a "panic"/"fix me before moving on" situation, whereas tests failing usually have to do more with language frontends, or their interactions with the compiler, and not the compiler itself. Is the CI for compiler developers or language developers, or both? |
|
btw, er, thank you, and I'd be okay with merging this anytime |
[ci-skip-tests]
[ci-skip-tests]
[ci-skip-tests]
Yes, you're right. Maybe tests shouldn't fail the CI after all, because it will become super noisy, especially considering the current state of the development, where test are failing, but "this is fine". One can check CI logs anyways, they're preserved for up to 3 months. Might as well make the test CI opt-in instead of opt-out. |
What do you think about this? |
I like. So, building on different platforms would be automatic, but tests CI could be run only for like "polished" commits? Or maybe just by language developers... We could always split the test suites, run irtest and code test but skip langtest and run test, if we really wanted. But that's not super important to me |
|
Putting |
|
I think this is ready for merge. |
TODO:
Hopefully, will catch compiler incompatibilities quicker than the users.