-
-
Notifications
You must be signed in to change notification settings - Fork 62
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
[WIP] Windows build #42
Conversation
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
@conda-forge-admin , please rerender |
79aa8d5
to
f360ad1
Compare
Hi! This is the friendly automated conda-forge-linting service. I wanted to let you know that I linted all conda-recipes in your PR ( Here's what I've got... For recipe:
|
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
um, I'm getting up to the No idea what to do about that, does anybody have input here? |
Start bld.bat using snippets from AnacondaRecipes [1] The script calls build.sh to reduce duplication. Remove packages unavailable on Windows. Add necessary m2 packages. [1] https://github.com/AnacondaRecipes/conda-feedstock/blob/master/recipe/bld.bat
1616548
to
9a53d85
Compare
@conda-forge-admin, please rerender |
…nda-forge-pinning 2021.07.01.17.09.14
Hm, this fails with
although I specifically first excluded ncurses, then replaced it with m2-ncurses (both approaches fail). I can't recognize where/why it needs ncurses. The log output before even seems to suggest that conda's finished, but then another solve fails?! Curiously enough, this did not occur in the previous incarnation of this PR. Maybe a change in the recipe rerender template? |
@klauer: interestingly, the re-render above (181521f) apparently broke (only) the macos py39 build, although no mac files seems to have been touched? |
Strange - diffing the working build output to the non-working one, I don't see many differences:
(*) Test diffWorking:
Not working:
Working build
I'd imagine the tests aren't so flaky as the 10.2 PR merged and built without issue... |
Curiously, on the next run, both macos-py36 and macos-py39 failed, although again no macos config was touched. Maybe something is flaky after all. Btw, easter-egg time, gdb still contains python 2 code, although that does not fail the build 😁 |
Meanwhile, there's conda-forge-ci-setup 3.9.6 released, so |
Hi! This is the friendly automated conda-forge-webservice. |
2 similar comments
Hi! This is the friendly automated conda-forge-webservice. |
Hi! This is the friendly automated conda-forge-webservice. |
I'll try to help if I can for the Windows build, but I have close to zero experience on Windows. Regarding the macOS Travis run that seems flaky, upon re-reading the GDB bugzilla entry linked in recipe/README, I think that I would have to update the patch that we use for macOS. I'll try to do that some time. In the meantime I think we can ignore macOS failures in this here PR, at least the Regarding the latest macOS py36 failure, I see this at the end:
I'm not sure about this one. I don't see anything wrong before that. There's a lot of "is not an ELF" lines but that might just be conda-build acting out, I'm not sure. It's the same thing for the macOS py39 failure in 181521f... |
yeah, I think we both hit a temporary CI breakdown, which has since resolved. I managed to get over some more roadblocks, and checked out the changes of that PR, but at this point I think my problems have a different source ( |
Specifically, I suspect I need to add one more env vars to the cygpath conversion done here, but I currently don't know how to find out which path is the culprit. I think the warnings about escapes surrounding the error linked above could each stem from the initial letters of directories in the affected path, but I have not yet tried to decipher that. |
The It's probably that |
8ccfac9
to
e37c8c5
Compare
OK, I disabled that flag on Windows, now it fails because it does not find
Curiously enough, above that point it checks for the presence of netdb.h and correctly recognizes that it's not available, so I don't know why it stumbles over that later. I looked at the various patches linked above but noticed nothing that seemed applicable. |
Since gdb is not available from conda-forge for Windows, and it seems to me it should be, I have been trying to get that to build. Maybe some Windows/m2w64/mingw/gcc experts can take a look and help out getting gdb built? @conda-forge/help-c-cpp @conda-forge/core |
My reasoning for going the route of a slim bld.bat shim that calls build.sh was to minimize the additional maintenance effort for the Windows build by not introducing another build script. I saw that approach in another package, so it seemed reasonable, but maybe it isn't? |
Looks like a missing header: Edit: oops sorry didn't read the full conversation. You might have tried this already 😬 . Anyway, you can see a similar patch for the MingW Python here. Worth a try? I don't know why they are not using it on their GDB build though. Edit 2: It looks like |
recipe/meta.yaml
Outdated
- make >=3.82 | ||
- {{ compiler('c') }} # [not win] | ||
- {{ compiler('cxx') }} # [not win] | ||
- m2w64-gcc # [win] |
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.
I think there's a compiler
function for m2w64 too. See here.
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 need to rerender the recipe for this to have an effect.
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.
Hm, I already tried this before: - {{ compiler('m2w64_cxx') }} # [win]
but it didn't work (c639a13). Argh, no use checking the log, when does CI start throwing away logs??
Come to think of it, I don't think I re-rendered as I did not know that that's a prerequisite, I'll try this again...
Yeah, right? That's what I thought, too. That It's funny, mingw-64 actually has gdb available (in fact, that's what I'm using in the meantime, but not installed via the conda ecosystem), I just can't find out how the manage to build it... :-/ |
hm, this could be the build script... |
Otherwise, the gdb configure script does not correctly choose ws2tcpip.h instead of netdb.h et al.
a1bc208
to
8ccd620
Compare
I think edit -- hah, ok, you pushed that commit as I posted this :D |
I'm currently on it :D |
After waiting for the sacred Interval, you turn another page in the mysterious book. Like the tomes around you in the great library, it is full of inscrutable and arcane symbols. As the sparkling dust settles, you glimpse yet another foe. The horror that arises from the page is...
⚔️ 🧙 Roll a D20 for monster lore... 12... it seems to be a Linking Demon! |
@conda-forge-admin, please rerender |
…a-forge-pinning 2021.08.25.17.17.57
479401f
to
44d7bd6
Compare
44d7bd6
to
0a02f55
Compare
OK, LDFLAGS seems to end up withe reasonable values |
You could try doing |
Thanks for those tips! This is the relevant log section
gdbreplay.o gets compiled here (apparently without mishap)
The missing references (WSAStartup etc) shown above are behind |
Copying the linking command with some newlines and commands added: g++ -std=gnu++17 \
# Includes
-I. -I/d/bld/gdb_1630268986132/work/gdbserver \
-I/d/bld/gdb_1630268986132/work/gdbserver/../gdb/regformats \
-I/d/bld/gdb_1630268986132/work/gdbserver/.. \
-I/d/bld/gdb_1630268986132/work/gdbserver/../include \
-I/d/bld/gdb_1630268986132/work/gdbserver/../gdb \
-I/d/bld/gdb_1630268986132/work/gdbserver/../gnulib/import \
-I../gnulib/import -I/d/bld/gdb_1630268986132/work/gdbserver/.. \
-I.. -I./../intl -I/d/bld/gdb_1630268986132/_h_env/include \
# Preprocessor
-DUSE_WIN32API -pthread \
# Warnings
-Wall -Wpointer-arith -Wno-unused -Wunused-value -Wunused-variable -Wunused-function -Wno-switch -Wno-char-subscripts -Wempty-body -Wunused-but-set-parameter -Wunused-but-set-variable -Wno-sign-compare -Wno-error=maybe-uninitialized -Wsuggest-override -Wmissing-declarations -Wstrict-null-sentinel -Wformat -Wformat-nonliteral \
# More preprocessor, your added LDFLAGS
-DGDBSERVER -lwsock32 -lws2_32 -Wl,--stack,12582912 \
# Object files
-o gdbreplay.exe gdbreplay.o utils.o version.o \
# Static libs
../gdbsupport/libgdbsupport.a ../gnulib/import/libgnu.a ../libiberty/libiberty.a ./../intl/libintl.a \
# Shared libs
-liconv According to this SO answer, the Looking briefly at the code, I think this should all work correctly, without having to set WIN32APILIBS=
case ${host} in
*mingw32*)
$as_echo "#define USE_WIN32API 1" >>confdefs.h
WIN32APILIBS="-lws2_32"
;;
esac So I think the problem is that |
I'm closing this, this is hopelessly stale by now. Someone else, feel free to reopen/pick up where I left. |
Checklist
conda-smithy
(Use the phrase@conda-forge-admin, please rerender
in a comment in this PR for automated rerendering)- {{ compiler('m2w64_cxx') }} # [win]
again and re-render the recipe afterwards!Let's see how far we get in adding a Windows build of gdb.
See #6.