meetecho / janus-gateway

Janus WebRTC Server
https://janus.conf.meetecho.com
GNU General Public License v3.0
8.17k stars 2.47k forks source link

[1.x] janus isn't loading versioned .so files #3270

Closed renich closed 1 year ago

renich commented 1 year ago

What version of Janus is this happening on? 1.2.0

Have you tested a more recent version of Janus too? No.

Was this working before? No, I don't think so.

Is there a gdb or libasan trace of the issue? Yeah, not very useful though: https://clbin.com/RdOnR

Additional context Hello! 0/

It seems that janus doesn't want to load the versioned .so files (plugins, transports, etc).

While packaging them for fedora, i placed all attachables in /usr/lib64/janus/<type>/ and, since they're versioned and Fedora doesn't allow unversioned .so files, I don't have those last ones.

So, when I run janus, it cannot find it's attachable artifacts.

I can use two workarounds:

Do you think we can have janus look for the versioned .so files?

lminiero commented 1 year ago

Not sure I understand the issue. The build system always builds versioned files, and then automatically creates a .so symlink to the latest one, which is what the executable picks up. I'm not going to start loading versioned files rather than what we do now, sorry, since Janus plugins may come from other sources too (custom plugins people built on their own).

renich commented 1 year ago

OK, the issue for me is that Fedora doesn't want unversioned .so files:

https://docs.fedoraproject.org/en-US/packaging-guidelines/#_downstream_so_name_versioning

It says I must ask you to start versioning them because, as I understand it, Fedora doesn't like to ship .so files (without version). I had to ask. I'll see what workaround I can do in this case. Thank you.

lminiero commented 1 year ago

Our .so files are always symlinks to the versioned files: isn't that what Fedora does anyway? If I check libcurl on my system, for instance, it says:

lrwxrwxrwx. 1 root root     16 Jul 20 02:00 /usr/lib64/libcurl.so -> libcurl.so.4.8.0
lrwxrwxrwx. 1 root root     16 Jul 20 02:00 /usr/lib64/libcurl.so.4 -> libcurl.so.4.8.0
-rwxr-xr-x. 1 root root 719528 Jul 20 02:00 /usr/lib64/libcurl.so.4.8.0

So there's symlinks too. Or am I missing something?

renich commented 1 year ago

You're probably right. I'll try this and see if it passes review.