-
Notifications
You must be signed in to change notification settings - Fork 574
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 notcurses v3 #4059
Add notcurses v3 #4059
Conversation
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.
On Windows:
So libdeflate is both found and not found? Thanks CMake |
d8617d9
to
7821228
Compare
Any idea why this wouldn't be found on arm? FFMPEG should provide it, right? |
Unfortunately no... I confirmed that the libunistring artifact for FreeBSD includes the header this is complaining about, so my best guess would be that something is missing an |
Ah, the notcurses FAQ has a relevant tidbit for a similar issue:
|
I tried adding that but it doesn't seem like it worked :/ Anyone know what this up with
on apple aarch 64? I see another reference to it in #2938 (comment) but I don't know what fixed it upstream (or if it even got fixed or the offending part just didn't build anymore). The symbol is in there..
|
Ugh, I think I had looked in the wrong place! Thanks for looking into this. Then I think this is #3949, and yes, the solution should be to add
before running
Uhm, what did you try exactly?
My understanding was that was an upstream bug that got fixed, but I didn't really follow closely |
Adding: |
Down to Heissen CMake on Windows now. Edit: I just disabled libdeflate on Windows for now. |
So the next one on Windows is stuff like:
|
1019ddc
to
0486e64
Compare
So |
N/Notcurses/bundled/patches/0001-compat-only-declare-strndup-on-windows-c-2428.patch
Outdated
Show resolved
Hide resolved
Regarding libdeflate on Windows, running CMake with
So this is looking for the import library only, which can't be found because apparently libdeflate doesn't generate/install it. Adding set(CMAKE_FIND_LIBRARY_SUFFIXES ".$ENV{dlext}" ${CMAKE_FIND_LIBRARY_SUFFIXES}) to
See also #3353 for a similar debugging experience. |
Side note: I tried setting |
3f6f822
to
cb39b26
Compare
Do you think that should be upstreamed or is it too unique to our setup? |
The exact command I showed above is definitely specific to BinaryBuilder because the |
Regarding the clock error on Windows: sandbox:${WORKSPACE}/srcdir/notcurses/build # grep -r 'CLOCK_MONOTONIC' /opt/${target}/${target}
/opt/x86_64-w64-mingw32/x86_64-w64-mingw32/include/c++/7.1.0/x86_64-w64-mingw32/bits/c++config.h:/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
sandbox:${WORKSPACE}/srcdir/notcurses/build # grep -r 'TIMER_ABSTIME' /opt/${target}/${target}
sandbox:${WORKSPACE}/srcdir/notcurses/build # Those macros aren't defined anywhere. Of course you could get past to that with
but that's an indication that non-standard features are used. |
Yes, they are posix and not C. But they are available in winpthreads in mingw: |
Ok, we have sandbox:${WORKSPACE}/srcdir/notcurses/build # cat /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/include/pthread_time.h
/* Dummy header, which gets overridden, if winpthread library gets installed. */ which looks like https://github.com/Alexpux/mingw-w64/blob/d0d7f784833bbb0b2d279310ddc6afb52fe47a46/mingw-w64-headers/crt/pthread_time.h, of the files you liked above. The funny thing is that we should be building MinGW with winpthreads: Yggdrasil/0_RootFS/gcc_common.jl Lines 707 to 714 in 9b8db7c
@staticfloat any clue of what may be going on here? 😬 |
upstream author here -- please let me know anything i can do to assist! |
@giordano, Even if we would have winpthreads available in the mingw compiler shard, we still need to somehow declare a dependency on it, so that it gets shipped to users machines since it needs to be available at runtime, right? |
We have |
Actually I see |
eb0e945
to
526d2e5
Compare
@giordano, Ok, I just overwrote the
Any ideas? |
Not at the computer now, but I seem to remember also libraries are all lowercase. |
Nice one! |
🎉 Next steps, which don't have to be done here are to enable multimedia support and eventually get the binaries generated. Even if we don't need them it would be nice to figure out what's up with #4059 (comment) on M1. |
Alright, this looks great, apart from the borked MinGW pthreads header files (I opened an issue about that: #4067), thanks a lot also for upstreaming all those patches! |
this has been fun to watch! |
There seems to be some issue with the
which is a call into |
Maybe need to set |
Nice. Any idea why this has to be done in the jll library but not the local one? Does it compile in some information from the build env? |
That'd be my guess, yes. It probably hardcodes some build-time absolute paths that can be overridden at runtime with environment variables. |
An interesting difference between Windows and Linux/mac: Windows: julia> (@ccall libnotcurses_core.notcurses_version()::Ptr{Cchar}) |> unsafe_string
"3.0.1"
julia> (@ccall libnotcurses.notcurses_version()::Ptr{Cchar}) |> unsafe_string
ERROR: could not load symbol "notcurses_version": Linux: julia> (@ccall libnotcurses_core.notcurses_version()::Ptr{Cchar}) |> unsafe_string
"3.0.1"
julia> (@ccall libnotcurses.notcurses_version()::Ptr{Cchar}) |> unsafe_string
"3.0.1" So I think I have to be more careful saying which library each symbol actually comes from? |
not sure if that helps |
We were talking about the ncurses dependency here, not notcurses :). I was just surprised I had to set |
Yeah, the symbol is only in julia> using Notcurses_jll
julia> filter!(l -> endswith(l, "notcurses_version"), readlines(`nm $(Notcurses_jll.libnotcurses_path)`))
String[]
julia> filter!(l -> endswith(l, "notcurses_version"), readlines(`nm $(Notcurses_jll.libnotcurses_core_path)`))
1-element Vector{String}:
"000000000003d3a0 T notcurses_version" I'm not entirely sure how that works, but I think that on Linux the OS/dynamic linker may be happy to resolve the symbol for you in other linked library, while other OSes are stricter. |
Shows that it is good to test on multiple OSs :) |
oh, i always want as widespread and diverse of testing as i can get, especially when i don't have to do it! |
* add netcurses * also look for shared libraries on Windows * ok... * lowercase Secur32 * fix 32-bit windows * fix license? * [Notcurses] Simplify Windows `if` * remove thingy Co-authored-by: Mosè Giordano <giordano@users.noreply.github.com>
No description provided.