-
Notifications
You must be signed in to change notification settings - Fork 972
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
[bug] FFmpeg test package fails to link sndio deps #15240
Comments
I have done a quick check with:
Here it seems it works ok, downloading the ConanCenter pre-compiled binary. Maybe you can try to omit the |
(Note: sorry, just realized I filed this to the conan repo instead of cci) Hm, it also works for me in the case where I build within a docker container (tried ubuntu:22.04). I built both using the existing conan-center prebuilt binaries, and also forced a complete rebuild of all deps with --build=missing and a custom setting added to make all package IDs change. Both built successfully, so it seems like this may be environment related on my side somehow, but I can't really think of what. I know that libsndio is present in my host environment: $ dpkg -l | grep sndio
ii libsndio-dev:amd64 1.8.1-1.1 amd64 Small audio and MIDI framework from OpenBSD, development files
ii libsndio7.0:amd64 1.8.1-1.1 amd64 Small audio and MIDI framework from OpenBSD, runtime libraries
ii libsndio7.0:i386 1.8.1-1.1 i386 Small audio and MIDI framework from OpenBSD, runtime libraries
$ dpkg -L libsndio-dev:amd64
/.
/usr
/usr/include
/usr/include/sndio.h
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/pkgconfig
/usr/lib/x86_64-linux-gnu/pkgconfig/sndio.pc
/usr/share
/usr/share/doc
/usr/share/doc/libsndio-dev
/usr/share/doc/libsndio-dev/copyright
/usr/share/man
/usr/share/man/man3
/usr/share/man/man3/mio_open.3.gz
/usr/share/man/man3/sio_open.3.gz
/usr/share/man/man3/sioctl_close.3.gz
/usr/share/man/man3/sioctl_eof.3.gz
/usr/share/man/man3/sioctl_nfds.3.gz
/usr/share/man/man3/sioctl_ondesc.3.gz
/usr/share/man/man3/sioctl_onval.3.gz
/usr/share/man/man3/sioctl_open.3.gz
/usr/share/man/man3/sioctl_pollfd.3.gz
/usr/share/man/man3/sioctl_revents.3.gz
/usr/share/man/man3/sioctl_setval.3.gz
/usr/lib/x86_64-linux-gnu/libsndio.so
/usr/share/doc/libsndio-dev/changelog.Debian.gz
/usr/share/man/man3/mio_close.3.gz
/usr/share/man/man3/mio_eof.3.gz
/usr/share/man/man3/mio_nfds.3.gz
/usr/share/man/man3/mio_pollfd.3.gz
/usr/share/man/man3/mio_read.3.gz
/usr/share/man/man3/mio_revents.3.gz
/usr/share/man/man3/mio_write.3.gz
/usr/share/man/man3/sio_close.3.gz
/usr/share/man/man3/sio_eof.3.gz
/usr/share/man/man3/sio_getcap.3.gz
/usr/share/man/man3/sio_getpar.3.gz
/usr/share/man/man3/sio_initpar.3.gz
/usr/share/man/man3/sio_nfds.3.gz
/usr/share/man/man3/sio_onmove.3.gz
/usr/share/man/man3/sio_onvol.3.gz
/usr/share/man/man3/sio_pollfd.3.gz
/usr/share/man/man3/sio_read.3.gz
/usr/share/man/man3/sio_revents.3.gz
/usr/share/man/man3/sio_setpar.3.gz
/usr/share/man/man3/sio_setvol.3.gz
/usr/share/man/man3/sio_start.3.gz
/usr/share/man/man3/sio_stop.3.gz
/usr/share/man/man3/sio_write.3.gz
$ readelf -s /usr/lib/x86_64-linux-gnu/libsndio.so | grep sio_
99: 0000000000009310 995 FUNC GLOBAL DEFAULT 14 _sio_alsa_open
101: 000000000000b0f0 460 FUNC GLOBAL DEFAULT 14 sio_open
107: 00000000000072e0 31 FUNC GLOBAL DEFAULT 14 sio_initpar
109: 0000000000007300 44 FUNC GLOBAL DEFAULT 14 _sio_create
112: 00000000000078f0 373 FUNC GLOBAL DEFAULT 14 sio_revents
113: 0000000000007bc0 326 FUNC GLOBAL DEFAULT 14 sio_read
114: 0000000000008d40 25 FUNC GLOBAL DEFAULT 14 _sio_onvol_cb
121: 0000000000008c70 79 FUNC GLOBAL DEFAULT 14 sio_setvol
122: 000000000000adf0 186 FUNC GLOBAL DEFAULT 14 _sio_aucat_open
126: 0000000000007460 395 FUNC GLOBAL DEFAULT 14 sio_setpar
127: 0000000000008590 190 FUNC GLOBAL DEFAULT 14 _sio_onmove_cb
128: 0000000000007e70 105 FUNC GLOBAL DEFAULT 14 sio_onmove
129: 0000000000007330 9 FUNC GLOBAL DEFAULT 14 sio_close
134: 00000000000075f0 194 FUNC GLOBAL DEFAULT 14 sio_getpar
135: 0000000000007e60 8 FUNC GLOBAL DEFAULT 14 sio_eof
138: 0000000000008cc0 123 FUNC GLOBAL DEFAULT 14 sio_onvol
142: 00000000000078b0 10 FUNC GLOBAL DEFAULT 14 sio_nfds
143: 0000000000007ee0 493 FUNC GLOBAL DEFAULT 14 _sio_printpos
145: 0000000000007d10 334 FUNC GLOBAL DEFAULT 14 sio_write
146: 00000000000076c0 330 FUNC GLOBAL DEFAULT 14 sio_start
148: 0000000000007340 277 FUNC GLOBAL DEFAULT 14 sio_stop
151: 00000000000078c0 35 FUNC GLOBAL DEFAULT 14 sio_pollfd
153: 0000000000007810 154 FUNC GLOBAL DEFAULT 14 sio_getcap Seems like somehow the test is not transitively being linked to libsndio in my environment. From what I can tell, there is no explicit path for the conan The two paths where I thought this may be happening along were:
def generate(self):
tc = CMakeToolchain(self)
tc.variables["CMAKE_DISABLE_FIND_PACKAGE_Sndio"] = True # FIXME: missing sndio cci recipe (check whether it is really required)
tc.variables["CMAKE_DISABLE_FIND_PACKAGE_Speex"] = True # FIXME: missing sndio cci recipe (check whether it is really required)
self.cpp_info.components["libsdl2"].requires.append("sndio::sndio") however, you will note also within the recipe: if self.settings.os == "Linux":
if self.options.sndio:
raise ConanInvalidConfiguration("Package for 'sndio' is not available (yet)") So it doesn't seem like it can come in through SDL. Also with_sdl is false by default for ffmpeg. All of this said, I'm not sure how exactly a fresh build within a container is finding it correctly, but a fresh build in my host environment (which should generally be very similar, and does indeed have a pkgconfig-findable libsndio installed) would not. |
Still having this issue using the latest ffmpeg recipe on both my desktop and laptop (both running Kubuntu 22.04). Given that the issue does not occur within a container, I would like to understand why it happens in my specific environment. Any thoughts on how I could continue to debug what is happening here? (Also, thinking maybe I should migrate this issue to conan-center-index, where I had meant to open it originally?) |
I've create a PR that solves this issue by creating a recipe for libsndio. Please let me know your thoughts on this approach. |
I have give this another try, now in my WSL (Ubuntu 22) environment, still can't make it fail, seems to be working fine here. I don't have any I'd definitely like to know better what is the reason, the PR conan-io/conan-center-index#23087 looks good, but it would be better to understand what is happening. |
Environment details
When I try to
conan create
the ffmpeg package, the test_package fails to build due to a link error relating to thesndio
library. I've tested this with both the 5.0.3 version and latest 6.1 version, same result.Steps to reproduce
Logs
The text was updated successfully, but these errors were encountered: