-
Notifications
You must be signed in to change notification settings - Fork 553
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
Wizard recipe: msquic-v1.4.0 #3364
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.
Ok, an overall comment: this needs to be greatly simplified. We want to have each library into a single package. We actually already have most of the libraries you're building here, so you can use them as dependencies. Also, no need to build CMake as we already have it
thanks for looking at the pr. openssl was added as a dependency to build the latest cmake (3.21) The required dependencies are: liblttng-ust-dev, lttng-tools (popt, libxml2, userspace, numactl are their sub-dependencies) btw, please remind me what is the proper way to update a pr on Yggdrasil? since the git commands were all executed by the BinaryBuilder wizard? |
No, it shouldn't
You'll need to clone your fork, check out the branch
Then you can do the edits you want, stage and commit them, and then push the changes
and this pull request will be automatically updated because you'd be pushing to the same branch |
according to the suggestion, I've used binary jll packages as dependencies I am following MsQuic's build instructions which work flawlessly on my Ubuntu-20.04 |
Error on x86_64-linux-gnu:
Code: CXPLAT_STATIC_ASSERT(
sizeof(uint64_t) < CXPLAT_IV_LENGTH,
"Packet Number Length is less than IV Length"); I'm not really sure what's going on there Error on aarch64-linux-gnu:
|
The offending line is I believe I have found a problem, the compiler being used is: however if I try and add the files use a after further investigation, the project uses an #ifdef clang to declare the macro as _Static assert when compiling for windows, but does not perform the same check in the posix platforms |
Using the C++ compiler to compile a C source code doesn't sound like a good idea |
Also, I get the same errors with GCC 9.1.0, so the version of the compiler is unlikely to be the main issue here. |
Thank you so much for making the effort and testing different compilers #if defined __USE_ISOC11 && !defined __cplusplus
# undef static_assert
# define static_assert _Static_assert
#endif The In order to compile the file, I could either:
|
Now compilation fails for me at
|
After applying cd msquic
git submodule update --init --recursive
mkdir build && cd build
export CFLAGS="-Dstatic_assert=_Static_assert"
cmake -DCMAKE_INSTALL_PREFIX=$prefix -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} -DCMAKE_BUILD_TYPE=Release -G 'Unix Makefiles' ..
cmake --build . The build fails when compiling sendmmsg(
SocketContext->SocketFd,
Mhdrs + SendData->SentMessagesCount,
(unsigned int)(TotalMessagesCount - SendData->SentMessagesCount),
0); and Like the case of #ifdef __USE_GNU
/* For `recvmmsg' and `sendmmsg'. */
struct mmsghdr
{
struct msghdr msg_hdr; /* Actual message header. */
unsigned int msg_len; /* Number of received or sent bytes for the
entry. */
};
#endif
#ifdef __USE_GNU
/* Send a VLEN messages as described by VMESSAGES to socket FD.
Returns the number of datagrams successfully written or -1 for errors.
This function is a cancellation point and therefore not marked with
__THROW. */
extern int sendmmsg (int __fd, struct mmsghdr *__vmessages,
unsigned int __vlen, int __flags);
#endif which are missing from the sandbox version of Moreover |
For context, we use quite old versions of glibc (the specific versions depend on the architectures): https://github.com/JuliaPackaging/Yggdrasil/blob/f3fdd76e3fcb3081d40d46ef79536b294217af0a/RootFS.md#glibc-versions. This is because these are the minimum versions of glibc required to run Julia itself. I guess this package implicitly requires a much newer version of glibc |
What are the options going forward regarding the glibc version gap? |
Not really: the compilers we provide need to be built against a specific libc version, it isn't that easy to ask for a different libc later. You're basically facing JuliaPackaging/BinaryBuilder.jl#863. |
I see.... I contemplated using the definition in I opened an issue with the msquic project asking if
perhaps it is time to upgrade to 2.14? |
The msquic team have added a patch that enables compilation without However, that would create a huge performance degradation as described in the comment So, while the project might compile in BinaryBuilder, I see no reason to do so if the end result would have such poor performance. I am looking to add a Julia package that would use the msquic jll package and deliver high throughput QUIC protocol communication with an interface similar to Julia's TCP communication Please let me know if
|
|
Closing due to inactivity. Please submit a new PR on top of the current master branch if you still want to include this recipe. |
This pull request contains a new build recipe I built using the BinaryBuilder.jl wizard:
@staticfloat please review and merge.