-
Notifications
You must be signed in to change notification settings - Fork 24
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
Add/update Windows workflows #140
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
❗ Your organization needs to install the Codecov GitHub app to enable full functionality. Additional details and impacted files@@ Coverage Diff @@
## gcos4gnucobol-3.x #140 +/- ##
=====================================================
- Coverage 65.87% 65.86% -0.01%
=====================================================
Files 32 32
Lines 59483 59483
Branches 15709 15709
=====================================================
- Hits 39182 39181 -1
- Misses 14282 14283 +1
Partials 6019 6019 ☔ View full report in Codecov by Sentry. |
a628f6c
to
94989b5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The one missing and important thing is to make the testsuite log available as artifact (if this does not exist then the generated config.h will be useful, just from experience).
You likely also want to run the dist script from build_windows to additional provide the resulting binaries for easy test.
Currently all the run tests are missing. Guess: some of the dlls are not found, but the testsuite.log will show what the issue really is.
.github/workflows/windows-msvc.yml
Outdated
echo EXEEXT='.exe' >> atconfig | ||
echo AUTOTEST_PATH='tests' >> atconfig | ||
echo SHELL=${CONFIG_SHELL-'/bin/sh'} >> atconfig | ||
echo m4_define([AT_PACKAGE_STRING], [GnuCOBOL 3.2]) > package.m4 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You likely want to make the package string dynamic, for example by copying it from configure.ac
.github/workflows/windows-msvc.yml
Outdated
key: cache-vcpkg | ||
|
||
- name: Install VCPKG packages | ||
if: steps.restore-vcpkg-cache.outputs.cache-hit != 'true' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You likely either want to run that in any case (should be quite fast after getting the cache) or want to do that once a day/week, so you do get updates also without manually dropping the cache.
@GitMensch This is still WIP, ignore for now ) |
... and of course, I am interested in this one:
Last time I've run the tests there were much less failures (and additional 1-2 when using the debug version as that raised some overflow/C RTS check). |
I haven't investigated yet, but I seem to see a lot of linker errors: "LNK2005: DllMain already defined". |
I don't remember these, if you need a clue after inspecting the testsuite log and possibly |
Seems I can't go further until the xz mess is solved...
|
It seems the downloads on GitHub and vcpkg are working again (see microsoft/vcpkg#37893). Can you go on with this PR, please? Making it visible which tests do fail is useful and allows us to work on fixing them, especially after comparing them with the failed MinGW tests. |
e5fc966
to
52c7ebb
Compare
I resumed my work on this PR now that I have 17 tests that fail (I'll investigate), but for info, here is the list (any analysis of yours is welcome):
You can check the |
Note in general: there is a reason for the atlocal_win. If not done already I suggest checking the README under build_windows. Comments:
|
I do use I think I checked the README file when I wrote this workflow (it was over a month ago). Took some liberties with the instructions... |
Release is fine, but as Debug includes runtime checks it is often more useful. |
Indeed, the file is named
I'd say we should just add the |
27 seems to be a different issue. We're referring to a function that is only declared but not defined. That seems to be okay when building a library with gcc, but I don't think MSVC allows that (I belive it needs an import library for that). |
Rechecked:
I therefore think that:
|
Your analysis for the failing test 27 is correct - could you try to create an import library (for any compiler) up-front? |
Yes, that should be doable. As this PR is for GC3, I'll add all the CIs made for GC4 to this (MSYS1 & MSYS2). |
1d045ad
to
5a69536
Compare
hm,, the last push changed the name to the wrong file again ? [I've previously edited it it to the correct one: run_fundamental.at) |
I'm not sure what you're talking about; is this related to this PR ? |
yes, I've pushed because I've seen the test still hang, and then found that the sed used operates on the wrong file - as it currently does again. |
Ah, you pushed to my own branch, that's why. I assume people never do that, and I happily force-push to my branch to keep a single commit. |
No problem, but as noted you need: - sed -i '/AT_SETUP(\[MOVE to edited item (4)\])/a AT_SKIP_IF(\[true\])' testsuite.src/run_functions.at
+ sed -i '/AT_SETUP(\[MOVE to edited item (4)\])/a AT_SKIP_IF(\[true\])' testsuite.src/run_fundamental.at |
Yup, I noticed that. Of course, on the long term, those will be investigated locally. |
Sounds good. That may have been faster (but that's hard to know up front) - the CI now hangs at test 577 / 1304. |
7fb5cae
to
1bc4812
Compare
https://learn.microsoft.com/en-us/windows/win32/debug/error-mode says:
So, in both CI cases and when running as a service, we'd like to crash the application instead of opening a popup. During debugging on a GnuCOBOL developer environment the messages as is, including the "retry to debug", is useful. What are your thoughts about that? Adding a call on MSVC to the startup code in libcob (also executed from cobc) to disable that popup in all cases but a special environment variable is set? |
Of course that's a runtime check which is useful (and therefore explicit enabled for the debug compile) and similar things also happen with sanitizers in gcc + clang. As you have the setup: can you check those occurrences and use bitmask for explicit loss of data? |
That sounds reasonable. We could use the |
I really have to go back to the GC3/4 merge. I spent yesterday's afternoon giving @engboris all the info about this MSVC CI and prepared for him a script that reproduces the CI steps locally, so he should be able to take over this matter. I'd go as far as suggesting to merge this PR in its current state (as it is already very helpful for its purpose), and open a new one dedicated to the fixes. |
I'd say %CI% is a possible option if we leave it otherwise on; I'm looking forward for @engboris to implement this and start checking the data-loss, bitmasking where expected, which should go into two separate PRs. Thanks for improving the CI so far. The only thing that seems to be missing and would be nice if you could add it is the binary artifacts for MSVC, created after build by executing |
Oh I couldn't get this to work ; here's what I get (using the commented bits at the end of
|
This PR adds an MSVC workflow to compile GnuCOBOL and run the testsuite.
Note 1: we manually generate the
tests/atconfig
andtests/package.m4
files to avoid having to generate and call./configure
Note 2: about 80 tests fail (I get the same results locally on an actual Windows machine)