-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Update worker dependencies #1201
Conversation
CI fails 😖 |
I'll check after the weekend |
Compiling this branch in my macbook Intel 2019 I get some warnings:
but it does compile. |
The interesting part here is that the error happens only building mediasoup-sys for Rust. Mediasoup worker is compiling and linking properly. |
Rust also links standard C++ library, it does so differently on different platforms, something might be off with that. |
@nazar-pc do you happen to have any idea on how to overcome this problem? Using the abseil version in v3 with clang-15 is so noisy (many deprecation messages) that we are using clang-14 back, rather than the newer clang-15 in local dev just to avoid all the noise. Using the newer abseil version does fix those warnings but comes with the issues shown here. |
I've just updated to a newer abseil version that is available in wrapdb. |
Not sure off top of my head, will have to tinker with it. All we do is simply linking it.
is because because someone updated abseil in Meson incorrectly AGAIN by including test files with @eli-schwartz I fixed this for abseil several times in wraps already, maybe there is some sort of automation that can be done to prevent this in the future? I guess writing a test case. |
Yes, if the wrap could include an example or test that gets built by the wrapdb and fails to link when this porting mistake is made, that would be fantastic. |
So this can be fixed by publishing a new path version in Meson with those tests removed, right? |
Yes, and ideally we need to write a test that will run in Meson's CI that will ensure extra |
I see. And when you say "we", do you mean you? or We The Team©? |
I mean you're welcome to do that for sure, otherwise I'll have to 😂 |
It seems that the culprit is this file here: https://github.com/mesonbuild/wrapdb/blob/master/subprojects/packagefiles/abseil-cpp/meson.build#L258 I can check it and create a new wrapdb version tomorrow if it's not done before by you. |
This is the
How to know which of those files are test files that contain |
Do please and I promise I'll learn for next time. BTW I love how you highlighted line 4 of https://github.com/abseil/abseil-cpp/blob/master/absl/hash/internal/print_hash_of.cc#L4 which literally is a comment saying:
|
This is not about flatbuffers but about abseil 😄 |
Mmmm, that could be the reason |
PR created mesonbuild/wrapdb#1309. |
Definitety we should use a newer version, it may help here. Just needs to done and publish to wrapDB. |
At least one of the missing symbols error must be fixed with this. |
OMFG |
I've got it. On it.. |
Same as before: = note: mediasoup-worker.lib(src_win_process.c.obj) : error LNK2019: unresolved external symbol __imp_CoTaskMemFree referenced in function uv__kill
mediasoup-worker.lib(src_win_process.c.obj) : error LNK2019: unresolved external symbol SHGetKnownFolderPath referenced in function uv__kill
D:\a\mediasoup\mediasoup\target\debug\deps\mediasoup_sys-5d8110c20034dd87.exe : fatal error LNK1120: 2 unresolved externals Even though ole32 and shell32 libraries are included here, the corresponding -l psapi -l user32 -l advapi32 -l iphlpapi -l userenv -l ws2_32 -l ws2_32 -l gdi32 -l advapi32 -l crypt32 -l user32 -l static=mediasoup-worker` Only failing for Rust. |
So
As per Win docs, But there is no And similar for
and it is supposed to be defined in |
It's ole32 the library where it's defined. And such dependency is present in meson. The corresponding linking |
So these are the libs that # system-depending config
if win32
libuv_cargs += [
'-DWIN32_LEAN_AND_MEAN',
'-D_WIN32_WINNT=0x0602',
]
libuv_libs += [
'psapi',
'user32',
'advapi32',
'iphlpapi',
'userenv',
'ws2_32',
'dbghelp',
'ole32',
'uuid',
'shell32',
] And this is the Rust build command:
To be perfectly clear, there are various libs that are missing:
The most interesting thing here is that those libs in the libuv meson patch file are NOT included in the Rust build command. Those are included explicitly by our |
Why do those libraries which are dependencies of our deps need to be included in our |
Based on those in `meson.build` in `https://wrapdb.mesonbuild.com/v2/libuv_1.47.0-1/get_patch` used by `libuv.wrap`.
CI is now passing. However this branch is out-of-date with v3. I'll resolve conflicts and push. |
Because they are not static libraries, so linking just |
We could tell libuv wrap patch to link those libraries statically but that would only make sense for us (mediasoup), right? |
My understanding is that those are system libraries on Windows and are not possible to link statically at all. |
Hello I believe this broke our
|
@lelikg, this is not the PR that originated this problem. Can you please open a GH issue with this log extract? I'll look into this tomorrow. |
@lelikg , specify in the issue the Linux flavor and version alomng with any relevant environment details |
done, thank you |
While investigating #1201, disable liburing by default. In order to enable it, use MESON_ARGS as usual. ie: MESON_ARGS=-Dms_enable_liburing=true npm install
Disable liburing by default While investigating #1201, disable liburing by default. In order to enable it, use MESON_ARGS as usual. ie: MESON_ARGS=-Dms_enable_liburing=true npm install
Not only in order to use a newer version (we can use a newer abseil version now that we use a newer C++ version), but also because previous abseil would emit a lot of warnings with clang 15.