fails-components / webtransport

Http/3 webtransport support for node
Other
149 stars 21 forks source link

GLIBC_2.29 not found #273

Closed cebaa closed 6 months ago

cebaa commented 6 months ago
$ ldd /prj/wt-test/node_modules/.pnpm/@fails-components+webtransport-transport-http3-quiche@1.0.11/node_modules/@fails-components/webtransport-transport-http3-quiche/build/Release/webtransport.node
/prj/wt-test/node_modules/.pnpm/@fails-components+webtransport-transport-http3-quiche@1.0.11/node_modules/@fails-components/webtransport-transport-http3-quiche/build/Release/webtransport.node: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by /prj/wt-test/node_modules/.pnpm/@fails-components+webtransport-transport-http3-quiche@1.0.11/node_modules/@fails-components/webtransport-transport-http3-quiche/build/Release/webtransport.node)

That's a bit longish, the gist is:

/lib64/libm.so.6: version `GLIBC_2.29' not found

Wondering if this could be built for GLIBC_2.28 or earlier, so it can be run on old(er) systems.

martenrichter commented 6 months ago

Sure, you can build it yourself. Please install the dependencies as given in the readme and execute

npm run dobuild

Regarding prebuilds, I am restricted by the environment available in the GitHub building environments, and I will not support older OSs that are not supported in the images. (too much work)

martenrichter commented 6 months ago

But I may check if it is possible to link it statically or remove the dependency (if it is not coming from a third-party lib).

cebaa commented 6 months ago

Thanks @martenrichter! I see this in a bunch of projects have the same issue and looks like people are resorting to building in containers, e.g. https://github.com/LuaLS/lua-language-server/pull/1835/files. I'm not sure if that's an option for this project, but wanted to mention it as a possible alternative.

martenrichter commented 6 months ago

I will not create a build configuration for every old or unique platform. I will only support the platforms and recent versions provided by GitHub actions. This is a time-capacity decision. In these cases, you can always do a manual build.

The dependency on 2.29 comes from a function "log2". I have to find out which part of the code triggers. If it is an unimportant code, I will try to remove it. If it is a performance-important code, I will leave it as is, as this function gives a substantial performance boost.

martenrichter commented 6 months ago

I have checked it, the dependency comes through the abseil string library (which depended on the profiling library, which uses the exponential). As this is an external integral library, there is no way to remove it. I also checked it for debian for example the only affected version is buster, which goes out of support in three month. So I do not see a need to fix it. My recommendation is to update your os anyway or use a container.